@blackbaud/sky-addin-client 1.2.2 → 1.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.
@@ -55,7 +55,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
55
55
  Object.defineProperty(exports, "__esModule", ({ value: true }));
56
56
  __exportStar(__webpack_require__(2), exports);
57
57
  __exportStar(__webpack_require__(3), exports);
58
- __exportStar(__webpack_require__(31), exports);
58
+ __exportStar(__webpack_require__(32), exports);
59
59
 
60
60
 
61
61
  /***/ }),
@@ -66,8 +66,8 @@ __exportStar(__webpack_require__(31), exports);
66
66
  Object.defineProperty(exports, "__esModule", ({ value: true }));
67
67
  exports.AddinClient = void 0;
68
68
  /**
69
- * Collection of regexs for our whitelist of host origins.
70
- */
69
+ * Collection of regexs for our whitelist of host origins.
70
+ */
71
71
  const allowedOrigins = [
72
72
  /^https\:\/\/[\w\-\.]+\.blackbaud\.com$/,
73
73
  /^https\:\/\/[\w\-\.]+\.blackbaud\-dev\.com$/,
@@ -209,6 +209,11 @@ class AddinClient {
209
209
  * The add-in client will throw an error if an event is attempted but not one the supported types.
210
210
  */
211
211
  this.supportedEventTypes = [];
212
+ /**
213
+ * Collection of regexs for our whitelist of host origins.
214
+ */
215
+ this.allowedOrigins = allowedOrigins;
216
+ this.initConfig(args.config);
212
217
  this.windowMessageHandler = (event) => {
213
218
  this.handleMessage(event);
214
219
  };
@@ -442,6 +447,20 @@ class AddinClient {
442
447
  };
443
448
  });
444
449
  }
450
+ initConfig(config) {
451
+ var _a;
452
+ if (((_a = config === null || config === void 0 ? void 0 : config.allowedOrigins) === null || _a === void 0 ? void 0 : _a.length) > 0) {
453
+ // append custom allowed origins
454
+ this.allowedOrigins = this.allowedOrigins.concat(config.allowedOrigins);
455
+ // remove duplicates
456
+ this.allowedOrigins = this.allowedOrigins.reduce((acc, curr) => {
457
+ if (!acc.find((a) => a.source === curr.source)) {
458
+ acc.push(curr);
459
+ }
460
+ return acc;
461
+ }, []);
462
+ }
463
+ }
445
464
  /**
446
465
  * Post a message to the host page informing it that the add-in is
447
466
  * now started and listening for messages from the host.
@@ -603,7 +622,7 @@ class AddinClient {
603
622
  * @param hostOrigin
604
623
  */
605
624
  setKnownAllowedHostOrigin(hostOrigin) {
606
- for (const allowedOrigin of allowedOrigins) {
625
+ for (const allowedOrigin of this.allowedOrigins) {
607
626
  if (allowedOrigin.test(hostOrigin)) {
608
627
  this.trustedOrigin = hostOrigin;
609
628
  return;
@@ -802,6 +821,7 @@ __exportStar(__webpack_require__(27), exports);
802
821
  __exportStar(__webpack_require__(28), exports);
803
822
  __exportStar(__webpack_require__(29), exports);
804
823
  __exportStar(__webpack_require__(30), exports);
824
+ __exportStar(__webpack_require__(31), exports);
805
825
 
806
826
 
807
827
  /***/ }),
@@ -992,6 +1012,14 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
992
1012
  /***/ ((__unused_webpack_module, exports) => {
993
1013
 
994
1014
 
1015
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1016
+
1017
+
1018
+ /***/ }),
1019
+ /* 26 */
1020
+ /***/ ((__unused_webpack_module, exports) => {
1021
+
1022
+
995
1023
  Object.defineProperty(exports, "__esModule", ({ value: true }));
996
1024
  exports.AddinConfirmButtonStyle = void 0;
997
1025
  /**
@@ -1010,7 +1038,7 @@ var AddinConfirmButtonStyle;
1010
1038
 
1011
1039
 
1012
1040
  /***/ }),
1013
- /* 26 */
1041
+ /* 27 */
1014
1042
  /***/ ((__unused_webpack_module, exports) => {
1015
1043
 
1016
1044
 
@@ -1018,7 +1046,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
1018
1046
 
1019
1047
 
1020
1048
  /***/ }),
1021
- /* 27 */
1049
+ /* 28 */
1022
1050
  /***/ ((__unused_webpack_module, exports) => {
1023
1051
 
1024
1052
 
@@ -1037,7 +1065,7 @@ var AddinTabSummaryStyle;
1037
1065
 
1038
1066
 
1039
1067
  /***/ }),
1040
- /* 28 */
1068
+ /* 29 */
1041
1069
  /***/ ((__unused_webpack_module, exports) => {
1042
1070
 
1043
1071
 
@@ -1045,7 +1073,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
1045
1073
 
1046
1074
 
1047
1075
  /***/ }),
1048
- /* 29 */
1076
+ /* 30 */
1049
1077
  /***/ ((__unused_webpack_module, exports) => {
1050
1078
 
1051
1079
 
@@ -1066,7 +1094,7 @@ var AddinTileSummaryStyle;
1066
1094
 
1067
1095
 
1068
1096
  /***/ }),
1069
- /* 30 */
1097
+ /* 31 */
1070
1098
  /***/ ((__unused_webpack_module, exports) => {
1071
1099
 
1072
1100
 
@@ -1089,7 +1117,7 @@ var AddinToastStyle;
1089
1117
 
1090
1118
 
1091
1119
  /***/ }),
1092
- /* 31 */
1120
+ /* 32 */
1093
1121
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1094
1122
 
1095
1123
 
@@ -1108,12 +1136,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
1108
1136
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
1109
1137
  };
1110
1138
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1111
- __exportStar(__webpack_require__(32), exports);
1112
1139
  __exportStar(__webpack_require__(33), exports);
1140
+ __exportStar(__webpack_require__(34), exports);
1113
1141
 
1114
1142
 
1115
1143
  /***/ }),
1116
- /* 32 */
1144
+ /* 33 */
1117
1145
  /***/ ((__unused_webpack_module, exports) => {
1118
1146
 
1119
1147
 
@@ -1121,7 +1149,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
1121
1149
 
1122
1150
 
1123
1151
  /***/ }),
1124
- /* 33 */
1152
+ /* 34 */
1125
1153
  /***/ ((__unused_webpack_module, exports) => {
1126
1154
 
1127
1155
 
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.BBSkyAddinClient=t():e.BBSkyAddinClient=t()}(self,(()=>(()=>{"use strict";var e={789:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var a=Object.getOwnPropertyDescriptor(t,s);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,a)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),a(s(983),t)},903:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AddinClient=void 0;const s=[/^https\:\/\/[\w\-\.]+\.blackbaud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaud\-dev\.com$/,/^http\:\/\/[\w\-\.]+\.blackbaud\-dev\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudhosting\.com$/,/^https\:\/\/[\w\-\.]+\.bbcloudservices\.com$/,/^https\:\/\/localhost(\:[0-9]+)?$/,/^https\:\/\/secure[2|3|8]\.convio\.net$/,/^https\:\/\/testweb\.convio\.com$/,/^https\:\/\/[\w\-\.]+\.conviocloud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudcloud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudfaith\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudportal\.com$/,/^https\:\/\/[\w\-\.]+\.bbk12\.com$/,/^https\:\/\/[\w\-\.]+\.mycampus\-app\.com$/,/^https\:\/\/[\w\-\.]+\.myschoolapp\.com$/,/^https\:\/\/[\w\-\.]+\.myschoolautomation\.com$/,/^https\:\/\/[\w\-\.]+\.myschooldemo\.com$/,/^https\:\/\/[\w\-\.]+\.myschooltraining\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudwp\.com$/,/^https\:\/\/[\w\-\.]+\.carrytheload\.org$/,/^https\:\/\/[\w\-\.]+\.ummsfoundation\.org$/,/^http\:\/\/[\w\-\.]+\.lcrf\.org$/,/^https\:\/\/[\w\-\.]+\.go2\.org$/,/^https\:\/\/[\w\-\.]+\.nationwidechildrens\.org$/,/^https\:\/\/[\w\-\.]+\.lupus\.org$/,/^https\:\/\/[\w\-\.]+\.operationsmile\.ca$/,/^https\:\/\/[\w\-\.]+\.convio\.net$/,/^https\:\/\/[\w\-\.]+\.ontariospca\.ca$/,/^https\:\/\/[\w\-\.]+\.brighamandwomens\.org$/,/^https\:\/\/[\w\-\.]+\.northernlighthealth\.org$/,/^http\:\/\/[\w\-\.]+\.convio\.net$/,/^https\:\/\/[\w\-\.]+\.alpha1\.org$/,/^https\:\/\/[\w\-\.]+\.pscpartners\.org$/,/^https\:\/\/[\w\-\.]+\.mercyforanimals\.org$/,/^https\:\/\/[\w\-\.]+\.braintumor\.org$/,/^https\:\/\/[\w\-\.]+\.cancer\.ca$/,/^https\:\/\/[\w\-\.]+\.phoenixchildrensfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.ocmc\.org$/,/^https\:\/\/[\w\-\.]+\.stlouischildrens\.org$/,/^https\:\/\/[\w\-\.]+\.choa\.org$/,/^https\:\/\/[\w\-\.]+\.acsevents\.org$/,/^https\:\/\/[\w\-\.]+\.operationsmile\.org$/,/^https\:\/\/[\w\-\.]+\.mdmercy\.com$/,/^https\:\/\/[\w\-\.]+\.cookchildrens\.org$/,/^https\:\/\/[\w\-\.]+\.chla\.org$/,/^https\:\/\/[\w\-\.]+\.nleomf\.org$/,/^https\:\/\/[\w\-\.]+\.pwatoronto\.org$/,/^https\:\/\/[\w\-\.]+\.jfsla\.org$/,/^https\:\/\/[\w\-\.]+\.roswellpark\.org$/,/^https\:\/\/[\w\-\.]+\.alsagoldenwest\.org$/,/^https\:\/\/[\w\-\.]+\.cancercarefoundation\.ca$/,/^https\:\/\/[\w\-\.]+\.alsnc\.org$/,/^https\:\/\/[\w\-\.]+\.alsanm\.org$/,/^https\:\/\/[\w\-\.]+\.waysidewaifs\.org$/,/^https\:\/\/[\w\-\.]+\.bladdercancercanada\.org$/,/^https\:\/\/[\w\-\.]+\.jimmyfund\.org$/,/^https\:\/\/[\w\-\.]+\.info\-komen\.org$/,/^https\:\/\/[\w\-\.]+\.mountsinai\.org$/,/^https\:\/\/[\w\-\.]+\.walkforpd\.ca$/,/^https\:\/\/[\w\-\.]+\.alsoregon\.org$/,/^https\:\/\/[\w\-\.]+\.feedhopenow\.org$/,/^https\:\/\/[\w\-\.]+\.trilliumgiving\.ca$/,/^https\:\/\/[\w\-\.]+\.swimacrossamerica\.org$/,/^https\:\/\/ovariancanada\.org$/,/^https\:\/\/[\w\-\.]+\.ovariancanada\.org$/,/^https\:\/\/[\w\-\.]+\.alsunitedchicago\.org$/,/^https\:\/\/[\w\-\.]+\.fredhutch\.org$/,/^https\:\/\/[\w\-\.]+\.hss\.edu$/,/^https\:\/\/[\w\-\.]+\.nyghfoundation\.ca$/,/^https\:\/\/[\w\-\.]+\.natureconservancy\.ca$/,/^https\:\/\/[\w\-\.]+\.llscanada\.org$/,/^https\:\/\/[\w\-\.]+\.als\-ny\.org$/,/^https\:\/\/[\w\-\.]+\.zerocancer\.org$/,/^https\:\/\/[\w\-\.]+\.alsmidatlantic\.org$/,/^https\:\/\/[\w\-\.]+\.habitat\.ca$/,/^https\:\/\/[\w\-\.]+\.stamfordhospitalfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.alsohio\.org$/,/^https\:\/\/[\w\-\.]+\.cancercarefdn\.mb\.ca$/,/^https\:\/\/[\w\-\.]+\.baycrestfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.southlake\.ca$/,/^https\:\/\/[\w\-\.]+\.parkinson\.ca$/];class o{static getQueryString(){return window.location.search}constructor(e){this.args=e,this.authTokenRequests=[],this.lastAuthTokenRequestId=0,this.modalRequests=[],this.lastModalRequestId=0,this.registeredAddinEvents={},this.sentEvents={},this.pendingSentEvents={},this.eventRequestId=0,this.supportedEventTypes=[],this.windowMessageHandler=e=>{this.handleMessage(e)},window.addEventListener("message",this.windowMessageHandler),this.raiseAddinReadyMessage()}destroy(){window.removeEventListener("message",this.windowMessageHandler),this.heightChangeIntervalId&&clearInterval(this.heightChangeIntervalId)}navigate(e){this.postMessageToHostPage({message:{url:e.url},messageType:"navigate"})}getAuthToken(){return this.getUserIdentityToken()}getUserIdentityToken(){return new Promise(((e,t)=>{const s=++this.lastAuthTokenRequestId;this.authTokenRequests[s]={reject:t,resolve:e},this.postMessageToHostPage({message:{authTokenRequestId:s},messageType:"get-auth-token"})}))}showModal(e){return{modalClosed:new Promise(((t,s)=>{const o=++this.lastModalRequestId;this.modalRequests[o]={reject:s,resolve:t},this.postMessageToHostPage({message:{args:e,modalRequestId:o},messageType:"show-modal"})}))}}closeModal(e){this.postMessageToHostPage({message:e,messageType:"close-modal"})}openHelp(e){this.postMessageToHostPage({message:{helpKey:e.helpKey},messageType:"open-help"})}showToast(e){this.postMessageToHostPage({message:e,messageType:"show-toast"})}showFlyout(e){return{flyoutClosed:new Promise(((t,s)=>{e.defaultWidth=e.defaultWidth,e.maxWidth=e.maxWidth,e.minWidth=e.minWidth,this.flyoutRequest={reject:s,resolve:t},this.postMessageToHostPage({message:e,messageType:"show-flyout"})}))}}closeFlyout(){this.postMessageToHostPage({messageType:"close-flyout"})}showConfirm(e){return new Promise(((t,s)=>{this.confirmRequest={reject:s,resolve:t},this.postMessageToHostPage({message:e,messageType:"show-confirm"})}))}showError(e){this.postMessageToHostPage({message:e,messageType:"show-error"})}showWait(){this.postMessageToHostPage({messageType:"show-wait"})}hideWait(){this.postMessageToHostPage({messageType:"hide-wait"})}addEventHandler(e,t){this.registeredAddinEvents[e]=t}sendEvent(e){return new Promise(((t,s)=>{const o=e.type;this.supportedEventTypes.includes(o)||s("Event type not supported");const a=this.pendingSentEvents[o];a&&(clearTimeout(a.timeoutId),a.reject("Event cancelled"));const n=setTimeout((()=>{delete this.pendingSentEvents[o],this.postMessageToHostPage({message:{event:e,eventRequestId:this.eventRequestId},messageType:"client-event"}),this.sentEvents[this.eventRequestId]=t,this.eventRequestId++}),200);this.pendingSentEvents[o]={reject:s,timeoutId:n}}))}raiseAddinReadyMessage(){this.postMessageToHostPage({messageType:"ready"},"*")}handleModalClosedMessage(e){const t=this.modalRequests,s=e.modalRequestId;t[s].resolve(e.context),t[s]=void 0}handleAuthTokenMessage(e){const t=this.authTokenRequests,s=e.message.authTokenRequestId,o=t[s];switch(e.messageType){case"auth-token":const t=e.message.authToken;o.resolve(t);break;case"auth-token-fail":o.reject(e.message.reason)}t[s]=void 0}handleMessage(e){const t=e.data;if(t&&"bb-addin-host"===t.source)if("host-ready"===t.messageType)this.setKnownAllowedHostOrigin(e.origin),this.trackHeightChangesOfAddinContent(),this.supportedEventTypes=t.message.supportedEventTypes,this.args.callbacks.init({context:t.message.context,envId:t.message.envId,ready:e=>{this.checkForHeightChangesOfAddinContent(),this.postMessageToHostPage({message:e,messageType:"addin-ready"})},supportedEventTypes:t.message.supportedEventTypes,themeSettings:t.message.themeSettings});else if(this.isFromValidOrigin(e))switch(t.messageType){case"auth-token":case"auth-token-fail":this.handleAuthTokenMessage(t);break;case"modal-closed":this.handleModalClosedMessage(t.message);break;case"button-click":this.args.callbacks.buttonClick&&this.args.callbacks.buttonClick();break;case"update-context":this.args.callbacks.updateContext&&this.args.callbacks.updateContext(t.message);break;case"confirm-closed":this.confirmRequest&&(this.confirmRequest.resolve(t.message.reason),this.confirmRequest=void 0);break;case"flyout-closed":this.flyoutRequest&&(this.flyoutRequest.resolve(),this.flyoutRequest=void 0);break;case"flyout-next-click":this.args.callbacks.flyoutNextClick&&this.args.callbacks.flyoutNextClick();break;case"flyout-previous-click":this.args.callbacks.flyoutPreviousClick&&this.args.callbacks.flyoutPreviousClick();break;case"help-click":this.args.callbacks.helpClick&&this.args.callbacks.helpClick();break;case"settings-click":this.args.callbacks.settingsClick&&this.args.callbacks.settingsClick();break;case"theme-change":this.args.callbacks.themeChange&&this.args.callbacks.themeChange(t.message.themeSettings);break;case"host-event":this.processHostEvent(t.message);break;case"event-received":this.resolveClientEvent(t.message)}else this.warnInvalidOrigin()}setKnownAllowedHostOrigin(e){for(const t of s)if(t.test(e))return void(this.trustedOrigin=e)}checkForHeightChangesOfAddinContent(){const e=document.documentElement.offsetHeight;e!==this.lastPostedIframeHeight&&(this.lastPostedIframeHeight=e,this.postMessageToHostPage({message:{height:e+"px"},messageType:"height-change"}))}trackHeightChangesOfAddinContent(){this.heightChangeIntervalId=setInterval((()=>{this.checkForHeightChangesOfAddinContent()}),1e3)}postMessageToHostPage(e,t){e.source="bb-addin-client",e.addinId=this.getQueryVariable("addinId"),(t=t||this.trustedOrigin)?window.parent.postMessage(e,t):this.warnInvalidOrigin()}processHostEvent(e){const t=e.context,s=this.registeredAddinEvents[t.type];let o;o=s?this.isBlockingEventType(t.type)?new Promise((e=>{s(t.context,(()=>{e()}))})):new Promise((e=>{s(t.context),e()})):Promise.resolve(),o.then((()=>this.postEventReceivedMessage(e.eventRequestId)))}isBlockingEventType(e){switch(e){case"form-save":case"form-cancel":return!0}return!1}postEventReceivedMessage(e){this.postMessageToHostPage({message:{eventRequestId:e},messageType:"event-received"})}resolveClientEvent(e){const t=e.eventRequestId,s=this.sentEvents[t];s&&(s(),delete this.sentEvents[t])}isFromValidOrigin(e){return e.origin===this.trustedOrigin}warnInvalidOrigin(){console.warn("The origin is not trusted because the host-ready message has not been sent or because the host origin is not a whitelisted origin.")}getQueryVariable(e){const t=o.getQueryString().substring(1).split("&");for(const s of t){const t=s.split("=");if(decodeURIComponent(t[0])===e)return decodeURIComponent(t[1])}}}t.AddinClient=o},714:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},819:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinButtonStyle=void 0,(s=t.AddinButtonStyle||(t.AddinButtonStyle={}))[s.None=0]="None",s[s.Add=1]="Add",s[s.Edit=2]="Edit",s[s.Delete=3]="Delete"},676:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},233:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},455:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},75:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},258:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},413:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},954:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},663:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},542:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},610:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},95:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},581:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},342:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},790:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},212:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},88:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},90:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},948:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},468:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinConfirmButtonStyle=void 0,(s=t.AddinConfirmButtonStyle||(t.AddinConfirmButtonStyle={}))[s.Default=0]="Default",s[s.Primary=1]="Primary",s[s.Link=2]="Link"},756:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},545:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},993:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinTabSummaryStyle=void 0,(s=t.AddinTabSummaryStyle||(t.AddinTabSummaryStyle={}))[s.None=0]="None",s[s.Text=1]="Text"},518:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},590:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinTileSummaryStyle=void 0,(s=t.AddinTileSummaryStyle||(t.AddinTileSummaryStyle={}))[s.None=0]="None",s[s.Text=1]="Text",s[s.Check=2]="Check"},480:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinToastStyle=void 0,(s=t.AddinToastStyle||(t.AddinToastStyle={}))[s.Danger=0]="Danger",s[s.Info=1]="Info",s[s.Success=2]="Success",s[s.Warning=3]="Warning"},142:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var a=Object.getOwnPropertyDescriptor(t,s);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,a)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),a(s(714),t),a(s(819),t),a(s(676),t),a(s(233),t),a(s(455),t),a(s(75),t),a(s(258),t),a(s(413),t),a(s(954),t),a(s(663),t),a(s(542),t),a(s(610),t),a(s(95),t),a(s(581),t),a(s(342),t),a(s(790),t),a(s(212),t),a(s(88),t),a(s(90),t),a(s(948),t),a(s(756),t),a(s(468),t),a(s(545),t),a(s(993),t),a(s(518),t),a(s(590),t),a(s(480),t)},220:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},606:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},57:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var a=Object.getOwnPropertyDescriptor(t,s);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,a)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),a(s(220),t),a(s(606),t)},983:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var a=Object.getOwnPropertyDescriptor(t,s);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,a)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),a(s(903),t),a(s(142),t),a(s(57),t)}},t={};return function s(o){var a=t[o];if(void 0!==a)return a.exports;var n=t[o]={exports:{}};return e[o].call(n.exports,n,n.exports,s),n.exports}(789)})()));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.BBSkyAddinClient=t():e.BBSkyAddinClient=t()}(self,(()=>(()=>{"use strict";var e={789:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var a=Object.getOwnPropertyDescriptor(t,s);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,a)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),a(s(983),t)},903:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AddinClient=void 0;const s=[/^https\:\/\/[\w\-\.]+\.blackbaud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaud\-dev\.com$/,/^http\:\/\/[\w\-\.]+\.blackbaud\-dev\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudhosting\.com$/,/^https\:\/\/[\w\-\.]+\.bbcloudservices\.com$/,/^https\:\/\/localhost(\:[0-9]+)?$/,/^https\:\/\/secure[2|3|8]\.convio\.net$/,/^https\:\/\/testweb\.convio\.com$/,/^https\:\/\/[\w\-\.]+\.conviocloud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudcloud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudfaith\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudportal\.com$/,/^https\:\/\/[\w\-\.]+\.bbk12\.com$/,/^https\:\/\/[\w\-\.]+\.mycampus\-app\.com$/,/^https\:\/\/[\w\-\.]+\.myschoolapp\.com$/,/^https\:\/\/[\w\-\.]+\.myschoolautomation\.com$/,/^https\:\/\/[\w\-\.]+\.myschooldemo\.com$/,/^https\:\/\/[\w\-\.]+\.myschooltraining\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudwp\.com$/,/^https\:\/\/[\w\-\.]+\.carrytheload\.org$/,/^https\:\/\/[\w\-\.]+\.ummsfoundation\.org$/,/^http\:\/\/[\w\-\.]+\.lcrf\.org$/,/^https\:\/\/[\w\-\.]+\.go2\.org$/,/^https\:\/\/[\w\-\.]+\.nationwidechildrens\.org$/,/^https\:\/\/[\w\-\.]+\.lupus\.org$/,/^https\:\/\/[\w\-\.]+\.operationsmile\.ca$/,/^https\:\/\/[\w\-\.]+\.convio\.net$/,/^https\:\/\/[\w\-\.]+\.ontariospca\.ca$/,/^https\:\/\/[\w\-\.]+\.brighamandwomens\.org$/,/^https\:\/\/[\w\-\.]+\.northernlighthealth\.org$/,/^http\:\/\/[\w\-\.]+\.convio\.net$/,/^https\:\/\/[\w\-\.]+\.alpha1\.org$/,/^https\:\/\/[\w\-\.]+\.pscpartners\.org$/,/^https\:\/\/[\w\-\.]+\.mercyforanimals\.org$/,/^https\:\/\/[\w\-\.]+\.braintumor\.org$/,/^https\:\/\/[\w\-\.]+\.cancer\.ca$/,/^https\:\/\/[\w\-\.]+\.phoenixchildrensfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.ocmc\.org$/,/^https\:\/\/[\w\-\.]+\.stlouischildrens\.org$/,/^https\:\/\/[\w\-\.]+\.choa\.org$/,/^https\:\/\/[\w\-\.]+\.acsevents\.org$/,/^https\:\/\/[\w\-\.]+\.operationsmile\.org$/,/^https\:\/\/[\w\-\.]+\.mdmercy\.com$/,/^https\:\/\/[\w\-\.]+\.cookchildrens\.org$/,/^https\:\/\/[\w\-\.]+\.chla\.org$/,/^https\:\/\/[\w\-\.]+\.nleomf\.org$/,/^https\:\/\/[\w\-\.]+\.pwatoronto\.org$/,/^https\:\/\/[\w\-\.]+\.jfsla\.org$/,/^https\:\/\/[\w\-\.]+\.roswellpark\.org$/,/^https\:\/\/[\w\-\.]+\.alsagoldenwest\.org$/,/^https\:\/\/[\w\-\.]+\.cancercarefoundation\.ca$/,/^https\:\/\/[\w\-\.]+\.alsnc\.org$/,/^https\:\/\/[\w\-\.]+\.alsanm\.org$/,/^https\:\/\/[\w\-\.]+\.waysidewaifs\.org$/,/^https\:\/\/[\w\-\.]+\.bladdercancercanada\.org$/,/^https\:\/\/[\w\-\.]+\.jimmyfund\.org$/,/^https\:\/\/[\w\-\.]+\.info\-komen\.org$/,/^https\:\/\/[\w\-\.]+\.mountsinai\.org$/,/^https\:\/\/[\w\-\.]+\.walkforpd\.ca$/,/^https\:\/\/[\w\-\.]+\.alsoregon\.org$/,/^https\:\/\/[\w\-\.]+\.feedhopenow\.org$/,/^https\:\/\/[\w\-\.]+\.trilliumgiving\.ca$/,/^https\:\/\/[\w\-\.]+\.swimacrossamerica\.org$/,/^https\:\/\/ovariancanada\.org$/,/^https\:\/\/[\w\-\.]+\.ovariancanada\.org$/,/^https\:\/\/[\w\-\.]+\.alsunitedchicago\.org$/,/^https\:\/\/[\w\-\.]+\.fredhutch\.org$/,/^https\:\/\/[\w\-\.]+\.hss\.edu$/,/^https\:\/\/[\w\-\.]+\.nyghfoundation\.ca$/,/^https\:\/\/[\w\-\.]+\.natureconservancy\.ca$/,/^https\:\/\/[\w\-\.]+\.llscanada\.org$/,/^https\:\/\/[\w\-\.]+\.als\-ny\.org$/,/^https\:\/\/[\w\-\.]+\.zerocancer\.org$/,/^https\:\/\/[\w\-\.]+\.alsmidatlantic\.org$/,/^https\:\/\/[\w\-\.]+\.habitat\.ca$/,/^https\:\/\/[\w\-\.]+\.stamfordhospitalfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.alsohio\.org$/,/^https\:\/\/[\w\-\.]+\.cancercarefdn\.mb\.ca$/,/^https\:\/\/[\w\-\.]+\.baycrestfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.southlake\.ca$/,/^https\:\/\/[\w\-\.]+\.parkinson\.ca$/];class o{static getQueryString(){return window.location.search}constructor(e){this.args=e,this.authTokenRequests=[],this.lastAuthTokenRequestId=0,this.modalRequests=[],this.lastModalRequestId=0,this.registeredAddinEvents={},this.sentEvents={},this.pendingSentEvents={},this.eventRequestId=0,this.supportedEventTypes=[],this.allowedOrigins=s,this.initConfig(e.config),this.windowMessageHandler=e=>{this.handleMessage(e)},window.addEventListener("message",this.windowMessageHandler),this.raiseAddinReadyMessage()}destroy(){window.removeEventListener("message",this.windowMessageHandler),this.heightChangeIntervalId&&clearInterval(this.heightChangeIntervalId)}navigate(e){this.postMessageToHostPage({message:{url:e.url},messageType:"navigate"})}getAuthToken(){return this.getUserIdentityToken()}getUserIdentityToken(){return new Promise(((e,t)=>{const s=++this.lastAuthTokenRequestId;this.authTokenRequests[s]={reject:t,resolve:e},this.postMessageToHostPage({message:{authTokenRequestId:s},messageType:"get-auth-token"})}))}showModal(e){return{modalClosed:new Promise(((t,s)=>{const o=++this.lastModalRequestId;this.modalRequests[o]={reject:s,resolve:t},this.postMessageToHostPage({message:{args:e,modalRequestId:o},messageType:"show-modal"})}))}}closeModal(e){this.postMessageToHostPage({message:e,messageType:"close-modal"})}openHelp(e){this.postMessageToHostPage({message:{helpKey:e.helpKey},messageType:"open-help"})}showToast(e){this.postMessageToHostPage({message:e,messageType:"show-toast"})}showFlyout(e){return{flyoutClosed:new Promise(((t,s)=>{e.defaultWidth=e.defaultWidth,e.maxWidth=e.maxWidth,e.minWidth=e.minWidth,this.flyoutRequest={reject:s,resolve:t},this.postMessageToHostPage({message:e,messageType:"show-flyout"})}))}}closeFlyout(){this.postMessageToHostPage({messageType:"close-flyout"})}showConfirm(e){return new Promise(((t,s)=>{this.confirmRequest={reject:s,resolve:t},this.postMessageToHostPage({message:e,messageType:"show-confirm"})}))}showError(e){this.postMessageToHostPage({message:e,messageType:"show-error"})}showWait(){this.postMessageToHostPage({messageType:"show-wait"})}hideWait(){this.postMessageToHostPage({messageType:"hide-wait"})}addEventHandler(e,t){this.registeredAddinEvents[e]=t}sendEvent(e){return new Promise(((t,s)=>{const o=e.type;this.supportedEventTypes.includes(o)||s("Event type not supported");const a=this.pendingSentEvents[o];a&&(clearTimeout(a.timeoutId),a.reject("Event cancelled"));const n=setTimeout((()=>{delete this.pendingSentEvents[o],this.postMessageToHostPage({message:{event:e,eventRequestId:this.eventRequestId},messageType:"client-event"}),this.sentEvents[this.eventRequestId]=t,this.eventRequestId++}),200);this.pendingSentEvents[o]={reject:s,timeoutId:n}}))}initConfig(e){var t;(null===(t=null==e?void 0:e.allowedOrigins)||void 0===t?void 0:t.length)>0&&(this.allowedOrigins=this.allowedOrigins.concat(e.allowedOrigins),this.allowedOrigins=this.allowedOrigins.reduce(((e,t)=>(e.find((e=>e.source===t.source))||e.push(t),e)),[]))}raiseAddinReadyMessage(){this.postMessageToHostPage({messageType:"ready"},"*")}handleModalClosedMessage(e){const t=this.modalRequests,s=e.modalRequestId;t[s].resolve(e.context),t[s]=void 0}handleAuthTokenMessage(e){const t=this.authTokenRequests,s=e.message.authTokenRequestId,o=t[s];switch(e.messageType){case"auth-token":const t=e.message.authToken;o.resolve(t);break;case"auth-token-fail":o.reject(e.message.reason)}t[s]=void 0}handleMessage(e){const t=e.data;if(t&&"bb-addin-host"===t.source)if("host-ready"===t.messageType)this.setKnownAllowedHostOrigin(e.origin),this.trackHeightChangesOfAddinContent(),this.supportedEventTypes=t.message.supportedEventTypes,this.args.callbacks.init({context:t.message.context,envId:t.message.envId,ready:e=>{this.checkForHeightChangesOfAddinContent(),this.postMessageToHostPage({message:e,messageType:"addin-ready"})},supportedEventTypes:t.message.supportedEventTypes,themeSettings:t.message.themeSettings});else if(this.isFromValidOrigin(e))switch(t.messageType){case"auth-token":case"auth-token-fail":this.handleAuthTokenMessage(t);break;case"modal-closed":this.handleModalClosedMessage(t.message);break;case"button-click":this.args.callbacks.buttonClick&&this.args.callbacks.buttonClick();break;case"update-context":this.args.callbacks.updateContext&&this.args.callbacks.updateContext(t.message);break;case"confirm-closed":this.confirmRequest&&(this.confirmRequest.resolve(t.message.reason),this.confirmRequest=void 0);break;case"flyout-closed":this.flyoutRequest&&(this.flyoutRequest.resolve(),this.flyoutRequest=void 0);break;case"flyout-next-click":this.args.callbacks.flyoutNextClick&&this.args.callbacks.flyoutNextClick();break;case"flyout-previous-click":this.args.callbacks.flyoutPreviousClick&&this.args.callbacks.flyoutPreviousClick();break;case"help-click":this.args.callbacks.helpClick&&this.args.callbacks.helpClick();break;case"settings-click":this.args.callbacks.settingsClick&&this.args.callbacks.settingsClick();break;case"theme-change":this.args.callbacks.themeChange&&this.args.callbacks.themeChange(t.message.themeSettings);break;case"host-event":this.processHostEvent(t.message);break;case"event-received":this.resolveClientEvent(t.message)}else this.warnInvalidOrigin()}setKnownAllowedHostOrigin(e){for(const t of this.allowedOrigins)if(t.test(e))return void(this.trustedOrigin=e)}checkForHeightChangesOfAddinContent(){const e=document.documentElement.offsetHeight;e!==this.lastPostedIframeHeight&&(this.lastPostedIframeHeight=e,this.postMessageToHostPage({message:{height:e+"px"},messageType:"height-change"}))}trackHeightChangesOfAddinContent(){this.heightChangeIntervalId=setInterval((()=>{this.checkForHeightChangesOfAddinContent()}),1e3)}postMessageToHostPage(e,t){e.source="bb-addin-client",e.addinId=this.getQueryVariable("addinId"),(t=t||this.trustedOrigin)?window.parent.postMessage(e,t):this.warnInvalidOrigin()}processHostEvent(e){const t=e.context,s=this.registeredAddinEvents[t.type];let o;o=s?this.isBlockingEventType(t.type)?new Promise((e=>{s(t.context,(()=>{e()}))})):new Promise((e=>{s(t.context),e()})):Promise.resolve(),o.then((()=>this.postEventReceivedMessage(e.eventRequestId)))}isBlockingEventType(e){switch(e){case"form-save":case"form-cancel":return!0}return!1}postEventReceivedMessage(e){this.postMessageToHostPage({message:{eventRequestId:e},messageType:"event-received"})}resolveClientEvent(e){const t=e.eventRequestId,s=this.sentEvents[t];s&&(s(),delete this.sentEvents[t])}isFromValidOrigin(e){return e.origin===this.trustedOrigin}warnInvalidOrigin(){console.warn("The origin is not trusted because the host-ready message has not been sent or because the host origin is not a whitelisted origin.")}getQueryVariable(e){const t=o.getQueryString().substring(1).split("&");for(const s of t){const t=s.split("=");if(decodeURIComponent(t[0])===e)return decodeURIComponent(t[1])}}}t.AddinClient=o},714:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},819:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinButtonStyle=void 0,(s=t.AddinButtonStyle||(t.AddinButtonStyle={}))[s.None=0]="None",s[s.Add=1]="Add",s[s.Edit=2]="Edit",s[s.Delete=3]="Delete"},676:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},233:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},455:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},407:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},75:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},258:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},413:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},954:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},663:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},542:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},610:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},95:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},581:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},342:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},790:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},212:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},88:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},90:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},948:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},468:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinConfirmButtonStyle=void 0,(s=t.AddinConfirmButtonStyle||(t.AddinConfirmButtonStyle={}))[s.Default=0]="Default",s[s.Primary=1]="Primary",s[s.Link=2]="Link"},756:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},545:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},993:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinTabSummaryStyle=void 0,(s=t.AddinTabSummaryStyle||(t.AddinTabSummaryStyle={}))[s.None=0]="None",s[s.Text=1]="Text"},518:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},590:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinTileSummaryStyle=void 0,(s=t.AddinTileSummaryStyle||(t.AddinTileSummaryStyle={}))[s.None=0]="None",s[s.Text=1]="Text",s[s.Check=2]="Check"},480:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinToastStyle=void 0,(s=t.AddinToastStyle||(t.AddinToastStyle={}))[s.Danger=0]="Danger",s[s.Info=1]="Info",s[s.Success=2]="Success",s[s.Warning=3]="Warning"},142:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var a=Object.getOwnPropertyDescriptor(t,s);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,a)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),a(s(714),t),a(s(819),t),a(s(676),t),a(s(233),t),a(s(455),t),a(s(407),t),a(s(75),t),a(s(258),t),a(s(413),t),a(s(954),t),a(s(663),t),a(s(542),t),a(s(610),t),a(s(95),t),a(s(581),t),a(s(342),t),a(s(790),t),a(s(212),t),a(s(88),t),a(s(90),t),a(s(948),t),a(s(756),t),a(s(468),t),a(s(545),t),a(s(993),t),a(s(518),t),a(s(590),t),a(s(480),t)},220:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},606:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},57:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var a=Object.getOwnPropertyDescriptor(t,s);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,a)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),a(s(220),t),a(s(606),t)},983:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var a=Object.getOwnPropertyDescriptor(t,s);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,a)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),a(s(903),t),a(s(142),t),a(s(57),t)}},t={};return function s(o){var a=t[o];if(void 0!==a)return a.exports;var n=t[o]={exports:{}};return e[o].call(n.exports,n,n.exports,s),n.exports}(789)})()));
@@ -55,7 +55,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
55
55
  Object.defineProperty(exports, "__esModule", ({ value: true }));
56
56
  __exportStar(__webpack_require__(2), exports);
57
57
  __exportStar(__webpack_require__(3), exports);
58
- __exportStar(__webpack_require__(31), exports);
58
+ __exportStar(__webpack_require__(32), exports);
59
59
 
60
60
 
61
61
  /***/ }),
@@ -66,8 +66,8 @@ __exportStar(__webpack_require__(31), exports);
66
66
  Object.defineProperty(exports, "__esModule", ({ value: true }));
67
67
  exports.AddinClient = void 0;
68
68
  /**
69
- * Collection of regexs for our whitelist of host origins.
70
- */
69
+ * Collection of regexs for our whitelist of host origins.
70
+ */
71
71
  var allowedOrigins = [
72
72
  /^https\:\/\/[\w\-\.]+\.blackbaud\.com$/,
73
73
  /^https\:\/\/[\w\-\.]+\.blackbaud\-dev\.com$/,
@@ -203,6 +203,11 @@ var AddinClient = /** @class */ (function () {
203
203
  * The add-in client will throw an error if an event is attempted but not one the supported types.
204
204
  */
205
205
  this.supportedEventTypes = [];
206
+ /**
207
+ * Collection of regexs for our whitelist of host origins.
208
+ */
209
+ this.allowedOrigins = allowedOrigins;
210
+ this.initConfig(args.config);
206
211
  this.windowMessageHandler = function (event) {
207
212
  _this.handleMessage(event);
208
213
  };
@@ -448,6 +453,20 @@ var AddinClient = /** @class */ (function () {
448
453
  };
449
454
  });
450
455
  };
456
+ AddinClient.prototype.initConfig = function (config) {
457
+ var _a;
458
+ if (((_a = config === null || config === void 0 ? void 0 : config.allowedOrigins) === null || _a === void 0 ? void 0 : _a.length) > 0) {
459
+ // append custom allowed origins
460
+ this.allowedOrigins = this.allowedOrigins.concat(config.allowedOrigins);
461
+ // remove duplicates
462
+ this.allowedOrigins = this.allowedOrigins.reduce(function (acc, curr) {
463
+ if (!acc.find(function (a) { return a.source === curr.source; })) {
464
+ acc.push(curr);
465
+ }
466
+ return acc;
467
+ }, []);
468
+ }
469
+ };
451
470
  /**
452
471
  * Post a message to the host page informing it that the add-in is
453
472
  * now started and listening for messages from the host.
@@ -610,8 +629,8 @@ var AddinClient = /** @class */ (function () {
610
629
  * @param hostOrigin
611
630
  */
612
631
  AddinClient.prototype.setKnownAllowedHostOrigin = function (hostOrigin) {
613
- for (var _i = 0, allowedOrigins_1 = allowedOrigins; _i < allowedOrigins_1.length; _i++) {
614
- var allowedOrigin = allowedOrigins_1[_i];
632
+ for (var _i = 0, _a = this.allowedOrigins; _i < _a.length; _i++) {
633
+ var allowedOrigin = _a[_i];
615
634
  if (allowedOrigin.test(hostOrigin)) {
616
635
  this.trustedOrigin = hostOrigin;
617
636
  return;
@@ -814,6 +833,7 @@ __exportStar(__webpack_require__(27), exports);
814
833
  __exportStar(__webpack_require__(28), exports);
815
834
  __exportStar(__webpack_require__(29), exports);
816
835
  __exportStar(__webpack_require__(30), exports);
836
+ __exportStar(__webpack_require__(31), exports);
817
837
 
818
838
 
819
839
  /***/ }),
@@ -1004,6 +1024,14 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
1004
1024
  /***/ ((__unused_webpack_module, exports) => {
1005
1025
 
1006
1026
 
1027
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1028
+
1029
+
1030
+ /***/ }),
1031
+ /* 26 */
1032
+ /***/ ((__unused_webpack_module, exports) => {
1033
+
1034
+
1007
1035
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1008
1036
  exports.AddinConfirmButtonStyle = void 0;
1009
1037
  /**
@@ -1022,7 +1050,7 @@ var AddinConfirmButtonStyle;
1022
1050
 
1023
1051
 
1024
1052
  /***/ }),
1025
- /* 26 */
1053
+ /* 27 */
1026
1054
  /***/ ((__unused_webpack_module, exports) => {
1027
1055
 
1028
1056
 
@@ -1030,7 +1058,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
1030
1058
 
1031
1059
 
1032
1060
  /***/ }),
1033
- /* 27 */
1061
+ /* 28 */
1034
1062
  /***/ ((__unused_webpack_module, exports) => {
1035
1063
 
1036
1064
 
@@ -1049,7 +1077,7 @@ var AddinTabSummaryStyle;
1049
1077
 
1050
1078
 
1051
1079
  /***/ }),
1052
- /* 28 */
1080
+ /* 29 */
1053
1081
  /***/ ((__unused_webpack_module, exports) => {
1054
1082
 
1055
1083
 
@@ -1057,7 +1085,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
1057
1085
 
1058
1086
 
1059
1087
  /***/ }),
1060
- /* 29 */
1088
+ /* 30 */
1061
1089
  /***/ ((__unused_webpack_module, exports) => {
1062
1090
 
1063
1091
 
@@ -1078,7 +1106,7 @@ var AddinTileSummaryStyle;
1078
1106
 
1079
1107
 
1080
1108
  /***/ }),
1081
- /* 30 */
1109
+ /* 31 */
1082
1110
  /***/ ((__unused_webpack_module, exports) => {
1083
1111
 
1084
1112
 
@@ -1101,7 +1129,7 @@ var AddinToastStyle;
1101
1129
 
1102
1130
 
1103
1131
  /***/ }),
1104
- /* 31 */
1132
+ /* 32 */
1105
1133
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1106
1134
 
1107
1135
 
@@ -1120,12 +1148,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
1120
1148
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
1121
1149
  };
1122
1150
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1123
- __exportStar(__webpack_require__(32), exports);
1124
1151
  __exportStar(__webpack_require__(33), exports);
1152
+ __exportStar(__webpack_require__(34), exports);
1125
1153
 
1126
1154
 
1127
1155
  /***/ }),
1128
- /* 32 */
1156
+ /* 33 */
1129
1157
  /***/ ((__unused_webpack_module, exports) => {
1130
1158
 
1131
1159
 
@@ -1133,7 +1161,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
1133
1161
 
1134
1162
 
1135
1163
  /***/ }),
1136
- /* 33 */
1164
+ /* 34 */
1137
1165
  /***/ ((__unused_webpack_module, exports) => {
1138
1166
 
1139
1167
 
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.BBSkyAddinClient=t():e.BBSkyAddinClient=t()}(self,(()=>(()=>{"use strict";var e={789:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var n=Object.getOwnPropertyDescriptor(t,s);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,n)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),n=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(s(983),t)},903:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AddinClient=void 0;var s=[/^https\:\/\/[\w\-\.]+\.blackbaud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaud\-dev\.com$/,/^http\:\/\/[\w\-\.]+\.blackbaud\-dev\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudhosting\.com$/,/^https\:\/\/[\w\-\.]+\.bbcloudservices\.com$/,/^https\:\/\/localhost(\:[0-9]+)?$/,/^https\:\/\/secure[2|3|8]\.convio\.net$/,/^https\:\/\/testweb\.convio\.com$/,/^https\:\/\/[\w\-\.]+\.conviocloud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudcloud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudfaith\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudportal\.com$/,/^https\:\/\/[\w\-\.]+\.bbk12\.com$/,/^https\:\/\/[\w\-\.]+\.mycampus\-app\.com$/,/^https\:\/\/[\w\-\.]+\.myschoolapp\.com$/,/^https\:\/\/[\w\-\.]+\.myschoolautomation\.com$/,/^https\:\/\/[\w\-\.]+\.myschooldemo\.com$/,/^https\:\/\/[\w\-\.]+\.myschooltraining\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudwp\.com$/,/^https\:\/\/[\w\-\.]+\.carrytheload\.org$/,/^https\:\/\/[\w\-\.]+\.ummsfoundation\.org$/,/^http\:\/\/[\w\-\.]+\.lcrf\.org$/,/^https\:\/\/[\w\-\.]+\.go2\.org$/,/^https\:\/\/[\w\-\.]+\.nationwidechildrens\.org$/,/^https\:\/\/[\w\-\.]+\.lupus\.org$/,/^https\:\/\/[\w\-\.]+\.operationsmile\.ca$/,/^https\:\/\/[\w\-\.]+\.convio\.net$/,/^https\:\/\/[\w\-\.]+\.ontariospca\.ca$/,/^https\:\/\/[\w\-\.]+\.brighamandwomens\.org$/,/^https\:\/\/[\w\-\.]+\.northernlighthealth\.org$/,/^http\:\/\/[\w\-\.]+\.convio\.net$/,/^https\:\/\/[\w\-\.]+\.alpha1\.org$/,/^https\:\/\/[\w\-\.]+\.pscpartners\.org$/,/^https\:\/\/[\w\-\.]+\.mercyforanimals\.org$/,/^https\:\/\/[\w\-\.]+\.braintumor\.org$/,/^https\:\/\/[\w\-\.]+\.cancer\.ca$/,/^https\:\/\/[\w\-\.]+\.phoenixchildrensfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.ocmc\.org$/,/^https\:\/\/[\w\-\.]+\.stlouischildrens\.org$/,/^https\:\/\/[\w\-\.]+\.choa\.org$/,/^https\:\/\/[\w\-\.]+\.acsevents\.org$/,/^https\:\/\/[\w\-\.]+\.operationsmile\.org$/,/^https\:\/\/[\w\-\.]+\.mdmercy\.com$/,/^https\:\/\/[\w\-\.]+\.cookchildrens\.org$/,/^https\:\/\/[\w\-\.]+\.chla\.org$/,/^https\:\/\/[\w\-\.]+\.nleomf\.org$/,/^https\:\/\/[\w\-\.]+\.pwatoronto\.org$/,/^https\:\/\/[\w\-\.]+\.jfsla\.org$/,/^https\:\/\/[\w\-\.]+\.roswellpark\.org$/,/^https\:\/\/[\w\-\.]+\.alsagoldenwest\.org$/,/^https\:\/\/[\w\-\.]+\.cancercarefoundation\.ca$/,/^https\:\/\/[\w\-\.]+\.alsnc\.org$/,/^https\:\/\/[\w\-\.]+\.alsanm\.org$/,/^https\:\/\/[\w\-\.]+\.waysidewaifs\.org$/,/^https\:\/\/[\w\-\.]+\.bladdercancercanada\.org$/,/^https\:\/\/[\w\-\.]+\.jimmyfund\.org$/,/^https\:\/\/[\w\-\.]+\.info\-komen\.org$/,/^https\:\/\/[\w\-\.]+\.mountsinai\.org$/,/^https\:\/\/[\w\-\.]+\.walkforpd\.ca$/,/^https\:\/\/[\w\-\.]+\.alsoregon\.org$/,/^https\:\/\/[\w\-\.]+\.feedhopenow\.org$/,/^https\:\/\/[\w\-\.]+\.trilliumgiving\.ca$/,/^https\:\/\/[\w\-\.]+\.swimacrossamerica\.org$/,/^https\:\/\/ovariancanada\.org$/,/^https\:\/\/[\w\-\.]+\.ovariancanada\.org$/,/^https\:\/\/[\w\-\.]+\.alsunitedchicago\.org$/,/^https\:\/\/[\w\-\.]+\.fredhutch\.org$/,/^https\:\/\/[\w\-\.]+\.hss\.edu$/,/^https\:\/\/[\w\-\.]+\.nyghfoundation\.ca$/,/^https\:\/\/[\w\-\.]+\.natureconservancy\.ca$/,/^https\:\/\/[\w\-\.]+\.llscanada\.org$/,/^https\:\/\/[\w\-\.]+\.als\-ny\.org$/,/^https\:\/\/[\w\-\.]+\.zerocancer\.org$/,/^https\:\/\/[\w\-\.]+\.alsmidatlantic\.org$/,/^https\:\/\/[\w\-\.]+\.habitat\.ca$/,/^https\:\/\/[\w\-\.]+\.stamfordhospitalfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.alsohio\.org$/,/^https\:\/\/[\w\-\.]+\.cancercarefdn\.mb\.ca$/,/^https\:\/\/[\w\-\.]+\.baycrestfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.southlake\.ca$/,/^https\:\/\/[\w\-\.]+\.parkinson\.ca$/],o=function(){function e(e){var t=this;this.args=e,this.authTokenRequests=[],this.lastAuthTokenRequestId=0,this.modalRequests=[],this.lastModalRequestId=0,this.registeredAddinEvents={},this.sentEvents={},this.pendingSentEvents={},this.eventRequestId=0,this.supportedEventTypes=[],this.windowMessageHandler=function(e){t.handleMessage(e)},window.addEventListener("message",this.windowMessageHandler),this.raiseAddinReadyMessage()}return e.getQueryString=function(){return window.location.search},e.prototype.destroy=function(){window.removeEventListener("message",this.windowMessageHandler),this.heightChangeIntervalId&&clearInterval(this.heightChangeIntervalId)},e.prototype.navigate=function(e){this.postMessageToHostPage({message:{url:e.url},messageType:"navigate"})},e.prototype.getAuthToken=function(){return this.getUserIdentityToken()},e.prototype.getUserIdentityToken=function(){var e=this;return new Promise((function(t,s){var o=++e.lastAuthTokenRequestId;e.authTokenRequests[o]={reject:s,resolve:t},e.postMessageToHostPage({message:{authTokenRequestId:o},messageType:"get-auth-token"})}))},e.prototype.showModal=function(e){var t=this;return{modalClosed:new Promise((function(s,o){var n=++t.lastModalRequestId;t.modalRequests[n]={reject:o,resolve:s},t.postMessageToHostPage({message:{args:e,modalRequestId:n},messageType:"show-modal"})}))}},e.prototype.closeModal=function(e){this.postMessageToHostPage({message:e,messageType:"close-modal"})},e.prototype.openHelp=function(e){this.postMessageToHostPage({message:{helpKey:e.helpKey},messageType:"open-help"})},e.prototype.showToast=function(e){this.postMessageToHostPage({message:e,messageType:"show-toast"})},e.prototype.showFlyout=function(e){var t=this;return{flyoutClosed:new Promise((function(s,o){e.defaultWidth=e.defaultWidth,e.maxWidth=e.maxWidth,e.minWidth=e.minWidth,t.flyoutRequest={reject:o,resolve:s},t.postMessageToHostPage({message:e,messageType:"show-flyout"})}))}},e.prototype.closeFlyout=function(){this.postMessageToHostPage({messageType:"close-flyout"})},e.prototype.showConfirm=function(e){var t=this;return new Promise((function(s,o){t.confirmRequest={reject:o,resolve:s},t.postMessageToHostPage({message:e,messageType:"show-confirm"})}))},e.prototype.showError=function(e){this.postMessageToHostPage({message:e,messageType:"show-error"})},e.prototype.showWait=function(){this.postMessageToHostPage({messageType:"show-wait"})},e.prototype.hideWait=function(){this.postMessageToHostPage({messageType:"hide-wait"})},e.prototype.addEventHandler=function(e,t){this.registeredAddinEvents[e]=t},e.prototype.sendEvent=function(e){var t=this;return new Promise((function(s,o){var n=e.type;t.supportedEventTypes.includes(n)||o("Event type not supported");var a=t.pendingSentEvents[n];a&&(clearTimeout(a.timeoutId),a.reject("Event cancelled"));var r=setTimeout((function(){delete t.pendingSentEvents[n],t.postMessageToHostPage({message:{event:e,eventRequestId:t.eventRequestId},messageType:"client-event"}),t.sentEvents[t.eventRequestId]=s,t.eventRequestId++}),200);t.pendingSentEvents[n]={reject:o,timeoutId:r}}))},e.prototype.raiseAddinReadyMessage=function(){this.postMessageToHostPage({messageType:"ready"},"*")},e.prototype.handleModalClosedMessage=function(e){var t=this.modalRequests,s=e.modalRequestId;t[s].resolve(e.context),t[s]=void 0},e.prototype.handleAuthTokenMessage=function(e){var t=this.authTokenRequests,s=e.message.authTokenRequestId,o=t[s];switch(e.messageType){case"auth-token":var n=e.message.authToken;o.resolve(n);break;case"auth-token-fail":o.reject(e.message.reason)}t[s]=void 0},e.prototype.handleMessage=function(e){var t=this,s=e.data;if(s&&"bb-addin-host"===s.source)if("host-ready"===s.messageType)this.setKnownAllowedHostOrigin(e.origin),this.trackHeightChangesOfAddinContent(),this.supportedEventTypes=s.message.supportedEventTypes,this.args.callbacks.init({context:s.message.context,envId:s.message.envId,ready:function(e){t.checkForHeightChangesOfAddinContent(),t.postMessageToHostPage({message:e,messageType:"addin-ready"})},supportedEventTypes:s.message.supportedEventTypes,themeSettings:s.message.themeSettings});else if(this.isFromValidOrigin(e))switch(s.messageType){case"auth-token":case"auth-token-fail":this.handleAuthTokenMessage(s);break;case"modal-closed":this.handleModalClosedMessage(s.message);break;case"button-click":this.args.callbacks.buttonClick&&this.args.callbacks.buttonClick();break;case"update-context":this.args.callbacks.updateContext&&this.args.callbacks.updateContext(s.message);break;case"confirm-closed":this.confirmRequest&&(this.confirmRequest.resolve(s.message.reason),this.confirmRequest=void 0);break;case"flyout-closed":this.flyoutRequest&&(this.flyoutRequest.resolve(),this.flyoutRequest=void 0);break;case"flyout-next-click":this.args.callbacks.flyoutNextClick&&this.args.callbacks.flyoutNextClick();break;case"flyout-previous-click":this.args.callbacks.flyoutPreviousClick&&this.args.callbacks.flyoutPreviousClick();break;case"help-click":this.args.callbacks.helpClick&&this.args.callbacks.helpClick();break;case"settings-click":this.args.callbacks.settingsClick&&this.args.callbacks.settingsClick();break;case"theme-change":this.args.callbacks.themeChange&&this.args.callbacks.themeChange(s.message.themeSettings);break;case"host-event":this.processHostEvent(s.message);break;case"event-received":this.resolveClientEvent(s.message)}else this.warnInvalidOrigin()},e.prototype.setKnownAllowedHostOrigin=function(e){for(var t=0,o=s;t<o.length;t++)if(o[t].test(e))return void(this.trustedOrigin=e)},e.prototype.checkForHeightChangesOfAddinContent=function(){var e=document.documentElement.offsetHeight;e!==this.lastPostedIframeHeight&&(this.lastPostedIframeHeight=e,this.postMessageToHostPage({message:{height:e+"px"},messageType:"height-change"}))},e.prototype.trackHeightChangesOfAddinContent=function(){var e=this;this.heightChangeIntervalId=setInterval((function(){e.checkForHeightChangesOfAddinContent()}),1e3)},e.prototype.postMessageToHostPage=function(e,t){e.source="bb-addin-client",e.addinId=this.getQueryVariable("addinId"),(t=t||this.trustedOrigin)?window.parent.postMessage(e,t):this.warnInvalidOrigin()},e.prototype.processHostEvent=function(e){var t=this,s=e.context,o=this.registeredAddinEvents[s.type];(o?this.isBlockingEventType(s.type)?new Promise((function(e){o(s.context,(function(){e()}))})):new Promise((function(e){o(s.context),e()})):Promise.resolve()).then((function(){return t.postEventReceivedMessage(e.eventRequestId)}))},e.prototype.isBlockingEventType=function(e){switch(e){case"form-save":case"form-cancel":return!0}return!1},e.prototype.postEventReceivedMessage=function(e){this.postMessageToHostPage({message:{eventRequestId:e},messageType:"event-received"})},e.prototype.resolveClientEvent=function(e){var t=e.eventRequestId,s=this.sentEvents[t];s&&(s(),delete this.sentEvents[t])},e.prototype.isFromValidOrigin=function(e){return e.origin===this.trustedOrigin},e.prototype.warnInvalidOrigin=function(){console.warn("The origin is not trusted because the host-ready message has not been sent or because the host origin is not a whitelisted origin.")},e.prototype.getQueryVariable=function(t){for(var s=0,o=e.getQueryString().substring(1).split("&");s<o.length;s++){var n=o[s].split("=");if(decodeURIComponent(n[0])===t)return decodeURIComponent(n[1])}},e}();t.AddinClient=o},714:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},819:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinButtonStyle=void 0,(s=t.AddinButtonStyle||(t.AddinButtonStyle={}))[s.None=0]="None",s[s.Add=1]="Add",s[s.Edit=2]="Edit",s[s.Delete=3]="Delete"},676:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},233:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},455:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},75:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},258:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},413:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},954:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},663:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},542:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},610:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},95:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},581:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},342:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},790:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},212:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},88:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},90:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},948:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},468:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinConfirmButtonStyle=void 0,(s=t.AddinConfirmButtonStyle||(t.AddinConfirmButtonStyle={}))[s.Default=0]="Default",s[s.Primary=1]="Primary",s[s.Link=2]="Link"},756:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},545:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},993:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinTabSummaryStyle=void 0,(s=t.AddinTabSummaryStyle||(t.AddinTabSummaryStyle={}))[s.None=0]="None",s[s.Text=1]="Text"},518:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},590:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinTileSummaryStyle=void 0,(s=t.AddinTileSummaryStyle||(t.AddinTileSummaryStyle={}))[s.None=0]="None",s[s.Text=1]="Text",s[s.Check=2]="Check"},480:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinToastStyle=void 0,(s=t.AddinToastStyle||(t.AddinToastStyle={}))[s.Danger=0]="Danger",s[s.Info=1]="Info",s[s.Success=2]="Success",s[s.Warning=3]="Warning"},142:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var n=Object.getOwnPropertyDescriptor(t,s);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,n)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),n=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(s(714),t),n(s(819),t),n(s(676),t),n(s(233),t),n(s(455),t),n(s(75),t),n(s(258),t),n(s(413),t),n(s(954),t),n(s(663),t),n(s(542),t),n(s(610),t),n(s(95),t),n(s(581),t),n(s(342),t),n(s(790),t),n(s(212),t),n(s(88),t),n(s(90),t),n(s(948),t),n(s(756),t),n(s(468),t),n(s(545),t),n(s(993),t),n(s(518),t),n(s(590),t),n(s(480),t)},220:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},606:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},57:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var n=Object.getOwnPropertyDescriptor(t,s);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,n)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),n=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(s(220),t),n(s(606),t)},983:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var n=Object.getOwnPropertyDescriptor(t,s);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,n)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),n=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(s(903),t),n(s(142),t),n(s(57),t)}},t={};return function s(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o].call(a.exports,a,a.exports,s),a.exports}(789)})()));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.BBSkyAddinClient=t():e.BBSkyAddinClient=t()}(self,(()=>(()=>{"use strict";var e={789:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var n=Object.getOwnPropertyDescriptor(t,s);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,n)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),n=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(s(983),t)},903:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AddinClient=void 0;var s=[/^https\:\/\/[\w\-\.]+\.blackbaud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaud\-dev\.com$/,/^http\:\/\/[\w\-\.]+\.blackbaud\-dev\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudhosting\.com$/,/^https\:\/\/[\w\-\.]+\.bbcloudservices\.com$/,/^https\:\/\/localhost(\:[0-9]+)?$/,/^https\:\/\/secure[2|3|8]\.convio\.net$/,/^https\:\/\/testweb\.convio\.com$/,/^https\:\/\/[\w\-\.]+\.conviocloud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudcloud\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudfaith\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudportal\.com$/,/^https\:\/\/[\w\-\.]+\.bbk12\.com$/,/^https\:\/\/[\w\-\.]+\.mycampus\-app\.com$/,/^https\:\/\/[\w\-\.]+\.myschoolapp\.com$/,/^https\:\/\/[\w\-\.]+\.myschoolautomation\.com$/,/^https\:\/\/[\w\-\.]+\.myschooldemo\.com$/,/^https\:\/\/[\w\-\.]+\.myschooltraining\.com$/,/^https\:\/\/[\w\-\.]+\.blackbaudwp\.com$/,/^https\:\/\/[\w\-\.]+\.carrytheload\.org$/,/^https\:\/\/[\w\-\.]+\.ummsfoundation\.org$/,/^http\:\/\/[\w\-\.]+\.lcrf\.org$/,/^https\:\/\/[\w\-\.]+\.go2\.org$/,/^https\:\/\/[\w\-\.]+\.nationwidechildrens\.org$/,/^https\:\/\/[\w\-\.]+\.lupus\.org$/,/^https\:\/\/[\w\-\.]+\.operationsmile\.ca$/,/^https\:\/\/[\w\-\.]+\.convio\.net$/,/^https\:\/\/[\w\-\.]+\.ontariospca\.ca$/,/^https\:\/\/[\w\-\.]+\.brighamandwomens\.org$/,/^https\:\/\/[\w\-\.]+\.northernlighthealth\.org$/,/^http\:\/\/[\w\-\.]+\.convio\.net$/,/^https\:\/\/[\w\-\.]+\.alpha1\.org$/,/^https\:\/\/[\w\-\.]+\.pscpartners\.org$/,/^https\:\/\/[\w\-\.]+\.mercyforanimals\.org$/,/^https\:\/\/[\w\-\.]+\.braintumor\.org$/,/^https\:\/\/[\w\-\.]+\.cancer\.ca$/,/^https\:\/\/[\w\-\.]+\.phoenixchildrensfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.ocmc\.org$/,/^https\:\/\/[\w\-\.]+\.stlouischildrens\.org$/,/^https\:\/\/[\w\-\.]+\.choa\.org$/,/^https\:\/\/[\w\-\.]+\.acsevents\.org$/,/^https\:\/\/[\w\-\.]+\.operationsmile\.org$/,/^https\:\/\/[\w\-\.]+\.mdmercy\.com$/,/^https\:\/\/[\w\-\.]+\.cookchildrens\.org$/,/^https\:\/\/[\w\-\.]+\.chla\.org$/,/^https\:\/\/[\w\-\.]+\.nleomf\.org$/,/^https\:\/\/[\w\-\.]+\.pwatoronto\.org$/,/^https\:\/\/[\w\-\.]+\.jfsla\.org$/,/^https\:\/\/[\w\-\.]+\.roswellpark\.org$/,/^https\:\/\/[\w\-\.]+\.alsagoldenwest\.org$/,/^https\:\/\/[\w\-\.]+\.cancercarefoundation\.ca$/,/^https\:\/\/[\w\-\.]+\.alsnc\.org$/,/^https\:\/\/[\w\-\.]+\.alsanm\.org$/,/^https\:\/\/[\w\-\.]+\.waysidewaifs\.org$/,/^https\:\/\/[\w\-\.]+\.bladdercancercanada\.org$/,/^https\:\/\/[\w\-\.]+\.jimmyfund\.org$/,/^https\:\/\/[\w\-\.]+\.info\-komen\.org$/,/^https\:\/\/[\w\-\.]+\.mountsinai\.org$/,/^https\:\/\/[\w\-\.]+\.walkforpd\.ca$/,/^https\:\/\/[\w\-\.]+\.alsoregon\.org$/,/^https\:\/\/[\w\-\.]+\.feedhopenow\.org$/,/^https\:\/\/[\w\-\.]+\.trilliumgiving\.ca$/,/^https\:\/\/[\w\-\.]+\.swimacrossamerica\.org$/,/^https\:\/\/ovariancanada\.org$/,/^https\:\/\/[\w\-\.]+\.ovariancanada\.org$/,/^https\:\/\/[\w\-\.]+\.alsunitedchicago\.org$/,/^https\:\/\/[\w\-\.]+\.fredhutch\.org$/,/^https\:\/\/[\w\-\.]+\.hss\.edu$/,/^https\:\/\/[\w\-\.]+\.nyghfoundation\.ca$/,/^https\:\/\/[\w\-\.]+\.natureconservancy\.ca$/,/^https\:\/\/[\w\-\.]+\.llscanada\.org$/,/^https\:\/\/[\w\-\.]+\.als\-ny\.org$/,/^https\:\/\/[\w\-\.]+\.zerocancer\.org$/,/^https\:\/\/[\w\-\.]+\.alsmidatlantic\.org$/,/^https\:\/\/[\w\-\.]+\.habitat\.ca$/,/^https\:\/\/[\w\-\.]+\.stamfordhospitalfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.alsohio\.org$/,/^https\:\/\/[\w\-\.]+\.cancercarefdn\.mb\.ca$/,/^https\:\/\/[\w\-\.]+\.baycrestfoundation\.org$/,/^https\:\/\/[\w\-\.]+\.southlake\.ca$/,/^https\:\/\/[\w\-\.]+\.parkinson\.ca$/],o=function(){function e(e){var t=this;this.args=e,this.authTokenRequests=[],this.lastAuthTokenRequestId=0,this.modalRequests=[],this.lastModalRequestId=0,this.registeredAddinEvents={},this.sentEvents={},this.pendingSentEvents={},this.eventRequestId=0,this.supportedEventTypes=[],this.allowedOrigins=s,this.initConfig(e.config),this.windowMessageHandler=function(e){t.handleMessage(e)},window.addEventListener("message",this.windowMessageHandler),this.raiseAddinReadyMessage()}return e.getQueryString=function(){return window.location.search},e.prototype.destroy=function(){window.removeEventListener("message",this.windowMessageHandler),this.heightChangeIntervalId&&clearInterval(this.heightChangeIntervalId)},e.prototype.navigate=function(e){this.postMessageToHostPage({message:{url:e.url},messageType:"navigate"})},e.prototype.getAuthToken=function(){return this.getUserIdentityToken()},e.prototype.getUserIdentityToken=function(){var e=this;return new Promise((function(t,s){var o=++e.lastAuthTokenRequestId;e.authTokenRequests[o]={reject:s,resolve:t},e.postMessageToHostPage({message:{authTokenRequestId:o},messageType:"get-auth-token"})}))},e.prototype.showModal=function(e){var t=this;return{modalClosed:new Promise((function(s,o){var n=++t.lastModalRequestId;t.modalRequests[n]={reject:o,resolve:s},t.postMessageToHostPage({message:{args:e,modalRequestId:n},messageType:"show-modal"})}))}},e.prototype.closeModal=function(e){this.postMessageToHostPage({message:e,messageType:"close-modal"})},e.prototype.openHelp=function(e){this.postMessageToHostPage({message:{helpKey:e.helpKey},messageType:"open-help"})},e.prototype.showToast=function(e){this.postMessageToHostPage({message:e,messageType:"show-toast"})},e.prototype.showFlyout=function(e){var t=this;return{flyoutClosed:new Promise((function(s,o){e.defaultWidth=e.defaultWidth,e.maxWidth=e.maxWidth,e.minWidth=e.minWidth,t.flyoutRequest={reject:o,resolve:s},t.postMessageToHostPage({message:e,messageType:"show-flyout"})}))}},e.prototype.closeFlyout=function(){this.postMessageToHostPage({messageType:"close-flyout"})},e.prototype.showConfirm=function(e){var t=this;return new Promise((function(s,o){t.confirmRequest={reject:o,resolve:s},t.postMessageToHostPage({message:e,messageType:"show-confirm"})}))},e.prototype.showError=function(e){this.postMessageToHostPage({message:e,messageType:"show-error"})},e.prototype.showWait=function(){this.postMessageToHostPage({messageType:"show-wait"})},e.prototype.hideWait=function(){this.postMessageToHostPage({messageType:"hide-wait"})},e.prototype.addEventHandler=function(e,t){this.registeredAddinEvents[e]=t},e.prototype.sendEvent=function(e){var t=this;return new Promise((function(s,o){var n=e.type;t.supportedEventTypes.includes(n)||o("Event type not supported");var i=t.pendingSentEvents[n];i&&(clearTimeout(i.timeoutId),i.reject("Event cancelled"));var a=setTimeout((function(){delete t.pendingSentEvents[n],t.postMessageToHostPage({message:{event:e,eventRequestId:t.eventRequestId},messageType:"client-event"}),t.sentEvents[t.eventRequestId]=s,t.eventRequestId++}),200);t.pendingSentEvents[n]={reject:o,timeoutId:a}}))},e.prototype.initConfig=function(e){var t;(null===(t=null==e?void 0:e.allowedOrigins)||void 0===t?void 0:t.length)>0&&(this.allowedOrigins=this.allowedOrigins.concat(e.allowedOrigins),this.allowedOrigins=this.allowedOrigins.reduce((function(e,t){return e.find((function(e){return e.source===t.source}))||e.push(t),e}),[]))},e.prototype.raiseAddinReadyMessage=function(){this.postMessageToHostPage({messageType:"ready"},"*")},e.prototype.handleModalClosedMessage=function(e){var t=this.modalRequests,s=e.modalRequestId;t[s].resolve(e.context),t[s]=void 0},e.prototype.handleAuthTokenMessage=function(e){var t=this.authTokenRequests,s=e.message.authTokenRequestId,o=t[s];switch(e.messageType){case"auth-token":var n=e.message.authToken;o.resolve(n);break;case"auth-token-fail":o.reject(e.message.reason)}t[s]=void 0},e.prototype.handleMessage=function(e){var t=this,s=e.data;if(s&&"bb-addin-host"===s.source)if("host-ready"===s.messageType)this.setKnownAllowedHostOrigin(e.origin),this.trackHeightChangesOfAddinContent(),this.supportedEventTypes=s.message.supportedEventTypes,this.args.callbacks.init({context:s.message.context,envId:s.message.envId,ready:function(e){t.checkForHeightChangesOfAddinContent(),t.postMessageToHostPage({message:e,messageType:"addin-ready"})},supportedEventTypes:s.message.supportedEventTypes,themeSettings:s.message.themeSettings});else if(this.isFromValidOrigin(e))switch(s.messageType){case"auth-token":case"auth-token-fail":this.handleAuthTokenMessage(s);break;case"modal-closed":this.handleModalClosedMessage(s.message);break;case"button-click":this.args.callbacks.buttonClick&&this.args.callbacks.buttonClick();break;case"update-context":this.args.callbacks.updateContext&&this.args.callbacks.updateContext(s.message);break;case"confirm-closed":this.confirmRequest&&(this.confirmRequest.resolve(s.message.reason),this.confirmRequest=void 0);break;case"flyout-closed":this.flyoutRequest&&(this.flyoutRequest.resolve(),this.flyoutRequest=void 0);break;case"flyout-next-click":this.args.callbacks.flyoutNextClick&&this.args.callbacks.flyoutNextClick();break;case"flyout-previous-click":this.args.callbacks.flyoutPreviousClick&&this.args.callbacks.flyoutPreviousClick();break;case"help-click":this.args.callbacks.helpClick&&this.args.callbacks.helpClick();break;case"settings-click":this.args.callbacks.settingsClick&&this.args.callbacks.settingsClick();break;case"theme-change":this.args.callbacks.themeChange&&this.args.callbacks.themeChange(s.message.themeSettings);break;case"host-event":this.processHostEvent(s.message);break;case"event-received":this.resolveClientEvent(s.message)}else this.warnInvalidOrigin()},e.prototype.setKnownAllowedHostOrigin=function(e){for(var t=0,s=this.allowedOrigins;t<s.length;t++)if(s[t].test(e))return void(this.trustedOrigin=e)},e.prototype.checkForHeightChangesOfAddinContent=function(){var e=document.documentElement.offsetHeight;e!==this.lastPostedIframeHeight&&(this.lastPostedIframeHeight=e,this.postMessageToHostPage({message:{height:e+"px"},messageType:"height-change"}))},e.prototype.trackHeightChangesOfAddinContent=function(){var e=this;this.heightChangeIntervalId=setInterval((function(){e.checkForHeightChangesOfAddinContent()}),1e3)},e.prototype.postMessageToHostPage=function(e,t){e.source="bb-addin-client",e.addinId=this.getQueryVariable("addinId"),(t=t||this.trustedOrigin)?window.parent.postMessage(e,t):this.warnInvalidOrigin()},e.prototype.processHostEvent=function(e){var t=this,s=e.context,o=this.registeredAddinEvents[s.type];(o?this.isBlockingEventType(s.type)?new Promise((function(e){o(s.context,(function(){e()}))})):new Promise((function(e){o(s.context),e()})):Promise.resolve()).then((function(){return t.postEventReceivedMessage(e.eventRequestId)}))},e.prototype.isBlockingEventType=function(e){switch(e){case"form-save":case"form-cancel":return!0}return!1},e.prototype.postEventReceivedMessage=function(e){this.postMessageToHostPage({message:{eventRequestId:e},messageType:"event-received"})},e.prototype.resolveClientEvent=function(e){var t=e.eventRequestId,s=this.sentEvents[t];s&&(s(),delete this.sentEvents[t])},e.prototype.isFromValidOrigin=function(e){return e.origin===this.trustedOrigin},e.prototype.warnInvalidOrigin=function(){console.warn("The origin is not trusted because the host-ready message has not been sent or because the host origin is not a whitelisted origin.")},e.prototype.getQueryVariable=function(t){for(var s=0,o=e.getQueryString().substring(1).split("&");s<o.length;s++){var n=o[s].split("=");if(decodeURIComponent(n[0])===t)return decodeURIComponent(n[1])}},e}();t.AddinClient=o},714:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},819:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinButtonStyle=void 0,(s=t.AddinButtonStyle||(t.AddinButtonStyle={}))[s.None=0]="None",s[s.Add=1]="Add",s[s.Edit=2]="Edit",s[s.Delete=3]="Delete"},676:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},233:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},455:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},407:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},75:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},258:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},413:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},954:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},663:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},542:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},610:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},95:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},581:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},342:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},790:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},212:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},88:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},90:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},948:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},468:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinConfirmButtonStyle=void 0,(s=t.AddinConfirmButtonStyle||(t.AddinConfirmButtonStyle={}))[s.Default=0]="Default",s[s.Primary=1]="Primary",s[s.Link=2]="Link"},756:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},545:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},993:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinTabSummaryStyle=void 0,(s=t.AddinTabSummaryStyle||(t.AddinTabSummaryStyle={}))[s.None=0]="None",s[s.Text=1]="Text"},518:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},590:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinTileSummaryStyle=void 0,(s=t.AddinTileSummaryStyle||(t.AddinTileSummaryStyle={}))[s.None=0]="None",s[s.Text=1]="Text",s[s.Check=2]="Check"},480:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.AddinToastStyle=void 0,(s=t.AddinToastStyle||(t.AddinToastStyle={}))[s.Danger=0]="Danger",s[s.Info=1]="Info",s[s.Success=2]="Success",s[s.Warning=3]="Warning"},142:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var n=Object.getOwnPropertyDescriptor(t,s);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,n)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),n=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(s(714),t),n(s(819),t),n(s(676),t),n(s(233),t),n(s(455),t),n(s(407),t),n(s(75),t),n(s(258),t),n(s(413),t),n(s(954),t),n(s(663),t),n(s(542),t),n(s(610),t),n(s(95),t),n(s(581),t),n(s(342),t),n(s(790),t),n(s(212),t),n(s(88),t),n(s(90),t),n(s(948),t),n(s(756),t),n(s(468),t),n(s(545),t),n(s(993),t),n(s(518),t),n(s(590),t),n(s(480),t)},220:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},606:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},57:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var n=Object.getOwnPropertyDescriptor(t,s);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,n)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),n=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(s(220),t),n(s(606),t)},983:function(e,t,s){var o=this&&this.__createBinding||(Object.create?function(e,t,s,o){void 0===o&&(o=s);var n=Object.getOwnPropertyDescriptor(t,s);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,o,n)}:function(e,t,s,o){void 0===o&&(o=s),e[o]=t[s]}),n=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||o(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(s(903),t),n(s(142),t),n(s(57),t)}},t={};return function s(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o].call(i.exports,i,i.exports,s),i.exports}(789)})()));
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@blackbaud/sky-addin-client",
3
- "version": "1.2.2",
3
+ "version": "1.3.0",
4
4
  "description": "SKY add-in client",
5
5
  "main": "dist/bundles/sky-addin-client.umd.js",
6
6
  "module": "index.js",
7
7
  "scripts": {
8
8
  "ci": "npm run test:ci && npm run build",
9
- "test": "npm run lint && npm run test:unit",
9
+ "test": "npm run lint && npm run test:unit:ci",
10
10
  "test:ci": "npm run test:unit:ci",
11
11
  "test:unit": "npm run test:unit:base -- config/karma/local.karma.conf.js",
12
12
  "test:unit:ci": "npm run test:unit:base -- config/karma/ci.karma.conf.js",
@@ -95,6 +95,10 @@ export declare class AddinClient {
95
95
  * The add-in client will throw an error if an event is attempted but not one the supported types.
96
96
  */
97
97
  private supportedEventTypes;
98
+ /**
99
+ * Collection of regexs for our whitelist of host origins.
100
+ */
101
+ private allowedOrigins;
98
102
  /**
99
103
  * @returns {string} Returns the current query string path for the window, prefixed with ?.
100
104
  */
@@ -187,6 +191,7 @@ export declare class AddinClient {
187
191
  * @see AddinClientInitArgs#supportedEventTypes
188
192
  */
189
193
  sendEvent(args: AddinClientEventArgs): Promise<void>;
194
+ private initConfig;
190
195
  /**
191
196
  * Post a message to the host page informing it that the add-in is
192
197
  * now started and listening for messages from the host.
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AddinClient = void 0;
4
4
  /**
5
- * Collection of regexs for our whitelist of host origins.
6
- */
5
+ * Collection of regexs for our whitelist of host origins.
6
+ */
7
7
  var allowedOrigins = [
8
8
  /^https\:\/\/[\w\-\.]+\.blackbaud\.com$/,
9
9
  /^https\:\/\/[\w\-\.]+\.blackbaud\-dev\.com$/,
@@ -139,6 +139,11 @@ var AddinClient = /** @class */ (function () {
139
139
  * The add-in client will throw an error if an event is attempted but not one the supported types.
140
140
  */
141
141
  this.supportedEventTypes = [];
142
+ /**
143
+ * Collection of regexs for our whitelist of host origins.
144
+ */
145
+ this.allowedOrigins = allowedOrigins;
146
+ this.initConfig(args.config);
142
147
  this.windowMessageHandler = function (event) {
143
148
  _this.handleMessage(event);
144
149
  };
@@ -384,6 +389,20 @@ var AddinClient = /** @class */ (function () {
384
389
  };
385
390
  });
386
391
  };
392
+ AddinClient.prototype.initConfig = function (config) {
393
+ var _a;
394
+ if (((_a = config === null || config === void 0 ? void 0 : config.allowedOrigins) === null || _a === void 0 ? void 0 : _a.length) > 0) {
395
+ // append custom allowed origins
396
+ this.allowedOrigins = this.allowedOrigins.concat(config.allowedOrigins);
397
+ // remove duplicates
398
+ this.allowedOrigins = this.allowedOrigins.reduce(function (acc, curr) {
399
+ if (!acc.find(function (a) { return a.source === curr.source; })) {
400
+ acc.push(curr);
401
+ }
402
+ return acc;
403
+ }, []);
404
+ }
405
+ };
387
406
  /**
388
407
  * Post a message to the host page informing it that the add-in is
389
408
  * now started and listening for messages from the host.
@@ -546,8 +565,8 @@ var AddinClient = /** @class */ (function () {
546
565
  * @param hostOrigin
547
566
  */
548
567
  AddinClient.prototype.setKnownAllowedHostOrigin = function (hostOrigin) {
549
- for (var _i = 0, allowedOrigins_1 = allowedOrigins; _i < allowedOrigins_1.length; _i++) {
550
- var allowedOrigin = allowedOrigins_1[_i];
568
+ for (var _i = 0, _a = this.allowedOrigins; _i < _a.length; _i++) {
569
+ var allowedOrigin = _a[_i];
551
570
  if (allowedOrigin.test(hostOrigin)) {
552
571
  this.trustedOrigin = hostOrigin;
553
572
  return;