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