alexa-ssml
Version:
JSX for Alexa Skills Kit SSML
69 lines (46 loc) • 2.32 kB
JavaScript
;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = ssml;
var _get = require('lodash/get');
var _get2 = _interopRequireDefault(_get);
var _identity = require('lodash/identity');
var _identity2 = _interopRequireDefault(_identity);
var _flattenDeep = require('lodash/flattenDeep');
var _flattenDeep2 = _interopRequireDefault(_flattenDeep);
var _schema = require('./schema');
var schemas = _interopRequireWildcard(_schema);
var _validateProps = require('./validateProps');
var _validateProps2 = _interopRequireDefault(_validateProps);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function ssml(tagName, props) {
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
args[_key - 2] = arguments[_key];
}
var children = (0, _flattenDeep2.default)(args.length ? args : (0, _get2.default)(props, 'children', []));
// handle custom elements (only functions for now)
if (typeof tagName === 'function') {
return tagName(_extends({}, props, { children: children }));
}
// make sure we have a valid tag
if (typeof tagName !== 'string') {
throw new Error('Invalid tag: ' + tagName);
}
// make sure we have a known tag
var _ref = schemas[tagName.toLowerCase()] || {};
var tag = _ref.tag;
var schema = _ref.schema;
var _ref$transform = _ref.transform;
var transform = _ref$transform === undefined ? _identity2.default : _ref$transform;
if (!tag) {
throw new Error('Unknown tag: ' + tagName);
}
return {
tag: tag,
props: transform((0, _validateProps2.default)(props, schema)),
children: children
};
}