UNPKG

@shopify/app-bridge-core

Version:

**[Join our team and work on libraries like this one.](https://www.shopify.ca/careers)**

42 lines (39 loc) 1.81 kB
import { Action } from '../../actions/TitleBar/index.js'; import { Action as Action$2 } from '../../actions/Button/index.js'; import { Action as Action$1 } from '../../actions/ButtonGroup/index.js'; import { matchesObject, validate, makeOptional, matchesString, matchesArray, composeSchemas } from '../type-validate.js'; import { createActionValidator } from '../utils.js'; import { validateAction as validateAction$2, buttonSchema } from './button.js'; import { validateAction as validateAction$1 } from './buttonGroup.js'; const buttonSchemaWithId = composeSchemas(buttonSchema, matchesObject({ id: matchesString(), })); const titleBarSchema = matchesObject({ breadcrumbs: makeOptional(buttonSchema), title: makeOptional(matchesString()), buttons: makeOptional(matchesObject({ primary: makeOptional(buttonSchemaWithId), secondary: makeOptional(matchesArray(composeSchemas(buttonSchemaWithId, matchesObject({ buttons: makeOptional(matchesArray(buttonSchemaWithId)), })))), })), }); function validateProps(props) { return validate(props, titleBarSchema); } function validateAction(action) { switch (action.type) { default: case Action.UPDATE: return validate(action, createActionValidator(Action, titleBarSchema, true, false)); case Action.BUTTON_CLICK: case Action.BREADCRUMBS_CLICK: return validateAction$2({ ...action, type: Action$2.CLICK }); case Action.BUTTON_UPDATE: case Action.BREADCRUMBS_UPDATE: return validateAction$2({ ...action, type: Action$2.UPDATE }); case Action.BUTTON_GROUP_UPDATE: return validateAction$1({ ...action, type: Action$1.UPDATE }); } } export { Action, titleBarSchema, validateAction, validateProps };