@concord-consortium/lara-interactive-api 1.5.1 → 1.6.0-pre.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/api.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { IInitInteractive, INavigationOptions, IAuthInfo, ISupportedFeatures, IShowModal, ICloseModal, IGetInteractiveListOptions, IGetInteractiveListResponse, ISetLinkedInteractives, IGetLibraryInteractiveListRequest, IJwtResponse, ICustomMessageHandler, ICustomMessagesHandledMap, IGetInteractiveSnapshotOptions, IGetInteractiveSnapshotResponse, IAddLinkedInteractiveStateListenerOptions, IDecoratedContentEvent, ITextDecorationHandler, WriteAttachmentParams, ReadAttachmentParams, GetAttachmentUrlParams, IGetReportItemAnswerHandler, IReportItemAnswer } from "./types";
1
+ import { IInitInteractive, INavigationOptions, IAuthInfo, ISupportedFeatures, IShowModal, ICloseModal, IGetInteractiveListOptions, IGetInteractiveListResponse, ISetLinkedInteractives, IGetLibraryInteractiveListRequest, IJwtResponse, ICustomMessageHandler, ICustomMessagesHandledMap, IGetInteractiveSnapshotOptions, IGetInteractiveSnapshotResponse, IAddLinkedInteractiveStateListenerOptions, IDecoratedContentEvent, ITextDecorationHandler, WriteAttachmentParams, ReadAttachmentParams, GetAttachmentUrlParams, IGetReportItemAnswerHandler, IReportItemAnswer, OnUnloadFunction } from "./types";
2
2
  export declare const getInitInteractiveMessage: <InteractiveState = {}, AuthoredState = {}, GlobalInteractiveState = {}>() => Promise<IInitInteractive<InteractiveState, AuthoredState, GlobalInteractiveState> | null>;
3
3
  export declare const getMode: () => Promise<"runtime" | "authoring" | "report" | "reportItem" | undefined>;
4
4
  export declare const getInteractiveState: <InteractiveState>() => InteractiveState | null;
@@ -69,7 +69,7 @@ export declare const addCustomMessageListener: (callback: ICustomMessageHandler,
69
69
  export declare const removeCustomMessageListener: () => void;
70
70
  export declare const addDecorateContentListener: (callback: ITextDecorationHandler) => void;
71
71
  export declare const removeDecorateContentListener: () => void;
72
- export declare const addGetReportItemAnswerListener: (callback: IGetReportItemAnswerHandler) => void;
72
+ export declare const addGetReportItemAnswerListener: <InteractiveState, AuthoredState>(callback: IGetReportItemAnswerHandler<InteractiveState, AuthoredState>) => void;
73
73
  export declare const removeGetReportItemAnswerListener: () => void;
74
74
  export declare const setSupportedFeatures: (features: ISupportedFeatures) => void;
75
75
  export declare const setHeight: (height: number | string) => void;
@@ -114,3 +114,4 @@ export declare const writeAttachment: (params: WriteAttachmentParams) => Promise
114
114
  export declare const readAttachment: (params: ReadAttachmentParams) => Promise<Response>;
115
115
  export declare const getAttachmentUrl: (params: GetAttachmentUrlParams) => Promise<string>;
116
116
  export declare const sendReportItemAnswer: (request: Omit<IReportItemAnswer, "requestId">) => void;
117
+ export declare const setOnUnload: (onUnload?: OnUnloadFunction<{}> | undefined) => void;
package/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as iframePhone from "iframe-phone";
2
- import { ClientMessage, ICustomMessageHandler, ICustomMessagesHandledMap, ISupportedFeaturesRequest, ServerMessage, ITextDecorationHandler, IGetReportItemAnswerHandler } from "./types";
2
+ import { ClientMessage, ICustomMessageHandler, ICustomMessagesHandledMap, ISupportedFeaturesRequest, ServerMessage, ITextDecorationHandler, IGetReportItemAnswerHandler, OnUnloadFunction } from "./types";
3
3
  import { ManagedState } from "./managed-state";
4
4
  export declare const getClient: () => Client;
5
5
  export declare class Client {
@@ -8,6 +8,7 @@ export declare class Client {
8
8
  private customMessagesHandled;
9
9
  private listeners;
10
10
  private requestId;
11
+ private onUnload;
11
12
  constructor();
12
13
  getNextRequestId(): number;
13
14
  post(message: ClientMessage, content?: any): void;
@@ -20,5 +21,6 @@ export declare class Client {
20
21
  addGetReportItemAnswerListener(callback: IGetReportItemAnswerHandler): void;
21
22
  removeGetReportItemAnswerListener(): boolean;
22
23
  setSupportedFeatures: (request: ISupportedFeaturesRequest) => void;
24
+ setOnUnload: (onUnload?: OnUnloadFunction<{}> | undefined) => void;
23
25
  private connect;
24
26
  }
package/index-bundle.d.ts CHANGED
@@ -35,6 +35,10 @@ interface IJwtResponse {
35
35
  claims: IJwtClaims;
36
36
  }
37
37
 
38
+ interface IAttachmentInfo {
39
+ contentType?: string;
40
+ }
41
+ declare type AttachmentInfoMap = Record<string, IAttachmentInfo>;
38
42
  interface IInteractiveStateProps<InteractiveState = {}> {
39
43
  interactiveState: InteractiveState | null;
40
44
  hasLinkedInteractive?: boolean;
@@ -51,6 +55,7 @@ interface IInteractiveStateProps<InteractiveState = {}> {
51
55
  pageName?: string;
52
56
  activityName?: string;
53
57
  externalReportUrl?: string;
58
+ attachments?: AttachmentInfoMap;
54
59
  }
55
60
  interface IHostFeatureSupport extends Record<string, unknown> {
56
61
  version: string;
@@ -86,6 +91,7 @@ interface IRuntimeInitInteractive<InteractiveState = {}, AuthoredState = {}, Glo
86
91
  };
87
92
  linkedInteractives: ILinkedInteractive[];
88
93
  themeInfo: IThemeInfo;
94
+ attachments?: AttachmentInfoMap;
89
95
  }
90
96
  interface IThemeInfo {
91
97
  colors: {
@@ -116,6 +122,7 @@ interface IReportInitInteractive<InteractiveState = {}, AuthoredState = {}> {
116
122
  authoredState: AuthoredState;
117
123
  interactiveState: InteractiveState;
118
124
  themeInfo: IThemeInfo;
125
+ attachments?: AttachmentInfoMap;
119
126
  }
120
127
  interface IReportItemInitInteractive<InteractiveState = {}, AuthoredState = {}> {
121
128
  version: 1;
@@ -126,6 +133,7 @@ interface IReportItemInitInteractive<InteractiveState = {}, AuthoredState = {}>
126
133
  users: Record<string, {
127
134
  hasAnswer: boolean;
128
135
  }>;
136
+ attachments?: AttachmentInfoMap;
129
137
  }
130
138
  declare type IInitInteractive<InteractiveState = {}, AuthoredState = {}, GlobalInteractiveState = {}> = IRuntimeInitInteractive<InteractiveState, AuthoredState, GlobalInteractiveState> | IAuthoringInitInteractive<AuthoredState> | IReportInitInteractive<InteractiveState, AuthoredState> | IReportItemInitInteractive<InteractiveState, AuthoredState>;
131
139
  declare type InitInteractiveMode = "runtime" | "authoring" | "report" | "reportItem";
@@ -353,17 +361,35 @@ interface ILinkedInteractiveStateResponse<LinkedInteractiveState> {
353
361
  interactiveState: LinkedInteractiveState | undefined;
354
362
  }
355
363
  interface IGetReportItemAnswer<InteractiveState = {}, AuthoredState = {}> extends IBaseRequestResponse {
356
- type: "html";
364
+ version: "2.0.0";
357
365
  platformUserId: string;
358
366
  interactiveState: InteractiveState;
359
367
  authoredState: AuthoredState;
360
368
  }
361
- interface IReportItemAnswer extends IBaseRequestResponse {
369
+ interface IReportItemAnswerItemAttachment {
370
+ type: "attachment";
371
+ name: string;
372
+ label?: string;
373
+ }
374
+ interface IReportItemAnswerItemAnswerText {
375
+ type: "answerText";
376
+ }
377
+ interface IReportItemAnswerItemHtml {
362
378
  type: "html";
363
- platformUserId: string;
364
379
  html: string;
365
380
  }
366
- declare type IGetReportItemAnswerHandler = (message: IGetReportItemAnswer) => void;
381
+ interface IReportItemAnswerItemLinks {
382
+ type: "links";
383
+ hideViewInline?: boolean;
384
+ hideViewInNewTab?: boolean;
385
+ }
386
+ declare type IReportItemAnswerItem = IReportItemAnswerItemAttachment | IReportItemAnswerItemAnswerText | IReportItemAnswerItemHtml | IReportItemAnswerItemLinks;
387
+ interface IReportItemAnswer extends IBaseRequestResponse {
388
+ version: "2.0.0";
389
+ platformUserId: string;
390
+ items: IReportItemAnswerItem[];
391
+ }
392
+ declare type IGetReportItemAnswerHandler<InteractiveState = {}, AuthoredState = {}> = (message: IGetReportItemAnswer<InteractiveState, AuthoredState>) => void;
367
393
  /**
368
394
  * Interface that can be used by interactives to export and consume datasets. For example:
369
395
  * - Vortex interactive is exporting its dataset in the interactive state
@@ -385,6 +411,10 @@ interface IDataset {
385
411
  interface IInteractiveStateWithDataset {
386
412
  dataset?: IDataset | null;
387
413
  }
414
+ interface IGetInteractiveState {
415
+ unloading?: boolean;
416
+ }
417
+ declare type OnUnloadFunction<InteractiveState = {}> = (options: IGetInteractiveState) => Promise<InteractiveState>;
388
418
 
389
419
  declare type ChoiceId = string;
390
420
  interface IAuthoringMetadataBase {
@@ -521,7 +551,7 @@ declare const addCustomMessageListener: (callback: ICustomMessageHandler, handle
521
551
  declare const removeCustomMessageListener: () => void;
522
552
  declare const addDecorateContentListener: (callback: ITextDecorationHandler) => void;
523
553
  declare const removeDecorateContentListener: () => void;
524
- declare const addGetReportItemAnswerListener: (callback: IGetReportItemAnswerHandler) => void;
554
+ declare const addGetReportItemAnswerListener: <InteractiveState, AuthoredState>(callback: IGetReportItemAnswerHandler<InteractiveState, AuthoredState>) => void;
525
555
  declare const removeGetReportItemAnswerListener: () => void;
526
556
  declare const setSupportedFeatures: (features: ISupportedFeatures) => void;
527
557
  declare const setHeight: (height: number | string) => void;
@@ -566,6 +596,7 @@ declare const writeAttachment: (params: WriteAttachmentParams) => Promise<Respon
566
596
  declare const readAttachment: (params: ReadAttachmentParams) => Promise<Response>;
567
597
  declare const getAttachmentUrl: (params: GetAttachmentUrlParams) => Promise<string>;
568
598
  declare const sendReportItemAnswer: (request: Omit<IReportItemAnswer, "requestId">) => void;
599
+ declare const setOnUnload: (onUnload?: OnUnloadFunction<{}> | undefined) => void;
569
600
 
570
601
  declare type UpdateFunc<S> = (prevState: S | null) => S;
571
602
  declare const useInteractiveState: <InteractiveState>() => {
@@ -614,6 +645,7 @@ declare class Client {
614
645
  private customMessagesHandled;
615
646
  private listeners;
616
647
  private requestId;
648
+ private onUnload;
617
649
  constructor();
618
650
  getNextRequestId(): number;
619
651
  post(message: ClientMessage, content?: any): void;
@@ -626,7 +658,8 @@ declare class Client {
626
658
  addGetReportItemAnswerListener(callback: IGetReportItemAnswerHandler): void;
627
659
  removeGetReportItemAnswerListener(): boolean;
628
660
  setSupportedFeatures: (request: ISupportedFeaturesRequest) => void;
661
+ setOnUnload: (onUnload?: OnUnloadFunction<{}> | undefined) => void;
629
662
  private connect;
630
663
  }
631
664
 
632
- export { ChoiceId, Client, ClientMessage, DeprecatedRuntimeClientMessage, DeprecatedRuntimeServerMessage, GetAttachmentUrlParams, GlobalIFrameSaverClientMessage, GlobalIFrameSaverServerMessage, IAddLinkedInteractiveStateListenerOptions, IAddLinkedInteractiveStateListenerRequest, IAttachmentUrlRequest, IAttachmentUrlResponse, IAuthInfo, IAuthoringClientMessage, IAuthoringCustomReportField, IAuthoringCustomReportFields, IAuthoringImageQuestionMetadata, IAuthoringInitInteractive, IAuthoringInteractiveMetadata, IAuthoringMetadata, IAuthoringMetadataBase, IAuthoringMultipleChoiceChoiceMetadata, IAuthoringMultipleChoiceMetadata, IAuthoringOpenResponseMetadata, IAuthoringServerMessage, IBaseShowModal, ICloseModal, IContextMember, IContextMembership, ICustomMessage, ICustomMessageHandler, ICustomMessageOptions, ICustomMessagesHandledMap, ICustomReportFieldsAuthoredState, ICustomReportFieldsAuthoredStateField, ICustomReportFieldsInteractiveState, IDataset, IDecoratedContentEvent, IGetAuthInfoRequest, IGetAuthInfoResponse, IGetFirebaseJwtRequest, IGetFirebaseJwtResponse, IGetInteractiveListOptions, IGetInteractiveListRequest, IGetInteractiveListResponse, IGetInteractiveSnapshotOptions, IGetInteractiveSnapshotRequest, IGetInteractiveSnapshotResponse, IGetLibraryInteractiveListOptions, IGetLibraryInteractiveListRequest, IGetLibraryInteractiveListResponse, IGetReportItemAnswer, IGetReportItemAnswerHandler, IHintRequest, IHostFeatureSupport, IHostFeatures, IHostModalSupport, IInitInteractive, IInteractiveListResponseItem, IInteractiveStateProps, IInteractiveStateWithDataset, IJwtClaims, IJwtResponse, ILibraryInteractiveListResponseItem, ILinkedInteractive, ILinkedInteractiveStateResponse, INavigationOptions, IPortalClaims, IRemoveLinkedInteractiveStateListenerRequest, IReportInitInteractive, IReportItemAnswer, IReportItemClientMessage, IReportItemInitInteractive, IReportItemServerMessage, IRuntimeClientMessage, IRuntimeCustomReportValues, IRuntimeImageQuestionMetadata, IRuntimeInitInteractive, IRuntimeInteractiveMetadata, IRuntimeMetadata, IRuntimeMetadataBase, IRuntimeMultipleChoiceMetadata, IRuntimeOpenResponseMetadata, IRuntimeServerMessage, ISetLinkedInteractives, IShowAlert, IShowDialog, IShowLightbox, IShowModal, ISupportedFeatures, ISupportedFeaturesRequest, ITextDecorationHandler, ITextDecorationHandlerInfo, ITextDecorationInfo, IThemeInfo, IWriteAttachmentRequest, IframePhoneServerMessage, InitInteractiveMode, InteractiveItemId, LoggerClientMessage, ModalType, ReadAttachmentParams, ServerMessage, WriteAttachmentParams, addAuthoredStateListener, addCustomMessageListener, addDecorateContentListener, addGetReportItemAnswerListener, addGlobalInteractiveStateListener, addInteractiveStateListener, addLinkedInteractiveStateListener, closeModal, flushStateUpdates, getAttachmentUrl, getAuthInfo, getAuthoredState, getClient, getFirebaseJwt, getGlobalInteractiveState, getInitInteractiveMessage, getInteractiveList, getInteractiveSnapshot, getInteractiveState, getLibraryInteractiveList, getMode, inIframe, log, postDecoratedContentEvent, readAttachment, removeAuthoredStateListener, removeCustomMessageListener, removeDecorateContentListener, removeGetReportItemAnswerListener, removeGlobalInteractiveStateListener, removeInteractiveStateListener, removeLinkedInteractiveStateListener, sendReportItemAnswer, setAuthoredState, setGlobalInteractiveState, setHeight, setHint, setInteractiveState, setInteractiveStateTimeout, setLinkedInteractives, setNavigation, setSupportedFeatures, showModal, useAuthoredState, useAutoSetHeight, useCustomMessages, useDecorateContent, useGlobalInteractiveState, useInitMessage, useInteractiveState, writeAttachment };
665
+ export { AttachmentInfoMap, ChoiceId, Client, ClientMessage, DeprecatedRuntimeClientMessage, DeprecatedRuntimeServerMessage, GetAttachmentUrlParams, GlobalIFrameSaverClientMessage, GlobalIFrameSaverServerMessage, IAddLinkedInteractiveStateListenerOptions, IAddLinkedInteractiveStateListenerRequest, IAttachmentInfo, IAttachmentUrlRequest, IAttachmentUrlResponse, IAuthInfo, IAuthoringClientMessage, IAuthoringCustomReportField, IAuthoringCustomReportFields, IAuthoringImageQuestionMetadata, IAuthoringInitInteractive, IAuthoringInteractiveMetadata, IAuthoringMetadata, IAuthoringMetadataBase, IAuthoringMultipleChoiceChoiceMetadata, IAuthoringMultipleChoiceMetadata, IAuthoringOpenResponseMetadata, IAuthoringServerMessage, IBaseShowModal, ICloseModal, IContextMember, IContextMembership, ICustomMessage, ICustomMessageHandler, ICustomMessageOptions, ICustomMessagesHandledMap, ICustomReportFieldsAuthoredState, ICustomReportFieldsAuthoredStateField, ICustomReportFieldsInteractiveState, IDataset, IDecoratedContentEvent, IGetAuthInfoRequest, IGetAuthInfoResponse, IGetFirebaseJwtRequest, IGetFirebaseJwtResponse, IGetInteractiveListOptions, IGetInteractiveListRequest, IGetInteractiveListResponse, IGetInteractiveSnapshotOptions, IGetInteractiveSnapshotRequest, IGetInteractiveSnapshotResponse, IGetInteractiveState, IGetLibraryInteractiveListOptions, IGetLibraryInteractiveListRequest, IGetLibraryInteractiveListResponse, IGetReportItemAnswer, IGetReportItemAnswerHandler, IHintRequest, IHostFeatureSupport, IHostFeatures, IHostModalSupport, IInitInteractive, IInteractiveListResponseItem, IInteractiveStateProps, IInteractiveStateWithDataset, IJwtClaims, IJwtResponse, ILibraryInteractiveListResponseItem, ILinkedInteractive, ILinkedInteractiveStateResponse, INavigationOptions, IPortalClaims, IRemoveLinkedInteractiveStateListenerRequest, IReportInitInteractive, IReportItemAnswer, IReportItemAnswerItem, IReportItemAnswerItemAnswerText, IReportItemAnswerItemAttachment, IReportItemAnswerItemHtml, IReportItemAnswerItemLinks, IReportItemClientMessage, IReportItemInitInteractive, IReportItemServerMessage, IRuntimeClientMessage, IRuntimeCustomReportValues, IRuntimeImageQuestionMetadata, IRuntimeInitInteractive, IRuntimeInteractiveMetadata, IRuntimeMetadata, IRuntimeMetadataBase, IRuntimeMultipleChoiceMetadata, IRuntimeOpenResponseMetadata, IRuntimeServerMessage, ISetLinkedInteractives, IShowAlert, IShowDialog, IShowLightbox, IShowModal, ISupportedFeatures, ISupportedFeaturesRequest, ITextDecorationHandler, ITextDecorationHandlerInfo, ITextDecorationInfo, IThemeInfo, IWriteAttachmentRequest, IframePhoneServerMessage, InitInteractiveMode, InteractiveItemId, LoggerClientMessage, ModalType, OnUnloadFunction, ReadAttachmentParams, ServerMessage, WriteAttachmentParams, addAuthoredStateListener, addCustomMessageListener, addDecorateContentListener, addGetReportItemAnswerListener, addGlobalInteractiveStateListener, addInteractiveStateListener, addLinkedInteractiveStateListener, closeModal, flushStateUpdates, getAttachmentUrl, getAuthInfo, getAuthoredState, getClient, getFirebaseJwt, getGlobalInteractiveState, getInitInteractiveMessage, getInteractiveList, getInteractiveSnapshot, getInteractiveState, getLibraryInteractiveList, getMode, inIframe, log, postDecoratedContentEvent, readAttachment, removeAuthoredStateListener, removeCustomMessageListener, removeDecorateContentListener, removeGetReportItemAnswerListener, removeGlobalInteractiveStateListener, removeInteractiveStateListener, removeLinkedInteractiveStateListener, sendReportItemAnswer, setAuthoredState, setGlobalInteractiveState, setHeight, setHint, setInteractiveState, setInteractiveStateTimeout, setLinkedInteractives, setNavigation, setOnUnload, setSupportedFeatures, showModal, useAuthoredState, useAutoSetHeight, useCustomMessages, useDecorateContent, useGlobalInteractiveState, useInitMessage, useInteractiveState, writeAttachment };
package/index.js CHANGED
@@ -4099,7 +4099,7 @@ var __rest = (this && this.__rest) || function (s, e) {
4099
4099
  return t;
4100
4100
  };
4101
4101
  Object.defineProperty(exports, "__esModule", { value: true });
4102
- exports.sendReportItemAnswer = exports.getAttachmentUrl = exports.readAttachment = exports.writeAttachment = exports.getLibraryInteractiveList = exports.getInteractiveSnapshot = exports.setLinkedInteractives = exports.getInteractiveList = exports.closeModal = exports.showModal = exports.removeLinkedInteractiveStateListener = exports.addLinkedInteractiveStateListener = exports.removeGlobalInteractiveStateListener = exports.addGlobalInteractiveStateListener = exports.removeAuthoredStateListener = exports.addAuthoredStateListener = exports.removeInteractiveStateListener = exports.addInteractiveStateListener = exports.log = exports.getFirebaseJwt = exports.getAuthInfo = exports.setNavigation = exports.setHint = exports.postDecoratedContentEvent = exports.setHeight = exports.setSupportedFeatures = exports.removeGetReportItemAnswerListener = exports.addGetReportItemAnswerListener = exports.removeDecorateContentListener = exports.addDecorateContentListener = exports.removeCustomMessageListener = exports.addCustomMessageListener = exports.setGlobalInteractiveState = exports.getGlobalInteractiveState = exports.setAuthoredState = exports.getAuthoredState = exports.flushStateUpdates = exports.setInteractiveState = exports.setInteractiveStateTimeout = exports.getInteractiveState = exports.getMode = exports.getInitInteractiveMessage = void 0;
4102
+ exports.setOnUnload = exports.sendReportItemAnswer = exports.getAttachmentUrl = exports.readAttachment = exports.writeAttachment = exports.getLibraryInteractiveList = exports.getInteractiveSnapshot = exports.setLinkedInteractives = exports.getInteractiveList = exports.closeModal = exports.showModal = exports.removeLinkedInteractiveStateListener = exports.addLinkedInteractiveStateListener = exports.removeGlobalInteractiveStateListener = exports.addGlobalInteractiveStateListener = exports.removeAuthoredStateListener = exports.addAuthoredStateListener = exports.removeInteractiveStateListener = exports.addInteractiveStateListener = exports.log = exports.getFirebaseJwt = exports.getAuthInfo = exports.setNavigation = exports.setHint = exports.postDecoratedContentEvent = exports.setHeight = exports.setSupportedFeatures = exports.removeGetReportItemAnswerListener = exports.addGetReportItemAnswerListener = exports.removeDecorateContentListener = exports.addDecorateContentListener = exports.removeCustomMessageListener = exports.addCustomMessageListener = exports.setGlobalInteractiveState = exports.getGlobalInteractiveState = exports.setAuthoredState = exports.getAuthoredState = exports.flushStateUpdates = exports.setInteractiveState = exports.setInteractiveStateTimeout = exports.getInteractiveState = exports.getMode = exports.getInitInteractiveMessage = void 0;
4103
4103
  var client_1 = __webpack_require__(/*! ./client */ "./src/interactive-api-client/client.ts");
4104
4104
  var uuid_1 = __webpack_require__(/*! uuid */ "./node_modules/uuid/dist/esm-browser/index.js");
4105
4105
  var THROW_NOT_IMPLEMENTED_YET = function (method) {
@@ -4241,6 +4241,7 @@ var removeDecorateContentListener = function () {
4241
4241
  (0, client_1.getClient)().removeDecorateContentListener();
4242
4242
  };
4243
4243
  exports.removeDecorateContentListener = removeDecorateContentListener;
4244
+ // tslint:disable-next-line:max-line-length
4244
4245
  var addGetReportItemAnswerListener = function (callback) {
4245
4246
  (0, client_1.getClient)().addGetReportItemAnswerListener(callback);
4246
4247
  };
@@ -4569,6 +4570,10 @@ var sendReportItemAnswer = function (request) {
4569
4570
  (0, client_1.getClient)().post("reportItemAnswer", request);
4570
4571
  };
4571
4572
  exports.sendReportItemAnswer = sendReportItemAnswer;
4573
+ var setOnUnload = function (onUnload) {
4574
+ (0, client_1.getClient)().setOnUnload(onUnload);
4575
+ };
4576
+ exports.setOnUnload = setOnUnload;
4572
4577
 
4573
4578
 
4574
4579
  /***/ }),
@@ -4593,6 +4598,42 @@ var __assign = (this && this.__assign) || function () {
4593
4598
  };
4594
4599
  return __assign.apply(this, arguments);
4595
4600
  };
4601
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4602
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4603
+ return new (P || (P = Promise))(function (resolve, reject) {
4604
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4605
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4606
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
4607
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
4608
+ });
4609
+ };
4610
+ var __generator = (this && this.__generator) || function (thisArg, body) {
4611
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
4612
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
4613
+ function verb(n) { return function (v) { return step([n, v]); }; }
4614
+ function step(op) {
4615
+ if (f) throw new TypeError("Generator is already executing.");
4616
+ while (_) try {
4617
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
4618
+ if (y = 0, t) op = [op[0] & 2, t.value];
4619
+ switch (op[0]) {
4620
+ case 0: case 1: t = op; break;
4621
+ case 4: _.label++; return { value: op[1], done: false };
4622
+ case 5: _.label++; y = op[1]; op = [0]; continue;
4623
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
4624
+ default:
4625
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
4626
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
4627
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
4628
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
4629
+ if (t[2]) _.ops.pop();
4630
+ _.trys.pop(); continue;
4631
+ }
4632
+ op = body.call(thisArg, _);
4633
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
4634
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
4635
+ }
4636
+ };
4596
4637
  var __rest = (this && this.__rest) || function (s, e) {
4597
4638
  var t = {};
4598
4639
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -4641,6 +4682,7 @@ var Client = /** @class */ (function () {
4641
4682
  this.managedState = new managed_state_1.ManagedState();
4642
4683
  this.listeners = {};
4643
4684
  this.requestId = 1;
4685
+ this.onUnload = undefined;
4644
4686
  this.setSupportedFeatures = function (request) {
4645
4687
  var newRequest = request;
4646
4688
  if (_this.customMessagesHandled) {
@@ -4650,6 +4692,9 @@ var Client = /** @class */ (function () {
4650
4692
  }
4651
4693
  _this.post("supportedFeatures", newRequest);
4652
4694
  };
4695
+ this.setOnUnload = function (onUnload) {
4696
+ _this.onUnload = onUnload;
4697
+ };
4653
4698
  if (!(0, in_frame_1.inIframe)()) {
4654
4699
  // tslint:disable-next-line:no-console
4655
4700
  console.warn("Interactive API is meant to be used in iframe");
@@ -4790,10 +4835,26 @@ var Client = /** @class */ (function () {
4790
4835
  _this.managedState.globalInteractiveState = parseJSONIfString(newInitMessage.globalInteractiveState);
4791
4836
  }
4792
4837
  });
4793
- this.addListener("getInteractiveState", function () {
4794
- _this.post("interactiveState", _this.managedState.interactiveState);
4795
- _this.managedState.interactiveStateDirty = false;
4796
- });
4838
+ this.addListener("getInteractiveState", function (options) { return __awaiter(_this, void 0, void 0, function () {
4839
+ var finalState;
4840
+ return __generator(this, function (_a) {
4841
+ switch (_a.label) {
4842
+ case 0:
4843
+ if (!((options === null || options === void 0 ? void 0 : options.unloading) && this.onUnload)) return [3 /*break*/, 2];
4844
+ return [4 /*yield*/, this.onUnload(options)];
4845
+ case 1:
4846
+ finalState = _a.sent();
4847
+ if (finalState) {
4848
+ this.managedState.interactiveState = finalState;
4849
+ }
4850
+ _a.label = 2;
4851
+ case 2:
4852
+ this.post("interactiveState", this.managedState.interactiveState);
4853
+ this.managedState.interactiveStateDirty = false;
4854
+ return [2 /*return*/];
4855
+ }
4856
+ });
4857
+ }); });
4797
4858
  this.addListener("loadInteractiveGlobal", function (globalState) {
4798
4859
  _this.managedState.globalInteractiveState = parseJSONIfString(globalState);
4799
4860
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@concord-consortium/lara-interactive-api",
3
- "version": "1.5.1",
3
+ "version": "1.6.0-pre.2",
4
4
  "description": "LARA Interactive API client and types",
5
5
  "main": "./index.js",
6
6
  "types": "./index-bundle.d.ts",