UNPKG

@shopify/app-bridge-host

Version:

App Bridge Host contains components and middleware to be consumed by the app's host, as well as the host itself. The middleware and `Frame` component are responsible for facilitating communication between the client and host, and used to act on actions se

71 lines (64 loc) 3.26 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); var Picker = require('@shopify/app-bridge-core/actions/Picker'); var generateUuid = require('@shopify/app-bridge-core/actions/uuid'); var helper = require('@shopify/app-bridge-core/actions/helper'); var utilities = require('../utilities.js'); var eventHandlers = require('../../../../eventHandlers.js'); var actionCreators = require('./actionCreators.js'); var store_reducers_embeddedApp_picker_reducer = require('./reducer.js'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var generateUuid__default = /*#__PURE__*/_interopDefault(generateUuid); /** * An object containing the key, actions, initial state and reducer of the Picker feature * Can be used with the `withFeature` decorator to add the reducer * and then make its actions and store available to the wrapped component * @public * */ var feature = { actions: actionCreators.pickerActionCreatorsMap, key: 'unstablePicker', initialState: store_reducers_embeddedApp_picker_reducer.defaultPickerStore, reducer: utilities.resetStateReducer(store_reducers_embeddedApp_picker_reducer.default), getApi: function (_a) { var actions = _a.actions, subscribe = _a.subscribe; var id = generateUuid__default.default(); var open = false; var currentOptions = { items: [] }; var eventHandlers$1 = eventHandlers.createEventHandlers(function (event, listener) { switch (event) { case 'cancel': return subscribe(Picker.Action.CANCEL, listener, id); case 'loadMore': return subscribe(Picker.Action.LOAD_MORE, listener, id); case 'select': return subscribe(Picker.Action.SELECT, listener, id); case 'search': return subscribe(Picker.Action.SEARCH, listener, id); default: throw Error("".concat(String(event), " not supported")); } }); var api = tslib.__assign(tslib.__assign({}, eventHandlers$1), { open: function (options) { currentOptions = helper.getMergedProps(currentOptions, options || {}); actions.open(tslib.__assign(tslib.__assign({}, currentOptions), { id: id })); open = true; }, cancel: function () { actions.cancel({ id: id }); open = true; }, setOptions: function (options) { var newOptions = helper.getMergedProps(currentOptions, options); var shouldUpdate = JSON.stringify(newOptions) !== JSON.stringify(currentOptions) && open; currentOptions = newOptions; if (shouldUpdate) { actions.update(tslib.__assign(tslib.__assign({}, currentOptions), { id: id })); } } }); return api; }, }; exports.pickerActionCreatorsMap = actionCreators.pickerActionCreatorsMap; exports.default = store_reducers_embeddedApp_picker_reducer.default; exports.defaultPickerStore = store_reducers_embeddedApp_picker_reducer.defaultPickerStore; exports.feature = feature;