@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
JavaScript
;
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;