1 | "use strict";
|
2 | var __spreadArrays = (this && this.__spreadArrays) || function () {
|
3 | for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
4 | for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
5 | for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
6 | r[k] = a[j];
|
7 | return r;
|
8 | };
|
9 | Object.defineProperty(exports, "__esModule", { value: true });
|
10 | exports.transformActions = exports.generateRedirect = void 0;
|
11 | var actions_1 = require("@shopify/app-bridge/actions");
|
12 | function generateRedirect(appBridge, url, target, external) {
|
13 | if (target === void 0) { target = 'APP'; }
|
14 | if (url == null) {
|
15 | return undefined;
|
16 | }
|
17 | var redirect = actions_1.Redirect.create(appBridge);
|
18 | var payload = external === true
|
19 | ? {
|
20 | url: url,
|
21 | newContext: true,
|
22 | }
|
23 | : url;
|
24 | return function () {
|
25 | redirect.dispatch(redirectAction(target, external), payload);
|
26 | };
|
27 | }
|
28 | exports.generateRedirect = generateRedirect;
|
29 | function redirectAction(target, external) {
|
30 | if (external === true) {
|
31 | return actions_1.Redirect.Action.REMOTE;
|
32 | }
|
33 | return actions_1.Redirect.Action[target];
|
34 | }
|
35 | function transformActions(appBridge, _a) {
|
36 | var primaryAction = _a.primaryAction, secondaryActions = _a.secondaryActions, actionGroups = _a.actionGroups;
|
37 | var primary = transformPrimaryAction(appBridge, primaryAction);
|
38 | var secondary = __spreadArrays(transformSecondaryActions(appBridge, secondaryActions), transformActionGroups(appBridge, actionGroups));
|
39 | return {
|
40 | primary: primary,
|
41 | secondary: secondary,
|
42 | };
|
43 | }
|
44 | exports.transformActions = transformActions;
|
45 | function transformAction(appBridge, action) {
|
46 | var style = action.destructive === true ? actions_1.Button.Style.Danger : undefined;
|
47 | var button = actions_1.Button.create(appBridge, {
|
48 | label: action.content || '',
|
49 | disabled: action.disabled,
|
50 | loading: action.loading,
|
51 | style: style,
|
52 | });
|
53 | if (action.onAction) {
|
54 | button.subscribe(actions_1.Button.Action.CLICK, action.onAction);
|
55 | }
|
56 | var redirect = generateRedirect(appBridge, action.url, action.target, action.external);
|
57 | if (redirect != null) {
|
58 | button.subscribe(actions_1.Button.Action.CLICK, redirect);
|
59 | }
|
60 | return button;
|
61 | }
|
62 | function transformPrimaryAction(appBridge, primaryAction) {
|
63 | if (primaryAction == null) {
|
64 | return undefined;
|
65 | }
|
66 | var primary = transformAction(appBridge, primaryAction);
|
67 | return primary;
|
68 | }
|
69 | function transformSecondaryActions(appBridge, secondaryActions) {
|
70 | if (secondaryActions === void 0) { secondaryActions = []; }
|
71 | var secondary = __spreadArrays(secondaryActions.map(function (secondaryAction) {
|
72 | return transformAction(appBridge, secondaryAction);
|
73 | }));
|
74 | return secondary;
|
75 | }
|
76 | function transformActionGroups(appBridge, actionGroups) {
|
77 | if (actionGroups === void 0) { actionGroups = []; }
|
78 | var buttonGroups = __spreadArrays(actionGroups.map(function (group) {
|
79 | var buttons = group.actions.map(function (groupAction) {
|
80 | return transformAction(appBridge, groupAction);
|
81 | });
|
82 | return actions_1.ButtonGroup.create(appBridge, { label: group.title, buttons: buttons });
|
83 | }));
|
84 | return buttonGroups;
|
85 | }
|