UNPKG

227 kBJavaScriptView Raw
1(function webpackUniversalModuleDefinition(root, factory) {
2 if(typeof exports === 'object' && typeof module === 'object')
3 module.exports = factory();
4 else if(typeof define === 'function' && define.amd)
5 define("app-bridge", [], factory);
6 else if(typeof exports === 'object')
7 exports["app-bridge"] = factory();
8 else
9 root["app-bridge"] = factory();
10})(window, function() {
11return /******/ (function(modules) { // webpackBootstrap
12/******/ // The module cache
13/******/ var installedModules = {};
14/******/
15/******/ // The require function
16/******/ function __webpack_require__(moduleId) {
17/******/
18/******/ // Check if module is in cache
19/******/ if(installedModules[moduleId]) {
20/******/ return installedModules[moduleId].exports;
21/******/ }
22/******/ // Create a new module (and put it into the cache)
23/******/ var module = installedModules[moduleId] = {
24/******/ i: moduleId,
25/******/ l: false,
26/******/ exports: {}
27/******/ };
28/******/
29/******/ // Execute the module function
30/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31/******/
32/******/ // Flag the module as loaded
33/******/ module.l = true;
34/******/
35/******/ // Return the exports of the module
36/******/ return module.exports;
37/******/ }
38/******/
39/******/
40/******/ // expose the modules object (__webpack_modules__)
41/******/ __webpack_require__.m = modules;
42/******/
43/******/ // expose the module cache
44/******/ __webpack_require__.c = installedModules;
45/******/
46/******/ // define getter function for harmony exports
47/******/ __webpack_require__.d = function(exports, name, getter) {
48/******/ if(!__webpack_require__.o(exports, name)) {
49/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50/******/ }
51/******/ };
52/******/
53/******/ // define __esModule on exports
54/******/ __webpack_require__.r = function(exports) {
55/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57/******/ }
58/******/ Object.defineProperty(exports, '__esModule', { value: true });
59/******/ };
60/******/
61/******/ // create a fake namespace object
62/******/ // mode & 1: value is a module id, require it
63/******/ // mode & 2: merge all properties of value into the ns
64/******/ // mode & 4: return value when already ns object
65/******/ // mode & 8|1: behave like require
66/******/ __webpack_require__.t = function(value, mode) {
67/******/ if(mode & 1) value = __webpack_require__(value);
68/******/ if(mode & 8) return value;
69/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70/******/ var ns = Object.create(null);
71/******/ __webpack_require__.r(ns);
72/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74/******/ return ns;
75/******/ };
76/******/
77/******/ // getDefaultExport function for compatibility with non-harmony modules
78/******/ __webpack_require__.n = function(module) {
79/******/ var getter = module && module.__esModule ?
80/******/ function getDefault() { return module['default']; } :
81/******/ function getModuleExports() { return module; };
82/******/ __webpack_require__.d(getter, 'a', getter);
83/******/ return getter;
84/******/ };
85/******/
86/******/ // Object.prototype.hasOwnProperty.call
87/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88/******/
89/******/ // __webpack_public_path__
90/******/ __webpack_require__.p = "";
91/******/
92/******/
93/******/ // Load entry module and return exports
94/******/ return __webpack_require__(__webpack_require__.s = 48);
95/******/ })
96/************************************************************************/
97/******/ ([
98/* 0 */
99/***/ (function(module, exports, __webpack_require__) {
100
101"use strict";
102
103var __extends = (this && this.__extends) || (function () {
104 var extendStatics = function (d, b) {
105 extendStatics = Object.setPrototypeOf ||
106 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
107 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
108 return extendStatics(d, b);
109 };
110 return function (d, b) {
111 extendStatics(d, b);
112 function __() { this.constructor = d; }
113 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
114 };
115})();
116var __assign = (this && this.__assign) || function () {
117 __assign = Object.assign || function(t) {
118 for (var s, i = 1, n = arguments.length; i < n; i++) {
119 s = arguments[i];
120 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
121 t[p] = s[p];
122 }
123 return t;
124 };
125 return __assign.apply(this, arguments);
126};
127var __importDefault = (this && this.__importDefault) || function (mod) {
128 return (mod && mod.__esModule) ? mod : { "default": mod };
129};
130Object.defineProperty(exports, "__esModule", { value: true });
131var Error_1 = __webpack_require__(5);
132var types_1 = __webpack_require__(8);
133var collection_1 = __webpack_require__(9);
134var constants_1 = __webpack_require__(14);
135var merge_1 = __importDefault(__webpack_require__(52));
136var types_2 = __webpack_require__(1);
137var constants_2 = __webpack_require__(14);
138var uuid_1 = __importDefault(__webpack_require__(53));
139var packageJson = __webpack_require__(54);
140function actionWrapper(action) {
141 return __assign({}, action, { version: getVersion(), clientInterface: {
142 name: packageJson.name,
143 version: getVersion(),
144 } });
145}
146exports.actionWrapper = actionWrapper;
147function getVersion() {
148 return packageJson.version;
149}
150exports.getVersion = getVersion;
151/**
152 * Returns full event name with prefix, group, subgroups and type formatted with separators
153 * @internal
154 * */
155function getEventNameSpace(group, eventName, component) {
156 var eventNameSpace = groupToEventNameSpace(group);
157 if (component) {
158 var subgroups_1 = component.subgroups, type = component.type;
159 if (subgroups_1 && subgroups_1.length > 0) {
160 eventNameSpace += eventNameSpace.length > 0 ? constants_2.SEPARATOR : '';
161 subgroups_1.forEach(function (subgroup, index) {
162 eventNameSpace += "" + subgroup.toUpperCase() + (index < subgroups_1.length - 1 ? constants_2.SEPARATOR : '');
163 });
164 }
165 if (type !== group && type) {
166 eventNameSpace += "" + (eventNameSpace.length > 0 ? constants_2.SEPARATOR : '') + type.toUpperCase();
167 }
168 }
169 if (eventNameSpace) {
170 eventNameSpace += "" + (eventNameSpace.length > 0 ? constants_2.SEPARATOR : '') + eventName.toUpperCase();
171 }
172 return "" + constants_1.PREFIX + constants_2.SEPARATOR + eventNameSpace;
173}
174exports.getEventNameSpace = getEventNameSpace;
175function isValidOptionalNumber(value) {
176 return value === null || value === undefined || typeof value === 'number';
177}
178exports.isValidOptionalNumber = isValidOptionalNumber;
179function isValidOptionalString(value) {
180 return value === null || value === undefined || typeof value === 'string';
181}
182exports.isValidOptionalString = isValidOptionalString;
183var ActionSet = /** @class */ (function () {
184 function ActionSet(app, type, group, id) {
185 var _this = this;
186 this.app = app;
187 this.type = type;
188 this.group = group;
189 this.subgroups = [];
190 this.subscriptions = [];
191 if (!app) {
192 Error_1.throwError(Error_1.ActionType.INVALID_OPTIONS, 'Missing required `app`');
193 }
194 this.id = id || uuid_1.default();
195 this.defaultGroup = group;
196 var defaultSet = this.set;
197 this.set = function () {
198 var _a;
199 var args = [];
200 for (var _i = 0; _i < arguments.length; _i++) {
201 args[_i] = arguments[_i];
202 }
203 if (!_this.app.hooks) {
204 return defaultSet.apply(_this, args);
205 }
206 return (_a = _this.app.hooks).run.apply(_a, [types_1.LifecycleHook.UpdateAction, defaultSet, _this].concat(args));
207 };
208 }
209 ActionSet.prototype.set = function () {
210 var _ = [];
211 for (var _i = 0; _i < arguments.length; _i++) {
212 _[_i] = arguments[_i];
213 }
214 };
215 Object.defineProperty(ActionSet.prototype, "component", {
216 get: function () {
217 return {
218 id: this.id,
219 subgroups: this.subgroups,
220 type: this.type,
221 };
222 },
223 enumerable: true,
224 configurable: true
225 });
226 ActionSet.prototype.updateSubscription = function (subscriptionToRemove, group, subgroups) {
227 var eventType = subscriptionToRemove.eventType, callback = subscriptionToRemove.callback, component = subscriptionToRemove.component;
228 var currentIndex;
229 currentIndex = this.subscriptions.findIndex(function (subscription) { return subscription === subscriptionToRemove; });
230 if (currentIndex >= 0) {
231 this.subscriptions[currentIndex].unsubscribe();
232 }
233 else {
234 currentIndex = undefined;
235 }
236 this.group = group;
237 this.subgroups = subgroups;
238 Object.assign(component, { subgroups: this.subgroups });
239 return this.subscribe(eventType, callback, component, currentIndex);
240 };
241 ActionSet.prototype.error = function (callback) {
242 var _this = this;
243 var subscriptionIndices = [];
244 forEachInEnum(Error_1.Action, function (eventNameSpace) {
245 // Keep track of subscription index so we can call unsubscribe later
246 // This ensure it will continue to work even when the subscription has been updated
247 subscriptionIndices.push(_this.subscriptions.length);
248 _this.subscribe(eventNameSpace, callback);
249 });
250 return function () {
251 var subscriptionsToRemove = subscriptionIndices.map(function (index) { return _this.subscriptions[index]; });
252 subscriptionsToRemove.forEach(function (toRemove) {
253 collection_1.removeFromCollection(_this.subscriptions, toRemove, function (removed) {
254 removed.unsubscribe();
255 });
256 });
257 };
258 };
259 ActionSet.prototype.subscribe = function (eventName, callback, component, currentIndex) {
260 var _this = this;
261 var eventComponent = component || this.component;
262 var eventType = eventName.toUpperCase();
263 var boundedCallback = typeof currentIndex === 'number' ? callback : callback.bind(this);
264 var eventNameSpace;
265 if (Error_1.isErrorEventName(eventName)) {
266 eventNameSpace = getEventNameSpace(types_2.Group.Error, eventName, __assign({}, eventComponent, { type: '' }));
267 }
268 else {
269 eventNameSpace = getEventNameSpace(this.group, eventName, eventComponent);
270 }
271 var unsubscribe = this.app.subscribe(eventNameSpace, boundedCallback, component ? component.id : this.id);
272 var subscription = {
273 eventType: eventType,
274 unsubscribe: unsubscribe,
275 callback: boundedCallback,
276 component: eventComponent,
277 updateSubscribe: function (group, subgroups) {
278 return _this.updateSubscription.call(_this, subscription, group, subgroups);
279 },
280 };
281 if (typeof currentIndex === 'number' &&
282 currentIndex >= 0 &&
283 currentIndex < this.subscriptions.length) {
284 this.subscriptions[currentIndex] = subscription;
285 }
286 else {
287 this.subscriptions.push(subscription);
288 }
289 return unsubscribe;
290 };
291 ActionSet.prototype.unsubscribe = function (resetOnly) {
292 if (resetOnly === void 0) { resetOnly = false; }
293 unsubscribeActions(this.subscriptions, this.defaultGroup, resetOnly);
294 return this;
295 };
296 return ActionSet;
297}());
298exports.ActionSet = ActionSet;
299var ActionSetWithChildren = /** @class */ (function (_super) {
300 __extends(ActionSetWithChildren, _super);
301 function ActionSetWithChildren() {
302 var _this = _super !== null && _super.apply(this, arguments) || this;
303 _this.children = [];
304 return _this;
305 }
306 ActionSetWithChildren.prototype.unsubscribe = function (unsubscribeChildren, resetParentOnly) {
307 if (unsubscribeChildren === void 0) { unsubscribeChildren = true; }
308 if (resetParentOnly === void 0) { resetParentOnly = false; }
309 unsubscribeActions(this.subscriptions, this.defaultGroup, resetParentOnly);
310 this.children.forEach(function (child) {
311 if (ActionSetWithChildren.prototype.isPrototypeOf(child)) {
312 child.unsubscribe(unsubscribeChildren, unsubscribeChildren ? false : true);
313 }
314 else {
315 child.unsubscribe(unsubscribeChildren ? false : true);
316 }
317 });
318 return this;
319 };
320 ActionSetWithChildren.prototype.getChild = function (id) {
321 var childIndex = this.children.findIndex(function (child) { return child.id === id; });
322 return childIndex >= 0 ? this.children[childIndex] : undefined;
323 };
324 ActionSetWithChildren.prototype.getChildIndex = function (id) {
325 return this.children.findIndex(function (child) { return child.id === id; });
326 };
327 ActionSetWithChildren.prototype.getChildSubscriptions = function (id, eventType) {
328 return this.subscriptions.filter(function (sub) { return sub.component.id === id && (!eventType || eventType === sub.eventType); });
329 };
330 ActionSetWithChildren.prototype.addChild = function (child, group, subgroups) {
331 var _this = this;
332 var subscriptions = child.subscriptions;
333 var existingChild = this.getChild(child.id);
334 // Add child if it doesn't already exist
335 if (!existingChild) {
336 this.children.push(child);
337 }
338 if (!subscriptions || (group === child.group && subgroups === child.subgroups)) {
339 return this;
340 }
341 subscriptions.forEach(function (subscription) {
342 var updateSubscribe = subscription.updateSubscribe;
343 updateSubscribe(group, subgroups);
344 });
345 // Update child's group and subgroups
346 Object.assign(child, { group: group, subgroups: subgroups });
347 // Update child's children subscriptions
348 if (ActionSetWithChildren.prototype.isPrototypeOf(child)) {
349 child.children.forEach(function (c) { return _this.addChild(c, group, subgroups); });
350 }
351 return this;
352 };
353 ActionSetWithChildren.prototype.removeChild = function (id) {
354 var _this = this;
355 collection_1.removeFromCollection(this.children, this.getChild(id), function () {
356 var toBeRemoved = _this.subscriptions.filter(function (subs) { return subs.component.id === id; });
357 toBeRemoved.forEach(function (toRemove) {
358 collection_1.removeFromCollection(_this.subscriptions, toRemove, function (removed) {
359 removed.unsubscribe();
360 });
361 });
362 });
363 return this;
364 };
365 ActionSetWithChildren.prototype.subscribeToChild = function (child, eventName, callback) {
366 var _this = this;
367 var boundedCallback = callback.bind(this);
368 if (eventName instanceof Array) {
369 eventName.forEach(function (e) { return _this.subscribeToChild(child, e, callback); });
370 return this;
371 }
372 if (typeof eventName !== 'string') {
373 return this;
374 }
375 var eventType = eventName.toUpperCase();
376 var currentSubscriptions = this.getChildSubscriptions(child.id, eventType);
377 if (currentSubscriptions.length > 0) {
378 // Subscription is already there, simply update it
379 currentSubscriptions.forEach(function (subs) { return subs.updateSubscribe(_this.group, child.subgroups); });
380 }
381 else {
382 var childComponent = {
383 id: child.id,
384 subgroups: child.subgroups,
385 type: child.type,
386 };
387 this.subscribe(eventType, boundedCallback, childComponent);
388 }
389 return this;
390 };
391 ActionSetWithChildren.prototype.getUpdatedChildActions = function (newActions, currentActions) {
392 if (newActions.length === 0) {
393 while (currentActions.length > 0) {
394 var action = currentActions.pop();
395 if (!action) {
396 break;
397 }
398 this.removeChild(action.id);
399 }
400 return undefined;
401 }
402 // Only allow unique actions
403 var uniqueActions = newActions.filter(function (action, index, actionsArr) { return index === actionsArr.indexOf(action); });
404 var newActionIds = uniqueActions.map(function (action) { return action.id; });
405 // Remove unused actions
406 var unusedActions = currentActions.filter(function (action) {
407 return newActionIds.indexOf(action.id) < 0;
408 });
409 while (unusedActions.length > 0) {
410 var action = unusedActions.pop();
411 if (!action) {
412 break;
413 }
414 this.removeChild(action.id);
415 }
416 return uniqueActions;
417 };
418 return ActionSetWithChildren;
419}(ActionSet));
420exports.ActionSetWithChildren = ActionSetWithChildren;
421function unsubscribeActions(subscriptions, defaultGroup, reassign) {
422 if (reassign === void 0) { reassign = false; }
423 subscriptions.forEach(function (subscription) {
424 if (reassign) {
425 var updateSubscribe = subscription.updateSubscribe;
426 // TODO: Support cases where we don't wipe out group and subgroups to defaults
427 updateSubscribe(defaultGroup, []);
428 }
429 else {
430 var unsubscribe = subscription.unsubscribe;
431 unsubscribe();
432 }
433 });
434 if (!reassign) {
435 subscriptions.length = 0;
436 }
437}
438function updateActionFromPayload(action, newProps) {
439 var id = action.id;
440 if (id === newProps.id) {
441 // Merge new properties
442 Object.assign(action, getMergedProps(action, newProps));
443 return true;
444 }
445 return false;
446}
447exports.updateActionFromPayload = updateActionFromPayload;
448function getMergedProps(props, newProps) {
449 var merged = merge_1.default(props, newProps);
450 if (!merged) {
451 // tslint:disable-next-line:prefer-object-spread
452 var cloned = Object.assign(props, newProps);
453 return cloned;
454 }
455 return merged;
456}
457exports.getMergedProps = getMergedProps;
458function forEachInEnum(types, callback) {
459 Object.keys(types).forEach(function (key) {
460 callback(types[key]);
461 });
462}
463exports.forEachInEnum = forEachInEnum;
464function findMatchInEnum(types, lookup) {
465 var match = Object.keys(types).find(function (key) {
466 return lookup === types[key];
467 });
468 return match ? types[match] : undefined;
469}
470exports.findMatchInEnum = findMatchInEnum;
471function camelCaseToSnakeCase(value) {
472 return value.replace(/([A-Z])/g, function (matcher, _val, index) {
473 return "" + (index !== 0 ? '_' : '') + matcher[0].toLowerCase();
474 });
475}
476/**
477 * Maps the group name to its event name
478 * @internal
479 * @remarks - This method is necessary for the new pattern of using snake case
480 * which makes it more readable and easier to reconstruct the group from an event name.
481 * Example: `ContextualSaveBar` becomes `CONTEXTUAL_SAVE_BAR`
482 * */
483function groupToEventNameSpace(group) {
484 switch (group) {
485 case types_2.Group.ContextualSaveBar:
486 return camelCaseToSnakeCase(group).toUpperCase();
487 default:
488 return group.toUpperCase();
489 }
490}
491
492
493/***/ }),
494/* 1 */
495/***/ (function(module, exports, __webpack_require__) {
496
497"use strict";
498
499Object.defineProperty(exports, "__esModule", { value: true });
500/**
501 * Various action groups.
502 * @public
503 */
504var Group;
505(function (Group) {
506 Group["AuthCode"] = "AuthCode";
507 Group["Button"] = "Button";
508 Group["ButtonGroup"] = "ButtonGroup";
509 Group["Cart"] = "Cart";
510 Group["ContextualSaveBar"] = "ContextualSaveBar";
511 Group["Error"] = "Error";
512 Group["Features"] = "Features";
513 Group["Fullscreen"] = "Fullscreen";
514 Group["Link"] = "Link";
515 Group["Loading"] = "Loading";
516 Group["Menu"] = "Menu";
517 Group["Modal"] = "Modal";
518 Group["Navigation"] = "Navigation";
519 Group["Pos"] = "Pos";
520 Group["Print"] = "Print";
521 Group["ResourcePicker"] = "Resource_Picker";
522 Group["Scanner"] = "Scanner";
523 Group["SessionToken"] = "SessionToken";
524 Group["Share"] = "Share";
525 Group["TitleBar"] = "TitleBar";
526 Group["Toast"] = "Toast";
527})(Group = exports.Group || (exports.Group = {}));
528/**
529 * @internal
530 */
531var ComponentType;
532(function (ComponentType) {
533 ComponentType["Button"] = "Button";
534 ComponentType["ButtonGroup"] = "ButtonGroup";
535})(ComponentType = exports.ComponentType || (exports.ComponentType = {}));
536
537
538/***/ }),
539/* 2 */
540/***/ (function(module, exports, __webpack_require__) {
541
542"use strict";
543
544var __assign = (this && this.__assign) || function () {
545 __assign = Object.assign || function(t) {
546 for (var s, i = 1, n = arguments.length; i < n; i++) {
547 s = arguments[i];
548 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
549 t[p] = s[p];
550 }
551 return t;
552 };
553 return __assign.apply(this, arguments);
554};
555Object.defineProperty(exports, "__esModule", { value: true });
556var TYPE_ERROR = 'type_error_expected';
557function constructErrors(value, error, options) {
558 if (options === void 0) { options = { message: undefined }; }
559 return [
560 {
561 value: value,
562 error: error,
563 message: typeof options.message === 'function' ? options.message(error, value) : options.message,
564 },
565 ];
566}
567function getErrors(obj, validator, key) {
568 var value = key ? obj[key] : obj;
569 var path = key ? "['" + key + "']" : undefined;
570 var error = validator(value);
571 if (!error) {
572 return;
573 }
574 return error.map(function (o) { return (__assign({}, o, { path: "" + (path || '') + (o.path || '') || undefined })); });
575}
576function matchesBoolean(options) {
577 return function (value) {
578 return typeof value === 'boolean'
579 ? undefined
580 : constructErrors(value, TYPE_ERROR + "_boolean", options);
581 };
582}
583exports.matchesBoolean = matchesBoolean;
584function matchesString(options) {
585 return function (value) {
586 return typeof value === 'string' ? undefined : constructErrors(value, TYPE_ERROR + "_string", options);
587 };
588}
589exports.matchesString = matchesString;
590function matchesPositiveInteger(options) {
591 return function (value) {
592 return !Number.isInteger(value) || value < 0
593 ? constructErrors(value, TYPE_ERROR + "_integer", options)
594 : undefined;
595 };
596}
597exports.matchesPositiveInteger = matchesPositiveInteger;
598function matchesPositiveNumber(options) {
599 return function (value) {
600 return Number.isNaN(value) || !Number.isFinite(value) || value < 0
601 ? constructErrors(value, TYPE_ERROR + "_number", options)
602 : undefined;
603 };
604}
605exports.matchesPositiveNumber = matchesPositiveNumber;
606/**
607 * Returns a validator that matches values in the given enum
608 * @param type - enum to use for match values
609 * @public
610 */
611function matchesEnum(types, options) {
612 return function (value) {
613 var values = Object.keys(types).map(function (key) { return types[key]; });
614 var message = (options && options.message) || "expected:" + values.map(function (val) { return "`" + val + "`"; }).join(' or ');
615 return values.includes(value)
616 ? undefined
617 : constructErrors(value, 'invalid_enum_value', __assign({}, options, { message: message }));
618 };
619}
620exports.matchesEnum = matchesEnum;
621function matchesArray(validator, options) {
622 return function (value) {
623 if (!Array.isArray(value)) {
624 return constructErrors(value, TYPE_ERROR + "_array", options);
625 }
626 if (!validator) {
627 return;
628 }
629 var errors = [];
630 value.forEach(function (val, key) {
631 var objectError = validator(val);
632 if (objectError) {
633 errors = errors.concat(objectError.map(function (error) { return (__assign({}, error, { path: "['" + key + "']" + (error.path || '') })); }));
634 }
635 });
636 return errors.length ? errors : undefined;
637 };
638}
639exports.matchesArray = matchesArray;
640function matchesObject(schema, options) {
641 return function (val) {
642 if (typeof val !== 'object' || !val || Array.isArray(val)) {
643 return constructErrors(val, TYPE_ERROR + "_object", options);
644 }
645 var flattened = Object.keys(schema).reduce(function (acc, key) {
646 return acc.concat((getErrors(val, schema[key], key) || []));
647 }, []);
648 return flattened.length ? flattened : undefined;
649 };
650}
651exports.matchesObject = matchesObject;
652function makeOptional(validator) {
653 return function (value) {
654 if (value === undefined || value === null) {
655 return undefined;
656 }
657 return validator(value);
658 };
659}
660exports.makeOptional = makeOptional;
661function composeSchemas() {
662 var validators = [];
663 for (var _i = 0; _i < arguments.length; _i++) {
664 validators[_i] = arguments[_i];
665 }
666 return function (val) {
667 var error;
668 var i = 0;
669 var len = validators.length;
670 while (!error && i < len) {
671 error = validators[i](val);
672 if (error) {
673 return error;
674 }
675 i++;
676 }
677 };
678}
679exports.composeSchemas = composeSchemas;
680function validate(obj, validator) {
681 return getErrors(obj, validator);
682}
683exports.validate = validate;
684
685
686/***/ }),
687/* 3 */
688/***/ (function(module, exports, __webpack_require__) {
689
690"use strict";
691
692Object.defineProperty(exports, "__esModule", { value: true });
693var type_validate_1 = __webpack_require__(2);
694function createActionValidator(type, payloadSchema, payloadRequired, idRequired) {
695 if (payloadSchema === void 0) { payloadSchema = undefined; }
696 if (payloadRequired === void 0) { payloadRequired = false; }
697 if (idRequired === void 0) { idRequired = false; }
698 var idSchema = type_validate_1.matchesObject({
699 id: idRequired ? type_validate_1.matchesString() : type_validate_1.makeOptional(type_validate_1.matchesString()),
700 });
701 var schema = payloadSchema ? type_validate_1.composeSchemas(idSchema, payloadSchema) : idSchema;
702 return type_validate_1.matchesObject({
703 type: type_validate_1.matchesEnum(type, {
704 message: function (_, val) { return "The action type `" + val + "` is invalid or unsupported"; },
705 }),
706 payload: payloadRequired ? schema : type_validate_1.makeOptional(schema),
707 });
708}
709exports.createActionValidator = createActionValidator;
710function actionMessage(errors) {
711 return errors
712 .map(function (err) {
713 var path = err.path, error = err.error, message = err.message, value = err.value;
714 var valueStr = typeof value === 'object' ? JSON.stringify(value) : value;
715 return "`" + error + "` thrown for" + (path ? " path: " + path + " and" : '') + " value: `" + valueStr + "`" + (message ? " with message: " + message : '');
716 })
717 .join(' | ');
718}
719exports.actionMessage = actionMessage;
720function isValidRelativePath(path) {
721 return typeof path === 'string' && (path === '' || path.startsWith('/'));
722}
723exports.isValidRelativePath = isValidRelativePath;
724exports.relativeUrlSchema = type_validate_1.composeSchemas(type_validate_1.matchesString(), function (value) {
725 return isValidRelativePath(value)
726 ? undefined
727 : [{ error: 'invalid_relative_path', value: value, message: 'expected string to start with `/`' }];
728});
729exports.relativePathSchema = type_validate_1.matchesObject({
730 path: exports.relativeUrlSchema,
731});
732function mixedAppClientCheck(window) {
733 window.addEventListener('DOMContentLoaded', function () {
734 if (!window.hasOwnProperty('ShopifyApp')) {
735 return;
736 }
737 console.error("%cException Detected \uD83D\uDEAB\n\n%cAn instance of the EASDK client was detected while initializing Shopify App Bridge. Using Shopify App Bridge and the EASDK simultaneously is not supported.\n\nIf you're migrating an existing app that was built with the shopify_app gem, then the EASDK client might have been included in the home page view template. In this case, remove it from your app before initializing Shopify App Bridge again.", 'font-size: large;', 'font-size: normal;');
738 }, { once: true });
739}
740exports.mixedAppClientCheck = mixedAppClientCheck;
741
742
743/***/ }),
744/* 4 */
745/***/ (function(module, exports, __webpack_require__) {
746
747"use strict";
748
749function __export(m) {
750 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
751}
752Object.defineProperty(exports, "__esModule", { value: true });
753__export(__webpack_require__(55));
754__export(__webpack_require__(24));
755
756
757/***/ }),
758/* 5 */
759/***/ (function(module, exports, __webpack_require__) {
760
761"use strict";
762
763function __export(m) {
764 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
765}
766Object.defineProperty(exports, "__esModule", { value: true });
767__export(__webpack_require__(50));
768__export(__webpack_require__(21));
769
770
771/***/ }),
772/* 6 */
773/***/ (function(module, exports, __webpack_require__) {
774
775"use strict";
776
777function __export(m) {
778 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
779}
780var __importStar = (this && this.__importStar) || function (mod) {
781 if (mod && mod.__esModule) return mod;
782 var result = {};
783 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
784 result["default"] = mod;
785 return result;
786};
787Object.defineProperty(exports, "__esModule", { value: true });
788var AuthCode = __importStar(__webpack_require__(49));
789exports.AuthCode = AuthCode;
790var Button = __importStar(__webpack_require__(4));
791exports.Button = Button;
792var ButtonGroup = __importStar(__webpack_require__(7));
793exports.ButtonGroup = ButtonGroup;
794var Cart = __importStar(__webpack_require__(26));
795exports.Cart = Cart;
796var Error = __importStar(__webpack_require__(5));
797exports.Error = Error;
798var Flash = __importStar(__webpack_require__(58));
799exports.Flash = Flash;
800var Features = __importStar(__webpack_require__(61));
801exports.Features = Features;
802var Fullscreen = __importStar(__webpack_require__(29));
803exports.Fullscreen = Fullscreen;
804var Loading = __importStar(__webpack_require__(30));
805exports.Loading = Loading;
806var Modal = __importStar(__webpack_require__(32));
807exports.Modal = Modal;
808var History = __importStar(__webpack_require__(65));
809exports.History = History;
810var Redirect = __importStar(__webpack_require__(17));
811exports.Redirect = Redirect;
812var Print = __importStar(__webpack_require__(18));
813exports.Print = Print;
814var ResourcePicker = __importStar(__webpack_require__(37));
815exports.ResourcePicker = ResourcePicker;
816var Scanner = __importStar(__webpack_require__(39));
817exports.Scanner = Scanner;
818var SessionToken = __importStar(__webpack_require__(71));
819exports.SessionToken = SessionToken;
820var TitleBar = __importStar(__webpack_require__(41));
821exports.TitleBar = TitleBar;
822var Toast = __importStar(__webpack_require__(10));
823exports.Toast = Toast;
824var ContextualSaveBar = __importStar(__webpack_require__(43));
825exports.ContextualSaveBar = ContextualSaveBar;
826var Share = __importStar(__webpack_require__(74));
827exports.Share = Share;
828var NavigationMenu = __importStar(__webpack_require__(75));
829exports.NavigationMenu = NavigationMenu;
830var ChannelMenu = __importStar(__webpack_require__(77));
831exports.ChannelMenu = ChannelMenu;
832var AppLink = __importStar(__webpack_require__(11));
833exports.AppLink = AppLink;
834var Pos = __importStar(__webpack_require__(79));
835exports.Pos = Pos;
836var validator_1 = __webpack_require__(22);
837exports.isAppBridgeAction = validator_1.isAppBridgeAction;
838__export(__webpack_require__(1));
839
840
841/***/ }),
842/* 7 */
843/***/ (function(module, exports, __webpack_require__) {
844
845"use strict";
846
847function __export(m) {
848 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
849}
850Object.defineProperty(exports, "__esModule", { value: true });
851__export(__webpack_require__(56));
852__export(__webpack_require__(25));
853
854
855/***/ }),
856/* 8 */
857/***/ (function(module, exports, __webpack_require__) {
858
859"use strict";
860
861Object.defineProperty(exports, "__esModule", { value: true });
862var types_1 = __webpack_require__(1);
863exports.AnyAction = types_1.AnyAction;
864exports.Dispatch = types_1.Dispatch;
865exports.Unsubscribe = types_1.Unsubscribe;
866var MessageTransport_1 = __webpack_require__(13);
867exports.Handler = MessageTransport_1.Handler;
868exports.HandlerData = MessageTransport_1.HandlerData;
869/**
870 * @internal
871 */
872var PermissionType;
873(function (PermissionType) {
874 PermissionType["Dispatch"] = "Dispatch";
875 PermissionType["Subscribe"] = "Subscribe";
876})(PermissionType = exports.PermissionType || (exports.PermissionType = {}));
877/**
878 * @internal
879 */
880var MessageType;
881(function (MessageType) {
882 MessageType["GetState"] = "getState";
883 MessageType["Dispatch"] = "dispatch";
884 MessageType["Subscribe"] = "subscribe";
885 MessageType["Unsubscribe"] = "unsubscribe";
886})(MessageType = exports.MessageType || (exports.MessageType = {}));
887/**
888 *
889 * There are two types of hooks: `LifecycleHook.DispatchAction` and `LifecycleHook.UpdateAction`.
890 *
891 * @remarks
892 * `DispatchAction` hooks are run when an action is dispatched with the `.dispatch()` function:
893 *
894 * ```js
895 * const toastNotice = Toast.create(app, {message: 'Product saved'});
896 * toastNotice.dispatch(Toast.Action.SHOW);
897 * ```
898 *
899 * `UpdateAction` hooks are run when an action is updated, using the `.set()` function:
900 *
901 * ```js
902 * toastNotice.set({message: 'Product could not be saved', isError: true});
903 * ```
904 *
905 * @public
906 */
907var LifecycleHook;
908(function (LifecycleHook) {
909 LifecycleHook["UpdateAction"] = "UpdateAction";
910 LifecycleHook["DispatchAction"] = "DispatchAction";
911})(LifecycleHook = exports.LifecycleHook || (exports.LifecycleHook = {}));
912
913
914/***/ }),
915/* 9 */
916/***/ (function(module, exports, __webpack_require__) {
917
918"use strict";
919
920Object.defineProperty(exports, "__esModule", { value: true });
921/**
922 * Add an item to a collection, return a function that can then be used to
923 * remove the item from the collection. Optionally accepting a callback that is
924 * invoked when the item is removed from the collection.
925 *
926 * @internal
927 */
928function addAndRemoveFromCollection(collection, item, then) {
929 collection.push(item);
930 return function () {
931 return removeFromCollection(collection, item, then);
932 };
933}
934exports.addAndRemoveFromCollection = addAndRemoveFromCollection;
935/**
936 * Remove the item from the collection. Optionally accepting a callback that is
937 * invoked when the item is removed from the collection.
938 *
939 * @internal
940 */
941function removeFromCollection(collection, item, then) {
942 var idx = collection.findIndex(function (i) { return i === item; });
943 if (idx >= 0) {
944 collection.splice(idx, 1);
945 if (then) {
946 then(item);
947 }
948 return true;
949 }
950 return false;
951}
952exports.removeFromCollection = removeFromCollection;
953
954
955/***/ }),
956/* 10 */
957/***/ (function(module, exports, __webpack_require__) {
958
959"use strict";
960
961function __export(m) {
962 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
963}
964Object.defineProperty(exports, "__esModule", { value: true });
965__export(__webpack_require__(60));
966__export(__webpack_require__(16));
967
968
969/***/ }),
970/* 11 */
971/***/ (function(module, exports, __webpack_require__) {
972
973"use strict";
974
975var __extends = (this && this.__extends) || (function () {
976 var extendStatics = function (d, b) {
977 extendStatics = Object.setPrototypeOf ||
978 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
979 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
980 return extendStatics(d, b);
981 };
982 return function (d, b) {
983 extendStatics(d, b);
984 function __() { this.constructor = d; }
985 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
986 };
987})();
988Object.defineProperty(exports, "__esModule", { value: true });
989var helper_1 = __webpack_require__(0);
990var types_1 = __webpack_require__(1);
991var Redirect_1 = __webpack_require__(17);
992var Action;
993(function (Action) {
994 Action["UPDATE"] = "UPDATE";
995})(Action = exports.Action || (exports.Action = {}));
996var ActionType;
997(function (ActionType) {
998 ActionType["UPDATE"] = "APP::LINK::UPDATE";
999})(ActionType = exports.ActionType || (exports.ActionType = {}));
1000function update(updatePayload) {
1001 return helper_1.actionWrapper({
1002 group: types_1.Group.Link,
1003 type: ActionType.UPDATE,
1004 payload: updatePayload,
1005 });
1006}
1007exports.update = update;
1008var AppLink = /** @class */ (function (_super) {
1009 __extends(AppLink, _super);
1010 function AppLink(app, options) {
1011 var _this = _super.call(this, app, types_1.Group.Link, types_1.Group.Link) || this;
1012 _this.label = '';
1013 _this.destination = '';
1014 _this.set(options, false);
1015 return _this;
1016 }
1017 Object.defineProperty(AppLink.prototype, "options", {
1018 get: function () {
1019 var _a = this, label = _a.label, destination = _a.destination;
1020 return {
1021 label: label,
1022 destination: destination,
1023 redirectType: Redirect_1.Action.APP,
1024 };
1025 },
1026 enumerable: true,
1027 configurable: true
1028 });
1029 Object.defineProperty(AppLink.prototype, "payload", {
1030 get: function () {
1031 var _a = this.options, label = _a.label, destination = _a.destination, redirectType = _a.redirectType;
1032 var path = destination;
1033 return {
1034 id: this.id,
1035 label: label,
1036 destination: { path: path },
1037 redirectType: redirectType,
1038 };
1039 },
1040 enumerable: true,
1041 configurable: true
1042 });
1043 AppLink.prototype.set = function (options, shouldUpdate) {
1044 if (shouldUpdate === void 0) { shouldUpdate = true; }
1045 var _a = helper_1.getMergedProps(this.options, options), label = _a.label, destination = _a.destination;
1046 this.label = label;
1047 this.destination = destination;
1048 if (shouldUpdate) {
1049 this.dispatch(ActionType.UPDATE);
1050 }
1051 return this;
1052 };
1053 AppLink.prototype.dispatch = function (action) {
1054 switch (action) {
1055 case ActionType.UPDATE:
1056 this.app.dispatch(update(this.payload));
1057 break;
1058 }
1059 return this;
1060 };
1061 return AppLink;
1062}(helper_1.ActionSet));
1063exports.AppLink = AppLink;
1064function create(app, options) {
1065 return new AppLink(app, options);
1066}
1067exports.create = create;
1068
1069
1070/***/ }),
1071/* 12 */
1072/***/ (function(module, exports, __webpack_require__) {
1073
1074"use strict";
1075
1076Object.defineProperty(exports, "__esModule", { value: true });
1077var Button_1 = __webpack_require__(4);
1078exports.ActionType = Button_1.ActionType;
1079var type_validate_1 = __webpack_require__(2);
1080var utils_1 = __webpack_require__(3);
1081exports.buttonSchema = type_validate_1.matchesObject({
1082 disabled: type_validate_1.makeOptional(type_validate_1.matchesBoolean()),
1083 label: type_validate_1.matchesString(),
1084 style: type_validate_1.makeOptional(type_validate_1.matchesEnum(Button_1.Style)),
1085 icon: type_validate_1.makeOptional(type_validate_1.matchesEnum(Button_1.Icon)),
1086 loading: type_validate_1.makeOptional(type_validate_1.matchesBoolean()),
1087});
1088exports.buttonSchemaWithId = type_validate_1.composeSchemas(type_validate_1.matchesObject({
1089 id: type_validate_1.matchesString(),
1090}), exports.buttonSchema);
1091function validateProps(props) {
1092 return type_validate_1.validate(props, exports.buttonSchema);
1093}
1094exports.validateProps = validateProps;
1095function validateAction(action) {
1096 var validator = utils_1.createActionValidator(Button_1.ActionType, action.type === Button_1.ActionType.UPDATE ? exports.buttonSchema : undefined, true, true);
1097 return type_validate_1.validate(action, validator);
1098}
1099exports.validateAction = validateAction;
1100
1101
1102/***/ }),
1103/* 13 */
1104/***/ (function(module, exports, __webpack_require__) {
1105
1106"use strict";
1107
1108Object.defineProperty(exports, "__esModule", { value: true });
1109var Error_1 = __webpack_require__(5);
1110var validator_1 = __webpack_require__(22);
1111var collection_1 = __webpack_require__(9);
1112var env_1 = __webpack_require__(23);
1113var Context;
1114(function (Context) {
1115 Context["Modal"] = "Modal";
1116 Context["Main"] = "Main";
1117})(Context = exports.Context || (exports.Context = {}));
1118/**
1119 * Create a MessageTransport from an IFrame.
1120 * @remarks
1121 * Used on the host-side to create a postMessage MessageTransport.
1122 * @beta
1123 */
1124function fromFrame(frame, localOrigin, context) {
1125 var handlers = [];
1126 if (typeof frame === 'undefined' || !frame.ownerDocument || !frame.ownerDocument.defaultView) {
1127 throw Error_1.fromAction('App frame is undefined', Error_1.AppActionType.WINDOW_UNDEFINED);
1128 }
1129 var parent = frame.ownerDocument.defaultView;
1130 parent.addEventListener('message', function (event) {
1131 if (event.origin !== localOrigin || !validator_1.isAppMessage(event)) {
1132 return;
1133 }
1134 for (var _i = 0, handlers_1 = handlers; _i < handlers_1.length; _i++) {
1135 var handler = handlers_1[_i];
1136 handler(event);
1137 }
1138 });
1139 return {
1140 context: context,
1141 localOrigin: localOrigin,
1142 frameWindow: frame.contentWindow,
1143 hostFrame: parent,
1144 dispatch: function (message) {
1145 var contentWindow = frame.contentWindow;
1146 if (contentWindow) {
1147 contentWindow.postMessage(message, localOrigin);
1148 }
1149 },
1150 subscribe: function (handler) {
1151 return collection_1.addAndRemoveFromCollection(handlers, handler);
1152 },
1153 };
1154}
1155exports.fromFrame = fromFrame;
1156/**
1157 * Create a MessageTransport from a parent window.
1158 * @remarks
1159 * Used on the client-side to create a postMessage MessageTransport.
1160 * @internalremarks
1161 * In frameless mode, message should be dispatched via SmartWebView.handleMessage instead of postMessage.
1162 * @beta
1163 */
1164function fromWindow(contentWindow, localOrigin) {
1165 var handlers = [];
1166 if (typeof window !== undefined) {
1167 window.addEventListener('message', function (event) {
1168 if ((window === contentWindow && !env_1.isFrameless) ||
1169 event.source !== contentWindow ||
1170 !(validator_1.isAppBridgeAction(event.data.payload) || validator_1.isAppMessage(event))) {
1171 return;
1172 }
1173 for (var _i = 0, handlers_2 = handlers; _i < handlers_2.length; _i++) {
1174 var handler = handlers_2[_i];
1175 handler(event);
1176 }
1177 });
1178 }
1179 return {
1180 localOrigin: localOrigin,
1181 hostFrame: contentWindow,
1182 dispatch: function (message) {
1183 if (!message.source || !message.source.shopOrigin) {
1184 return;
1185 }
1186 if (env_1.isFrameless && window && window.SmartWebView) {
1187 window.SmartWebView.handleMessage('frameless://fromClient', JSON.stringify(message));
1188 return;
1189 }
1190 var messageOrigin = "https://" + message.source.shopOrigin;
1191 contentWindow.postMessage(message, messageOrigin);
1192 },
1193 subscribe: function (handler) {
1194 return collection_1.addAndRemoveFromCollection(handlers, handler);
1195 },
1196 };
1197}
1198exports.fromWindow = fromWindow;
1199
1200
1201/***/ }),
1202/* 14 */
1203/***/ (function(module, exports, __webpack_require__) {
1204
1205"use strict";
1206
1207Object.defineProperty(exports, "__esModule", { value: true });
1208exports.PREFIX = 'APP';
1209exports.SEPARATOR = '::';
1210
1211
1212/***/ }),
1213/* 15 */
1214/***/ (function(module, exports, __webpack_require__) {
1215
1216"use strict";
1217
1218Object.defineProperty(exports, "__esModule", { value: true });
1219var Button_1 = __webpack_require__(4);
1220function getSingleButton(action, button, subgroups, updateCb) {
1221 action.addChild(button, action.group, subgroups);
1222 action.subscribeToChild(button, Button_1.Action.UPDATE, updateCb);
1223 return button.payload;
1224}
1225exports.getSingleButton = getSingleButton;
1226
1227
1228/***/ }),
1229/* 16 */
1230/***/ (function(module, exports, __webpack_require__) {
1231
1232"use strict";
1233
1234Object.defineProperty(exports, "__esModule", { value: true });
1235var ActionType;
1236(function (ActionType) {
1237 ActionType["SHOW"] = "APP::TOAST::SHOW";
1238 ActionType["CLEAR"] = "APP::TOAST::CLEAR";
1239})(ActionType = exports.ActionType || (exports.ActionType = {}));
1240var Action;
1241(function (Action) {
1242 Action["SHOW"] = "SHOW";
1243 Action["CLEAR"] = "CLEAR";
1244})(Action = exports.Action || (exports.Action = {}));
1245
1246
1247/***/ }),
1248/* 17 */
1249/***/ (function(module, exports, __webpack_require__) {
1250
1251"use strict";
1252
1253function __export(m) {
1254 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
1255}
1256Object.defineProperty(exports, "__esModule", { value: true });
1257__export(__webpack_require__(67));
1258__export(__webpack_require__(35));
1259
1260
1261/***/ }),
1262/* 18 */
1263/***/ (function(module, exports, __webpack_require__) {
1264
1265"use strict";
1266
1267function __export(m) {
1268 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
1269}
1270Object.defineProperty(exports, "__esModule", { value: true });
1271__export(__webpack_require__(68));
1272__export(__webpack_require__(36));
1273
1274
1275/***/ }),
1276/* 19 */
1277/***/ (function(module, exports, __webpack_require__) {
1278
1279"use strict";
1280
1281function __export(m) {
1282 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
1283}
1284Object.defineProperty(exports, "__esModule", { value: true });
1285var Client_1 = __webpack_require__(44);
1286__export(__webpack_require__(8));
1287__export(__webpack_require__(44));
1288exports.default = Client_1.createClientApp;
1289
1290
1291/***/ }),
1292/* 20 */
1293/***/ (function(module, exports, __webpack_require__) {
1294
1295"use strict";
1296
1297Object.defineProperty(exports, "__esModule", { value: true });
1298function shouldRedirect(frame) {
1299 return frame === window;
1300}
1301exports.shouldRedirect = shouldRedirect;
1302function redirect(url) {
1303 var location = getLocation();
1304 if (!location) {
1305 return;
1306 }
1307 location.assign(url);
1308}
1309exports.redirect = redirect;
1310function getLocation() {
1311 return hasWindow() ? window.location : undefined;
1312}
1313exports.getLocation = getLocation;
1314function getWindow() {
1315 return hasWindow() ? window : undefined;
1316}
1317exports.getWindow = getWindow;
1318function hasWindow() {
1319 return typeof window !== 'undefined';
1320}
1321
1322
1323/***/ }),
1324/* 21 */
1325/***/ (function(module, exports, __webpack_require__) {
1326
1327"use strict";
1328
1329Object.defineProperty(exports, "__esModule", { value: true });
1330var Action;
1331(function (Action) {
1332 Action["INVALID_ACTION"] = "INVALID_ACTION";
1333 Action["INVALID_ACTION_TYPE"] = "INVALID_ACTION_TYPE";
1334 Action["INVALID_OPTIONS"] = "INVALID_OPTIONS";
1335 Action["INVALID_PAYLOAD"] = "INVALID_PAYLOAD";
1336 Action["UNEXPECTED_ACTION"] = "UNEXPECTED_ACTION";
1337 Action["PERSISTENCE"] = "PERSISTENCE";
1338 Action["UNSUPPORTED_OPERATION"] = "UNSUPPORTED_OPERATION";
1339 Action["NETWORK"] = "NETWORK";
1340 Action["PERMISSION"] = "PERMISSION";
1341})(Action = exports.Action || (exports.Action = {}));
1342var ActionType;
1343(function (ActionType) {
1344 ActionType["INVALID_ACTION"] = "APP::ERROR::INVALID_ACTION";
1345 ActionType["INVALID_ACTION_TYPE"] = "APP::ERROR::INVALID_ACTION_TYPE";
1346 ActionType["INVALID_PAYLOAD"] = "APP::ERROR::INVALID_PAYLOAD";
1347 ActionType["INVALID_OPTIONS"] = "APP::ERROR::INVALID_OPTIONS";
1348 ActionType["UNEXPECTED_ACTION"] = "APP::ERROR::UNEXPECTED_ACTION";
1349 ActionType["PERSISTENCE"] = "APP::ERROR::PERSISTENCE";
1350 ActionType["UNSUPPORTED_OPERATION"] = "APP::ERROR::UNSUPPORTED_OPERATION";
1351 ActionType["NETWORK"] = "APP::ERROR::NETWORK";
1352 ActionType["PERMISSION"] = "APP::ERROR::PERMISSION";
1353 ActionType["FAILED_AUTHENTICATION"] = "APP::ERROR::FAILED_AUTHENTICATION";
1354})(ActionType = exports.ActionType || (exports.ActionType = {}));
1355var AppActionType;
1356(function (AppActionType) {
1357 AppActionType["INVALID_CONFIG"] = "APP::ERROR::INVALID_CONFIG";
1358 AppActionType["MISSING_CONFIG"] = "APP::APP_ERROR::MISSING_CONFIG";
1359 AppActionType["MISSING_APP_BRIDGE_MIDDLEWARE"] = "APP::APP_ERROR::MISSING_APP_BRIDGE_MIDDLEWARE";
1360 AppActionType["WINDOW_UNDEFINED"] = "APP::APP_ERROR::WINDOW_UNDEFINED";
1361 AppActionType["MISSING_LOCAL_ORIGIN"] = "APP::APP_ERROR::MISSING_LOCAL_ORIGIN";
1362 AppActionType["MISSING_HOST_PROVIDER"] = "APP::APP_ERROR::MISSING_HOST_PROVIDER";
1363 AppActionType["MISSING_ROUTER_CONTEXT"] = "APP::APP_ERROR::MISSING_ROUTER_CONTEXT";
1364 AppActionType["MISSING_HISTORY_BLOCK"] = "APP::APP_ERROR::MISSING_HISTORY_BLOCK";
1365})(AppActionType = exports.AppActionType || (exports.AppActionType = {}));
1366
1367
1368/***/ }),
1369/* 22 */
1370/***/ (function(module, exports, __webpack_require__) {
1371
1372"use strict";
1373
1374Object.defineProperty(exports, "__esModule", { value: true });
1375var constants_1 = __webpack_require__(14);
1376var types_1 = __webpack_require__(8);
1377var helper_1 = __webpack_require__(0);
1378/**
1379 * Predicate to determine if an action is an App Bridge action.
1380 * @public
1381 */
1382function isAppBridgeAction(action) {
1383 return (action instanceof Object &&
1384 action.hasOwnProperty('type') &&
1385 action.type.toString().startsWith(constants_1.PREFIX));
1386}
1387exports.isAppBridgeAction = isAppBridgeAction;
1388/**
1389 * Predicate to determine if an action originated from an application.
1390 * @internal
1391 */
1392function isFromApp(action) {
1393 if (typeof action !== 'object' || typeof action.source !== 'object') {
1394 return false;
1395 }
1396 return typeof action.source.apiKey === 'string';
1397}
1398exports.isFromApp = isFromApp;
1399/**
1400 * Returns the action type without the prefix and group
1401 * @internal
1402 */
1403function getPermissionKey(type) {
1404 return type.replace(new RegExp("^" + constants_1.PREFIX + constants_1.SEPARATOR + "\\w+" + constants_1.SEPARATOR), '');
1405}
1406exports.getPermissionKey = getPermissionKey;
1407/**
1408 * Predicate to determine if an action is permitted
1409 * @internal
1410 */
1411function isPermitted(features, _a, permissionType) {
1412 var group = _a.group, type = _a.type;
1413 if (!group || !features.hasOwnProperty(group)) {
1414 return false;
1415 }
1416 var feature = features[group];
1417 if (!feature) {
1418 return false;
1419 }
1420 var actionType = getPermissionKey(type);
1421 return feature[actionType] ? feature[actionType][permissionType] === true : false;
1422}
1423exports.isPermitted = isPermitted;
1424/**
1425 * Predicate to determine if an event originated from an application.
1426 * @internal
1427 */
1428function isAppMessage(event) {
1429 if (typeof event !== 'object' || !event.data || typeof event.data !== 'object') {
1430 return false;
1431 }
1432 var data = event.data;
1433 return data.hasOwnProperty('type') && helper_1.findMatchInEnum(types_1.MessageType, data.type) !== undefined;
1434}
1435exports.isAppMessage = isAppMessage;
1436
1437
1438/***/ }),
1439/* 23 */
1440/***/ (function(module, exports, __webpack_require__) {
1441
1442"use strict";
1443/* WEBPACK VAR INJECTION */(function(process) {
1444Object.defineProperty(exports, "__esModule", { value: true });
1445exports.isServer = typeof window === 'undefined';
1446exports.isClient = !exports.isServer;
1447exports.isDevelopment = typeof process !== 'undefined' && process.env && "production" === 'development';
1448exports.isProduction = !exports.isDevelopment;
1449exports.isDevelopmentClient = exports.isDevelopment && exports.isClient;
1450exports.isFrameless = !exports.isServer && window.navigator.userAgent.indexOf(' Frameless ') > 0;
1451
1452/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(51)))
1453
1454/***/ }),
1455/* 24 */
1456/***/ (function(module, exports, __webpack_require__) {
1457
1458"use strict";
1459
1460Object.defineProperty(exports, "__esModule", { value: true });
1461var Action;
1462(function (Action) {
1463 Action["CLICK"] = "CLICK";
1464 Action["UPDATE"] = "UPDATE";
1465})(Action = exports.Action || (exports.Action = {}));
1466var ActionType;
1467(function (ActionType) {
1468 ActionType["CLICK"] = "APP::BUTTON::CLICK";
1469 ActionType["UPDATE"] = "APP::BUTTON::UPDATE";
1470})(ActionType = exports.ActionType || (exports.ActionType = {}));
1471var Icon;
1472(function (Icon) {
1473 Icon["Print"] = "print";
1474})(Icon = exports.Icon || (exports.Icon = {}));
1475var Style;
1476(function (Style) {
1477 Style["Danger"] = "danger";
1478})(Style = exports.Style || (exports.Style = {}));
1479
1480
1481/***/ }),
1482/* 25 */
1483/***/ (function(module, exports, __webpack_require__) {
1484
1485"use strict";
1486
1487Object.defineProperty(exports, "__esModule", { value: true });
1488var Action;
1489(function (Action) {
1490 Action["UPDATE"] = "UPDATE";
1491})(Action = exports.Action || (exports.Action = {}));
1492var ActionType;
1493(function (ActionType) {
1494 ActionType["UPDATE"] = "APP::BUTTONGROUP::UPDATE";
1495})(ActionType = exports.ActionType || (exports.ActionType = {}));
1496
1497
1498/***/ }),
1499/* 26 */
1500/***/ (function(module, exports, __webpack_require__) {
1501
1502"use strict";
1503
1504function __export(m) {
1505 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
1506}
1507Object.defineProperty(exports, "__esModule", { value: true });
1508__export(__webpack_require__(57));
1509__export(__webpack_require__(27));
1510
1511
1512/***/ }),
1513/* 27 */
1514/***/ (function(module, exports, __webpack_require__) {
1515
1516"use strict";
1517
1518Object.defineProperty(exports, "__esModule", { value: true });
1519var ActionType;
1520(function (ActionType) {
1521 ActionType["FETCH"] = "APP::CART::FETCH";
1522 ActionType["UPDATE"] = "APP::CART::UPDATE";
1523 ActionType["SET_CUSTOMER"] = "APP::CART::SET_CUSTOMER";
1524 ActionType["REMOVE_CUSTOMER"] = "APP::CART::REMOVE_CUSTOMER";
1525 ActionType["ADD_CUSTOMER_ADDRESS"] = "APP::CART::ADD_CUSTOMER_ADDRESS";
1526 ActionType["UPDATE_CUSTOMER_ADDRESS"] = "APP::CART::UPDATE_CUSTOMER_ADDRESS";
1527 ActionType["SET_DISCOUNT"] = "APP::CART::SET_DISCOUNT";
1528 ActionType["REMOVE_DISCOUNT"] = "APP::CART::REMOVE_DISCOUNT";
1529 ActionType["SET_PROPERTIES"] = "APP::CART::SET_PROPERTIES";
1530 ActionType["REMOVE_PROPERTIES"] = "APP::CART::REMOVE_PROPERTIES";
1531 ActionType["CLEAR"] = "APP::CART::CLEAR";
1532 ActionType["ADD_LINE_ITEM"] = "APP::CART::ADD_LINE_ITEM";
1533 ActionType["UPDATE_LINE_ITEM"] = "APP::CART::UPDATE_LINE_ITEM";
1534 ActionType["REMOVE_LINE_ITEM"] = "APP::CART::REMOVE_LINE_ITEM";
1535 ActionType["SET_LINE_ITEM_DISCOUNT"] = "APP::CART::SET_LINE_ITEM_DISCOUNT";
1536 ActionType["REMOVE_LINE_ITEM_DISCOUNT"] = "APP::CART::REMOVE_LINE_ITEM_DISCOUNT";
1537 ActionType["SET_LINE_ITEM_PROPERTIES"] = "APP::CART::SET_LINE_ITEM_PROPERTIES";
1538 ActionType["REMOVE_LINE_ITEM_PROPERTIES"] = "APP::CART::REMOVE_LINE_ITEM_PROPERTIES";
1539})(ActionType = exports.ActionType || (exports.ActionType = {}));
1540var Action;
1541(function (Action) {
1542 Action["FETCH"] = "FETCH";
1543 Action["UPDATE"] = "UPDATE";
1544 Action["SET_CUSTOMER"] = "SET_CUSTOMER";
1545 Action["REMOVE_CUSTOMER"] = "REMOVE_CUSTOMER";
1546 Action["ADD_CUSTOMER_ADDRESS"] = "ADD_CUSTOMER_ADDRESS";
1547 Action["UPDATE_CUSTOMER_ADDRESS"] = "UPDATE_CUSTOMER_ADDRESS";
1548 Action["SET_DISCOUNT"] = "SET_DISCOUNT";
1549 Action["REMOVE_DISCOUNT"] = "REMOVE_DISCOUNT";
1550 Action["SET_PROPERTIES"] = "SET_PROPERTIES";
1551 Action["REMOVE_PROPERTIES"] = "REMOVE_PROPERTIES";
1552 Action["CLEAR"] = "CLEAR";
1553 Action["ADD_LINE_ITEM"] = "ADD_LINE_ITEM";
1554 Action["UPDATE_LINE_ITEM"] = "UPDATE_LINE_ITEM";
1555 Action["REMOVE_LINE_ITEM"] = "REMOVE_LINE_ITEM";
1556 Action["SET_LINE_ITEM_DISCOUNT"] = "SET_LINE_ITEM_DISCOUNT";
1557 Action["REMOVE_LINE_ITEM_DISCOUNT"] = "REMOVE_LINE_ITEM_DISCOUNT";
1558 Action["SET_LINE_ITEM_PROPERTIES"] = "SET_LINE_ITEM_PROPERTIES";
1559 Action["REMOVE_LINE_ITEM_PROPERTIES"] = "REMOVE_LINE_ITEM_PROPERTIES";
1560})(Action = exports.Action || (exports.Action = {}));
1561
1562
1563/***/ }),
1564/* 28 */
1565/***/ (function(module, exports, __webpack_require__) {
1566
1567"use strict";
1568
1569Object.defineProperty(exports, "__esModule", { value: true });
1570/**
1571 * Action Types for the Features group
1572 * @public
1573 */
1574var ActionType;
1575(function (ActionType) {
1576 ActionType["UPDATE"] = "APP::FEATURES::UPDATE";
1577 ActionType["REQUEST"] = "APP::FEATURES::REQUEST";
1578 ActionType["REQUEST_UPDATE"] = "APP::FEATURES::REQUEST::UPDATE";
1579})(ActionType = exports.ActionType || (exports.ActionType = {}));
1580/**
1581 * Actions available to the Features group
1582 * @public
1583 */
1584var Action;
1585(function (Action) {
1586 Action["UPDATE"] = "UPDATE";
1587 Action["REQUEST"] = "REQUEST";
1588 Action["REQUEST_UPDATE"] = "REQUEST::UPDATE";
1589})(Action = exports.Action || (exports.Action = {}));
1590
1591
1592/***/ }),
1593/* 29 */
1594/***/ (function(module, exports, __webpack_require__) {
1595
1596"use strict";
1597
1598var __extends = (this && this.__extends) || (function () {
1599 var extendStatics = function (d, b) {
1600 extendStatics = Object.setPrototypeOf ||
1601 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1602 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
1603 return extendStatics(d, b);
1604 };
1605 return function (d, b) {
1606 extendStatics(d, b);
1607 function __() { this.constructor = d; }
1608 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1609 };
1610})();
1611Object.defineProperty(exports, "__esModule", { value: true });
1612var helper_1 = __webpack_require__(0);
1613var types_1 = __webpack_require__(1);
1614/**
1615 * Fullscreen action enum
1616 * @beta
1617 */
1618var Action;
1619(function (Action) {
1620 Action["ENTER"] = "ENTER";
1621 Action["EXIT"] = "EXIT";
1622})(Action = exports.Action || (exports.Action = {}));
1623/**
1624 * Fullscreen action type enum
1625 * @remarks includes the action prefix and group
1626 *
1627 * @beta
1628 */
1629var ActionType;
1630(function (ActionType) {
1631 ActionType["ENTER"] = "APP::FULLSCREEN::ENTER";
1632 ActionType["EXIT"] = "APP::FULLSCREEN::EXIT";
1633})(ActionType = exports.ActionType || (exports.ActionType = {}));
1634function enter() {
1635 return helper_1.actionWrapper({
1636 group: types_1.Group.Fullscreen,
1637 type: ActionType.ENTER,
1638 });
1639}
1640exports.enter = enter;
1641function exit() {
1642 return helper_1.actionWrapper({
1643 group: types_1.Group.Fullscreen,
1644 type: ActionType.EXIT,
1645 });
1646}
1647exports.exit = exit;
1648/**
1649 * Fullscreen action set
1650 * @beta
1651 */
1652var Fullscreen = /** @class */ (function (_super) {
1653 __extends(Fullscreen, _super);
1654 /**
1655 * Returns a new instance of a Fullscreen action set
1656 * @param app the client application
1657 */
1658 function Fullscreen(app) {
1659 return _super.call(this, app, types_1.Group.Fullscreen, types_1.Group.Fullscreen) || this;
1660 }
1661 Object.defineProperty(Fullscreen.prototype, "payload", {
1662 /**
1663 * Returns the action set payload
1664 */
1665 get: function () {
1666 return { id: this.id };
1667 },
1668 enumerable: true,
1669 configurable: true
1670 });
1671 /**
1672 * Dispatches a given action with the action set payload
1673 * @param action the action enum
1674 * @returns the action set instance
1675 */
1676 Fullscreen.prototype.dispatch = function (action) {
1677 this.app.dispatch(helper_1.actionWrapper({
1678 group: this.group,
1679 type: ActionType[action],
1680 payload: this.payload,
1681 }));
1682 return this;
1683 };
1684 return Fullscreen;
1685}(helper_1.ActionSet));
1686exports.Fullscreen = Fullscreen;
1687/**
1688 * Returns a new instance of a Fullscreen action set
1689 * @param app the client application
1690 *
1691 * @beta
1692 */
1693function create(app) {
1694 return new Fullscreen(app);
1695}
1696exports.create = create;
1697
1698
1699/***/ }),
1700/* 30 */
1701/***/ (function(module, exports, __webpack_require__) {
1702
1703"use strict";
1704
1705function __export(m) {
1706 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
1707}
1708Object.defineProperty(exports, "__esModule", { value: true });
1709__export(__webpack_require__(63));
1710__export(__webpack_require__(31));
1711
1712
1713/***/ }),
1714/* 31 */
1715/***/ (function(module, exports, __webpack_require__) {
1716
1717"use strict";
1718
1719Object.defineProperty(exports, "__esModule", { value: true });
1720var ActionType;
1721(function (ActionType) {
1722 ActionType["START"] = "APP::LOADING::START";
1723 ActionType["STOP"] = "APP::LOADING::STOP";
1724})(ActionType = exports.ActionType || (exports.ActionType = {}));
1725var Action;
1726(function (Action) {
1727 Action["START"] = "START";
1728 Action["STOP"] = "STOP";
1729})(Action = exports.Action || (exports.Action = {}));
1730
1731
1732/***/ }),
1733/* 32 */
1734/***/ (function(module, exports, __webpack_require__) {
1735
1736"use strict";
1737
1738function __export(m) {
1739 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
1740}
1741Object.defineProperty(exports, "__esModule", { value: true });
1742__export(__webpack_require__(64));
1743__export(__webpack_require__(33));
1744
1745
1746/***/ }),
1747/* 33 */
1748/***/ (function(module, exports, __webpack_require__) {
1749
1750"use strict";
1751
1752Object.defineProperty(exports, "__esModule", { value: true });
1753var Action;
1754(function (Action) {
1755 Action["OPEN"] = "OPEN";
1756 Action["CLOSE"] = "CLOSE";
1757 Action["UPDATE"] = "UPDATE";
1758 Action["UPDATE_SIZE"] = "UPDATE_SIZE";
1759})(Action = exports.Action || (exports.Action = {}));
1760/**
1761 * Action types for the Modal group
1762 * @public
1763 */
1764var ActionType;
1765(function (ActionType) {
1766 ActionType["OPEN"] = "APP::MODAL::OPEN";
1767 ActionType["CLOSE"] = "APP::MODAL::CLOSE";
1768 ActionType["UPDATE"] = "APP::MODAL::UPDATE";
1769 ActionType["FOOTER_BUTTON_CLICK"] = "APP::MODAL::FOOTER::BUTTON::CLICK";
1770 ActionType["FOOTER_BUTTON_UPDATE"] = "APP::MODAL::FOOTER::BUTTON::UPDATE";
1771 ActionType["UPDATE_SIZE"] = "APP::MODAL::UPDATE_SIZE";
1772})(ActionType = exports.ActionType || (exports.ActionType = {}));
1773/**
1774 * Options available to the Modal `size` param
1775 * @public
1776 */
1777var Size;
1778(function (Size) {
1779 /** Small modal size */
1780 Size["Small"] = "small";
1781 /** Medium modal size */
1782 Size["Medium"] = "medium";
1783 /** Large modal size (wider than medium) */
1784 Size["Large"] = "large";
1785 /** @deprecated as of 1.6.5 */
1786 Size["Full"] = "full";
1787 /**
1788 * @deprecated as of 1.12.x
1789 * @remarks
1790 * This option has been removed in favour of the `setUpModalAutoSizing` utility.
1791 * See `app-bridge-utils` package for more information
1792 */
1793 Size["Auto"] = "auto";
1794})(Size = exports.Size || (exports.Size = {}));
1795
1796
1797/***/ }),
1798/* 34 */
1799/***/ (function(module, exports, __webpack_require__) {
1800
1801"use strict";
1802
1803Object.defineProperty(exports, "__esModule", { value: true });
1804var ActionType;
1805(function (ActionType) {
1806 ActionType["PUSH"] = "APP::NAVIGATION::HISTORY::PUSH";
1807 ActionType["REPLACE"] = "APP::NAVIGATION::HISTORY::REPLACE";
1808})(ActionType = exports.ActionType || (exports.ActionType = {}));
1809var Action;
1810(function (Action) {
1811 Action["PUSH"] = "PUSH";
1812 Action["REPLACE"] = "REPLACE";
1813})(Action = exports.Action || (exports.Action = {}));
1814
1815
1816/***/ }),
1817/* 35 */
1818/***/ (function(module, exports, __webpack_require__) {
1819
1820"use strict";
1821
1822Object.defineProperty(exports, "__esModule", { value: true });
1823var Action;
1824(function (Action) {
1825 Action["ADMIN_PATH"] = "ADMIN::PATH";
1826 Action["ADMIN_SECTION"] = "ADMIN::SECTION";
1827 Action["REMOTE"] = "REMOTE";
1828 Action["APP"] = "APP";
1829})(Action = exports.Action || (exports.Action = {}));
1830var ActionType;
1831(function (ActionType) {
1832 ActionType["ADMIN_SECTION"] = "APP::NAVIGATION::REDIRECT::ADMIN::SECTION";
1833 ActionType["ADMIN_PATH"] = "APP::NAVIGATION::REDIRECT::ADMIN::PATH";
1834 ActionType["REMOTE"] = "APP::NAVIGATION::REDIRECT::REMOTE";
1835 ActionType["APP"] = "APP::NAVIGATION::REDIRECT::APP";
1836})(ActionType = exports.ActionType || (exports.ActionType = {}));
1837var ResourceType;
1838(function (ResourceType) {
1839 ResourceType["Product"] = "products";
1840 ResourceType["Collection"] = "collections";
1841 ResourceType["Order"] = "orders";
1842 ResourceType["Customer"] = "customers";
1843 ResourceType["Discount"] = "discounts";
1844})(ResourceType = exports.ResourceType || (exports.ResourceType = {}));
1845
1846
1847/***/ }),
1848/* 36 */
1849/***/ (function(module, exports, __webpack_require__) {
1850
1851"use strict";
1852
1853Object.defineProperty(exports, "__esModule", { value: true });
1854var ActionType;
1855(function (ActionType) {
1856 ActionType["APP"] = "APP::PRINT::APP";
1857})(ActionType = exports.ActionType || (exports.ActionType = {}));
1858var Action;
1859(function (Action) {
1860 Action["APP"] = "APP";
1861})(Action = exports.Action || (exports.Action = {}));
1862
1863
1864/***/ }),
1865/* 37 */
1866/***/ (function(module, exports, __webpack_require__) {
1867
1868"use strict";
1869
1870function __export(m) {
1871 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
1872}
1873Object.defineProperty(exports, "__esModule", { value: true });
1874__export(__webpack_require__(69));
1875__export(__webpack_require__(38));
1876
1877
1878/***/ }),
1879/* 38 */
1880/***/ (function(module, exports, __webpack_require__) {
1881
1882"use strict";
1883
1884Object.defineProperty(exports, "__esModule", { value: true });
1885var Action;
1886(function (Action) {
1887 Action["OPEN"] = "OPEN";
1888 Action["SELECT"] = "SELECT";
1889 Action["CLOSE"] = "CLOSE";
1890 Action["UPDATE"] = "UPDATE";
1891 Action["CANCEL"] = "CANCEL";
1892})(Action = exports.Action || (exports.Action = {}));
1893var ActionType;
1894(function (ActionType) {
1895 ActionType["OPEN"] = "APP::RESOURCE_PICKER::OPEN";
1896 ActionType["SELECT"] = "APP::RESOURCE_PICKER::SELECT";
1897 ActionType["CLOSE"] = "APP::RESOURCE_PICKER::CLOSE";
1898 ActionType["UPDATE"] = "APP::RESOURCE_PICKER::UPDATE";
1899 ActionType["CANCEL"] = "APP::RESOURCE_PICKER::CANCEL";
1900})(ActionType = exports.ActionType || (exports.ActionType = {}));
1901var CollectionSortOrder;
1902(function (CollectionSortOrder) {
1903 CollectionSortOrder["Manual"] = "MANUAL";
1904 CollectionSortOrder["BestSelling"] = "BEST_SELLING";
1905 CollectionSortOrder["AlphaAsc"] = "ALPHA_ASC";
1906 CollectionSortOrder["AlphaDesc"] = "ALPHA_DESC";
1907 CollectionSortOrder["PriceDesc"] = "PRICE_DESC";
1908 CollectionSortOrder["PriceAsc"] = "PRICE_ASC";
1909 CollectionSortOrder["CreatedDesc"] = "CREATED_DESC";
1910 CollectionSortOrder["Created"] = "CREATED";
1911})(CollectionSortOrder = exports.CollectionSortOrder || (exports.CollectionSortOrder = {}));
1912var FulfillmentServiceType;
1913(function (FulfillmentServiceType) {
1914 FulfillmentServiceType["GiftCard"] = "GIFT_CARD";
1915 FulfillmentServiceType["Manual"] = "MANUAL";
1916 FulfillmentServiceType["ThirdParty"] = "THIRD_PARTY";
1917})(FulfillmentServiceType = exports.FulfillmentServiceType || (exports.FulfillmentServiceType = {}));
1918var WeightUnit;
1919(function (WeightUnit) {
1920 WeightUnit["Kilograms"] = "KILOGRAMS";
1921 WeightUnit["Grams"] = "GRAMS";
1922 WeightUnit["Pounds"] = "POUNDS";
1923 WeightUnit["Ounces"] = "OUNCES";
1924})(WeightUnit = exports.WeightUnit || (exports.WeightUnit = {}));
1925var ProductVariantInventoryPolicy;
1926(function (ProductVariantInventoryPolicy) {
1927 ProductVariantInventoryPolicy["Deny"] = "DENY";
1928 ProductVariantInventoryPolicy["Continue"] = "CONTINUE";
1929})(ProductVariantInventoryPolicy = exports.ProductVariantInventoryPolicy || (exports.ProductVariantInventoryPolicy = {}));
1930var ProductVariantInventoryManagement;
1931(function (ProductVariantInventoryManagement) {
1932 ProductVariantInventoryManagement["Shopify"] = "SHOPIFY";
1933 ProductVariantInventoryManagement["NotManaged"] = "NOT_MANAGED";
1934 ProductVariantInventoryManagement["FulfillmentService"] = "FULFILLMENT_SERVICE";
1935})(ProductVariantInventoryManagement = exports.ProductVariantInventoryManagement || (exports.ProductVariantInventoryManagement = {}));
1936var ResourceType;
1937(function (ResourceType) {
1938 ResourceType["Product"] = "product";
1939 ResourceType["ProductVariant"] = "variant";
1940 ResourceType["Collection"] = "collection";
1941})(ResourceType = exports.ResourceType || (exports.ResourceType = {}));
1942var ActionVerb;
1943(function (ActionVerb) {
1944 ActionVerb["Add"] = "add";
1945 ActionVerb["Select"] = "select";
1946})(ActionVerb = exports.ActionVerb || (exports.ActionVerb = {}));
1947
1948
1949/***/ }),
1950/* 39 */
1951/***/ (function(module, exports, __webpack_require__) {
1952
1953"use strict";
1954
1955function __export(m) {
1956 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
1957}
1958Object.defineProperty(exports, "__esModule", { value: true });
1959__export(__webpack_require__(70));
1960__export(__webpack_require__(40));
1961
1962
1963/***/ }),
1964/* 40 */
1965/***/ (function(module, exports, __webpack_require__) {
1966
1967"use strict";
1968
1969/**
1970 * Action Types for the Features group
1971 * @public
1972 */
1973Object.defineProperty(exports, "__esModule", { value: true });
1974var ActionType;
1975(function (ActionType) {
1976 ActionType["OPEN_CAMERA"] = "APP::SCANNER::OPEN::CAMERA";
1977 ActionType["OPEN_NFC"] = "APP::SCANNER::OPEN::NFC";
1978 ActionType["CAPTURE"] = "APP::SCANNER::CAPTURE";
1979})(ActionType = exports.ActionType || (exports.ActionType = {}));
1980/**
1981 * Actions available to the Features group
1982 * @public
1983 */
1984var Action;
1985(function (Action) {
1986 Action["OPEN_CAMERA"] = "OPEN::CAMERA";
1987 Action["OPEN_NFC"] = "OPEN::NFC";
1988 Action["CAPTURE"] = "CAPTURE";
1989})(Action = exports.Action || (exports.Action = {}));
1990
1991
1992/***/ }),
1993/* 41 */
1994/***/ (function(module, exports, __webpack_require__) {
1995
1996"use strict";
1997
1998function __export(m) {
1999 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
2000}
2001Object.defineProperty(exports, "__esModule", { value: true });
2002__export(__webpack_require__(72));
2003__export(__webpack_require__(42));
2004
2005
2006/***/ }),
2007/* 42 */
2008/***/ (function(module, exports, __webpack_require__) {
2009
2010"use strict";
2011
2012Object.defineProperty(exports, "__esModule", { value: true });
2013var Action;
2014(function (Action) {
2015 Action["UPDATE"] = "UPDATE";
2016})(Action = exports.Action || (exports.Action = {}));
2017var ActionType;
2018(function (ActionType) {
2019 ActionType["UPDATE"] = "APP::TITLEBAR::UPDATE";
2020 ActionType["BUTTON_CLICK"] = "APP::TITLEBAR::BUTTONS::BUTTON::CLICK";
2021 ActionType["BUTTON_UPDATE"] = "APP::TITLEBAR::BUTTONS::BUTTON::UPDATE";
2022 ActionType["BUTTON_GROUP_UPDATE"] = "APP::TITLEBAR::BUTTONS::BUTTONGROUP::UPDATE";
2023 ActionType["BREADCRUMBS_CLICK"] = "APP::TITLEBAR::BREADCRUMBS::BUTTON::CLICK";
2024 ActionType["BREADCRUMBS_UPDATE"] = "APP::TITLEBAR::BREADCRUMBS::BUTTON::UPDATE";
2025})(ActionType = exports.ActionType || (exports.ActionType = {}));
2026
2027
2028/***/ }),
2029/* 43 */
2030/***/ (function(module, exports, __webpack_require__) {
2031
2032"use strict";
2033
2034var __extends = (this && this.__extends) || (function () {
2035 var extendStatics = function (d, b) {
2036 extendStatics = Object.setPrototypeOf ||
2037 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
2038 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
2039 return extendStatics(d, b);
2040 };
2041 return function (d, b) {
2042 extendStatics(d, b);
2043 function __() { this.constructor = d; }
2044 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
2045 };
2046})();
2047var __assign = (this && this.__assign) || function () {
2048 __assign = Object.assign || function(t) {
2049 for (var s, i = 1, n = arguments.length; i < n; i++) {
2050 s = arguments[i];
2051 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
2052 t[p] = s[p];
2053 }
2054 return t;
2055 };
2056 return __assign.apply(this, arguments);
2057};
2058Object.defineProperty(exports, "__esModule", { value: true });
2059var helper_1 = __webpack_require__(0);
2060var types_1 = __webpack_require__(1);
2061/**
2062 * ContextualSaveBar action enum
2063 */
2064var Action;
2065(function (Action) {
2066 Action["DISCARD"] = "DISCARD";
2067 Action["SAVE"] = "SAVE";
2068 Action["SHOW"] = "SHOW";
2069 Action["HIDE"] = "HIDE";
2070 Action["UPDATE"] = "UPDATE";
2071})(Action = exports.Action || (exports.Action = {}));
2072/**
2073 * ContextualSaveBar action type enum
2074 * @remarks includes the action prefix and group
2075 *
2076 */
2077var ActionType;
2078(function (ActionType) {
2079 ActionType["DISCARD"] = "APP::CONTEXTUAL_SAVE_BAR::DISCARD";
2080 ActionType["SAVE"] = "APP::CONTEXTUAL_SAVE_BAR::SAVE";
2081 ActionType["SHOW"] = "APP::CONTEXTUAL_SAVE_BAR::SHOW";
2082 ActionType["HIDE"] = "APP::CONTEXTUAL_SAVE_BAR::HIDE";
2083 ActionType["UPDATE"] = "APP::CONTEXTUAL_SAVE_BAR::UPDATE";
2084})(ActionType = exports.ActionType || (exports.ActionType = {}));
2085function createContextBarAction(action, payload) {
2086 return helper_1.actionWrapper({
2087 group: types_1.Group.ContextualSaveBar,
2088 type: ActionType[action],
2089 payload: payload,
2090 });
2091}
2092function show(payload) {
2093 return createContextBarAction(Action.SHOW, payload);
2094}
2095exports.show = show;
2096function hide(payload) {
2097 return createContextBarAction(Action.HIDE, payload);
2098}
2099exports.hide = hide;
2100function save(payload) {
2101 return createContextBarAction(Action.SAVE, payload);
2102}
2103exports.save = save;
2104function discard(payload) {
2105 return createContextBarAction(Action.DISCARD, payload);
2106}
2107exports.discard = discard;
2108/**
2109 * ContextualSaveBar action set
2110 */
2111var ContextualSaveBar = /** @class */ (function (_super) {
2112 __extends(ContextualSaveBar, _super);
2113 /**
2114 * Returns a new instance of a ContextualSaveBar action set
2115 * @param app the client application
2116 */
2117 function ContextualSaveBar(app, options) {
2118 if (options === void 0) { options = {}; }
2119 var _this = _super.call(this, app, types_1.Group.ContextualSaveBar, types_1.Group.ContextualSaveBar) || this;
2120 _this.options = options;
2121 _this.set(options, false);
2122 return _this;
2123 }
2124 Object.defineProperty(ContextualSaveBar.prototype, "payload", {
2125 /**
2126 * Returns the action set payload
2127 */
2128 get: function () {
2129 return __assign({ id: this.id }, this.options);
2130 },
2131 enumerable: true,
2132 configurable: true
2133 });
2134 ContextualSaveBar.prototype.set = function (options, shouldUpdate) {
2135 if (shouldUpdate === void 0) { shouldUpdate = true; }
2136 var mergedOptions = helper_1.getMergedProps(this.options, options);
2137 this.options = mergedOptions;
2138 if (shouldUpdate) {
2139 this.dispatch(Action.UPDATE);
2140 }
2141 return this;
2142 };
2143 /**
2144 * Dispatches a given action with the action set payload
2145 * @param action the action enum
2146 * @returns the action set instance
2147 */
2148 ContextualSaveBar.prototype.dispatch = function (action) {
2149 this.app.dispatch(createContextBarAction(action, this.payload));
2150 return this;
2151 };
2152 return ContextualSaveBar;
2153}(helper_1.ActionSet));
2154exports.ContextualSaveBar = ContextualSaveBar;
2155/**
2156 * Returns a new instance of a ContextualSaveBar action set
2157 * @param app the client application
2158 *
2159 */
2160function create(app, options) {
2161 return new ContextualSaveBar(app, options);
2162}
2163exports.create = create;
2164
2165
2166/***/ }),
2167/* 44 */
2168/***/ (function(module, exports, __webpack_require__) {
2169
2170"use strict";
2171
2172var __assign = (this && this.__assign) || function () {
2173 __assign = Object.assign || function(t) {
2174 for (var s, i = 1, n = arguments.length; i < n; i++) {
2175 s = arguments[i];
2176 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
2177 t[p] = s[p];
2178 }
2179 return t;
2180 };
2181 return __assign.apply(this, arguments);
2182};
2183var __importDefault = (this && this.__importDefault) || function (mod) {
2184 return (mod && mod.__esModule) ? mod : { "default": mod };
2185};
2186Object.defineProperty(exports, "__esModule", { value: true });
2187var helper_1 = __webpack_require__(0);
2188var Error_1 = __webpack_require__(5);
2189var Print_1 = __webpack_require__(18);
2190var MessageTransport_1 = __webpack_require__(13);
2191var collection_1 = __webpack_require__(9);
2192var shared_1 = __webpack_require__(45);
2193var env_1 = __webpack_require__(23);
2194var print_1 = __webpack_require__(82);
2195var redirect_1 = __webpack_require__(20);
2196var types_1 = __webpack_require__(8);
2197var Hooks_1 = __importDefault(__webpack_require__(83));
2198exports.WINDOW_UNDEFINED_MESSAGE = 'window is not defined. Running an app outside a browser is not supported';
2199function redirectHandler(hostFrame, config) {
2200 var apiKey = config.apiKey, shopOrigin = config.shopOrigin, _a = config.forceRedirect, forceRedirect = _a === void 0 ? !env_1.isDevelopmentClient : _a;
2201 var location = redirect_1.getLocation();
2202 if (env_1.isFrameless ||
2203 !location ||
2204 !apiKey ||
2205 !shopOrigin ||
2206 !forceRedirect ||
2207 !redirect_1.shouldRedirect(hostFrame)) {
2208 return;
2209 }
2210 var url = "https://" + shopOrigin + "/admin/apps/" + apiKey + location.pathname + (location.search ||
2211 '');
2212 redirect_1.redirect(url);
2213}
2214function appSetUp(app) {
2215 app.subscribe(Print_1.ActionType.APP, print_1.handleAppPrint);
2216}
2217/**
2218 * Extracts the query parameters from the current URL.
2219 * @deprecated This function has been deprecated.
2220 * @public
2221 */
2222function getUrlParams() {
2223 var params = {};
2224 var location = redirect_1.getLocation();
2225 if (!location) {
2226 return params;
2227 }
2228 var hashes = location.search.slice(location.search.indexOf('?') + 1).split('&');
2229 return hashes.reduce(function (acc, hash) {
2230 var _a;
2231 var _b = hash.split('='), key = _b[0], val = _b[1];
2232 return __assign({}, acc, (_a = {}, _a[decodeURIComponent(key)] = decodeURIComponent(val), _a));
2233 }, params);
2234}
2235exports.getUrlParams = getUrlParams;
2236/**
2237 * Extracts the `shop` query parameter from the current URL.
2238 * @deprecated This function has been deprecated, see {@link https://help.shopify.com/api/embedded-apps/shop-origin}
2239 * @public
2240 */
2241function getShopOrigin() {
2242 var params = getUrlParams();
2243 return params.shop;
2244}
2245exports.getShopOrigin = getShopOrigin;
2246/**
2247 * @internal
2248 */
2249exports.createClientApp = function (transport, middlewares) {
2250 if (middlewares === void 0) { middlewares = []; }
2251 var getStateListeners = [];
2252 var listeners = [];
2253 var actionListeners = {};
2254 var invokeCallbacks = function (type, payload) {
2255 var hasCallback = false;
2256 if (actionListeners.hasOwnProperty(type)) {
2257 for (var _i = 0, _a = actionListeners[type]; _i < _a.length; _i++) {
2258 var listener = _a[_i];
2259 var id = listener.id, callback = listener.callback;
2260 var matchId = payload && payload.id === id;
2261 if (matchId || !id) {
2262 callback(payload);
2263 hasCallback = true;
2264 }
2265 }
2266 }
2267 if (hasCallback) {
2268 return;
2269 }
2270 // Throw an error if there are no subscriptions to this error
2271 var errorType = helper_1.findMatchInEnum(Error_1.ActionType, type);
2272 if (errorType) {
2273 Error_1.throwError(errorType, payload);
2274 }
2275 };
2276 var handler = function (event) {
2277 var action = event.data;
2278 switch (action.type) {
2279 case 'getState':
2280 var resolvers = getStateListeners.splice(0);
2281 resolvers.forEach(function (resolver) { return resolver(action.payload); });
2282 break;
2283 case 'dispatch':
2284 var payload_1 = action.payload;
2285 invokeCallbacks(payload_1.type, payload_1.payload);
2286 listeners.forEach(function (listener) { return listener.callback(payload_1); });
2287 break;
2288 default:
2289 // Silently swallow unknown actions
2290 }
2291 };
2292 transport.subscribe(handler);
2293 return function (config) {
2294 if (!config.shopOrigin) {
2295 throw Error_1.fromAction('shopOrigin must be provided', Error_1.AppActionType.INVALID_CONFIG);
2296 }
2297 var protocol = /^https?:\/\//;
2298 if (protocol.test(config.shopOrigin)) {
2299 var message = "shopOrigin should not include protocol, please use: " + config.shopOrigin.replace(protocol, '');
2300 throw Error_1.fromAction(message, Error_1.AppActionType.INVALID_CONFIG);
2301 }
2302 if (!config.apiKey) {
2303 throw Error_1.fromAction('apiKey must be provided', Error_1.AppActionType.INVALID_CONFIG);
2304 }
2305 var dispatcher = createDispatcher(transport, config);
2306 // It is possible to initialize an app multiple times
2307 // Therefore we need to clear subscriptions to be safe
2308 dispatcher(types_1.MessageType.Unsubscribe);
2309 function dispatch(action) {
2310 dispatcher(types_1.MessageType.Dispatch, action);
2311 return action;
2312 }
2313 redirectHandler(transport.hostFrame, config);
2314 var hooks = new Hooks_1.default();
2315 var app = {
2316 localOrigin: transport.localOrigin,
2317 hooks: hooks,
2318 dispatch: function (action) {
2319 if (!app.hooks) {
2320 return dispatch(action);
2321 }
2322 return app.hooks.run(types_1.LifecycleHook.DispatchAction, dispatch, app, action);
2323 },
2324 featuresAvailable: function (features) {
2325 return app.getState('features').then(function (state) {
2326 if (features) {
2327 Object.keys(state).forEach(function (feature) {
2328 if (!features.includes(feature)) {
2329 delete state[feature];
2330 }
2331 });
2332 }
2333 return state;
2334 });
2335 },
2336 getState: function (query) {
2337 return new Promise(function (resolve) {
2338 getStateListeners.push(resolve);
2339 dispatcher(types_1.MessageType.GetState);
2340 }).then(function (state) {
2341 if (query) {
2342 return query.split('.').reduce(function (value, key) {
2343 if (typeof state !== 'object' || Array.isArray(state)) {
2344 return undefined;
2345 }
2346 value = state[key];
2347 state = value;
2348 return value;
2349 }, undefined);
2350 }
2351 return state;
2352 });
2353 },
2354 subscribe: function () {
2355 if (arguments.length < 2) {
2356 return collection_1.addAndRemoveFromCollection(listeners, { callback: arguments[0] });
2357 }
2358 var type = arguments[0];
2359 var callback = arguments[1];
2360 var id = arguments[2];
2361 var actionCallback = { callback: callback, id: id };
2362 var payload = { type: type, id: id };
2363 if (!actionListeners.hasOwnProperty(type)) {
2364 actionListeners[type] = [];
2365 }
2366 dispatcher(types_1.MessageType.Subscribe, payload);
2367 return collection_1.addAndRemoveFromCollection(actionListeners[type], actionCallback, function () {
2368 return dispatcher(types_1.MessageType.Unsubscribe, payload);
2369 });
2370 },
2371 error: function (listener, id) {
2372 var _this = this;
2373 var unsubscribeCb = [];
2374 helper_1.forEachInEnum(Error_1.ActionType, function (eventNameSpace) {
2375 // tslint:disable-next-line:no-invalid-this
2376 unsubscribeCb.push(_this.subscribe(eventNameSpace, listener, id));
2377 });
2378 return function () {
2379 unsubscribeCb.forEach(function (unsubscribe) { return unsubscribe(); });
2380 };
2381 },
2382 };
2383 for (var _i = 0, middlewares_1 = middlewares; _i < middlewares_1.length; _i++) {
2384 var middleware = middlewares_1[_i];
2385 middleware(hooks, app);
2386 }
2387 appSetUp(app);
2388 return app;
2389 };
2390};
2391/**
2392 * @public
2393 */
2394function createAppWrapper(frame, localOrigin, middleware) {
2395 if (middleware === void 0) { middleware = []; }
2396 if (!frame) {
2397 throw Error_1.fromAction(exports.WINDOW_UNDEFINED_MESSAGE, Error_1.AppActionType.WINDOW_UNDEFINED);
2398 }
2399 var location = redirect_1.getLocation();
2400 var origin = localOrigin || (location && location.origin);
2401 if (!origin) {
2402 throw Error_1.fromAction('local origin cannot be blank', Error_1.AppActionType.MISSING_LOCAL_ORIGIN);
2403 }
2404 var transport = MessageTransport_1.fromWindow(frame, origin);
2405 var appCreator = exports.createClientApp(transport, middleware);
2406 return appCreator;
2407}
2408exports.createAppWrapper = createAppWrapper;
2409/**
2410 * Creates your application instance.
2411 * @param config - Both `apiKey` and `shopOrigin` are required.
2412 * @remarks
2413 * You will need to store `shopOrigin` during the authentication process and then retrieve it for the code to work properly. To learn more about this process, see {@link https://help.shopify.com/api/embedded-apps/shop-origin | Getting and storing the shop origin}.
2414 * @public
2415 */
2416function createApp(config) {
2417 var currentWindow = redirect_1.getWindow();
2418 if (!currentWindow) {
2419 return shared_1.serverAppBridge;
2420 }
2421 return createAppWrapper(currentWindow.top)(config);
2422}
2423exports.createApp = createApp;
2424function createDispatcher(transport, config) {
2425 return function (type, payload) {
2426 transport.dispatch({
2427 payload: payload,
2428 source: config,
2429 type: type,
2430 });
2431 };
2432}
2433/**
2434 * {@inheritdocs createApp}
2435 * @public
2436 */
2437exports.default = createApp;
2438
2439
2440/***/ }),
2441/* 45 */
2442/***/ (function(module, exports, __webpack_require__) {
2443
2444"use strict";
2445
2446Object.defineProperty(exports, "__esModule", { value: true });
2447var Error_1 = __webpack_require__(5);
2448var noop = function () { };
2449/**
2450 * @internal
2451 */
2452exports.serverAppBridge = {
2453 dispatch: function () {
2454 return {};
2455 },
2456 error: function () {
2457 return noop;
2458 },
2459 featuresAvailable: function () {
2460 return Promise.reject(Error_1.fromAction('Feature detection is only available on the client side.', Error_1.AppActionType.WINDOW_UNDEFINED));
2461 },
2462 getState: function () {
2463 return Promise.reject(Error_1.fromAction('State is only available on the client side.', Error_1.AppActionType.WINDOW_UNDEFINED));
2464 },
2465 localOrigin: '',
2466 subscribe: function () {
2467 return noop;
2468 },
2469};
2470
2471
2472/***/ }),
2473/* 46 */
2474/***/ (function(module, exports, __webpack_require__) {
2475
2476"use strict";
2477
2478Object.defineProperty(exports, "__esModule", { value: true });
2479var ButtonGroup_1 = __webpack_require__(7);
2480exports.ActionType = ButtonGroup_1.ActionType;
2481var button_1 = __webpack_require__(12);
2482var type_validate_1 = __webpack_require__(2);
2483var utils_1 = __webpack_require__(3);
2484exports.buttonGroupSchema = type_validate_1.composeSchemas(button_1.buttonSchema, type_validate_1.matchesObject({
2485 buttons: type_validate_1.matchesArray(type_validate_1.makeOptional(button_1.buttonSchemaWithId)),
2486}));
2487function validateProps(props) {
2488 return type_validate_1.validate(props, exports.buttonGroupSchema);
2489}
2490exports.validateProps = validateProps;
2491function validateAction(action) {
2492 var validator = utils_1.createActionValidator(ButtonGroup_1.ActionType, exports.buttonGroupSchema, true, true);
2493 return type_validate_1.validate(action, validator);
2494}
2495exports.validateAction = validateAction;
2496
2497
2498/***/ }),
2499/* 47 */
2500/***/ (function(module, exports, __webpack_require__) {
2501
2502"use strict";
2503
2504Object.defineProperty(exports, "__esModule", { value: true });
2505var actions_1 = __webpack_require__(6);
2506var Redirect_1 = __webpack_require__(17);
2507var type_validate_1 = __webpack_require__(2);
2508var utils_1 = __webpack_require__(3);
2509var AppLink_1 = __webpack_require__(11);
2510exports.ActionType = AppLink_1.ActionType;
2511var allowedRedirectTypes;
2512(function (allowedRedirectTypes) {
2513 allowedRedirectTypes[allowedRedirectTypes["APP"] = Redirect_1.Action.APP] = "APP";
2514})(allowedRedirectTypes || (allowedRedirectTypes = {}));
2515exports.linkPropsSchema = type_validate_1.matchesObject({
2516 label: type_validate_1.matchesString(),
2517 destination: utils_1.relativeUrlSchema,
2518 redirectType: type_validate_1.matchesEnum(allowedRedirectTypes),
2519});
2520exports.linkActionSchema = type_validate_1.matchesObject({
2521 label: type_validate_1.matchesString(),
2522 destination: utils_1.relativePathSchema,
2523 redirectType: type_validate_1.matchesEnum(allowedRedirectTypes),
2524});
2525function validateProps(props) {
2526 return type_validate_1.validate(props, exports.linkPropsSchema);
2527}
2528exports.validateProps = validateProps;
2529function validateAction(action) {
2530 var actionType = actions_1.AppLink.ActionType;
2531 var schema;
2532 switch (action.type) {
2533 case actions_1.AppLink.ActionType.UPDATE:
2534 actionType = actions_1.AppLink.ActionType;
2535 schema = exports.linkActionSchema;
2536 }
2537 return type_validate_1.validate(action, utils_1.createActionValidator(actionType, schema, true, true));
2538}
2539exports.validateAction = validateAction;
2540
2541
2542/***/ }),
2543/* 48 */
2544/***/ (function(module, exports, __webpack_require__) {
2545
2546"use strict";
2547
2548function __export(m) {
2549 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
2550}
2551var __importStar = (this && this.__importStar) || function (mod) {
2552 if (mod && mod.__esModule) return mod;
2553 var result = {};
2554 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
2555 result["default"] = mod;
2556 return result;
2557};
2558var __importDefault = (this && this.__importDefault) || function (mod) {
2559 return (mod && mod.__esModule) ? mod : { "default": mod };
2560};
2561Object.defineProperty(exports, "__esModule", { value: true });
2562var actions = __importStar(__webpack_require__(6));
2563exports.actions = actions;
2564var validate_1 = __importDefault(__webpack_require__(80));
2565var utils_1 = __webpack_require__(3);
2566var redirect_1 = __webpack_require__(20);
2567var client_1 = __webpack_require__(19);
2568var shared_1 = __webpack_require__(45);
2569/**
2570 * Creates your application instance with validator middleware.
2571 * @param config - Both `apiKey` and `shopOrigin` are required.
2572 * @remarks
2573 * Please note that `forceRedirect` only works in production environment (`shopname.myshopify.com/admin`).
2574 * You will need to store `shopOrigin` during the authentication process and then retrieve it for the code
2575 * to work properly. To learn more about this process, see
2576 * {@link https://help.shopify.com/api/embedded-apps/shop-origin | Getting and storing the shop origin}.
2577 * @public
2578 */
2579function createApp(config) {
2580 var currentWindow = redirect_1.getWindow();
2581 if (!currentWindow) {
2582 return shared_1.serverAppBridge;
2583 }
2584 utils_1.mixedAppClientCheck(currentWindow);
2585 return client_1.createAppWrapper(currentWindow.top, currentWindow.location.origin, [validate_1.default])(config);
2586}
2587exports.createApp = createApp;
2588exports.default = createApp;
2589__export(__webpack_require__(13));
2590__export(__webpack_require__(19));
2591
2592
2593/***/ }),
2594/* 49 */
2595/***/ (function(module, exports, __webpack_require__) {
2596
2597"use strict";
2598
2599Object.defineProperty(exports, "__esModule", { value: true });
2600var helper_1 = __webpack_require__(0);
2601var types_1 = __webpack_require__(1);
2602var ActionType;
2603(function (ActionType) {
2604 ActionType["REQUEST"] = "APP::AUTH_CODE::REQUEST";
2605 ActionType["RESPOND"] = "APP::AUTH_CODE::RESPOND";
2606})(ActionType = exports.ActionType || (exports.ActionType = {}));
2607var Action;
2608(function (Action) {
2609 Action["REQUEST"] = "REQUEST";
2610 Action["RESPOND"] = "RESPOND";
2611})(Action = exports.Action || (exports.Action = {}));
2612function request() {
2613 return helper_1.actionWrapper({
2614 group: types_1.Group.AuthCode,
2615 type: ActionType.REQUEST,
2616 });
2617}
2618exports.request = request;
2619function respond(payload) {
2620 return helper_1.actionWrapper({
2621 payload: payload,
2622 group: types_1.Group.AuthCode,
2623 type: ActionType.RESPOND,
2624 });
2625}
2626exports.respond = respond;
2627
2628
2629/***/ }),
2630/* 50 */
2631/***/ (function(module, exports, __webpack_require__) {
2632
2633"use strict";
2634
2635Object.defineProperty(exports, "__esModule", { value: true });
2636var helper_1 = __webpack_require__(0);
2637var types_1 = __webpack_require__(1);
2638var types_2 = __webpack_require__(21);
2639function errorActionWrapperWithId(type, action, message) {
2640 var castPayload = action.payload;
2641 return helper_1.actionWrapper({
2642 type: type,
2643 group: types_1.Group.Error,
2644 payload: {
2645 action: action,
2646 message: message,
2647 type: type,
2648 id: castPayload && castPayload.id ? castPayload.id : undefined,
2649 },
2650 });
2651}
2652var Message;
2653(function (Message) {
2654 Message["MISSING_PAYLOAD"] = "Missing payload";
2655 Message["INVALID_PAYLOAD_ID"] = "Id in payload is missing or invalid";
2656})(Message = exports.Message || (exports.Message = {}));
2657function invalidPayload(action, message) {
2658 return errorActionWrapperWithId(types_2.ActionType.INVALID_PAYLOAD, action, message || "The action's payload is missing required properties or has invalid properties");
2659}
2660exports.invalidPayload = invalidPayload;
2661function invalidActionType(action, message) {
2662 return helper_1.actionWrapper({
2663 group: types_1.Group.Error,
2664 payload: {
2665 action: action,
2666 message: message || 'The action type is invalid or unsupported',
2667 type: types_2.ActionType.INVALID_ACTION_TYPE,
2668 },
2669 type: types_2.ActionType.INVALID_ACTION_TYPE,
2670 });
2671}
2672exports.invalidActionType = invalidActionType;
2673function invalidAction(action, message) {
2674 return helper_1.actionWrapper({
2675 group: types_1.Group.Error,
2676 payload: {
2677 action: action,
2678 message: message || "The action's has missing/invalid values for `group`, `type` or `version`",
2679 type: types_2.ActionType.INVALID_ACTION,
2680 },
2681 type: types_2.ActionType.INVALID_ACTION,
2682 });
2683}
2684exports.invalidAction = invalidAction;
2685function unexpectedAction(action, message) {
2686 return helper_1.actionWrapper({
2687 group: types_1.Group.Error,
2688 payload: {
2689 action: action,
2690 message: message || 'Action cannot be called at this time',
2691 type: types_2.ActionType.UNEXPECTED_ACTION,
2692 },
2693 type: types_2.ActionType.UNEXPECTED_ACTION,
2694 });
2695}
2696exports.unexpectedAction = unexpectedAction;
2697function unsupportedOperationAction(action, message) {
2698 return errorActionWrapperWithId(types_2.ActionType.UNSUPPORTED_OPERATION, action, message || 'The action type is unsupported');
2699}
2700exports.unsupportedOperationAction = unsupportedOperationAction;
2701function persistenceAction(action, message) {
2702 return errorActionWrapperWithId(types_2.ActionType.PERSISTENCE, action, message || 'Action cannot be persisted on server');
2703}
2704exports.persistenceAction = persistenceAction;
2705function networkAction(action, message) {
2706 return errorActionWrapperWithId(types_2.ActionType.NETWORK, action, message || 'Network error');
2707}
2708exports.networkAction = networkAction;
2709function permissionAction(action, message) {
2710 return errorActionWrapperWithId(types_2.ActionType.PERMISSION, action, message || 'Action is not permitted');
2711}
2712exports.permissionAction = permissionAction;
2713function isErrorEventName(eventName) {
2714 var match = helper_1.findMatchInEnum(types_2.Action, eventName);
2715 return typeof match === 'string';
2716}
2717exports.isErrorEventName = isErrorEventName;
2718var AppBridgeError = /** @class */ (function () {
2719 function AppBridgeError(message) {
2720 this.name = 'AppBridgeError';
2721 this.message = message;
2722 if (typeof Error.captureStackTrace === 'function') {
2723 Error.captureStackTrace(this, this.constructor);
2724 }
2725 else {
2726 this.stack = new Error(this.message).stack;
2727 }
2728 }
2729 return AppBridgeError;
2730}());
2731exports.AppBridgeError = AppBridgeError;
2732AppBridgeError.prototype = Object.create(Error.prototype);
2733function fromAction(message, type, action) {
2734 var errorMessage = message ? type + ": " + message : type;
2735 var error = new AppBridgeError(errorMessage);
2736 error.action = action;
2737 error.type = type;
2738 return error;
2739}
2740exports.fromAction = fromAction;
2741function throwError() {
2742 var type = arguments[0];
2743 var message;
2744 var action;
2745 if (typeof arguments[1] === 'string') {
2746 message = arguments[1];
2747 }
2748 else {
2749 action = arguments[1];
2750 message = arguments[2] || '';
2751 }
2752 throw fromAction(message, type, action);
2753}
2754exports.throwError = throwError;
2755
2756
2757/***/ }),
2758/* 51 */
2759/***/ (function(module, exports) {
2760
2761// shim for using process in browser
2762var process = module.exports = {};
2763
2764// cached from whatever global is present so that test runners that stub it
2765// don't break things. But we need to wrap it in a try catch in case it is
2766// wrapped in strict mode code which doesn't define any globals. It's inside a
2767// function because try/catches deoptimize in certain engines.
2768
2769var cachedSetTimeout;
2770var cachedClearTimeout;
2771
2772function defaultSetTimout() {
2773 throw new Error('setTimeout has not been defined');
2774}
2775function defaultClearTimeout () {
2776 throw new Error('clearTimeout has not been defined');
2777}
2778(function () {
2779 try {
2780 if (typeof setTimeout === 'function') {
2781 cachedSetTimeout = setTimeout;
2782 } else {
2783 cachedSetTimeout = defaultSetTimout;
2784 }
2785 } catch (e) {
2786 cachedSetTimeout = defaultSetTimout;
2787 }
2788 try {
2789 if (typeof clearTimeout === 'function') {
2790 cachedClearTimeout = clearTimeout;
2791 } else {
2792 cachedClearTimeout = defaultClearTimeout;
2793 }
2794 } catch (e) {
2795 cachedClearTimeout = defaultClearTimeout;
2796 }
2797} ())
2798function runTimeout(fun) {
2799 if (cachedSetTimeout === setTimeout) {
2800 //normal enviroments in sane situations
2801 return setTimeout(fun, 0);
2802 }
2803 // if setTimeout wasn't available but was latter defined
2804 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
2805 cachedSetTimeout = setTimeout;
2806 return setTimeout(fun, 0);
2807 }
2808 try {
2809 // when when somebody has screwed with setTimeout but no I.E. maddness
2810 return cachedSetTimeout(fun, 0);
2811 } catch(e){
2812 try {
2813 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
2814 return cachedSetTimeout.call(null, fun, 0);
2815 } catch(e){
2816 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
2817 return cachedSetTimeout.call(this, fun, 0);
2818 }
2819 }
2820
2821
2822}
2823function runClearTimeout(marker) {
2824 if (cachedClearTimeout === clearTimeout) {
2825 //normal enviroments in sane situations
2826 return clearTimeout(marker);
2827 }
2828 // if clearTimeout wasn't available but was latter defined
2829 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
2830 cachedClearTimeout = clearTimeout;
2831 return clearTimeout(marker);
2832 }
2833 try {
2834 // when when somebody has screwed with setTimeout but no I.E. maddness
2835 return cachedClearTimeout(marker);
2836 } catch (e){
2837 try {
2838 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
2839 return cachedClearTimeout.call(null, marker);
2840 } catch (e){
2841 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
2842 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
2843 return cachedClearTimeout.call(this, marker);
2844 }
2845 }
2846
2847
2848
2849}
2850var queue = [];
2851var draining = false;
2852var currentQueue;
2853var queueIndex = -1;
2854
2855function cleanUpNextTick() {
2856 if (!draining || !currentQueue) {
2857 return;
2858 }
2859 draining = false;
2860 if (currentQueue.length) {
2861 queue = currentQueue.concat(queue);
2862 } else {
2863 queueIndex = -1;
2864 }
2865 if (queue.length) {
2866 drainQueue();
2867 }
2868}
2869
2870function drainQueue() {
2871 if (draining) {
2872 return;
2873 }
2874 var timeout = runTimeout(cleanUpNextTick);
2875 draining = true;
2876
2877 var len = queue.length;
2878 while(len) {
2879 currentQueue = queue;
2880 queue = [];
2881 while (++queueIndex < len) {
2882 if (currentQueue) {
2883 currentQueue[queueIndex].run();
2884 }
2885 }
2886 queueIndex = -1;
2887 len = queue.length;
2888 }
2889 currentQueue = null;
2890 draining = false;
2891 runClearTimeout(timeout);
2892}
2893
2894process.nextTick = function (fun) {
2895 var args = new Array(arguments.length - 1);
2896 if (arguments.length > 1) {
2897 for (var i = 1; i < arguments.length; i++) {
2898 args[i - 1] = arguments[i];
2899 }
2900 }
2901 queue.push(new Item(fun, args));
2902 if (queue.length === 1 && !draining) {
2903 runTimeout(drainQueue);
2904 }
2905};
2906
2907// v8 likes predictible objects
2908function Item(fun, array) {
2909 this.fun = fun;
2910 this.array = array;
2911}
2912Item.prototype.run = function () {
2913 this.fun.apply(null, this.array);
2914};
2915process.title = 'browser';
2916process.browser = true;
2917process.env = {};
2918process.argv = [];
2919process.version = ''; // empty string to avoid regexp issues
2920process.versions = {};
2921
2922function noop() {}
2923
2924process.on = noop;
2925process.addListener = noop;
2926process.once = noop;
2927process.off = noop;
2928process.removeListener = noop;
2929process.removeAllListeners = noop;
2930process.emit = noop;
2931process.prependListener = noop;
2932process.prependOnceListener = noop;
2933
2934process.listeners = function (name) { return [] }
2935
2936process.binding = function (name) {
2937 throw new Error('process.binding is not supported');
2938};
2939
2940process.cwd = function () { return '/' };
2941process.chdir = function (dir) {
2942 throw new Error('process.chdir is not supported');
2943};
2944process.umask = function() { return 0; };
2945
2946
2947/***/ }),
2948/* 52 */
2949/***/ (function(module, exports, __webpack_require__) {
2950
2951"use strict";
2952
2953Object.defineProperty(exports, "__esModule", { value: true });
2954/**
2955 * Returns a deeply merged object with properties from the 2 provided objects
2956 * @remarks - Only deeply merge objects. The second argument overrides the
2957 * first if it is provided as `null`, `undefined` or an array.
2958 * @public
2959 * */
2960function mergeProps(obj, newObj) {
2961 if (newObj == undefined) {
2962 return newObj;
2963 }
2964 // If setting to a different prototype or a non-object or non-array, don't merge any props
2965 if (typeof obj === 'undefined' ||
2966 !Object.getPrototypeOf(obj).isPrototypeOf(newObj) ||
2967 (newObj.constructor.name !== 'Object' && newObj.constructor.name !== 'Array')) {
2968 return newObj;
2969 }
2970 var clone = {};
2971 Object.keys(newObj).forEach(function (key) {
2972 var exists = obj.hasOwnProperty(key);
2973 if (!exists) {
2974 clone[key] = newObj[key];
2975 }
2976 else {
2977 if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
2978 clone[key] = mergeProps(obj[key], newObj[key]);
2979 }
2980 else {
2981 clone[key] = newObj[key];
2982 }
2983 }
2984 });
2985 // Copy old props that are not present in new object only if this is a simple object
2986 Object.keys(obj).forEach(function (key) {
2987 var exists = newObj.hasOwnProperty(key);
2988 if (!exists) {
2989 clone[key] = obj[key];
2990 }
2991 });
2992 // Set prototype of cloned object to match original
2993 Object.setPrototypeOf(clone, Object.getPrototypeOf(obj));
2994 return clone;
2995}
2996exports.default = mergeProps;
2997
2998
2999/***/ }),
3000/* 53 */
3001/***/ (function(module, exports, __webpack_require__) {
3002
3003"use strict";
3004
3005Object.defineProperty(exports, "__esModule", { value: true });
3006/**
3007 * Convert a number or array of integers to a string of padded hex octets.
3008 */
3009function asHex(value) {
3010 return Array.from(value)
3011 .map(function (i) { return ("00" + i.toString(16)).slice(-2); })
3012 .join('');
3013}
3014/**
3015 * Attempt to securely generate random bytes/
3016 */
3017function getRandomBytes(size) {
3018 // SPRNG
3019 if (typeof Uint8Array === 'function' && typeof window === 'object' && window.crypto) {
3020 var buffer = new Uint8Array(size);
3021 var randomValues = window.crypto.getRandomValues(buffer);
3022 if (randomValues) {
3023 return randomValues;
3024 }
3025 }
3026 // Insecure random
3027 return Array.from(new Array(size), function () { return (Math.random() * 255) | 0; });
3028}
3029/**
3030 * Generate a RFC4122-compliant v4 UUID.
3031 *
3032 * @see http://www.ietf.org/rfc/rfc4122.txt
3033 */
3034function generateUuid() {
3035 var version = 64;
3036 var clockSeqHiAndReserved = getRandomBytes(1);
3037 var timeHiAndVersion = getRandomBytes(2);
3038 clockSeqHiAndReserved[0] &= 63 | 128;
3039 // tslint:disable-next-line:binary-expression-operand-order
3040 timeHiAndVersion[0] &= 15 | version;
3041 return [
3042 asHex(getRandomBytes(4)),
3043 '-',
3044 asHex(getRandomBytes(2)),
3045 '-',
3046 asHex(timeHiAndVersion),
3047 '-',
3048 asHex(clockSeqHiAndReserved),
3049 asHex(getRandomBytes(1)),
3050 '-',
3051 asHex(getRandomBytes(6)),
3052 ].join('');
3053}
3054exports.generateUuid = generateUuid;
3055// Default
3056exports.default = generateUuid;
3057
3058
3059/***/ }),
3060/* 54 */
3061/***/ (function(module) {
3062
3063module.exports = JSON.parse("{\"name\":\"@shopify/app-bridge\",\"version\":\"1.24.0\",\"types\":\"index.d.ts\",\"main\":\"index.js\",\"unpkg\":\"umd/index.js\",\"jsdelivr\":\"umd/index.js\",\"files\":[\"/actions/\",\"/client/\",\"/umd/\",\"/util/\",\"/validate/\",\"/MessageTransport.d.ts\",\"/MessageTransport.js\",\"/development.d.ts\",\"/development.js\",\"/index.d.ts\",\"/index.js\",\"/production.d.ts\",\"/production.js\"],\"private\":false,\"publishConfig\":{\"access\":\"public\",\"@shopify:registry\":\"https://registry.npmjs.org\"},\"repository\":\"git@github.com:Shopify/app-bridge.git\",\"author\":\"Shopify Inc.\",\"license\":\"MIT\",\"scripts\":{\"build\":\"yarn build:tsc && yarn build:umd\",\"build:tsc\":\"NODE_ENV=production tsc\",\"build:umd\":\"NODE_ENV=production webpack -p\",\"check\":\"tsc --pretty --noEmit\",\"clean\":\"cat package.json | node -pe \\\"JSON.parse(require('fs').readFileSync('/dev/stdin').toString()).files.map(f => './'+f).join(' ')\\\" | xargs rm -rf\",\"pack\":\"yarn pack\",\"size\":\"size-limit\"},\"sideEffects\":false,\"size-limit\":[{\"limit\":\"16 KB\",\"path\":\"production.js\"}],\"devDependencies\":{\"@types/node\":\"^10.12.5\",\"typescript\":\"3.2.1\"}}");
3064
3065/***/ }),
3066/* 55 */
3067/***/ (function(module, exports, __webpack_require__) {
3068
3069"use strict";
3070
3071var __extends = (this && this.__extends) || (function () {
3072 var extendStatics = function (d, b) {
3073 extendStatics = Object.setPrototypeOf ||
3074 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3075 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
3076 return extendStatics(d, b);
3077 };
3078 return function (d, b) {
3079 extendStatics(d, b);
3080 function __() { this.constructor = d; }
3081 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3082 };
3083})();
3084var __assign = (this && this.__assign) || function () {
3085 __assign = Object.assign || function(t) {
3086 for (var s, i = 1, n = arguments.length; i < n; i++) {
3087 s = arguments[i];
3088 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
3089 t[p] = s[p];
3090 }
3091 return t;
3092 };
3093 return __assign.apply(this, arguments);
3094};
3095Object.defineProperty(exports, "__esModule", { value: true });
3096var helper_1 = __webpack_require__(0);
3097var types_1 = __webpack_require__(1);
3098var types_2 = __webpack_require__(24);
3099function clickButton(group, component, payload) {
3100 var id = component.id;
3101 var action = helper_1.getEventNameSpace(group, types_2.Action.CLICK, component);
3102 var buttonPayload = {
3103 id: id,
3104 payload: payload,
3105 };
3106 return helper_1.actionWrapper({ type: action, group: group, payload: buttonPayload });
3107}
3108exports.clickButton = clickButton;
3109function update(group, component, props) {
3110 var id = component.id;
3111 var label = props.label;
3112 var action = helper_1.getEventNameSpace(group, types_2.Action.UPDATE, component);
3113 var buttonPayload = __assign({ id: id,
3114 label: label }, props);
3115 return helper_1.actionWrapper({ type: action, group: group, payload: buttonPayload });
3116}
3117exports.update = update;
3118function isValidButtonProps(button) {
3119 return typeof button.id === 'string' && typeof button.label === 'string';
3120}
3121exports.isValidButtonProps = isValidButtonProps;
3122var Button = /** @class */ (function (_super) {
3123 __extends(Button, _super);
3124 function Button(app, options) {
3125 var _this = _super.call(this, app, types_1.ComponentType.Button, types_1.Group.Button) || this;
3126 _this.disabled = false;
3127 _this.loading = false;
3128 _this.set(options, false);
3129 return _this;
3130 }
3131 Object.defineProperty(Button.prototype, "options", {
3132 get: function () {
3133 return {
3134 disabled: this.disabled,
3135 icon: this.icon,
3136 label: this.label,
3137 style: this.style,
3138 loading: this.loading,
3139 };
3140 },
3141 enumerable: true,
3142 configurable: true
3143 });
3144 Object.defineProperty(Button.prototype, "payload", {
3145 get: function () {
3146 return __assign({ id: this.id }, this.options);
3147 },
3148 enumerable: true,
3149 configurable: true
3150 });
3151 Button.prototype.set = function (options, shouldUpdate) {
3152 if (shouldUpdate === void 0) { shouldUpdate = true; }
3153 var mergedOptions = helper_1.getMergedProps(this.options, options);
3154 var label = mergedOptions.label, disabled = mergedOptions.disabled, icon = mergedOptions.icon, style = mergedOptions.style, loading = mergedOptions.loading;
3155 this.label = label;
3156 this.disabled = !!disabled;
3157 this.icon = icon;
3158 this.style = style;
3159 this.loading = !!loading;
3160 if (shouldUpdate) {
3161 this.dispatch(types_2.Action.UPDATE);
3162 }
3163 return this;
3164 };
3165 Button.prototype.dispatch = function (action, payload) {
3166 switch (action) {
3167 case types_2.Action.CLICK:
3168 this.app.dispatch(clickButton(this.group, this.component, payload));
3169 break;
3170 case types_2.Action.UPDATE:
3171 var updateAction = update(this.group, this.component, this.payload);
3172 this.app.dispatch(updateAction);
3173 break;
3174 }
3175 return this;
3176 };
3177 return Button;
3178}(helper_1.ActionSet));
3179exports.Button = Button;
3180function create(app, options) {
3181 return new Button(app, options);
3182}
3183exports.create = create;
3184
3185
3186/***/ }),
3187/* 56 */
3188/***/ (function(module, exports, __webpack_require__) {
3189
3190"use strict";
3191
3192var __extends = (this && this.__extends) || (function () {
3193 var extendStatics = function (d, b) {
3194 extendStatics = Object.setPrototypeOf ||
3195 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3196 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
3197 return extendStatics(d, b);
3198 };
3199 return function (d, b) {
3200 extendStatics(d, b);
3201 function __() { this.constructor = d; }
3202 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3203 };
3204})();
3205var __assign = (this && this.__assign) || function () {
3206 __assign = Object.assign || function(t) {
3207 for (var s, i = 1, n = arguments.length; i < n; i++) {
3208 s = arguments[i];
3209 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
3210 t[p] = s[p];
3211 }
3212 return t;
3213 };
3214 return __assign.apply(this, arguments);
3215};
3216Object.defineProperty(exports, "__esModule", { value: true });
3217var buttonHelper_1 = __webpack_require__(15);
3218var helper_1 = __webpack_require__(0);
3219var types_1 = __webpack_require__(1);
3220var types_2 = __webpack_require__(25);
3221function update(group, component, props) {
3222 return buttonActionWrapper(group, component, types_2.Action.UPDATE, props);
3223}
3224exports.update = update;
3225function isGroupedButton(options) {
3226 var castOptions = options;
3227 return castOptions.buttons && castOptions.buttons.length > 0 && castOptions.label !== undefined;
3228}
3229exports.isGroupedButton = isGroupedButton;
3230function isGroupedButtonPayload(payload) {
3231 var castOptions = payload;
3232 return (Array.isArray(castOptions.buttons) &&
3233 typeof castOptions.id === 'string' &&
3234 typeof castOptions.label === 'string');
3235}
3236exports.isGroupedButtonPayload = isGroupedButtonPayload;
3237var ButtonGroup = /** @class */ (function (_super) {
3238 __extends(ButtonGroup, _super);
3239 function ButtonGroup(app, options) {
3240 var _this = _super.call(this, app, types_1.ComponentType.ButtonGroup, types_1.Group.ButtonGroup) || this;
3241 _this.disabled = false;
3242 _this.buttonsOptions = [];
3243 _this.buttons = [];
3244 _this.set(options, false);
3245 return _this;
3246 }
3247 Object.defineProperty(ButtonGroup.prototype, "options", {
3248 get: function () {
3249 return {
3250 buttons: this.buttonsOptions,
3251 disabled: this.disabled,
3252 label: this.label,
3253 };
3254 },
3255 enumerable: true,
3256 configurable: true
3257 });
3258 Object.defineProperty(ButtonGroup.prototype, "payload", {
3259 get: function () {
3260 return __assign({}, this.options, { buttons: this.buttons, id: this.id });
3261 },
3262 enumerable: true,
3263 configurable: true
3264 });
3265 ButtonGroup.prototype.set = function (options, shouldUpdate) {
3266 if (shouldUpdate === void 0) { shouldUpdate = true; }
3267 var mergedOptions = helper_1.getMergedProps(this.options, options);
3268 var label = mergedOptions.label, disabled = mergedOptions.disabled, buttons = mergedOptions.buttons;
3269 this.label = label;
3270 this.disabled = !!disabled;
3271 this.buttons = this.getButtons(buttons);
3272 if (shouldUpdate) {
3273 this.dispatch(types_2.Action.UPDATE);
3274 }
3275 return this;
3276 };
3277 ButtonGroup.prototype.dispatch = function (action) {
3278 switch (action) {
3279 case types_2.Action.UPDATE:
3280 var updateAction = update(this.group, this.component, this.payload);
3281 this.app.dispatch(updateAction);
3282 break;
3283 }
3284 return this;
3285 };
3286 ButtonGroup.prototype.updateButtons = function (newPayload) {
3287 if (!this.buttons || this.buttons.length === 0) {
3288 return;
3289 }
3290 var updated;
3291 for (var _i = 0, _a = this.buttons; _i < _a.length; _i++) {
3292 var action = _a[_i];
3293 updated = helper_1.updateActionFromPayload(action, newPayload);
3294 if (updated) {
3295 break;
3296 }
3297 }
3298 if (updated) {
3299 this.dispatch(types_2.Action.UPDATE);
3300 }
3301 };
3302 ButtonGroup.prototype.getSingleButton = function (button) {
3303 return buttonHelper_1.getSingleButton(this, button, this.subgroups, this.updateButtons);
3304 };
3305 ButtonGroup.prototype.getButtons = function (buttonOptions) {
3306 var _this = this;
3307 var buttons = [];
3308 if (!buttonOptions) {
3309 return [];
3310 }
3311 buttonOptions.forEach(function (button) {
3312 var singleButton = buttonHelper_1.getSingleButton(_this, button, _this.subgroups, _this.updateButtons);
3313 buttons.push(singleButton);
3314 });
3315 this.buttonsOptions = buttonOptions;
3316 return buttons;
3317 };
3318 return ButtonGroup;
3319}(helper_1.ActionSetWithChildren));
3320exports.ButtonGroup = ButtonGroup;
3321function create(app, options) {
3322 return new ButtonGroup(app, options);
3323}
3324exports.create = create;
3325function buttonActionWrapper(group, component, eventName, props, payload) {
3326 var id = component.id;
3327 var label = props.label;
3328 var action = helper_1.getEventNameSpace(group, eventName, component);
3329 var buttonPayload = __assign({ id: id,
3330 label: label }, props, { payload: payload });
3331 return helper_1.actionWrapper({ type: action, group: group, payload: buttonPayload });
3332}
3333
3334
3335/***/ }),
3336/* 57 */
3337/***/ (function(module, exports, __webpack_require__) {
3338
3339"use strict";
3340
3341var __extends = (this && this.__extends) || (function () {
3342 var extendStatics = function (d, b) {
3343 extendStatics = Object.setPrototypeOf ||
3344 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3345 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
3346 return extendStatics(d, b);
3347 };
3348 return function (d, b) {
3349 extendStatics(d, b);
3350 function __() { this.constructor = d; }
3351 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3352 };
3353})();
3354var __assign = (this && this.__assign) || function () {
3355 __assign = Object.assign || function(t) {
3356 for (var s, i = 1, n = arguments.length; i < n; i++) {
3357 s = arguments[i];
3358 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
3359 t[p] = s[p];
3360 }
3361 return t;
3362 };
3363 return __assign.apply(this, arguments);
3364};
3365Object.defineProperty(exports, "__esModule", { value: true });
3366var helper_1 = __webpack_require__(0);
3367var types_1 = __webpack_require__(1);
3368var types_2 = __webpack_require__(27);
3369/**
3370 * Cart
3371 */
3372var Cart = /** @class */ (function (_super) {
3373 __extends(Cart, _super);
3374 function Cart(app, options) {
3375 return _super.call(this, app, types_1.Group.Cart, types_1.Group.Cart, options ? options.id : undefined) || this;
3376 }
3377 Cart.prototype.dispatch = function (action, payload) {
3378 switch (action) {
3379 case types_2.Action.FETCH:
3380 this.dispatchCartAction(types_2.ActionType.FETCH);
3381 break;
3382 case types_2.Action.UPDATE:
3383 this.dispatchCartAction(types_2.ActionType.UPDATE, payload);
3384 break;
3385 case types_2.Action.SET_CUSTOMER:
3386 this.dispatchCartAction(types_2.ActionType.SET_CUSTOMER, payload);
3387 break;
3388 case types_2.Action.REMOVE_CUSTOMER:
3389 this.dispatchCartAction(types_2.ActionType.REMOVE_CUSTOMER, payload);
3390 break;
3391 case types_2.Action.ADD_CUSTOMER_ADDRESS:
3392 this.dispatchCartAction(types_2.ActionType.ADD_CUSTOMER_ADDRESS, payload);
3393 break;
3394 case types_2.Action.UPDATE_CUSTOMER_ADDRESS:
3395 this.dispatchCartAction(types_2.ActionType.UPDATE_CUSTOMER_ADDRESS, payload);
3396 break;
3397 case types_2.Action.SET_DISCOUNT:
3398 this.dispatchCartAction(types_2.ActionType.SET_DISCOUNT, payload);
3399 break;
3400 case types_2.Action.REMOVE_DISCOUNT:
3401 this.dispatchCartAction(types_2.ActionType.REMOVE_DISCOUNT, payload);
3402 break;
3403 case types_2.Action.SET_PROPERTIES:
3404 this.dispatchCartAction(types_2.ActionType.SET_PROPERTIES, payload);
3405 break;
3406 case types_2.Action.REMOVE_PROPERTIES:
3407 this.dispatchCartAction(types_2.ActionType.REMOVE_PROPERTIES, payload);
3408 break;
3409 case types_2.Action.CLEAR:
3410 this.dispatchCartAction(types_2.ActionType.CLEAR, payload);
3411 break;
3412 case types_2.Action.ADD_LINE_ITEM:
3413 this.dispatchCartAction(types_2.ActionType.ADD_LINE_ITEM, payload);
3414 break;
3415 case types_2.Action.UPDATE_LINE_ITEM:
3416 this.dispatchCartAction(types_2.ActionType.UPDATE_LINE_ITEM, payload);
3417 break;
3418 case types_2.Action.REMOVE_LINE_ITEM:
3419 this.dispatchCartAction(types_2.ActionType.REMOVE_LINE_ITEM, payload);
3420 break;
3421 case types_2.Action.SET_LINE_ITEM_DISCOUNT:
3422 this.dispatchCartAction(types_2.ActionType.SET_LINE_ITEM_DISCOUNT, payload);
3423 break;
3424 case types_2.Action.REMOVE_LINE_ITEM_DISCOUNT:
3425 this.dispatchCartAction(types_2.ActionType.REMOVE_LINE_ITEM_DISCOUNT, payload);
3426 break;
3427 case types_2.Action.SET_LINE_ITEM_PROPERTIES:
3428 this.dispatchCartAction(types_2.ActionType.SET_LINE_ITEM_PROPERTIES, payload);
3429 break;
3430 case types_2.Action.REMOVE_LINE_ITEM_PROPERTIES:
3431 this.dispatchCartAction(types_2.ActionType.REMOVE_LINE_ITEM_PROPERTIES, payload);
3432 break;
3433 }
3434 return this;
3435 };
3436 Cart.prototype.dispatchCartAction = function (type, payload) {
3437 this.app.dispatch(helper_1.actionWrapper({
3438 type: type,
3439 group: types_1.Group.Cart,
3440 payload: __assign({}, (payload || {}), { id: this.id }),
3441 }));
3442 };
3443 return Cart;
3444}(helper_1.ActionSet));
3445exports.Cart = Cart;
3446function create(app, options) {
3447 return new Cart(app, options);
3448}
3449exports.create = create;
3450
3451
3452/***/ }),
3453/* 58 */
3454/***/ (function(module, exports, __webpack_require__) {
3455
3456"use strict";
3457
3458function __export(m) {
3459 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
3460}
3461Object.defineProperty(exports, "__esModule", { value: true });
3462__export(__webpack_require__(59));
3463__export(__webpack_require__(16));
3464
3465
3466/***/ }),
3467/* 59 */
3468/***/ (function(module, exports, __webpack_require__) {
3469
3470"use strict";
3471
3472var __extends = (this && this.__extends) || (function () {
3473 var extendStatics = function (d, b) {
3474 extendStatics = Object.setPrototypeOf ||
3475 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3476 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
3477 return extendStatics(d, b);
3478 };
3479 return function (d, b) {
3480 extendStatics(d, b);
3481 function __() { this.constructor = d; }
3482 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3483 };
3484})();
3485Object.defineProperty(exports, "__esModule", { value: true });
3486var Toast_1 = __webpack_require__(10);
3487var Toast_2 = __webpack_require__(10);
3488exports.ActionBase = Toast_2.ActionBase;
3489exports.clear = Toast_2.clear;
3490exports.ClearAction = Toast_2.ClearAction;
3491exports.show = Toast_2.show;
3492exports.ShowAction = Toast_2.ShowAction;
3493exports.FlashAction = Toast_2.ToastAction;
3494var Flash = /** @class */ (function (_super) {
3495 __extends(Flash, _super);
3496 function Flash() {
3497 return _super !== null && _super.apply(this, arguments) || this;
3498 }
3499 return Flash;
3500}(Toast_1.Toast));
3501exports.Flash = Flash;
3502function create(app, options) {
3503 return new Flash(app, options);
3504}
3505exports.create = create;
3506
3507
3508/***/ }),
3509/* 60 */
3510/***/ (function(module, exports, __webpack_require__) {
3511
3512"use strict";
3513
3514var __extends = (this && this.__extends) || (function () {
3515 var extendStatics = function (d, b) {
3516 extendStatics = Object.setPrototypeOf ||
3517 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3518 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
3519 return extendStatics(d, b);
3520 };
3521 return function (d, b) {
3522 extendStatics(d, b);
3523 function __() { this.constructor = d; }
3524 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3525 };
3526})();
3527var __assign = (this && this.__assign) || function () {
3528 __assign = Object.assign || function(t) {
3529 for (var s, i = 1, n = arguments.length; i < n; i++) {
3530 s = arguments[i];
3531 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
3532 t[p] = s[p];
3533 }
3534 return t;
3535 };
3536 return __assign.apply(this, arguments);
3537};
3538Object.defineProperty(exports, "__esModule", { value: true });
3539var helper_1 = __webpack_require__(0);
3540var types_1 = __webpack_require__(1);
3541var types_2 = __webpack_require__(16);
3542function show(toastMessage) {
3543 return helper_1.actionWrapper({
3544 group: types_1.Group.Toast,
3545 payload: toastMessage,
3546 type: types_2.ActionType.SHOW,
3547 });
3548}
3549exports.show = show;
3550function clear(payload) {
3551 return helper_1.actionWrapper({
3552 payload: payload,
3553 group: types_1.Group.Toast,
3554 type: types_2.ActionType.CLEAR,
3555 });
3556}
3557exports.clear = clear;
3558var Toast = /** @class */ (function (_super) {
3559 __extends(Toast, _super);
3560 function Toast(app, options) {
3561 var _this = _super.call(this, app, types_1.Group.Toast, types_1.Group.Toast) || this;
3562 _this.message = '';
3563 _this.duration = 5000;
3564 _this.set(options);
3565 return _this;
3566 }
3567 Object.defineProperty(Toast.prototype, "options", {
3568 get: function () {
3569 return {
3570 duration: this.duration,
3571 isError: this.isError,
3572 message: this.message,
3573 };
3574 },
3575 enumerable: true,
3576 configurable: true
3577 });
3578 Object.defineProperty(Toast.prototype, "payload", {
3579 get: function () {
3580 return __assign({ id: this.id }, this.options);
3581 },
3582 enumerable: true,
3583 configurable: true
3584 });
3585 Toast.prototype.set = function (options) {
3586 var mergedOptions = helper_1.getMergedProps(this.options, options);
3587 var message = mergedOptions.message, duration = mergedOptions.duration, isError = mergedOptions.isError;
3588 this.message = message;
3589 this.duration = duration;
3590 this.isError = isError;
3591 return this;
3592 };
3593 Toast.prototype.dispatch = function (action) {
3594 switch (action) {
3595 case types_2.Action.SHOW:
3596 var openAction = show(this.payload);
3597 this.app.dispatch(openAction);
3598 break;
3599 case types_2.Action.CLEAR:
3600 this.app.dispatch(clear({ id: this.id }));
3601 break;
3602 }
3603 return this;
3604 };
3605 return Toast;
3606}(helper_1.ActionSet));
3607exports.Toast = Toast;
3608function create(app, options) {
3609 return new Toast(app, options);
3610}
3611exports.create = create;
3612
3613
3614/***/ }),
3615/* 61 */
3616/***/ (function(module, exports, __webpack_require__) {
3617
3618"use strict";
3619
3620function __export(m) {
3621 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
3622}
3623Object.defineProperty(exports, "__esModule", { value: true });
3624__export(__webpack_require__(62));
3625__export(__webpack_require__(28));
3626
3627
3628/***/ }),
3629/* 62 */
3630/***/ (function(module, exports, __webpack_require__) {
3631
3632"use strict";
3633
3634var __extends = (this && this.__extends) || (function () {
3635 var extendStatics = function (d, b) {
3636 extendStatics = Object.setPrototypeOf ||
3637 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3638 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
3639 return extendStatics(d, b);
3640 };
3641 return function (d, b) {
3642 extendStatics(d, b);
3643 function __() { this.constructor = d; }
3644 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3645 };
3646})();
3647var __assign = (this && this.__assign) || function () {
3648 __assign = Object.assign || function(t) {
3649 for (var s, i = 1, n = arguments.length; i < n; i++) {
3650 s = arguments[i];
3651 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
3652 t[p] = s[p];
3653 }
3654 return t;
3655 };
3656 return __assign.apply(this, arguments);
3657};
3658Object.defineProperty(exports, "__esModule", { value: true });
3659var helper_1 = __webpack_require__(0);
3660var types_1 = __webpack_require__(1);
3661var types_2 = __webpack_require__(28);
3662/**
3663 * A set of Actions for Updating, Requesting Features of AppBridge
3664 * @public
3665 */
3666var Features = /** @class */ (function (_super) {
3667 __extends(Features, _super);
3668 function Features(app, options) {
3669 return _super.call(this, app, types_1.Group.Features, types_1.Group.Features, options ? options.id : undefined) || this;
3670 }
3671 /**
3672 * @public
3673 */
3674 Features.prototype.dispatch = function (action, payload) {
3675 switch (action) {
3676 case types_2.Action.REQUEST:
3677 this.dispatchFeaturesAction(types_2.ActionType.REQUEST, payload);
3678 break;
3679 }
3680 return this;
3681 };
3682 /**
3683 * @internal
3684 */
3685 Features.prototype.dispatchFeaturesAction = function (type, payload) {
3686 this.app.dispatch(helper_1.actionWrapper({
3687 group: types_1.Group.Features,
3688 type: type,
3689 payload: __assign({}, (payload || {}), { id: this.id }),
3690 }));
3691 };
3692 return Features;
3693}(helper_1.ActionSet));
3694exports.Features = Features;
3695/**
3696 * @public
3697 */
3698function create(app, options) {
3699 return new Features(app, options);
3700}
3701exports.create = create;
3702
3703
3704/***/ }),
3705/* 63 */
3706/***/ (function(module, exports, __webpack_require__) {
3707
3708"use strict";
3709
3710var __extends = (this && this.__extends) || (function () {
3711 var extendStatics = function (d, b) {
3712 extendStatics = Object.setPrototypeOf ||
3713 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3714 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
3715 return extendStatics(d, b);
3716 };
3717 return function (d, b) {
3718 extendStatics(d, b);
3719 function __() { this.constructor = d; }
3720 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3721 };
3722})();
3723Object.defineProperty(exports, "__esModule", { value: true });
3724var helper_1 = __webpack_require__(0);
3725var types_1 = __webpack_require__(1);
3726var types_2 = __webpack_require__(31);
3727function start(payload) {
3728 return helper_1.actionWrapper({
3729 payload: payload,
3730 group: types_1.Group.Loading,
3731 type: types_2.ActionType.START,
3732 });
3733}
3734exports.start = start;
3735function stop(payload) {
3736 return helper_1.actionWrapper({
3737 payload: payload,
3738 group: types_1.Group.Loading,
3739 type: types_2.ActionType.STOP,
3740 });
3741}
3742exports.stop = stop;
3743var Loading = /** @class */ (function (_super) {
3744 __extends(Loading, _super);
3745 function Loading(app) {
3746 return _super.call(this, app, types_1.Group.Loading, types_1.Group.Loading) || this;
3747 }
3748 Object.defineProperty(Loading.prototype, "payload", {
3749 get: function () {
3750 return { id: this.id };
3751 },
3752 enumerable: true,
3753 configurable: true
3754 });
3755 Loading.prototype.dispatch = function (action) {
3756 switch (action) {
3757 case types_2.Action.START:
3758 this.app.dispatch(start(this.payload));
3759 break;
3760 case types_2.Action.STOP:
3761 this.app.dispatch(stop(this.payload));
3762 break;
3763 }
3764 return this;
3765 };
3766 return Loading;
3767}(helper_1.ActionSet));
3768exports.Loading = Loading;
3769function create(app) {
3770 return new Loading(app);
3771}
3772exports.create = create;
3773
3774
3775/***/ }),
3776/* 64 */
3777/***/ (function(module, exports, __webpack_require__) {
3778
3779"use strict";
3780
3781var __extends = (this && this.__extends) || (function () {
3782 var extendStatics = function (d, b) {
3783 extendStatics = Object.setPrototypeOf ||
3784 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3785 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
3786 return extendStatics(d, b);
3787 };
3788 return function (d, b) {
3789 extendStatics(d, b);
3790 function __() { this.constructor = d; }
3791 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3792 };
3793})();
3794var __assign = (this && this.__assign) || function () {
3795 __assign = Object.assign || function(t) {
3796 for (var s, i = 1, n = arguments.length; i < n; i++) {
3797 s = arguments[i];
3798 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
3799 t[p] = s[p];
3800 }
3801 return t;
3802 };
3803 return __assign.apply(this, arguments);
3804};
3805Object.defineProperty(exports, "__esModule", { value: true });
3806var buttonHelper_1 = __webpack_require__(15);
3807var helper_1 = __webpack_require__(0);
3808var types_1 = __webpack_require__(1);
3809var Button_1 = __webpack_require__(4);
3810var types_2 = __webpack_require__(33);
3811var FOOTER_BUTTON_PROPS = {
3812 group: types_1.Group.Modal,
3813 subgroups: ['Footer'],
3814 type: types_1.ComponentType.Button,
3815};
3816function openModal(modalPayload) {
3817 return helper_1.actionWrapper({
3818 group: types_1.Group.Modal,
3819 payload: modalPayload,
3820 type: types_2.ActionType.OPEN,
3821 });
3822}
3823exports.openModal = openModal;
3824function closeModal(modalClosePayload) {
3825 return helper_1.actionWrapper({
3826 group: types_1.Group.Modal,
3827 payload: modalClosePayload,
3828 type: types_2.ActionType.CLOSE,
3829 });
3830}
3831exports.closeModal = closeModal;
3832/**
3833 * Action creator for modal update size action
3834 * @internal
3835 */
3836function updateModalSize(updateSizePayload) {
3837 return helper_1.actionWrapper({
3838 group: types_1.Group.Modal,
3839 payload: updateSizePayload,
3840 type: types_2.ActionType.UPDATE_SIZE,
3841 });
3842}
3843exports.updateModalSize = updateModalSize;
3844function clickFooterButton(id, payload) {
3845 var component = __assign({ id: id }, FOOTER_BUTTON_PROPS);
3846 return Button_1.clickButton(types_1.Group.Modal, component, payload);
3847}
3848exports.clickFooterButton = clickFooterButton;
3849function update(payload) {
3850 return helper_1.actionWrapper({
3851 payload: payload,
3852 group: types_1.Group.Modal,
3853 type: types_2.ActionType.UPDATE,
3854 });
3855}
3856exports.update = update;
3857function isIframeModal(options) {
3858 return (typeof options.url === 'string' ||
3859 typeof options.path === 'string');
3860}
3861exports.isIframeModal = isIframeModal;
3862function isMessageModal(options) {
3863 return typeof options.message === 'string';
3864}
3865exports.isMessageModal = isMessageModal;
3866var Modal = /** @class */ (function (_super) {
3867 __extends(Modal, _super);
3868 function Modal() {
3869 var _this = _super !== null && _super.apply(this, arguments) || this;
3870 _this.size = types_2.Size.Small;
3871 return _this;
3872 }
3873 Object.defineProperty(Modal.prototype, "footer", {
3874 get: function () {
3875 if (!this.footerPrimary && !this.footerSecondary) {
3876 return undefined;
3877 }
3878 return {
3879 buttons: {
3880 primary: this.footerPrimary,
3881 secondary: this.footerSecondary,
3882 },
3883 };
3884 },
3885 enumerable: true,
3886 configurable: true
3887 });
3888 Object.defineProperty(Modal.prototype, "footerOptions", {
3889 get: function () {
3890 if (!this.footerPrimaryOptions && !this.footerSecondaryOptions) {
3891 return undefined;
3892 }
3893 return {
3894 buttons: {
3895 primary: this.footerPrimaryOptions,
3896 secondary: this.footerSecondaryOptions,
3897 },
3898 };
3899 },
3900 enumerable: true,
3901 configurable: true
3902 });
3903 Modal.prototype.close = function () {
3904 this.app.dispatch(closeModal({ id: this.id }));
3905 };
3906 Modal.prototype.setFooterPrimaryButton = function (newOptions, updateCb) {
3907 var _this = this;
3908 var subgroups = FOOTER_BUTTON_PROPS.subgroups;
3909 this.footerPrimaryOptions = this.getChildButton(newOptions, this.footerPrimaryOptions);
3910 this.footerPrimary = this.footerPrimaryOptions
3911 ? buttonHelper_1.getSingleButton(this, this.footerPrimaryOptions, subgroups, function (newPayload) {
3912 _this.updatePrimaryFooterButton(newPayload, updateCb);
3913 })
3914 : undefined;
3915 };
3916 Modal.prototype.setFooterSecondaryButtons = function (newOptions, updateCb) {
3917 var _this = this;
3918 var subgroups = FOOTER_BUTTON_PROPS.subgroups;
3919 var newButtons = newOptions || [];
3920 var currentOptions = (this.footerOptions && this.footerOptions.buttons.secondary) || [];
3921 this.footerSecondaryOptions = this.getUpdatedChildActions(newButtons, currentOptions);
3922 this.footerSecondary = this.footerSecondaryOptions
3923 ? this.footerSecondaryOptions.map(function (action) {
3924 return buttonHelper_1.getSingleButton(_this, action, subgroups, function (newPayload) {
3925 _this.updateSecondaryFooterButton(newPayload, updateCb);
3926 });
3927 })
3928 : undefined;
3929 };
3930 Modal.prototype.getChildButton = function (newAction, currentAction) {
3931 var newButtons = newAction ? [newAction] : [];
3932 var currentButtons = currentAction ? [currentAction] : [];
3933 var updatedButton = this.getUpdatedChildActions(newButtons, currentButtons);
3934 return updatedButton ? updatedButton[0] : undefined;
3935 };
3936 Modal.prototype.updatePrimaryFooterButton = function (newPayload, updateCb) {
3937 if (!this.footer || !this.footer.buttons.primary) {
3938 return;
3939 }
3940 if (helper_1.updateActionFromPayload(this.footer.buttons.primary, newPayload)) {
3941 updateCb();
3942 }
3943 };
3944 Modal.prototype.updateSecondaryFooterButton = function (newPayload, updateCb) {
3945 if (!this.footer || !this.footer.buttons || !this.footer.buttons.secondary) {
3946 return;
3947 }
3948 var updated;
3949 for (var _i = 0, _a = this.footer.buttons.secondary; _i < _a.length; _i++) {
3950 var action = _a[_i];
3951 updated = helper_1.updateActionFromPayload(action, newPayload);
3952 if (updated) {
3953 break;
3954 }
3955 }
3956 if (updated) {
3957 updateCb();
3958 }
3959 };
3960 return Modal;
3961}(helper_1.ActionSetWithChildren));
3962exports.Modal = Modal;
3963var ModalMessage = /** @class */ (function (_super) {
3964 __extends(ModalMessage, _super);
3965 function ModalMessage(app, options) {
3966 var _this = _super.call(this, app, types_1.Group.Modal, types_1.Group.Modal) || this;
3967 _this.set(options, false);
3968 return _this;
3969 }
3970 Object.defineProperty(ModalMessage.prototype, "payload", {
3971 get: function () {
3972 return __assign({}, this.options, { footer: this.footer, id: this.id });
3973 },
3974 enumerable: true,
3975 configurable: true
3976 });
3977 Object.defineProperty(ModalMessage.prototype, "options", {
3978 get: function () {
3979 return {
3980 footer: this.footerOptions,
3981 message: this.message,
3982 size: this.size,
3983 title: this.title,
3984 };
3985 },
3986 enumerable: true,
3987 configurable: true
3988 });
3989 ModalMessage.prototype.set = function (options, shouldUpdate) {
3990 var _this = this;
3991 if (shouldUpdate === void 0) { shouldUpdate = true; }
3992 var mergedOptions = helper_1.getMergedProps(this.options, options);
3993 var title = mergedOptions.title, footer = mergedOptions.footer, message = mergedOptions.message, size = mergedOptions.size;
3994 this.title = title;
3995 this.message = message;
3996 this.size = size;
3997 this.setFooterPrimaryButton(footer ? footer.buttons.primary : undefined, function () {
3998 _this.dispatch(types_2.Action.UPDATE);
3999 });
4000 this.setFooterSecondaryButtons(footer ? footer.buttons.secondary : undefined, function () {
4001 _this.dispatch(types_2.Action.UPDATE);
4002 });
4003 if (shouldUpdate) {
4004 this.dispatch(types_2.Action.UPDATE);
4005 }
4006 return this;
4007 };
4008 ModalMessage.prototype.dispatch = function (action) {
4009 switch (action) {
4010 case types_2.Action.OPEN:
4011 this.app.dispatch(openModal(this.payload));
4012 break;
4013 case types_2.Action.CLOSE:
4014 this.close();
4015 break;
4016 case types_2.Action.UPDATE:
4017 this.app.dispatch(update(this.payload));
4018 break;
4019 }
4020 return this;
4021 };
4022 return ModalMessage;
4023}(Modal));
4024exports.ModalMessage = ModalMessage;
4025var ModalIframe = /** @class */ (function (_super) {
4026 __extends(ModalIframe, _super);
4027 function ModalIframe(app, options) {
4028 var _this = _super.call(this, app, types_1.Group.Modal, types_1.Group.Modal) || this;
4029 _this.set(options, false);
4030 return _this;
4031 }
4032 Object.defineProperty(ModalIframe.prototype, "payload", {
4033 get: function () {
4034 return __assign({}, this.options, { footer: this.footer, id: this.id });
4035 },
4036 enumerable: true,
4037 configurable: true
4038 });
4039 Object.defineProperty(ModalIframe.prototype, "options", {
4040 get: function () {
4041 return {
4042 footer: this.footerOptions,
4043 path: this.path,
4044 size: this.size,
4045 title: this.title,
4046 url: this.url,
4047 };
4048 },
4049 enumerable: true,
4050 configurable: true
4051 });
4052 ModalIframe.prototype.set = function (options, shouldUpdate) {
4053 var _this = this;
4054 if (shouldUpdate === void 0) { shouldUpdate = true; }
4055 var mergedOptions = helper_1.getMergedProps(this.options, options);
4056 var title = mergedOptions.title, footer = mergedOptions.footer, path = mergedOptions.path, url = mergedOptions.url, size = mergedOptions.size;
4057 this.title = title;
4058 this.url = url;
4059 this.path = path;
4060 this.size = size;
4061 this.setFooterPrimaryButton(footer ? footer.buttons.primary : undefined, function () {
4062 _this.dispatch(types_2.Action.UPDATE);
4063 });
4064 this.setFooterSecondaryButtons(footer ? footer.buttons.secondary : undefined, function () {
4065 _this.dispatch(types_2.Action.UPDATE);
4066 });
4067 if (shouldUpdate) {
4068 this.dispatch(types_2.Action.UPDATE);
4069 }
4070 return this;
4071 };
4072 ModalIframe.prototype.dispatch = function (action) {
4073 switch (action) {
4074 case types_2.Action.OPEN:
4075 this.app.dispatch(openModal(this.payload));
4076 break;
4077 case types_2.Action.CLOSE:
4078 this.close();
4079 break;
4080 case types_2.Action.UPDATE:
4081 this.app.dispatch(update(this.payload));
4082 break;
4083 }
4084 return this;
4085 };
4086 return ModalIframe;
4087}(Modal));
4088exports.ModalIframe = ModalIframe;
4089exports.create = function (app, options) {
4090 if (isIframeModal(options)) {
4091 return new ModalIframe(app, options);
4092 }
4093 return new ModalMessage(app, options);
4094};
4095
4096
4097/***/ }),
4098/* 65 */
4099/***/ (function(module, exports, __webpack_require__) {
4100
4101"use strict";
4102
4103function __export(m) {
4104 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
4105}
4106Object.defineProperty(exports, "__esModule", { value: true });
4107__export(__webpack_require__(66));
4108__export(__webpack_require__(34));
4109
4110
4111/***/ }),
4112/* 66 */
4113/***/ (function(module, exports, __webpack_require__) {
4114
4115"use strict";
4116
4117var __extends = (this && this.__extends) || (function () {
4118 var extendStatics = function (d, b) {
4119 extendStatics = Object.setPrototypeOf ||
4120 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4121 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
4122 return extendStatics(d, b);
4123 };
4124 return function (d, b) {
4125 extendStatics(d, b);
4126 function __() { this.constructor = d; }
4127 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4128 };
4129})();
4130var __assign = (this && this.__assign) || function () {
4131 __assign = Object.assign || function(t) {
4132 for (var s, i = 1, n = arguments.length; i < n; i++) {
4133 s = arguments[i];
4134 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
4135 t[p] = s[p];
4136 }
4137 return t;
4138 };
4139 return __assign.apply(this, arguments);
4140};
4141Object.defineProperty(exports, "__esModule", { value: true });
4142var helper_1 = __webpack_require__(0);
4143var types_1 = __webpack_require__(1);
4144var types_2 = __webpack_require__(34);
4145function push(payload) {
4146 return helper_1.actionWrapper({
4147 payload: payload,
4148 group: types_1.Group.Navigation,
4149 type: types_2.ActionType.PUSH,
4150 });
4151}
4152exports.push = push;
4153function replace(payload) {
4154 return helper_1.actionWrapper({
4155 payload: payload,
4156 group: types_1.Group.Navigation,
4157 type: types_2.ActionType.REPLACE,
4158 });
4159}
4160exports.replace = replace;
4161var History = /** @class */ (function (_super) {
4162 __extends(History, _super);
4163 function History(app) {
4164 return _super.call(this, app, 'History', types_1.Group.Navigation) || this;
4165 }
4166 Object.defineProperty(History.prototype, "payload", {
4167 get: function () {
4168 return { id: this.id };
4169 },
4170 enumerable: true,
4171 configurable: true
4172 });
4173 History.prototype.dispatch = function (type, path) {
4174 var payload = __assign({}, this.payload, { path: path });
4175 switch (type) {
4176 case types_2.Action.PUSH:
4177 this.app.dispatch(push(payload));
4178 break;
4179 case types_2.Action.REPLACE:
4180 this.app.dispatch(replace(payload));
4181 break;
4182 }
4183 return this;
4184 };
4185 return History;
4186}(helper_1.ActionSet));
4187exports.History = History;
4188function create(app) {
4189 return new History(app);
4190}
4191exports.create = create;
4192
4193
4194/***/ }),
4195/* 67 */
4196/***/ (function(module, exports, __webpack_require__) {
4197
4198"use strict";
4199
4200var __extends = (this && this.__extends) || (function () {
4201 var extendStatics = function (d, b) {
4202 extendStatics = Object.setPrototypeOf ||
4203 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4204 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
4205 return extendStatics(d, b);
4206 };
4207 return function (d, b) {
4208 extendStatics(d, b);
4209 function __() { this.constructor = d; }
4210 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4211 };
4212})();
4213var __assign = (this && this.__assign) || function () {
4214 __assign = Object.assign || function(t) {
4215 for (var s, i = 1, n = arguments.length; i < n; i++) {
4216 s = arguments[i];
4217 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
4218 t[p] = s[p];
4219 }
4220 return t;
4221 };
4222 return __assign.apply(this, arguments);
4223};
4224Object.defineProperty(exports, "__esModule", { value: true });
4225var helper_1 = __webpack_require__(0);
4226var types_1 = __webpack_require__(1);
4227var types_2 = __webpack_require__(35);
4228function isResourcePayload(resource) {
4229 // tslint:disable-next-line:no-boolean-literal-compare
4230 return typeof resource.id === 'string';
4231}
4232exports.isResourcePayload = isResourcePayload;
4233function isCreateResourcePayload(resource) {
4234 // tslint:disable-next-line:no-boolean-literal-compare
4235 return resource.create === true;
4236}
4237exports.isCreateResourcePayload = isCreateResourcePayload;
4238function isProductVariantResourcePayload(resource) {
4239 var castResource = resource;
4240 // tslint:disable-next-line:no-boolean-literal-compare
4241 return castResource.id !== undefined && castResource.variant !== undefined;
4242}
4243exports.isProductVariantResourcePayload = isProductVariantResourcePayload;
4244function isProductVariantCreateResourcePayload(resource) {
4245 if (!isProductVariantResourcePayload(resource)) {
4246 return false;
4247 }
4248 return isCreateResourcePayload(resource.variant);
4249}
4250exports.isProductVariantCreateResourcePayload = isProductVariantCreateResourcePayload;
4251function toAdminPath(payload) {
4252 return helper_1.actionWrapper({
4253 payload: payload,
4254 group: types_1.Group.Navigation,
4255 type: types_2.ActionType.ADMIN_PATH,
4256 });
4257}
4258exports.toAdminPath = toAdminPath;
4259function toAdminSection(payload) {
4260 return helper_1.actionWrapper({
4261 payload: payload,
4262 group: types_1.Group.Navigation,
4263 type: types_2.ActionType.ADMIN_SECTION,
4264 });
4265}
4266exports.toAdminSection = toAdminSection;
4267function toRemote(payload) {
4268 return helper_1.actionWrapper({
4269 payload: payload,
4270 group: types_1.Group.Navigation,
4271 type: types_2.ActionType.REMOTE,
4272 });
4273}
4274exports.toRemote = toRemote;
4275function toApp(payload) {
4276 return helper_1.actionWrapper({
4277 payload: payload,
4278 group: types_1.Group.Navigation,
4279 type: types_2.ActionType.APP,
4280 });
4281}
4282exports.toApp = toApp;
4283function toDestination(action, payload, id) {
4284 switch (action) {
4285 case types_2.Action.APP:
4286 var appPayload = isAppPayload(payload) ? payload : { path: payload };
4287 return toApp(__assign({ id: id }, appPayload));
4288 case types_2.Action.ADMIN_PATH:
4289 var adminPathPayload = isAdminPathPayload(payload) ? payload : { path: payload };
4290 return toAdminPath(__assign({ id: id }, adminPathPayload));
4291 case types_2.Action.ADMIN_SECTION:
4292 var adminSectionPayload = isAdminSectionPayload(payload)
4293 ? payload
4294 : { section: payload };
4295 return toAdminSection(__assign({ id: id }, adminSectionPayload));
4296 case types_2.Action.REMOTE:
4297 var remotePayload = isRemotePayload(payload) ? payload : { url: payload };
4298 return toRemote(__assign({ id: id }, remotePayload));
4299 }
4300}
4301exports.toDestination = toDestination;
4302function isAppPayload(payload) {
4303 return typeof payload === 'object' && payload.hasOwnProperty('path');
4304}
4305exports.isAppPayload = isAppPayload;
4306function isAdminPathPayload(payload) {
4307 return typeof payload === 'object' && payload.hasOwnProperty('path');
4308}
4309exports.isAdminPathPayload = isAdminPathPayload;
4310function isAdminSectionPayload(payload) {
4311 return (typeof payload === 'object' &&
4312 typeof payload.section === 'object' &&
4313 payload.section.hasOwnProperty('name'));
4314}
4315exports.isAdminSectionPayload = isAdminSectionPayload;
4316function isRemotePayload(payload) {
4317 return typeof payload === 'object' && payload.hasOwnProperty('url');
4318}
4319exports.isRemotePayload = isRemotePayload;
4320var Redirect = /** @class */ (function (_super) {
4321 __extends(Redirect, _super);
4322 function Redirect(app) {
4323 return _super.call(this, app, 'Redirect', types_1.Group.Navigation) || this;
4324 }
4325 Object.defineProperty(Redirect.prototype, "payload", {
4326 get: function () {
4327 return { id: this.id };
4328 },
4329 enumerable: true,
4330 configurable: true
4331 });
4332 Redirect.prototype.dispatch = function (action, payload) {
4333 var redirectAction = toDestination(action, payload, this.payload.id);
4334 this.app.dispatch(redirectAction);
4335 return this;
4336 };
4337 return Redirect;
4338}(helper_1.ActionSet));
4339exports.Redirect = Redirect;
4340function create(app) {
4341 return new Redirect(app);
4342}
4343exports.create = create;
4344
4345
4346/***/ }),
4347/* 68 */
4348/***/ (function(module, exports, __webpack_require__) {
4349
4350"use strict";
4351
4352Object.defineProperty(exports, "__esModule", { value: true });
4353var helper_1 = __webpack_require__(0);
4354var types_1 = __webpack_require__(1);
4355var types_2 = __webpack_require__(36);
4356function app() {
4357 return helper_1.actionWrapper({
4358 group: types_1.Group.Print,
4359 type: types_2.ActionType.APP,
4360 });
4361}
4362exports.app = app;
4363
4364
4365/***/ }),
4366/* 69 */
4367/***/ (function(module, exports, __webpack_require__) {
4368
4369"use strict";
4370
4371var __extends = (this && this.__extends) || (function () {
4372 var extendStatics = function (d, b) {
4373 extendStatics = Object.setPrototypeOf ||
4374 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4375 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
4376 return extendStatics(d, b);
4377 };
4378 return function (d, b) {
4379 extendStatics(d, b);
4380 function __() { this.constructor = d; }
4381 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4382 };
4383})();
4384var __assign = (this && this.__assign) || function () {
4385 __assign = Object.assign || function(t) {
4386 for (var s, i = 1, n = arguments.length; i < n; i++) {
4387 s = arguments[i];
4388 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
4389 t[p] = s[p];
4390 }
4391 return t;
4392 };
4393 return __assign.apply(this, arguments);
4394};
4395Object.defineProperty(exports, "__esModule", { value: true });
4396var helper_1 = __webpack_require__(0);
4397var types_1 = __webpack_require__(1);
4398var types_2 = __webpack_require__(38);
4399function select(payload) {
4400 return helper_1.actionWrapper({
4401 payload: payload,
4402 group: types_1.Group.ResourcePicker,
4403 type: types_2.ActionType.SELECT,
4404 });
4405}
4406exports.select = select;
4407function open(payload) {
4408 return helper_1.actionWrapper({
4409 payload: payload,
4410 group: types_1.Group.ResourcePicker,
4411 type: types_2.ActionType.OPEN,
4412 });
4413}
4414exports.open = open;
4415function cancel(payload) {
4416 return helper_1.actionWrapper({
4417 payload: payload,
4418 group: types_1.Group.ResourcePicker,
4419 type: types_2.ActionType.CANCEL,
4420 });
4421}
4422exports.cancel = cancel;
4423function close(payload) {
4424 return helper_1.actionWrapper({
4425 payload: payload,
4426 group: types_1.Group.ResourcePicker,
4427 type: types_2.ActionType.CANCEL,
4428 });
4429}
4430exports.close = close;
4431function update(payload) {
4432 return helper_1.actionWrapper({
4433 payload: payload,
4434 group: types_1.Group.ResourcePicker,
4435 type: types_2.ActionType.UPDATE,
4436 });
4437}
4438exports.update = update;
4439var ResourcePicker = /** @class */ (function (_super) {
4440 __extends(ResourcePicker, _super);
4441 function ResourcePicker(app, options, resourceType) {
4442 var _this = _super.call(this, app, types_1.Group.ResourcePicker, types_1.Group.ResourcePicker) || this;
4443 _this.initialSelectionIds = [];
4444 _this.selection = [];
4445 _this.resourceType = resourceType;
4446 _this.set(options, false);
4447 return _this;
4448 }
4449 Object.defineProperty(ResourcePicker.prototype, "payload", {
4450 get: function () {
4451 return __assign({}, this.options, { id: this.id, resourceType: this.resourceType });
4452 },
4453 enumerable: true,
4454 configurable: true
4455 });
4456 Object.defineProperty(ResourcePicker.prototype, "options", {
4457 get: function () {
4458 var options = {
4459 initialQuery: this.initialQuery,
4460 selectMultiple: this.selectMultiple,
4461 initialSelectionIds: this.initialSelectionIds,
4462 showHidden: this.showHidden,
4463 actionVerb: this.actionVerb,
4464 };
4465 if (this.resourceType === types_2.ResourceType.Product) {
4466 var productOptions = __assign({}, options, { showVariants: this.showVariants });
4467 return productOptions;
4468 }
4469 return options;
4470 },
4471 enumerable: true,
4472 configurable: true
4473 });
4474 ResourcePicker.prototype.set = function (options, shouldUpdate) {
4475 if (shouldUpdate === void 0) { shouldUpdate = true; }
4476 var mergedOptions = helper_1.getMergedProps(this.options, options);
4477 var initialQuery = mergedOptions.initialQuery, _a = mergedOptions.initialSelectionIds, initialSelectionIds = _a === void 0 ? [] : _a, _b = mergedOptions.showHidden, showHidden = _b === void 0 ? true : _b, _c = mergedOptions.showVariants, showVariants = _c === void 0 ? true : _c, _d = mergedOptions.selectMultiple, selectMultiple = _d === void 0 ? true : _d, _e = mergedOptions.actionVerb, actionVerb = _e === void 0 ? types_2.ActionVerb.Add : _e;
4478 this.initialQuery = initialQuery;
4479 this.initialSelectionIds = initialSelectionIds;
4480 this.showHidden = Boolean(showHidden);
4481 this.showVariants = Boolean(showVariants);
4482 this.selectMultiple = Boolean(selectMultiple);
4483 this.actionVerb = actionVerb;
4484 if (shouldUpdate) {
4485 this.update();
4486 }
4487 return this;
4488 };
4489 ResourcePicker.prototype.dispatch = function (action, selection) {
4490 if (action === types_2.Action.OPEN) {
4491 this.open();
4492 }
4493 else if (action === types_2.Action.UPDATE) {
4494 this.update();
4495 }
4496 else if (action === types_2.Action.CLOSE || action === types_2.Action.CANCEL) {
4497 this.cancel();
4498 }
4499 else if (action === types_2.Action.SELECT) {
4500 this.selection = selection;
4501 this.app.dispatch(select({ id: this.id, selection: this.selection }));
4502 }
4503 return this;
4504 };
4505 ResourcePicker.prototype.update = function () {
4506 this.app.dispatch(update(this.payload));
4507 };
4508 ResourcePicker.prototype.open = function () {
4509 this.app.dispatch(open(this.payload));
4510 };
4511 ResourcePicker.prototype.cancel = function () {
4512 this.app.dispatch(cancel({ id: this.id }));
4513 };
4514 ResourcePicker.prototype.close = function () {
4515 this.cancel();
4516 };
4517 return ResourcePicker;
4518}(helper_1.ActionSet));
4519exports.ResourcePicker = ResourcePicker;
4520exports.create = function (app, baseOptions) {
4521 var resourceType = baseOptions.resourceType, _a = baseOptions.options, options = _a === void 0 ? {} : _a;
4522 return new ResourcePicker(app, options, resourceType);
4523};
4524
4525
4526/***/ }),
4527/* 70 */
4528/***/ (function(module, exports, __webpack_require__) {
4529
4530"use strict";
4531
4532var __extends = (this && this.__extends) || (function () {
4533 var extendStatics = function (d, b) {
4534 extendStatics = Object.setPrototypeOf ||
4535 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4536 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
4537 return extendStatics(d, b);
4538 };
4539 return function (d, b) {
4540 extendStatics(d, b);
4541 function __() { this.constructor = d; }
4542 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4543 };
4544})();
4545Object.defineProperty(exports, "__esModule", { value: true });
4546var helper_1 = __webpack_require__(0);
4547var types_1 = __webpack_require__(1);
4548var types_2 = __webpack_require__(40);
4549/**
4550 * A set of Actions for displaying a Camera or NFC Scanner component
4551 * @public
4552 */
4553var Scanner = /** @class */ (function (_super) {
4554 __extends(Scanner, _super);
4555 function Scanner(app, options) {
4556 return _super.call(this, app, types_1.Group.Scanner, types_1.Group.Scanner, options ? options.id : undefined) || this;
4557 }
4558 /**
4559 * @public
4560 */
4561 Scanner.prototype.dispatch = function (action) {
4562 switch (action) {
4563 case types_2.Action.OPEN_CAMERA:
4564 this.dispatchScannerAction(types_2.ActionType.OPEN_CAMERA);
4565 break;
4566 case types_2.Action.OPEN_NFC:
4567 this.dispatchScannerAction(types_2.ActionType.OPEN_NFC);
4568 break;
4569 }
4570 return this;
4571 };
4572 /**
4573 * @internal
4574 */
4575 Scanner.prototype.dispatchScannerAction = function (type) {
4576 this.app.dispatch(helper_1.actionWrapper({
4577 type: type,
4578 group: types_1.Group.Scanner,
4579 payload: {
4580 id: this.id,
4581 },
4582 }));
4583 };
4584 return Scanner;
4585}(helper_1.ActionSet));
4586exports.Scanner = Scanner;
4587/**
4588 * @public
4589 */
4590function create(app, options) {
4591 return new Scanner(app, options);
4592}
4593exports.create = create;
4594
4595
4596/***/ }),
4597/* 71 */
4598/***/ (function(module, exports, __webpack_require__) {
4599
4600"use strict";
4601
4602Object.defineProperty(exports, "__esModule", { value: true });
4603var helper_1 = __webpack_require__(0);
4604var types_1 = __webpack_require__(1);
4605var ActionType;
4606(function (ActionType) {
4607 ActionType["REQUEST"] = "APP::SESSION_TOKEN::REQUEST";
4608 ActionType["RESPOND"] = "APP::SESSION_TOKEN::RESPOND";
4609})(ActionType = exports.ActionType || (exports.ActionType = {}));
4610var Action;
4611(function (Action) {
4612 Action["REQUEST"] = "REQUEST";
4613 Action["RESPOND"] = "RESPOND";
4614})(Action = exports.Action || (exports.Action = {}));
4615function request() {
4616 return helper_1.actionWrapper({
4617 group: types_1.Group.SessionToken,
4618 type: ActionType.REQUEST,
4619 });
4620}
4621exports.request = request;
4622function respond(sessionToken) {
4623 return helper_1.actionWrapper({
4624 payload: sessionToken,
4625 group: types_1.Group.SessionToken,
4626 type: ActionType.RESPOND,
4627 });
4628}
4629exports.respond = respond;
4630
4631
4632/***/ }),
4633/* 72 */
4634/***/ (function(module, exports, __webpack_require__) {
4635
4636"use strict";
4637
4638var __extends = (this && this.__extends) || (function () {
4639 var extendStatics = function (d, b) {
4640 extendStatics = Object.setPrototypeOf ||
4641 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4642 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
4643 return extendStatics(d, b);
4644 };
4645 return function (d, b) {
4646 extendStatics(d, b);
4647 function __() { this.constructor = d; }
4648 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4649 };
4650})();
4651var __assign = (this && this.__assign) || function () {
4652 __assign = Object.assign || function(t) {
4653 for (var s, i = 1, n = arguments.length; i < n; i++) {
4654 s = arguments[i];
4655 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
4656 t[p] = s[p];
4657 }
4658 return t;
4659 };
4660 return __assign.apply(this, arguments);
4661};
4662Object.defineProperty(exports, "__esModule", { value: true });
4663var Button_1 = __webpack_require__(4);
4664var ButtonGroup_1 = __webpack_require__(7);
4665var buttonGroupHelper_1 = __webpack_require__(73);
4666var buttonHelper_1 = __webpack_require__(15);
4667var helper_1 = __webpack_require__(0);
4668var types_1 = __webpack_require__(1);
4669var types_2 = __webpack_require__(42);
4670var TITLEBAR_BUTTON_PROPS = {
4671 group: types_1.Group.TitleBar,
4672 subgroups: ['Buttons'],
4673};
4674var BREADCRUMB_BUTTON_PROPS = {
4675 group: types_1.Group.TitleBar,
4676 subgroups: ['Breadcrumbs'],
4677 type: types_1.ComponentType.Button,
4678};
4679function clickActionButton(id, payload) {
4680 var type = types_1.ComponentType.Button;
4681 var component = __assign({ id: id, type: type }, TITLEBAR_BUTTON_PROPS);
4682 return Button_1.clickButton(types_1.Group.TitleBar, component, payload);
4683}
4684exports.clickActionButton = clickActionButton;
4685function clickBreadcrumb(id, payload) {
4686 var component = __assign({ id: id }, BREADCRUMB_BUTTON_PROPS);
4687 return Button_1.clickButton(types_1.Group.TitleBar, component, payload);
4688}
4689exports.clickBreadcrumb = clickBreadcrumb;
4690function update(payload) {
4691 return helper_1.actionWrapper({
4692 payload: payload,
4693 group: types_1.Group.TitleBar,
4694 type: types_2.ActionType.UPDATE,
4695 });
4696}
4697exports.update = update;
4698var TitleBar = /** @class */ (function (_super) {
4699 __extends(TitleBar, _super);
4700 function TitleBar(app, options) {
4701 var _this = _super.call(this, app, types_1.Group.TitleBar, types_1.Group.TitleBar) || this;
4702 // Trigger 'update' on creation
4703 _this.set(options);
4704 return _this;
4705 }
4706 Object.defineProperty(TitleBar.prototype, "buttons", {
4707 get: function () {
4708 if (!this.primary && !this.secondary) {
4709 return undefined;
4710 }
4711 return {
4712 primary: this.primary,
4713 secondary: this.secondary,
4714 };
4715 },
4716 enumerable: true,
4717 configurable: true
4718 });
4719 Object.defineProperty(TitleBar.prototype, "buttonsOptions", {
4720 get: function () {
4721 if (!this.primaryOptions && !this.secondaryOptions) {
4722 return undefined;
4723 }
4724 return {
4725 primary: this.primaryOptions,
4726 secondary: this.secondaryOptions,
4727 };
4728 },
4729 enumerable: true,
4730 configurable: true
4731 });
4732 Object.defineProperty(TitleBar.prototype, "options", {
4733 get: function () {
4734 return {
4735 breadcrumbs: this.breadcrumbsOption,
4736 buttons: this.buttonsOptions,
4737 title: this.title,
4738 };
4739 },
4740 enumerable: true,
4741 configurable: true
4742 });
4743 Object.defineProperty(TitleBar.prototype, "payload", {
4744 get: function () {
4745 return __assign({}, this.options, { breadcrumbs: this.breadcrumb, buttons: this.buttons, id: this.id });
4746 },
4747 enumerable: true,
4748 configurable: true
4749 });
4750 TitleBar.prototype.set = function (options, shouldUpdate) {
4751 if (shouldUpdate === void 0) { shouldUpdate = true; }
4752 var mergedOptions = helper_1.getMergedProps(this.options, options);
4753 var title = mergedOptions.title, buttons = mergedOptions.buttons, breadcrumbs = mergedOptions.breadcrumbs;
4754 this.title = title;
4755 this.setBreadcrumbs(breadcrumbs);
4756 this.setPrimaryButton(buttons ? buttons.primary : undefined);
4757 this.setSecondaryButton(buttons ? buttons.secondary : undefined);
4758 if (shouldUpdate) {
4759 this.dispatch(types_2.Action.UPDATE);
4760 }
4761 return this;
4762 };
4763 TitleBar.prototype.dispatch = function (action) {
4764 switch (action) {
4765 case types_2.Action.UPDATE:
4766 this.app.dispatch(update(this.payload));
4767 break;
4768 }
4769 return this;
4770 };
4771 TitleBar.prototype.getButton = function (button, subgroups, updateCb) {
4772 if (button instanceof ButtonGroup_1.ButtonGroup) {
4773 return buttonGroupHelper_1.getGroupedButton(this, button, subgroups, updateCb);
4774 }
4775 return buttonHelper_1.getSingleButton(this, button, subgroups, updateCb);
4776 };
4777 TitleBar.prototype.updatePrimaryButton = function (newPayload) {
4778 if (!this.primary) {
4779 return;
4780 }
4781 if (helper_1.updateActionFromPayload(this.primary, newPayload)) {
4782 this.dispatch(types_2.Action.UPDATE);
4783 }
4784 };
4785 TitleBar.prototype.updateSecondaryButtons = function (newPayload) {
4786 if (!this.secondary) {
4787 return;
4788 }
4789 var buttonToUpdate = this.secondary.find(function (action) { return action.id === newPayload.id; });
4790 if (!buttonToUpdate) {
4791 return;
4792 }
4793 var updated = false;
4794 if (ButtonGroup_1.isGroupedButtonPayload(newPayload)) {
4795 updated = helper_1.updateActionFromPayload(buttonToUpdate, newPayload);
4796 }
4797 else {
4798 updated = helper_1.updateActionFromPayload(buttonToUpdate, newPayload);
4799 }
4800 if (updated) {
4801 this.dispatch(types_2.Action.UPDATE);
4802 }
4803 };
4804 TitleBar.prototype.updateBreadcrumbButton = function (newPayload) {
4805 if (!this.breadcrumb) {
4806 return;
4807 }
4808 if (helper_1.updateActionFromPayload(this.breadcrumb, newPayload)) {
4809 this.dispatch(types_2.Action.UPDATE);
4810 }
4811 };
4812 TitleBar.prototype.setPrimaryButton = function (newOptions) {
4813 this.primaryOptions = this.getChildButton(newOptions, this.primaryOptions);
4814 this.primary = this.primaryOptions
4815 ? this.getButton(this.primaryOptions, TITLEBAR_BUTTON_PROPS.subgroups, this.updatePrimaryButton)
4816 : undefined;
4817 };
4818 TitleBar.prototype.setSecondaryButton = function (newOptions) {
4819 var _this = this;
4820 var newButtons = newOptions || [];
4821 var currentButtons = this.secondaryOptions || [];
4822 this.secondaryOptions = this.getUpdatedChildActions(newButtons, currentButtons);
4823 this.secondary = this.secondaryOptions
4824 ? this.secondaryOptions.map(function (action) {
4825 return _this.getButton(action, TITLEBAR_BUTTON_PROPS.subgroups, _this.updateSecondaryButtons);
4826 })
4827 : undefined;
4828 };
4829 TitleBar.prototype.setBreadcrumbs = function (breadcrumb) {
4830 this.breadcrumbsOption = this.getChildButton(breadcrumb, this.breadcrumbsOption);
4831 this.breadcrumb = this.breadcrumbsOption
4832 ? this.getButton(this.breadcrumbsOption, BREADCRUMB_BUTTON_PROPS.subgroups, this.updateBreadcrumbButton)
4833 : undefined;
4834 };
4835 TitleBar.prototype.getChildButton = function (newAction, currentAction) {
4836 var newButtons = newAction ? [newAction] : [];
4837 var currentButtons = currentAction ? [currentAction] : [];
4838 var updatedButton = this.getUpdatedChildActions(newButtons, currentButtons);
4839 return updatedButton ? updatedButton[0] : undefined;
4840 };
4841 return TitleBar;
4842}(helper_1.ActionSetWithChildren));
4843exports.TitleBar = TitleBar;
4844function create(app, options) {
4845 return new TitleBar(app, options);
4846}
4847exports.create = create;
4848
4849
4850/***/ }),
4851/* 73 */
4852/***/ (function(module, exports, __webpack_require__) {
4853
4854"use strict";
4855
4856Object.defineProperty(exports, "__esModule", { value: true });
4857var ButtonGroup_1 = __webpack_require__(7);
4858function getGroupedButton(action, button, subgroups, updateCb) {
4859 action.addChild(button, action.group, subgroups);
4860 var id = button.id, label = button.label, disabled = button.disabled, buttons = button.buttons;
4861 action.subscribeToChild(button, ButtonGroup_1.Action.UPDATE, updateCb);
4862 return { id: id, label: label, buttons: buttons, disabled: disabled };
4863}
4864exports.getGroupedButton = getGroupedButton;
4865
4866
4867/***/ }),
4868/* 74 */
4869/***/ (function(module, exports, __webpack_require__) {
4870
4871"use strict";
4872
4873var __extends = (this && this.__extends) || (function () {
4874 var extendStatics = function (d, b) {
4875 extendStatics = Object.setPrototypeOf ||
4876 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4877 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
4878 return extendStatics(d, b);
4879 };
4880 return function (d, b) {
4881 extendStatics(d, b);
4882 function __() { this.constructor = d; }
4883 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4884 };
4885})();
4886var __assign = (this && this.__assign) || function () {
4887 __assign = Object.assign || function(t) {
4888 for (var s, i = 1, n = arguments.length; i < n; i++) {
4889 s = arguments[i];
4890 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
4891 t[p] = s[p];
4892 }
4893 return t;
4894 };
4895 return __assign.apply(this, arguments);
4896};
4897Object.defineProperty(exports, "__esModule", { value: true });
4898var types_1 = __webpack_require__(1);
4899var helper_1 = __webpack_require__(0);
4900/**
4901 * Types
4902 */
4903/**
4904 * @public
4905 */
4906var ActionType;
4907(function (ActionType) {
4908 ActionType["SHOW"] = "APP::SHARE::SHOW";
4909 ActionType["CLOSE"] = "APP::SHARE::CLOSE";
4910})(ActionType = exports.ActionType || (exports.ActionType = {}));
4911/**
4912 * @public
4913 */
4914var Action;
4915(function (Action) {
4916 Action["SHOW"] = "SHOW";
4917 Action["CLOSE"] = "CLOSE";
4918})(Action = exports.Action || (exports.Action = {}));
4919/**
4920 * Action
4921 */
4922/**
4923 * A set of actions for displaying a Share Sheet component
4924 * @public
4925 */
4926var Share = /** @class */ (function (_super) {
4927 __extends(Share, _super);
4928 function Share(app) {
4929 return _super.call(this, app, types_1.Group.Share, types_1.Group.Share) || this;
4930 }
4931 /**
4932 * @public
4933 */
4934 Share.prototype.dispatch = function (action, payload) {
4935 switch (action) {
4936 case Action.SHOW:
4937 this.dispatchShareAction(ActionType.SHOW, payload);
4938 break;
4939 default:
4940 throw "Action: " + action + " not supported";
4941 }
4942 return this;
4943 };
4944 /**
4945 * @internal
4946 */
4947 Share.prototype.dispatchShareAction = function (actionType, payload) {
4948 this.app.dispatch(helper_1.actionWrapper({
4949 type: actionType,
4950 group: types_1.Group.Share,
4951 payload: __assign({ id: this.id }, payload),
4952 }));
4953 };
4954 return Share;
4955}(helper_1.ActionSet));
4956exports.Share = Share;
4957/**
4958 * @public
4959 */
4960function create(app) {
4961 return new Share(app);
4962}
4963exports.create = create;
4964
4965
4966/***/ }),
4967/* 75 */
4968/***/ (function(module, exports, __webpack_require__) {
4969
4970"use strict";
4971
4972function __export(m) {
4973 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
4974}
4975Object.defineProperty(exports, "__esModule", { value: true });
4976__export(__webpack_require__(76));
4977
4978
4979/***/ }),
4980/* 76 */
4981/***/ (function(module, exports, __webpack_require__) {
4982
4983"use strict";
4984
4985var __extends = (this && this.__extends) || (function () {
4986 var extendStatics = function (d, b) {
4987 extendStatics = Object.setPrototypeOf ||
4988 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4989 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
4990 return extendStatics(d, b);
4991 };
4992 return function (d, b) {
4993 extendStatics(d, b);
4994 function __() { this.constructor = d; }
4995 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4996 };
4997})();
4998var __assign = (this && this.__assign) || function () {
4999 __assign = Object.assign || function(t) {
5000 for (var s, i = 1, n = arguments.length; i < n; i++) {
5001 s = arguments[i];
5002 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
5003 t[p] = s[p];
5004 }
5005 return t;
5006 };
5007 return __assign.apply(this, arguments);
5008};
5009Object.defineProperty(exports, "__esModule", { value: true });
5010var AppLink_1 = __webpack_require__(11);
5011var helper_1 = __webpack_require__(0);
5012var types_1 = __webpack_require__(1);
5013var SUBGROUPS = ['Navigation_Menu'];
5014var Action;
5015(function (Action) {
5016 Action["UPDATE"] = "UPDATE";
5017 Action["LINK_UPDATE"] = "LINK::UPDATE";
5018})(Action = exports.Action || (exports.Action = {}));
5019var ActionType;
5020(function (ActionType) {
5021 ActionType["UPDATE"] = "APP::MENU::NAVIGATION_MENU::UPDATE";
5022 ActionType["LINK_UPDATE"] = "APP::MENU::NAVIGATION_MENU::LINK::UPDATE";
5023})(ActionType = exports.ActionType || (exports.ActionType = {}));
5024function update(payload) {
5025 return helper_1.actionWrapper({
5026 payload: payload,
5027 group: types_1.Group.Menu,
5028 type: ActionType.UPDATE,
5029 });
5030}
5031exports.update = update;
5032var NavigationMenu = /** @class */ (function (_super) {
5033 __extends(NavigationMenu, _super);
5034 function NavigationMenu(app, options) {
5035 var _this = _super.call(this, app, 'Navigation_Menu', types_1.Group.Menu) || this;
5036 _this.items = [];
5037 // Trigger 'update' on creation
5038 _this.set(options);
5039 return _this;
5040 }
5041 Object.defineProperty(NavigationMenu.prototype, "options", {
5042 get: function () {
5043 return {
5044 items: this.itemsOptions,
5045 active: this.activeOptions,
5046 };
5047 },
5048 enumerable: true,
5049 configurable: true
5050 });
5051 Object.defineProperty(NavigationMenu.prototype, "payload", {
5052 get: function () {
5053 return __assign({}, this.options, { active: this.active, items: this.items, id: this.id });
5054 },
5055 enumerable: true,
5056 configurable: true
5057 });
5058 NavigationMenu.prototype.set = function (options, shouldUpdate) {
5059 if (shouldUpdate === void 0) { shouldUpdate = true; }
5060 var mergedOptions = helper_1.getMergedProps(this.options, options);
5061 var items = mergedOptions.items, active = mergedOptions.active;
5062 this.setItems(items);
5063 this.activeOptions = active;
5064 this.active = active && active.id;
5065 if (shouldUpdate) {
5066 this.dispatch(Action.UPDATE);
5067 }
5068 return this;
5069 };
5070 NavigationMenu.prototype.dispatch = function (action) {
5071 switch (action) {
5072 case Action.UPDATE:
5073 this.app.dispatch(update(this.payload));
5074 break;
5075 }
5076 return this;
5077 };
5078 NavigationMenu.prototype.updateItem = function (newPayload) {
5079 if (!this.items) {
5080 return;
5081 }
5082 var itemToUpdate = this.items.find(function (action) { return action.id === newPayload.id; });
5083 if (!itemToUpdate) {
5084 return;
5085 }
5086 if (helper_1.updateActionFromPayload(itemToUpdate, newPayload)) {
5087 this.dispatch(Action.UPDATE);
5088 }
5089 };
5090 NavigationMenu.prototype.setItems = function (newOptions) {
5091 var _this = this;
5092 var newItems = newOptions || [];
5093 var currentItems = this.itemsOptions || [];
5094 this.itemsOptions = this.getUpdatedChildActions(newItems, currentItems);
5095 this.items = this.itemsOptions
5096 ? this.itemsOptions.map(function (action) {
5097 _this.addChild(action, _this.group, SUBGROUPS);
5098 _this.subscribeToChild(action, AppLink_1.Action.UPDATE, _this.updateItem);
5099 return action.payload;
5100 })
5101 : [];
5102 };
5103 return NavigationMenu;
5104}(helper_1.ActionSetWithChildren));
5105exports.NavigationMenu = NavigationMenu;
5106function create(app, options) {
5107 return new NavigationMenu(app, options);
5108}
5109exports.create = create;
5110
5111
5112/***/ }),
5113/* 77 */
5114/***/ (function(module, exports, __webpack_require__) {
5115
5116"use strict";
5117
5118function __export(m) {
5119 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
5120}
5121Object.defineProperty(exports, "__esModule", { value: true });
5122__export(__webpack_require__(78));
5123
5124
5125/***/ }),
5126/* 78 */
5127/***/ (function(module, exports, __webpack_require__) {
5128
5129"use strict";
5130
5131var __extends = (this && this.__extends) || (function () {
5132 var extendStatics = function (d, b) {
5133 extendStatics = Object.setPrototypeOf ||
5134 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5135 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
5136 return extendStatics(d, b);
5137 };
5138 return function (d, b) {
5139 extendStatics(d, b);
5140 function __() { this.constructor = d; }
5141 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
5142 };
5143})();
5144var __assign = (this && this.__assign) || function () {
5145 __assign = Object.assign || function(t) {
5146 for (var s, i = 1, n = arguments.length; i < n; i++) {
5147 s = arguments[i];
5148 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
5149 t[p] = s[p];
5150 }
5151 return t;
5152 };
5153 return __assign.apply(this, arguments);
5154};
5155Object.defineProperty(exports, "__esModule", { value: true });
5156var AppLink_1 = __webpack_require__(11);
5157var helper_1 = __webpack_require__(0);
5158var types_1 = __webpack_require__(1);
5159var SUBGROUPS = ['Channel_Menu'];
5160var Action;
5161(function (Action) {
5162 Action["UPDATE"] = "UPDATE";
5163 Action["LINK_UPDATE"] = "LINK::UPDATE";
5164})(Action = exports.Action || (exports.Action = {}));
5165var ActionType;
5166(function (ActionType) {
5167 ActionType["UPDATE"] = "APP::MENU::CHANNEL_MENU::UPDATE";
5168 ActionType["LINK_UPDATE"] = "APP::MENU::CHANNEL_MENU::LINK::UPDATE";
5169})(ActionType = exports.ActionType || (exports.ActionType = {}));
5170function update(payload) {
5171 return helper_1.actionWrapper({
5172 payload: payload,
5173 group: types_1.Group.Menu,
5174 type: ActionType.UPDATE,
5175 });
5176}
5177exports.update = update;
5178var ChannelMenu = /** @class */ (function (_super) {
5179 __extends(ChannelMenu, _super);
5180 function ChannelMenu(app, options) {
5181 var _this = _super.call(this, app, 'Channel_Menu', types_1.Group.Menu) || this;
5182 _this.items = [];
5183 // Trigger 'update' on creation
5184 _this.set(options);
5185 return _this;
5186 }
5187 Object.defineProperty(ChannelMenu.prototype, "options", {
5188 get: function () {
5189 return {
5190 items: this.itemsOptions,
5191 active: this.activeOptions,
5192 };
5193 },
5194 enumerable: true,
5195 configurable: true
5196 });
5197 Object.defineProperty(ChannelMenu.prototype, "payload", {
5198 get: function () {
5199 return __assign({}, this.options, { active: this.active, items: this.items, id: this.id });
5200 },
5201 enumerable: true,
5202 configurable: true
5203 });
5204 ChannelMenu.prototype.set = function (options, shouldUpdate) {
5205 if (shouldUpdate === void 0) { shouldUpdate = true; }
5206 var mergedOptions = helper_1.getMergedProps(this.options, options);
5207 var items = mergedOptions.items, active = mergedOptions.active;
5208 this.setItems(items);
5209 this.activeOptions = active;
5210 this.active = active && active.id;
5211 if (shouldUpdate) {
5212 this.dispatch(Action.UPDATE);
5213 }
5214 return this;
5215 };
5216 ChannelMenu.prototype.dispatch = function (action) {
5217 switch (action) {
5218 case Action.UPDATE:
5219 this.app.dispatch(update(this.payload));
5220 break;
5221 }
5222 return this;
5223 };
5224 ChannelMenu.prototype.updateItem = function (newPayload) {
5225 if (!this.items) {
5226 return;
5227 }
5228 var itemToUpdate = this.items.find(function (action) { return action.id === newPayload.id; });
5229 if (!itemToUpdate) {
5230 return;
5231 }
5232 if (helper_1.updateActionFromPayload(itemToUpdate, newPayload)) {
5233 this.dispatch(Action.UPDATE);
5234 }
5235 };
5236 ChannelMenu.prototype.setItems = function (newOptions) {
5237 var _this = this;
5238 var newItems = newOptions || [];
5239 var currentItems = this.itemsOptions || [];
5240 this.itemsOptions = this.getUpdatedChildActions(newItems, currentItems);
5241 this.items = this.itemsOptions
5242 ? this.itemsOptions.map(function (action) {
5243 _this.addChild(action, _this.group, SUBGROUPS);
5244 _this.subscribeToChild(action, AppLink_1.Action.UPDATE, _this.updateItem);
5245 return action.payload;
5246 })
5247 : [];
5248 };
5249 return ChannelMenu;
5250}(helper_1.ActionSetWithChildren));
5251exports.ChannelMenu = ChannelMenu;
5252function create(app, options) {
5253 return new ChannelMenu(app, options);
5254}
5255exports.create = create;
5256
5257
5258/***/ }),
5259/* 79 */
5260/***/ (function(module, exports, __webpack_require__) {
5261
5262"use strict";
5263
5264var __extends = (this && this.__extends) || (function () {
5265 var extendStatics = function (d, b) {
5266 extendStatics = Object.setPrototypeOf ||
5267 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5268 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
5269 return extendStatics(d, b);
5270 };
5271 return function (d, b) {
5272 extendStatics(d, b);
5273 function __() { this.constructor = d; }
5274 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
5275 };
5276})();
5277Object.defineProperty(exports, "__esModule", { value: true });
5278var helper_1 = __webpack_require__(0);
5279var types_1 = __webpack_require__(1);
5280var Action;
5281(function (Action) {
5282 Action["CLOSE"] = "CLOSE";
5283})(Action = exports.Action || (exports.Action = {}));
5284/**
5285 * Pos action type enum
5286 * @remarks includes the action prefix and group
5287 *
5288 */
5289var ActionType;
5290(function (ActionType) {
5291 ActionType["CLOSE"] = "APP::POS::CLOSE";
5292 ActionType["LOCATION_UPDATE"] = "APP::POS::LOCATION::UPDATE";
5293 ActionType["USER_UPDATE"] = "APP::POS::USER::UPDATE";
5294 ActionType["DEVICE_UPDATE"] = "APP::POS::DEVICE::UPDATE";
5295})(ActionType = exports.ActionType || (exports.ActionType = {}));
5296function close() {
5297 return helper_1.actionWrapper({
5298 group: types_1.Group.Pos,
5299 type: ActionType.CLOSE,
5300 });
5301}
5302exports.close = close;
5303var Pos = /** @class */ (function (_super) {
5304 __extends(Pos, _super);
5305 function Pos(app) {
5306 return _super.call(this, app, types_1.Group.Pos, types_1.Group.Pos) || this;
5307 }
5308 Pos.prototype.dispatch = function (action) {
5309 switch (action) {
5310 case ActionType.CLOSE:
5311 this.app.dispatch(close());
5312 break;
5313 }
5314 return this;
5315 };
5316 return Pos;
5317}(helper_1.ActionSet));
5318exports.Pos = Pos;
5319function create(app) {
5320 return new Pos(app);
5321}
5322exports.create = create;
5323
5324
5325/***/ }),
5326/* 80 */
5327/***/ (function(module, exports, __webpack_require__) {
5328
5329"use strict";
5330
5331Object.defineProperty(exports, "__esModule", { value: true });
5332var validator_1 = __webpack_require__(81);
5333exports.default = validator_1.validatorMiddleware;
5334
5335
5336/***/ }),
5337/* 81 */
5338/***/ (function(module, exports, __webpack_require__) {
5339
5340"use strict";
5341
5342Object.defineProperty(exports, "__esModule", { value: true });
5343var client_1 = __webpack_require__(19);
5344var actions_1 = __webpack_require__(6);
5345var Error_1 = __webpack_require__(5);
5346var actions_2 = __webpack_require__(84);
5347var type_validate_1 = __webpack_require__(2);
5348var utils_1 = __webpack_require__(3);
5349var helper_1 = __webpack_require__(0);
5350function updateValidator(localOrigin, group, options) {
5351 switch (group) {
5352 case actions_1.Group.Button:
5353 return actions_2.Button.validateProps(options);
5354 case actions_1.Group.ButtonGroup:
5355 return actions_2.ButtonGroup.validateProps(options);
5356 case actions_1.Group.Modal:
5357 return actions_2.Modal.validateProps(options, localOrigin);
5358 case actions_1.Group.Menu:
5359 return actions_2.Menu.validateProps(options);
5360 case actions_1.Group.Link:
5361 return actions_2.Link.validateProps(options);
5362 case actions_1.Group.TitleBar:
5363 return actions_2.TitleBar.validateProps(options);
5364 case actions_1.Group.ResourcePicker:
5365 return actions_2.ResourcePicker.validateProps(options);
5366 case actions_1.Group.Toast:
5367 return actions_2.Toast.validateProps(options);
5368 case actions_1.Group.ContextualSaveBar:
5369 return actions_2.ContextualSaveBar.validateProps(options);
5370 }
5371}
5372function dispatchPayloadValidator(action, localOrigin) {
5373 switch (action.group) {
5374 case actions_1.Group.Button:
5375 return actions_2.Button.validateAction(action);
5376 case actions_1.Group.ButtonGroup:
5377 return actions_2.ButtonGroup.validateAction(action);
5378 case actions_1.Group.Modal:
5379 return actions_2.Modal.validateAction(action, localOrigin);
5380 case actions_1.Group.Menu:
5381 return actions_2.Menu.validateAction(action);
5382 case actions_1.Group.TitleBar:
5383 return actions_2.TitleBar.validateAction(action);
5384 case actions_1.Group.ResourcePicker:
5385 return actions_2.ResourcePicker.validateAction(action);
5386 case actions_1.Group.Loading:
5387 return actions_2.Loading.validateAction(action);
5388 case actions_1.Group.Toast:
5389 return actions_2.Toast.validateAction(action);
5390 case actions_1.Group.Cart:
5391 return actions_2.Cart.validateAction(action);
5392 case actions_1.Group.Navigation:
5393 return actions_2.Navigation.validateAction(action);
5394 case actions_1.Group.Print:
5395 return actions_2.Print.validateAction(action);
5396 case actions_1.Group.Scanner:
5397 return actions_2.Scanner.validateAction(action);
5398 case actions_1.Group.Fullscreen:
5399 return actions_2.Fullscreen.validateAction(action);
5400 case actions_1.Group.ContextualSaveBar:
5401 return actions_2.ContextualSaveBar.validateAction(action);
5402 case actions_1.Group.Link:
5403 return actions_2.Link.validateAction(action);
5404 }
5405}
5406function dispatchValidator(action, origin) {
5407 var errors = type_validate_1.validate(action, type_validate_1.matchesObject({
5408 group: type_validate_1.matchesEnum(actions_1.Group, {
5409 message: function (_, value) { return "Unknown or unsupported action group `" + value + "`"; },
5410 }),
5411 version: type_validate_1.matchesString(),
5412 }));
5413 if (errors) {
5414 return Error_1.invalidAction(action, utils_1.actionMessage(errors));
5415 }
5416 var payloadErrors = dispatchPayloadValidator(action, origin);
5417 return payloadErrors ? Error_1.invalidPayload(action, utils_1.actionMessage(payloadErrors)) : action;
5418}
5419exports.connectValidatorToUpdateHook = function (next) {
5420 return function (options) {
5421 var args = [];
5422 for (var _i = 1; _i < arguments.length; _i++) {
5423 args[_i - 1] = arguments[_i];
5424 }
5425 // The group should be staticly set to the default initial group as certain components
5426 // (ex. Button and ButtonGroup) can be dynamically grouped under a new group (ex. TitleBar)
5427 // We accept partial options so the validator should be called on merged new and old options
5428 var mergedOptions = helper_1.getMergedProps(this.options, options);
5429 var errors = updateValidator(this.app.localOrigin, this.defaultGroup, mergedOptions);
5430 if (errors) {
5431 throw Error_1.fromAction(utils_1.actionMessage(errors), Error_1.ActionType.INVALID_OPTIONS);
5432 }
5433 return next.apply(void 0, [options].concat(args));
5434 };
5435};
5436exports.connectValidatorToDispatchHook = function (next) {
5437 return function (action) {
5438 var finalAction = dispatchValidator(action, this.localOrigin);
5439 return next(finalAction);
5440 };
5441};
5442exports.validatorMiddleware = function (hooks) {
5443 hooks.set(client_1.LifecycleHook.UpdateAction, exports.connectValidatorToUpdateHook);
5444 hooks.set(client_1.LifecycleHook.DispatchAction, exports.connectValidatorToDispatchHook);
5445};
5446
5447
5448/***/ }),
5449/* 82 */
5450/***/ (function(module, exports, __webpack_require__) {
5451
5452"use strict";
5453
5454Object.defineProperty(exports, "__esModule", { value: true });
5455var redirect_1 = __webpack_require__(20);
5456function isRunningOniOS() {
5457 return navigator.userAgent.indexOf('iOS') >= 0;
5458}
5459function createHiddenInput() {
5460 var currentWindow = redirect_1.getWindow();
5461 if (!currentWindow || !currentWindow.document || !currentWindow.document.body) {
5462 return;
5463 }
5464 var inputElement = window.document.createElement('input');
5465 inputElement.style.display = 'none';
5466 window.document.body.appendChild(inputElement);
5467 return inputElement;
5468}
5469function printWindow() {
5470 if (!redirect_1.getWindow()) {
5471 return;
5472 }
5473 // @ts-ignore: Fixed in TypeScript 2.8.2
5474 window.print();
5475}
5476function handleMobileAppPrint() {
5477 var input = createHiddenInput();
5478 if (!input) {
5479 return;
5480 }
5481 input.select();
5482 printWindow();
5483 input.remove();
5484}
5485function handleAppPrint() {
5486 if (isRunningOniOS()) {
5487 handleMobileAppPrint();
5488 }
5489 else {
5490 printWindow();
5491 }
5492}
5493exports.handleAppPrint = handleAppPrint;
5494
5495
5496/***/ }),
5497/* 83 */
5498/***/ (function(module, exports, __webpack_require__) {
5499
5500"use strict";
5501
5502Object.defineProperty(exports, "__esModule", { value: true });
5503var collection_1 = __webpack_require__(9);
5504/**
5505 * Shopify App Bridge can be extended with hooks, which run when actions are dispatched and updated.
5506 * Hooks are middleware functions that can modify or cancel actions.
5507 *
5508 * The [validation middleware](../validate/README.md) is implemented using hooks.
5509 *
5510 * @remarks
5511 * Here’s an example hook that modifies all Toast show actions to have a duration of five seconds.
5512 *
5513 * ```ts
5514 * import createApp, {LifecycleHook, DispatchActionHook} from '@shopify/app-bridge';
5515 * import {Toast} from '@shopify/app-bridge/actions'
5516 *
5517 * const app = createApp({apiKey: API_KEY, shopOrigin: SHOP_ORIGIN});
5518 *
5519 * function makeToastsFiveSeconds: DispatchActionHook(next) {
5520 * return function(action){
5521 * if(action.type === Toast.ActionType.SHOW) {
5522 * const modifiedAction = {
5523 * ...action,
5524 * payload: {
5525 * ...action.payload,
5526 * duration: 5000,
5527 * },
5528 * };
5529 * return next(modifiedAction);
5530 * } else {
5531 * // don’t modify non-Toast actions
5532 * return next(action);
5533 * }
5534 * }
5535 * }
5536 *
5537 * app.hooks.set(LifecycleHook.DispatchAction, makeToastsFiveSeconds);
5538 * ```
5539 *
5540 * The hook function `makeToastsFiveSeconds()` takes a `next()` function as its argument.
5541 * The hook function returns an anonymous function, which takes the action being dispatched as its argument.
5542 *
5543 * To modify an action, call `next()` with the modified action, as in the example.
5544 * To cancel an action, don’t call `next()`, and the action will not be dispatched.
5545 */
5546var Hooks = /** @class */ (function () {
5547 function Hooks() {
5548 this.map = {};
5549 }
5550 Hooks.prototype.set = function (hook, handler) {
5551 if (!this.map.hasOwnProperty(hook)) {
5552 this.map[hook] = [];
5553 }
5554 var value = { handler: handler, remove: function () { } };
5555 var remove = collection_1.addAndRemoveFromCollection(this.map[hook], value);
5556 value = { handler: handler, remove: remove };
5557 return remove;
5558 };
5559 Hooks.prototype.get = function (hook) {
5560 var value = this.map[hook];
5561 return value ? value.map(function (val) { return val.handler; }) : undefined;
5562 };
5563 Hooks.prototype.run = function (hook, final, context) {
5564 var initialArgs = [];
5565 for (var _i = 3; _i < arguments.length; _i++) {
5566 initialArgs[_i - 3] = arguments[_i];
5567 }
5568 var index = 0;
5569 var handlers = this.get(hook) || [];
5570 function handler() {
5571 var args = [];
5572 for (var _i = 0; _i < arguments.length; _i++) {
5573 args[_i] = arguments[_i];
5574 }
5575 var childHandler = handlers[index++];
5576 if (childHandler) {
5577 return childHandler(handler).apply(context, args);
5578 }
5579 return final.apply(context, args);
5580 }
5581 return handler.apply(context, initialArgs);
5582 };
5583 return Hooks;
5584}());
5585exports.default = Hooks;
5586
5587
5588/***/ }),
5589/* 84 */
5590/***/ (function(module, exports, __webpack_require__) {
5591
5592"use strict";
5593
5594var __importStar = (this && this.__importStar) || function (mod) {
5595 if (mod && mod.__esModule) return mod;
5596 var result = {};
5597 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
5598 result["default"] = mod;
5599 return result;
5600};
5601Object.defineProperty(exports, "__esModule", { value: true });
5602var Button = __importStar(__webpack_require__(12));
5603exports.Button = Button;
5604var Scanner = __importStar(__webpack_require__(85));
5605exports.Scanner = Scanner;
5606var Cart = __importStar(__webpack_require__(86));
5607exports.Cart = Cart;
5608var ContextualSaveBar = __importStar(__webpack_require__(87));
5609exports.ContextualSaveBar = ContextualSaveBar;
5610var Fullscreen = __importStar(__webpack_require__(88));
5611exports.Fullscreen = Fullscreen;
5612var Loading = __importStar(__webpack_require__(89));
5613exports.Loading = Loading;
5614var Modal = __importStar(__webpack_require__(90));
5615exports.Modal = Modal;
5616var Navigation = __importStar(__webpack_require__(92));
5617exports.Navigation = Navigation;
5618var Print = __importStar(__webpack_require__(93));
5619exports.Print = Print;
5620var ButtonGroup = __importStar(__webpack_require__(46));
5621exports.ButtonGroup = ButtonGroup;
5622var ResourcePicker = __importStar(__webpack_require__(94));
5623exports.ResourcePicker = ResourcePicker;
5624var Toast = __importStar(__webpack_require__(95));
5625exports.Toast = Toast;
5626var TitleBar = __importStar(__webpack_require__(96));
5627exports.TitleBar = TitleBar;
5628var Menu = __importStar(__webpack_require__(97));
5629exports.Menu = Menu;
5630var Link = __importStar(__webpack_require__(47));
5631exports.Link = Link;
5632
5633
5634/***/ }),
5635/* 85 */
5636/***/ (function(module, exports, __webpack_require__) {
5637
5638"use strict";
5639
5640Object.defineProperty(exports, "__esModule", { value: true });
5641var Scanner_1 = __webpack_require__(39);
5642exports.ActionType = Scanner_1.ActionType;
5643var type_validate_1 = __webpack_require__(2);
5644var utils_1 = __webpack_require__(3);
5645function validateAction(action) {
5646 return type_validate_1.validate(action, utils_1.createActionValidator(Scanner_1.ActionType));
5647}
5648exports.validateAction = validateAction;
5649
5650
5651/***/ }),
5652/* 86 */
5653/***/ (function(module, exports, __webpack_require__) {
5654
5655"use strict";
5656
5657Object.defineProperty(exports, "__esModule", { value: true });
5658var Cart_1 = __webpack_require__(26);
5659exports.ActionType = Cart_1.ActionType;
5660var type_validate_1 = __webpack_require__(2);
5661var utils_1 = __webpack_require__(3);
5662var addressSchema = type_validate_1.matchesObject({
5663 address1: type_validate_1.makeOptional(type_validate_1.matchesString()),
5664 address2: type_validate_1.makeOptional(type_validate_1.matchesString()),
5665 city: type_validate_1.makeOptional(type_validate_1.matchesString()),
5666 company: type_validate_1.makeOptional(type_validate_1.matchesString()),
5667 firstName: type_validate_1.makeOptional(type_validate_1.matchesString()),
5668 lastName: type_validate_1.makeOptional(type_validate_1.matchesString()),
5669 phone: type_validate_1.makeOptional(type_validate_1.matchesString()),
5670 province: type_validate_1.makeOptional(type_validate_1.matchesString()),
5671 country: type_validate_1.makeOptional(type_validate_1.matchesString()),
5672 zip: type_validate_1.makeOptional(type_validate_1.matchesString()),
5673 name: type_validate_1.makeOptional(type_validate_1.matchesString()),
5674 provinceCode: type_validate_1.makeOptional(type_validate_1.matchesString()),
5675 countryCode: type_validate_1.makeOptional(type_validate_1.matchesString()),
5676});
5677var discountSchema = type_validate_1.matchesObject({
5678 amount: type_validate_1.makeOptional(type_validate_1.matchesPositiveInteger()),
5679 discountDescription: type_validate_1.makeOptional(type_validate_1.matchesString()),
5680 type: type_validate_1.makeOptional(type_validate_1.matchesString()),
5681 discountCode: type_validate_1.makeOptional(type_validate_1.matchesString()),
5682});
5683var discountAmount = type_validate_1.matchesObject({
5684 amount: type_validate_1.matchesPositiveNumber(),
5685 discountDescription: type_validate_1.makeOptional(type_validate_1.matchesString()),
5686 type: type_validate_1.makeOptional(type_validate_1.matchesString()),
5687});
5688var discountCode = type_validate_1.matchesObject({
5689 discountCode: type_validate_1.matchesString(),
5690});
5691var lineItemSchema = type_validate_1.matchesObject({
5692 price: type_validate_1.makeOptional(type_validate_1.matchesPositiveNumber()),
5693 quantity: type_validate_1.makeOptional(type_validate_1.matchesPositiveInteger()),
5694 title: type_validate_1.makeOptional(type_validate_1.matchesString()),
5695 variantId: type_validate_1.makeOptional(type_validate_1.matchesPositiveInteger()),
5696 discount: type_validate_1.makeOptional(discountAmount),
5697});
5698var updateLineItemSchema = type_validate_1.matchesObject({
5699 quantity: type_validate_1.matchesPositiveInteger(),
5700});
5701var customerSchema = type_validate_1.matchesObject({
5702 id: type_validate_1.makeOptional(type_validate_1.matchesPositiveInteger()),
5703 email: type_validate_1.makeOptional(type_validate_1.matchesString()),
5704 firstName: type_validate_1.makeOptional(type_validate_1.matchesString()),
5705 lastName: type_validate_1.makeOptional(type_validate_1.matchesString()),
5706 note: type_validate_1.makeOptional(type_validate_1.matchesString()),
5707 addresses: type_validate_1.makeOptional(type_validate_1.matchesArray(addressSchema)),
5708});
5709var noteSchema = type_validate_1.matchesObject({
5710 name: type_validate_1.matchesString(),
5711 value: type_validate_1.matchesString(),
5712});
5713var cartSchema = type_validate_1.matchesObject({
5714 cartDiscount: type_validate_1.makeOptional(discountSchema),
5715 customer: type_validate_1.makeOptional(customerSchema),
5716 grandTotal: type_validate_1.makeOptional(type_validate_1.matchesString()),
5717 lineItems: type_validate_1.makeOptional(type_validate_1.matchesArray(lineItemSchema)),
5718 noteAttributes: type_validate_1.makeOptional(type_validate_1.matchesArray(noteSchema)),
5719 subTotal: type_validate_1.makeOptional(type_validate_1.matchesString()),
5720 taxTotal: type_validate_1.makeOptional(type_validate_1.matchesString()),
5721});
5722var propertiesSchema = type_validate_1.composeSchemas(type_validate_1.matchesObject({}), function (value) {
5723 var validator = type_validate_1.matchesString();
5724 var schema = Object.keys(value).reduce(function (acc, key) {
5725 acc[key] = validator;
5726 return acc;
5727 }, {});
5728 return type_validate_1.validate(value, type_validate_1.matchesObject(schema));
5729});
5730var matchesStringArray = type_validate_1.matchesArray(type_validate_1.matchesString());
5731function createDataValidator(data) {
5732 return utils_1.createActionValidator(Cart_1.ActionType, data ? type_validate_1.matchesObject({ data: data }) : undefined, true, true);
5733}
5734function createDataValidatorWithIndex(data) {
5735 var indexSchema = type_validate_1.matchesObject({ index: type_validate_1.matchesPositiveInteger() });
5736 if (data) {
5737 var dataSchema = type_validate_1.matchesObject({ data: data });
5738 return utils_1.createActionValidator(Cart_1.ActionType, type_validate_1.composeSchemas(indexSchema, dataSchema), true, true);
5739 }
5740 return utils_1.createActionValidator(Cart_1.ActionType, indexSchema, true, true);
5741}
5742function getDiscountSchema(data) {
5743 if (data.amount) {
5744 return discountAmount;
5745 }
5746 return discountCode;
5747}
5748function validateAction(action) {
5749 switch (action.type) {
5750 case Cart_1.ActionType.UPDATE:
5751 return type_validate_1.validate(action, createDataValidator(cartSchema));
5752 case Cart_1.ActionType.SET_CUSTOMER:
5753 return type_validate_1.validate(action, createDataValidator(customerSchema));
5754 case Cart_1.ActionType.ADD_CUSTOMER_ADDRESS:
5755 return type_validate_1.validate(action, createDataValidator(addressSchema));
5756 case Cart_1.ActionType.UPDATE_CUSTOMER_ADDRESS:
5757 return type_validate_1.validate(action, createDataValidatorWithIndex(addressSchema));
5758 case Cart_1.ActionType.SET_DISCOUNT:
5759 return type_validate_1.validate(action, createDataValidator(getDiscountSchema(action.payload.data)));
5760 case Cart_1.ActionType.SET_PROPERTIES:
5761 return type_validate_1.validate(action, createDataValidator(propertiesSchema));
5762 case Cart_1.ActionType.REMOVE_PROPERTIES:
5763 return type_validate_1.validate(action, createDataValidator(matchesStringArray));
5764 case Cart_1.ActionType.ADD_LINE_ITEM:
5765 return type_validate_1.validate(action, createDataValidator(lineItemSchema));
5766 case Cart_1.ActionType.UPDATE_LINE_ITEM:
5767 return type_validate_1.validate(action, createDataValidatorWithIndex(updateLineItemSchema));
5768 case Cart_1.ActionType.REMOVE_LINE_ITEM:
5769 return type_validate_1.validate(action, createDataValidatorWithIndex());
5770 case Cart_1.ActionType.SET_LINE_ITEM_DISCOUNT:
5771 return type_validate_1.validate(action, createDataValidatorWithIndex(discountAmount));
5772 case Cart_1.ActionType.REMOVE_LINE_ITEM_DISCOUNT:
5773 return type_validate_1.validate(action, createDataValidatorWithIndex());
5774 case Cart_1.ActionType.SET_LINE_ITEM_PROPERTIES:
5775 return type_validate_1.validate(action, createDataValidatorWithIndex(propertiesSchema));
5776 case Cart_1.ActionType.REMOVE_LINE_ITEM_PROPERTIES:
5777 return type_validate_1.validate(action, createDataValidatorWithIndex(matchesStringArray));
5778 case Cart_1.ActionType.FETCH:
5779 case Cart_1.ActionType.REMOVE_CUSTOMER:
5780 case Cart_1.ActionType.REMOVE_DISCOUNT:
5781 case Cart_1.ActionType.CLEAR:
5782 default:
5783 return type_validate_1.validate(action, utils_1.createActionValidator(Cart_1.ActionType, undefined, false, true));
5784 }
5785}
5786exports.validateAction = validateAction;
5787
5788
5789/***/ }),
5790/* 87 */
5791/***/ (function(module, exports, __webpack_require__) {
5792
5793"use strict";
5794
5795Object.defineProperty(exports, "__esModule", { value: true });
5796var type_validate_1 = __webpack_require__(2);
5797var ContextualSaveBar_1 = __webpack_require__(43);
5798exports.ActionType = ContextualSaveBar_1.ActionType;
5799var utils_1 = __webpack_require__(3);
5800exports.contextSaveBarSchema = type_validate_1.makeOptional(type_validate_1.matchesObject({
5801 fullWidth: type_validate_1.makeOptional(type_validate_1.matchesBoolean()),
5802 discardAction: type_validate_1.makeOptional(type_validate_1.matchesObject({
5803 disabled: type_validate_1.makeOptional(type_validate_1.matchesBoolean()),
5804 discardConfirmationModal: type_validate_1.makeOptional(type_validate_1.matchesBoolean()),
5805 })),
5806 saveAction: type_validate_1.makeOptional(type_validate_1.matchesObject({
5807 disabled: type_validate_1.makeOptional(type_validate_1.matchesBoolean()),
5808 })),
5809}));
5810function validateProps(props) {
5811 return type_validate_1.validate(props, exports.contextSaveBarSchema);
5812}
5813exports.validateProps = validateProps;
5814function validateAction(action) {
5815 var validator = utils_1.createActionValidator(ContextualSaveBar_1.ActionType, exports.contextSaveBarSchema);
5816 return type_validate_1.validate(action, validator);
5817}
5818exports.validateAction = validateAction;
5819
5820
5821/***/ }),
5822/* 88 */
5823/***/ (function(module, exports, __webpack_require__) {
5824
5825"use strict";
5826
5827Object.defineProperty(exports, "__esModule", { value: true });
5828var Fullscreen_1 = __webpack_require__(29);
5829exports.ActionType = Fullscreen_1.ActionType;
5830var type_validate_1 = __webpack_require__(2);
5831var utils_1 = __webpack_require__(3);
5832/**
5833 * Performs validation for an fullscreen action
5834 * @param action the action being dispatched
5835 * @returns undefined or an array of validation errors
5836 *
5837 * @beta
5838 */
5839function validateAction(action) {
5840 var validator = utils_1.createActionValidator(Fullscreen_1.ActionType);
5841 return type_validate_1.validate(action, validator);
5842}
5843exports.validateAction = validateAction;
5844
5845
5846/***/ }),
5847/* 89 */
5848/***/ (function(module, exports, __webpack_require__) {
5849
5850"use strict";
5851
5852Object.defineProperty(exports, "__esModule", { value: true });
5853var Loading_1 = __webpack_require__(30);
5854exports.ActionType = Loading_1.ActionType;
5855var type_validate_1 = __webpack_require__(2);
5856var utils_1 = __webpack_require__(3);
5857function validateAction(action) {
5858 var validator = utils_1.createActionValidator(Loading_1.ActionType);
5859 return type_validate_1.validate(action, validator);
5860}
5861exports.validateAction = validateAction;
5862
5863
5864/***/ }),
5865/* 90 */
5866/***/ (function(module, exports, __webpack_require__) {
5867
5868"use strict";
5869
5870var __assign = (this && this.__assign) || function () {
5871 __assign = Object.assign || function(t) {
5872 for (var s, i = 1, n = arguments.length; i < n; i++) {
5873 s = arguments[i];
5874 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
5875 t[p] = s[p];
5876 }
5877 return t;
5878 };
5879 return __assign.apply(this, arguments);
5880};
5881Object.defineProperty(exports, "__esModule", { value: true });
5882var type_validate_1 = __webpack_require__(2);
5883var utils_1 = __webpack_require__(3);
5884var button_1 = __webpack_require__(12);
5885var Modal_1 = __webpack_require__(32);
5886exports.ActionType = Modal_1.ActionType;
5887var Button_1 = __webpack_require__(4);
5888var safe_redirect_1 = __webpack_require__(91);
5889function matchesSafeOrigin(value, localOrigin) {
5890 var hostName;
5891 try {
5892 hostName = new URL(localOrigin).hostname;
5893 }
5894 catch (error) {
5895 return [
5896 {
5897 error: 'invalid_app_origin',
5898 value: localOrigin,
5899 message: "Provided value for app origin: `" + localOrigin + "` is invalid",
5900 },
5901 ];
5902 }
5903 var isSafeSrc = safe_redirect_1.isSafe(value, {
5904 requireAbsolute: true,
5905 requireSSL: true,
5906 whitelist: [hostName],
5907 });
5908 if (!isSafeSrc) {
5909 return [
5910 {
5911 error: 'unsafe_origin',
5912 value: value,
5913 message: "Provided value is not whitelisted",
5914 },
5915 ];
5916 }
5917}
5918function matchesSize() {
5919 return function (value) {
5920 var values = [Modal_1.Size.Small, Modal_1.Size.Medium, Modal_1.Size.Large];
5921 if (values.includes(value)) {
5922 return;
5923 }
5924 var message = "expected:" + values.map(function (val) { return "`" + val + "`"; }).join(' or ');
5925 if (value === Modal_1.Size.Full) {
5926 message += ". Size `" + value + "` is deprecated as of version 1.6.5 and will fall back to size `medium`";
5927 }
5928 if (value === Modal_1.Size.Auto) {
5929 message += ". Size `" + value + "` is deprecated as of version 1.12.x and will fall back to size `medium`. Use the `setUpModalAutoSizing` utility from `app-bridge-utils` instead";
5930 }
5931 return [
5932 {
5933 error: 'invalid_enum_value',
5934 value: value,
5935 message: message,
5936 },
5937 ];
5938 };
5939}
5940function getModalSchema(props, localOrigin) {
5941 if (props === void 0) { props = {}; }
5942 var baseModalSchema = type_validate_1.matchesObject({
5943 title: type_validate_1.makeOptional(type_validate_1.matchesString()),
5944 footer: type_validate_1.makeOptional(type_validate_1.matchesObject({
5945 buttons: type_validate_1.matchesObject({
5946 primary: type_validate_1.makeOptional(button_1.buttonSchemaWithId),
5947 secondary: type_validate_1.makeOptional(type_validate_1.matchesArray(button_1.buttonSchemaWithId)),
5948 }),
5949 })),
5950 size: type_validate_1.makeOptional(matchesSize()),
5951 });
5952 if (Modal_1.isIframeModal(props)) {
5953 if (props.url) {
5954 var urlSchema = type_validate_1.matchesObject({
5955 url: type_validate_1.composeSchemas(type_validate_1.matchesString(), function (value) {
5956 return value.startsWith('https://')
5957 ? undefined
5958 : [
5959 {
5960 error: 'invalid_secure_url',
5961 value: value,
5962 message: 'expected string to start with `https://`',
5963 },
5964 ];
5965 }, function (value) { return (localOrigin ? matchesSafeOrigin(value, localOrigin) : undefined); }),
5966 });
5967 return type_validate_1.composeSchemas(baseModalSchema, urlSchema);
5968 }
5969 return type_validate_1.composeSchemas(baseModalSchema, utils_1.relativePathSchema);
5970 }
5971 return type_validate_1.composeSchemas(baseModalSchema, type_validate_1.matchesObject({ message: type_validate_1.matchesString() }));
5972}
5973function validateProps(props, localOrigin) {
5974 return type_validate_1.validate(props, getModalSchema(props, localOrigin));
5975}
5976exports.validateProps = validateProps;
5977function validateAction(action, localOrigin) {
5978 var schema = getModalSchema(action.payload, localOrigin);
5979 switch (action.type) {
5980 case Modal_1.ActionType.OPEN:
5981 case Modal_1.ActionType.UPDATE:
5982 return type_validate_1.validate(action, utils_1.createActionValidator(Modal_1.ActionType, schema, true, action.type === Modal_1.ActionType.UPDATE));
5983 case Modal_1.ActionType.FOOTER_BUTTON_CLICK:
5984 return button_1.validateAction(__assign({}, action, { type: Button_1.ActionType.CLICK }));
5985 case Modal_1.ActionType.FOOTER_BUTTON_UPDATE:
5986 return button_1.validateAction(__assign({}, action, { type: Button_1.ActionType.UPDATE }));
5987 case Modal_1.ActionType.CLOSE:
5988 default:
5989 return type_validate_1.validate(action, utils_1.createActionValidator(Modal_1.ActionType));
5990 }
5991}
5992exports.validateAction = validateAction;
5993
5994
5995/***/ }),
5996/* 91 */
5997/***/ (function(module, exports, __webpack_require__) {
5998
5999"use strict";
6000
6001Object.defineProperty(exports, "__esModule", { value: true });
6002var FILE_URI_MATCH = /\/\/\//;
6003var INVALID_RELATIVE_URL = /[/\\][/\\]/;
6004var VALID_PROTOCOLS = ['https:', 'http:'];
6005var DUMMY_HOSTNAME = 'http://test.com';
6006function isSafe(redirectUrl, _a) {
6007 var _b = _a === void 0 ? {} : _a, _c = _b.whitelist, whitelist = _c === void 0 ? [] : _c, _d = _b.subdomains, subdomains = _d === void 0 ? [] : _d, matchPath = _b.matchPath, requireAbsolute = _b.requireAbsolute, requireSSL = _b.requireSSL;
6008 if (FILE_URI_MATCH.test(redirectUrl)) {
6009 return false;
6010 }
6011 if (redirectUrl.startsWith('/')) {
6012 if (whitelist.length > 0 || subdomains.length > 0 || requireAbsolute || requireSSL) {
6013 return false;
6014 }
6015 if (matchPath) {
6016 // Creating a new URL expands the pathname in case of things like `/a/../b`
6017 return pathMatches(new URL(redirectUrl, DUMMY_HOSTNAME), redirectUrl, matchPath);
6018 }
6019 return !INVALID_RELATIVE_URL.test(redirectUrl);
6020 }
6021 var url;
6022 try {
6023 url = new URL(redirectUrl);
6024 }
6025 catch (error) {
6026 return false;
6027 }
6028 if (!VALID_PROTOCOLS.includes(url.protocol)) {
6029 return false;
6030 }
6031 if (requireSSL && url.protocol !== 'https:') {
6032 return false;
6033 }
6034 if (url.username || url.password) {
6035 return false;
6036 }
6037 if (matchPath && !pathMatches(url, redirectUrl, matchPath)) {
6038 return false;
6039 }
6040 if (!hostIsValid(url, whitelist, subdomains)) {
6041 return false;
6042 }
6043 return true;
6044}
6045exports.isSafe = isSafe;
6046function hostIsValid(url, whitelist, subdomains) {
6047 if (!subdomains.every(function (subdomain) { return subdomain.startsWith('.'); })) {
6048 throw new TypeError('Subdomains must begin with .');
6049 }
6050 var hostname = url.hostname;
6051 return ((whitelist.length === 0 && subdomains.length === 0) ||
6052 whitelist.includes(hostname) ||
6053 subdomains.some(function (subdomain) { return hostname.endsWith(subdomain); }));
6054}
6055function pathMatches(url, originalUrl, matcher) {
6056 var pathname = url.pathname;
6057 // Gets just the unresolve pathname, i.e., `http://foo.com/a/../b => /a/../b
6058 var originalPathname = originalUrl.replace(url.origin, '').split('?')[0];
6059 return typeof matcher === 'string'
6060 ? pathname === matcher && originalPathname === matcher
6061 : matcher.test(pathname) && matcher.test(originalPathname);
6062}
6063function makeSafe(url, fallback, options) {
6064 return isSafe(url, options) ? encodeURI(url) : fallback;
6065}
6066exports.makeSafe = makeSafe;
6067
6068
6069/***/ }),
6070/* 92 */
6071/***/ (function(module, exports, __webpack_require__) {
6072
6073"use strict";
6074
6075var __assign = (this && this.__assign) || function () {
6076 __assign = Object.assign || function(t) {
6077 for (var s, i = 1, n = arguments.length; i < n; i++) {
6078 s = arguments[i];
6079 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6080 t[p] = s[p];
6081 }
6082 return t;
6083 };
6084 return __assign.apply(this, arguments);
6085};
6086Object.defineProperty(exports, "__esModule", { value: true });
6087var actions_1 = __webpack_require__(6);
6088var type_validate_1 = __webpack_require__(2);
6089var utils_1 = __webpack_require__(3);
6090function matchesAbsolutePath(value) {
6091 return value.match('^https?://')
6092 ? undefined
6093 : [
6094 {
6095 value: value,
6096 error: 'invalid_absolute_url',
6097 message: 'expected string to start with `https://` or `http://`',
6098 },
6099 ];
6100}
6101exports.matchesAbsolutePath = matchesAbsolutePath;
6102function getSectionSchema(payload) {
6103 var isProductVariant = payload &&
6104 payload.section &&
6105 payload.section.resource &&
6106 payload.section.name === actions_1.Redirect.ResourceType.Product;
6107 var resourceSchema = {
6108 create: type_validate_1.makeOptional(type_validate_1.matchesBoolean()),
6109 id: type_validate_1.makeOptional(type_validate_1.matchesString()),
6110 };
6111 var productVariantSchema = __assign({}, resourceSchema, { variant: type_validate_1.makeOptional(type_validate_1.matchesObject(resourceSchema)) });
6112 return type_validate_1.matchesObject({
6113 section: type_validate_1.matchesObject({
6114 name: type_validate_1.matchesEnum(actions_1.Redirect.ResourceType),
6115 resource: type_validate_1.makeOptional(type_validate_1.matchesObject(isProductVariant ? productVariantSchema : resourceSchema)),
6116 }),
6117 });
6118}
6119exports.getSectionSchema = getSectionSchema;
6120function validateAction(action) {
6121 var newContextSchema = type_validate_1.matchesObject({ newContext: type_validate_1.makeOptional(type_validate_1.matchesBoolean()) });
6122 var actionType = actions_1.Redirect.ActionType;
6123 var schema;
6124 switch (action.type) {
6125 case actions_1.History.ActionType.PUSH:
6126 case actions_1.History.ActionType.REPLACE:
6127 actionType = actions_1.History.ActionType;
6128 schema = utils_1.relativePathSchema;
6129 break;
6130 case actions_1.Redirect.ActionType.APP:
6131 schema = utils_1.relativePathSchema;
6132 break;
6133 case actions_1.Redirect.ActionType.REMOTE:
6134 schema = type_validate_1.composeSchemas(type_validate_1.matchesObject({
6135 url: type_validate_1.composeSchemas(type_validate_1.matchesString(), function (value) { return matchesAbsolutePath(value); }),
6136 }), newContextSchema);
6137 break;
6138 case actions_1.Redirect.ActionType.ADMIN_PATH:
6139 schema = type_validate_1.composeSchemas(utils_1.relativePathSchema, newContextSchema);
6140 break;
6141 case actions_1.Redirect.ActionType.ADMIN_SECTION:
6142 schema = type_validate_1.composeSchemas(getSectionSchema(action.payload), newContextSchema);
6143 break;
6144 }
6145 return type_validate_1.validate(action, utils_1.createActionValidator(actionType, schema));
6146}
6147exports.validateAction = validateAction;
6148
6149
6150/***/ }),
6151/* 93 */
6152/***/ (function(module, exports, __webpack_require__) {
6153
6154"use strict";
6155
6156Object.defineProperty(exports, "__esModule", { value: true });
6157var Print_1 = __webpack_require__(18);
6158exports.ActionType = Print_1.ActionType;
6159var type_validate_1 = __webpack_require__(2);
6160var utils_1 = __webpack_require__(3);
6161function validateAction(action) {
6162 return type_validate_1.validate(action, utils_1.createActionValidator(Print_1.ActionType));
6163}
6164exports.validateAction = validateAction;
6165
6166
6167/***/ }),
6168/* 94 */
6169/***/ (function(module, exports, __webpack_require__) {
6170
6171"use strict";
6172
6173Object.defineProperty(exports, "__esModule", { value: true });
6174var ResourcePicker_1 = __webpack_require__(37);
6175exports.ActionType = ResourcePicker_1.ActionType;
6176var type_validate_1 = __webpack_require__(2);
6177var utils_1 = __webpack_require__(3);
6178var resourceSelectionSchema = type_validate_1.matchesArray(type_validate_1.matchesObject({
6179 id: type_validate_1.matchesString(),
6180}));
6181var resourcePickerOptions = type_validate_1.matchesObject({
6182 initialQuery: type_validate_1.makeOptional(type_validate_1.matchesString()),
6183 initialSelectionIds: type_validate_1.makeOptional(resourceSelectionSchema),
6184 selectMultiple: type_validate_1.makeOptional(type_validate_1.matchesBoolean()),
6185 showHidden: type_validate_1.makeOptional(type_validate_1.matchesBoolean()),
6186 showVariants: type_validate_1.makeOptional(type_validate_1.matchesBoolean()),
6187 actionVerb: type_validate_1.makeOptional(type_validate_1.matchesEnum(ResourcePicker_1.ActionVerb)),
6188});
6189var resourcePickerActionSchema = type_validate_1.matchesObject({
6190 resourceType: type_validate_1.matchesEnum(ResourcePicker_1.ResourceType),
6191 options: type_validate_1.makeOptional(resourcePickerOptions),
6192});
6193var selectionSchema = type_validate_1.matchesObject({
6194 selection: resourceSelectionSchema,
6195});
6196function validateProps(props) {
6197 return type_validate_1.validate(props, resourcePickerOptions);
6198}
6199exports.validateProps = validateProps;
6200function validateAction(action) {
6201 switch (action.type) {
6202 case ResourcePicker_1.ActionType.UPDATE:
6203 case ResourcePicker_1.ActionType.OPEN:
6204 return type_validate_1.validate(action, utils_1.createActionValidator(ResourcePicker_1.ActionType, resourcePickerActionSchema, false, true));
6205 case ResourcePicker_1.ActionType.SELECT:
6206 return type_validate_1.validate(action, utils_1.createActionValidator(ResourcePicker_1.ActionType, selectionSchema, true, true));
6207 case ResourcePicker_1.ActionType.CANCEL:
6208 case ResourcePicker_1.ActionType.CLOSE:
6209 default:
6210 return type_validate_1.validate(action, utils_1.createActionValidator(ResourcePicker_1.ActionType));
6211 }
6212}
6213exports.validateAction = validateAction;
6214
6215
6216/***/ }),
6217/* 95 */
6218/***/ (function(module, exports, __webpack_require__) {
6219
6220"use strict";
6221
6222Object.defineProperty(exports, "__esModule", { value: true });
6223var Toast_1 = __webpack_require__(10);
6224exports.ActionType = Toast_1.ActionType;
6225var type_validate_1 = __webpack_require__(2);
6226var utils_1 = __webpack_require__(3);
6227exports.toastSchema = type_validate_1.matchesObject({
6228 message: type_validate_1.matchesString(),
6229 duration: type_validate_1.matchesPositiveInteger(),
6230 isError: type_validate_1.makeOptional(type_validate_1.matchesBoolean()),
6231});
6232function validateProps(props) {
6233 return type_validate_1.validate(props, exports.toastSchema);
6234}
6235exports.validateProps = validateProps;
6236function validateAction(action) {
6237 switch (action.type) {
6238 case Toast_1.ActionType.SHOW:
6239 return type_validate_1.validate(action, utils_1.createActionValidator(Toast_1.ActionType, exports.toastSchema, true));
6240 default:
6241 return type_validate_1.validate(action, utils_1.createActionValidator(Toast_1.ActionType));
6242 }
6243}
6244exports.validateAction = validateAction;
6245
6246
6247/***/ }),
6248/* 96 */
6249/***/ (function(module, exports, __webpack_require__) {
6250
6251"use strict";
6252
6253var __assign = (this && this.__assign) || function () {
6254 __assign = Object.assign || function(t) {
6255 for (var s, i = 1, n = arguments.length; i < n; i++) {
6256 s = arguments[i];
6257 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6258 t[p] = s[p];
6259 }
6260 return t;
6261 };
6262 return __assign.apply(this, arguments);
6263};
6264Object.defineProperty(exports, "__esModule", { value: true });
6265var TitleBar_1 = __webpack_require__(41);
6266exports.ActionType = TitleBar_1.ActionType;
6267var Button_1 = __webpack_require__(4);
6268var ButtonGroup_1 = __webpack_require__(7);
6269var type_validate_1 = __webpack_require__(2);
6270var utils_1 = __webpack_require__(3);
6271var button_1 = __webpack_require__(12);
6272var buttonGroup_1 = __webpack_require__(46);
6273var buttonSchemaWithId = type_validate_1.composeSchemas(button_1.buttonSchema, type_validate_1.matchesObject({
6274 id: type_validate_1.matchesString(),
6275}));
6276exports.titleBarSchema = type_validate_1.matchesObject({
6277 breadcrumbs: type_validate_1.makeOptional(button_1.buttonSchema),
6278 title: type_validate_1.makeOptional(type_validate_1.matchesString()),
6279 buttons: type_validate_1.makeOptional(type_validate_1.matchesObject({
6280 primary: type_validate_1.makeOptional(buttonSchemaWithId),
6281 secondary: type_validate_1.makeOptional(type_validate_1.matchesArray(type_validate_1.composeSchemas(buttonSchemaWithId, type_validate_1.matchesObject({
6282 buttons: type_validate_1.makeOptional(type_validate_1.matchesArray(buttonSchemaWithId)),
6283 })))),
6284 })),
6285});
6286function validateProps(props) {
6287 return type_validate_1.validate(props, exports.titleBarSchema);
6288}
6289exports.validateProps = validateProps;
6290function validateAction(action) {
6291 switch (action.type) {
6292 default:
6293 case TitleBar_1.ActionType.UPDATE:
6294 return type_validate_1.validate(action, utils_1.createActionValidator(TitleBar_1.ActionType, exports.titleBarSchema, true, false));
6295 case TitleBar_1.ActionType.BUTTON_CLICK:
6296 case TitleBar_1.ActionType.BREADCRUMBS_CLICK:
6297 return button_1.validateAction(__assign({}, action, { type: Button_1.ActionType.CLICK }));
6298 case TitleBar_1.ActionType.BUTTON_UPDATE:
6299 case TitleBar_1.ActionType.BREADCRUMBS_UPDATE:
6300 return button_1.validateAction(__assign({}, action, { type: Button_1.ActionType.UPDATE }));
6301 case TitleBar_1.ActionType.BUTTON_GROUP_UPDATE:
6302 return buttonGroup_1.validateAction(__assign({}, action, { type: ButtonGroup_1.ActionType.UPDATE }));
6303 }
6304}
6305exports.validateAction = validateAction;
6306
6307
6308/***/ }),
6309/* 97 */
6310/***/ (function(module, exports, __webpack_require__) {
6311
6312"use strict";
6313
6314Object.defineProperty(exports, "__esModule", { value: true });
6315var actions_1 = __webpack_require__(6);
6316var type_validate_1 = __webpack_require__(2);
6317var utils_1 = __webpack_require__(3);
6318var link_1 = __webpack_require__(47);
6319var linkOptionsValidator = type_validate_1.matchesObject({ id: type_validate_1.matchesString(), options: link_1.linkPropsSchema });
6320function activeLinkError(value) {
6321 return [
6322 {
6323 error: 'invalid_active_item',
6324 value: value,
6325 message: 'expected active item to exist in menu items',
6326 },
6327 ];
6328}
6329function getOptionsSchema(options) {
6330 var baseSchema = type_validate_1.matchesObject({
6331 items: type_validate_1.makeOptional(type_validate_1.matchesArray(linkOptionsValidator)),
6332 active: type_validate_1.makeOptional(linkOptionsValidator),
6333 });
6334 var items = options.items, active = options.active;
6335 if (items && active) {
6336 var activeItemSchema = type_validate_1.matchesObject({
6337 active: type_validate_1.composeSchemas(linkOptionsValidator, function (value) {
6338 return items.find(function (item) { return item.id === value.id; }) ? undefined : activeLinkError(value);
6339 }),
6340 });
6341 return type_validate_1.composeSchemas(baseSchema, activeItemSchema);
6342 }
6343 return baseSchema;
6344}
6345function getPayloadSchema(payload) {
6346 var baseSchema = type_validate_1.matchesObject({
6347 items: type_validate_1.makeOptional(type_validate_1.matchesArray(link_1.linkActionSchema)),
6348 active: type_validate_1.makeOptional(type_validate_1.matchesString()),
6349 });
6350 var items = payload.items, active = payload.active;
6351 if (items && active) {
6352 var activeItemSchema = type_validate_1.matchesObject({
6353 active: type_validate_1.composeSchemas(type_validate_1.matchesString(), function (value) {
6354 return items.find(function (item) { return item.id === value; })
6355 ? undefined
6356 : activeLinkError(value);
6357 }),
6358 });
6359 return type_validate_1.composeSchemas(baseSchema, activeItemSchema);
6360 }
6361 return baseSchema;
6362}
6363function validateProps(props) {
6364 var result = type_validate_1.validate(props, getOptionsSchema(props));
6365 return result;
6366}
6367exports.validateProps = validateProps;
6368function validateAction(action) {
6369 var actionType = actions_1.NavigationMenu.ActionType;
6370 if (action.type === actions_1.ChannelMenu.ActionType.LINK_UPDATE ||
6371 action.type === actions_1.ChannelMenu.ActionType.UPDATE) {
6372 actionType = actions_1.ChannelMenu.ActionType;
6373 }
6374 return type_validate_1.validate(action, utils_1.createActionValidator(actionType, getPayloadSchema(action.payload), true, false));
6375}
6376exports.validateAction = validateAction;
6377
6378
6379/***/ })
6380/******/ ]);
6381});
\No newline at end of file