suomifi-ui-components
Version:
Suomi.fi UI component library
79 lines (76 loc) • 2.14 kB
JavaScript
import { __assign } from 'tslib';
import React, { useContext, useMemo } from 'react';
var SpacingContext = /*#__PURE__*/React.createContext({
margins: {}
});
var SpacingConsumer = SpacingContext.Consumer;
var SpacingProvider = function SpacingProvider(props) {
var spacingContext = useContext(SpacingContext);
var contextMargins = spacingContext.margins;
var propMargins = props.margins;
var allMargins = __assign(__assign({}, contextMargins.all || {}), propMargins.all || {});
var mergedMargins = __assign(__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] = __assign(__assign(__assign({}, allMargins), contextMargins[key] || {}), propMargins[key] || {});
});
var globalMargins = useMemo(function () {
return {
margins: mergedMargins
};
}, [mergedMargins]);
if (!props.children) {
return null;
}
return /*#__PURE__*/React.createElement(SpacingContext.Provider, {
value: globalMargins
}, props.children);
};
export { SpacingConsumer, SpacingContext, SpacingProvider };
//# sourceMappingURL=SpacingProvider.js.map