UNPKG

@shopify/app-bridge-host

Version:

App Bridge Host contains middleware and components that are meant to be consumed by the app's host. The middleware and `Frame` component are responsible for facilitating messages posted between the client and host, and used to act on actions sent from the

61 lines (60 loc) 2.53 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var actions_1 = require("@shopify/app-bridge/actions"); var modal_1 = require("@shopify/app-bridge/validate/actions/modal"); var actions_2 = require("./actions"); exports.defaultModalStore = { open: false }; function modalReducer(state, action) { if (state === void 0) { state = exports.defaultModalStore; } switch (action.type) { case actions_1.Modal.ActionType.UPDATE: case actions_1.Modal.ActionType.OPEN: { var castAction = action; if (modal_1.validateAction(castAction)) { return state; } var payload = castAction.payload; var id = payload.id, title = payload.title, footer = payload.footer, size = payload.size; var newState = { id: id, primaryAction: footer && footer.buttons ? footer.buttons.primary : undefined, secondaryActions: footer && footer.buttons ? footer.buttons.secondary : undefined, title: title, size: size || actions_1.Modal.Size.Small, open: action.type === actions_1.Modal.ActionType.OPEN ? true : state.open, }; if (actions_1.Modal.isIframeModal(payload)) { var url = payload.url, path = payload.path; var location_1 = url || path || ''; return __assign({}, newState, { location: location_1 }); } else if (actions_1.Modal.isMessageModal(payload)) { return __assign({}, newState, { content: payload.message }); } return state; } case actions_1.Modal.ActionType.CLOSE: { return __assign({}, state, { open: false }); } case actions_2.LEGACY_MODAL_SET_HEIGHT: { return __assign({}, state, { height: action.payload }); } case actions_1.Modal.ActionType.UPDATE_SIZE: { return __assign({}, state, { height: action.payload.height }); } default: return state; } } exports.default = modalReducer;