suomifi-ui-components
Version:
Suomi.fi UI component library
87 lines (81 loc) • 2.42 kB
JavaScript
'use strict';
var tslib = require('tslib');
var React = require('react');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefault(React);
var SpacingContext = /*#__PURE__*/React__default.default.createContext({
margins: {}
});
var SpacingConsumer = SpacingContext.Consumer;
var SpacingProvider = function SpacingProvider(props) {
var spacingContext = React.useContext(SpacingContext);
var contextMargins = spacingContext.margins;
var propMargins = props.margins;
var allMargins = tslib.__assign(tslib.__assign({}, contextMargins.all || {}), propMargins.all || {});
var mergedMargins = tslib.__assign(tslib.__assign({}, contextMargins), propMargins);
var allGlobalMarginKeys = {
all: null,
alert: null,
actionMenu: null,
block: null,
button: null,
breadcrumb: null,
checkbox: null,
checkboxGroup: null,
chip: null,
dateInput: null,
dropdown: null,
expander: null,
expanderGroup: null,
externalLink: null,
fileInput: null,
heading: null,
hintText: null,
inlineAlert: null,
label: null,
languageMenu: null,
link: null,
linkList: null,
loadingSpinner: null,
multiSelect: null,
notification: null,
pagination: null,
paragraph: null,
radioButton: null,
radioButtonGroup: null,
routerLink: null,
searchInput: null,
serviceNavigation: null,
sideNavigation: null,
singleSelect: null,
staticChip: null,
statusText: null,
text: null,
textarea: null,
textInput: null,
timeInput: null,
toast: null,
toggleInput: null,
toggleButton: null,
tooltip: null,
wizardNavigation: null
};
Object.keys(allGlobalMarginKeys).forEach(function (key) {
mergedMargins[key] = tslib.__assign(tslib.__assign(tslib.__assign({}, allMargins), contextMargins[key] || {}), propMargins[key] || {});
});
var globalMargins = React.useMemo(function () {
return {
margins: mergedMargins
};
}, [mergedMargins]);
if (!props.children) {
return null;
}
return /*#__PURE__*/React__default.default.createElement(SpacingContext.Provider, {
value: globalMargins
}, props.children);
};
exports.SpacingConsumer = SpacingConsumer;
exports.SpacingContext = SpacingContext;
exports.SpacingProvider = SpacingProvider;
//# sourceMappingURL=SpacingProvider.js.map