UNPKG

@open-tender/utils

Version:

A library of utils for use with Open Tender applications that utilize our cloud-based Order API.

267 lines (266 loc) 24.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hexToRgbA = exports.decorateTheme = exports.makeBottomTabs = exports.pixelsToFloat = exports.pixelsToInt = exports.objRemsToPixels = exports.remsToNumber = exports.remsToPixels = exports.makeLineHeight = void 0; const makeLineHeight = (lineHeight, fontSize) => { var _a; const size = parseInt((_a = fontSize === null || fontSize === void 0 ? void 0 : fontSize.replace('px', '')) !== null && _a !== void 0 ? _a : '0'); return `${(parseFloat(lineHeight !== null && lineHeight !== void 0 ? lineHeight : '0') * size).toFixed(3)}px`; }; exports.makeLineHeight = makeLineHeight; // TODO: remove responsive option const remsToPixels = (rems, responsive = false) => { const cleanedUpRems = rems === null || rems === void 0 ? void 0 : rems.trim().replace(/\s+/g, ' '); if (!cleanedUpRems) return '0'; const remsToPixelsSingleValue = (remsValue) => { const pixels = parseFloat(remsValue.replace('rem', '')) * 10; const adjustedPixels = responsive ? pixels : pixels; const noZeroes = parseFloat(adjustedPixels.toFixed(2)).toString(); return noZeroes === '0' ? '0' : `${noZeroes}px`; }; return cleanedUpRems .split(' ') .map(i => remsToPixelsSingleValue(i)) .join(' '); }; exports.remsToPixels = remsToPixels; const remsToNumber = (rems) => { return parseFloat(rems.replace('rem', '')) * 10; }; exports.remsToNumber = remsToNumber; const objRemsToPixels = (object, responsive = false) => { return Object.entries(object).reduce((obj, [key, value]) => { return Object.assign(Object.assign({}, obj), { [key]: (0, exports.remsToPixels)(value, responsive) }); }, {}); }; exports.objRemsToPixels = objRemsToPixels; const pixelsToInt = (pixels) => { try { return parseInt(pixels.replace('px', '')); } catch (err) { return 0; } }; exports.pixelsToInt = pixelsToInt; const pixelsToFloat = (pixels) => { try { return parseFloat(pixels.replace('px', '')); } catch (err) { return 0.0; } }; exports.pixelsToFloat = pixelsToFloat; const paddingToPixels = (padding) => { const [top, horizontal, bottom] = padding.split(' '); return `${(0, exports.remsToPixels)(top)} ${(0, exports.remsToPixels)(horizontal)} ${(0, exports.remsToPixels)(bottom)}`; }; /** * @deprecated use remsToPixels instead */ const boxRemsToPixels = (box) => { const pixels = box .split(' ') .map(i => (0, exports.remsToPixels)(i)) .join(' '); return pixels === '0 0 0 0' ? '0px' : pixels; }; const buttonToPixels = (button) => { return Object.assign(Object.assign({}, button), { borderRadius: (0, exports.remsToPixels)(button.borderRadius), borderWidth: (0, exports.remsToPixels)(button.borderWidth), borderWidthApp: button.borderWidthApp ? (0, exports.remsToPixels)(button.borderWidthApp) : (0, exports.remsToPixels)(button.borderWidth), fontSize: button.fontSize ? (0, exports.remsToPixels)(button.fontSize, true) : null, letterSpacing: button.letterSpacing ? (0, exports.remsToPixels)(button.letterSpacing) : null, minHeightMobile: button.minHeightMobile ? paddingToPixels(button.minHeightMobile) : null, padding: button.padding ? paddingToPixels(button.padding) : null, subtitleFontSizeMobile: button.subtitleFontSizeMobile ? (0, exports.remsToPixels)(button.subtitleFontSizeMobile) : null, subtitleMarginTopMobile: button.subtitleMarginTopMobile ? (0, exports.remsToPixels)(button.subtitleMarginTopMobile) : null, titleFontSizeMobile: button.titleFontSizeMobile ? (0, exports.remsToPixels)(button.titleFontSizeMobile) : null, titleMarginTopMobile: button.titleMarginTopMobile ? (0, exports.remsToPixels)(button.titleMarginTopMobile) : null, titleMarginLeftMobile: button.titleMarginLeftMobile ? (0, exports.remsToPixels)(button.titleMarginLeftMobile) : null }); }; const makeButtons = (buttons) => { const sizes = Object.entries(buttons.sizes).reduce((obj, [key, value]) => { return Object.assign(Object.assign({}, obj), { [key]: buttonToPixels(value) }); }, {}); return Object.assign(Object.assign({}, buttons), { sizes }); }; const makeLineHeights = (sizes, lineHeight) => { return Object.entries(sizes).reduce((obj, [size, fontSize]) => { return Object.assign(Object.assign({}, obj), { [size]: (0, exports.makeLineHeight)(lineHeight, fontSize) }); }, {}); }; const makeFont = (font, sizes) => { const fontStyle = Object.assign(Object.assign({}, font), { letterSpacing: (0, exports.remsToPixels)(font.letterSpacing), lineHeights: makeLineHeights(sizes, `${font.lineHeight}`) }); if (!font.fontSize) return fontStyle; const fontSize = (0, exports.remsToPixels)(font.fontSize, true); const lineHeight = (0, exports.makeLineHeight)(`${font.lineHeight}`, fontSize); return Object.assign(Object.assign({}, fontStyle), { fontSize, lineHeight }); }; const makeFonts = (fonts, lineHeight) => { const sizes = (0, exports.objRemsToPixels)(fonts.sizesMobile, true); const lineHeights = makeLineHeights(sizes, lineHeight); const headline = makeFont(fonts.headline, sizes); const headings = makeFont(fonts.headings, sizes); const body = makeFont(fonts.body, sizes); const preface = makeFont(fonts.preface, sizes); return Object.assign(Object.assign({}, fonts), { headline, headings, body, preface, sizes, lineHeights }); }; const makeBorder = (border) => { return Object.assign(Object.assign({}, border), { radius: (0, exports.remsToPixels)(border.radius), radiusSmall: (0, exports.remsToPixels)(border.radiusSmall), width: (0, exports.remsToPixels)(border.width), widthApp: (0, exports.remsToPixels)(border.widthApp) }); }; const makeLabel = (label, lineHeight) => { const [vertical, horizontal] = label.padding.split(' '); const fs = parseFloat(label.fontSizeMobile.replace('rem', '')) * 10.0; const lh = parseFloat(lineHeight); return { fontSize: (0, exports.remsToPixels)(label.fontSizeMobile, true), lineHeight: `${fs * lh}px`, offset: (0, exports.remsToPixels)(label.offset), padding: `${(0, exports.remsToPixels)(vertical)} ${(0, exports.remsToPixels)(horizontal)}`, top: (0, exports.remsToPixels)(label.top), left: (0, exports.remsToPixels)(label.left) }; }; const makeInputs = (inputs) => { const [vertical, horizontal] = inputs.padding.split(' '); const fs = parseFloat(inputs.fontSizeMobile.replace('rem', '')) * 10.0; const lh = parseFloat(inputs.lineHeight); return Object.assign(Object.assign({}, inputs), { lineHeight: `${fs * lh}px`, letterSpacing: (0, exports.remsToPixels)(inputs.letterSpacing), fontSize: (0, exports.remsToPixels)(inputs.fontSizeMobile, true), radius: (0, exports.remsToPixels)(inputs.radius), borderWidth: (0, exports.remsToPixels)(inputs.borderWidth), borderWidthApp: (0, exports.remsToPixels)(inputs.borderWidthApp), padding: `${(0, exports.remsToPixels)(vertical)} ${(0, exports.remsToPixels)(horizontal)}`, paddingHorizontal: (0, exports.remsToPixels)(inputs.paddingHorizontal), paddingVertical: (0, exports.remsToPixels)(inputs.paddingVertical), paddingTop: (0, exports.remsToPixels)(inputs.paddingTop), paddingTopActive: (0, exports.remsToPixels)(inputs.paddingTopActive), paddingBottom: (0, exports.remsToPixels)(inputs.paddingBottom), paddingBottomActive: (0, exports.remsToPixels)(inputs.paddingBottomActive), label: makeLabel(inputs.label, inputs.lineHeight) }); }; const makeCounts = (counts) => { const { alerts, quantity } = counts; return { alerts: Object.assign(Object.assign({}, alerts), { borderWidth: (0, exports.remsToPixels)(alerts.borderWidth), borderWidthApp: (0, exports.remsToPixels)(alerts.borderWidthApp), fontSize: (0, exports.remsToPixels)(alerts.fontSize, true), fontSizeMobile: (0, exports.remsToPixels)(alerts.fontSizeMobile, true), paddingBottom: (0, exports.remsToPixels)(alerts.paddingBottom), paddingTop: (0, exports.remsToPixels)(alerts.paddingTop) }), quantity: Object.assign(Object.assign({}, quantity), { fontSize: (0, exports.remsToPixels)(quantity.fontSize, true), fontSizeMobile: (0, exports.remsToPixels)(quantity.fontSizeMobile, true), paddingBottom: (0, exports.remsToPixels)(quantity.paddingBottom), paddingTop: (0, exports.remsToPixels)(quantity.paddingTop) }) }; }; const makeCards = (cards) => { const { default: box, form, menuItem, modifier } = cards; return { default: Object.assign(Object.assign({}, box), { borderWidth: (0, exports.remsToPixels)(box.borderWidth), borderWidthApp: (0, exports.remsToPixels)(box.borderWidthApp), borderRadius: (0, exports.remsToPixels)(box.borderRadius) }), form: Object.assign(Object.assign({}, form), { borderWidth: (0, exports.remsToPixels)(form.borderWidth), borderWidthApp: (0, exports.remsToPixels)(form.borderWidthApp), borderRadius: (0, exports.remsToPixels)(form.borderRadius) }), menuItem: Object.assign(Object.assign({}, menuItem), { borderWidth: (0, exports.remsToPixels)(menuItem.borderWidth), borderWidthApp: (0, exports.remsToPixels)(menuItem.borderWidthApp), borderRadius: (0, exports.remsToPixels)(menuItem.borderRadius) }), modifier: Object.assign(Object.assign({}, modifier), { borderWidth: (0, exports.remsToPixels)(modifier.borderWidth), borderWidthApp: (0, exports.remsToPixels)(modifier.borderWidthApp), borderRadius: (0, exports.remsToPixels)(modifier.borderRadius) }) }; }; const makeWelcome = (welcome) => { const { mobile } = welcome; const titleSize = (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.titleSize); const subtitleSize = (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.subtitleSize); return { textAlign: mobile === null || mobile === void 0 ? void 0 : mobile.textAlign, marginTop: (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.marginTop), marginBottom: (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.marginBottom), titleMarginLeft: (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.titleMarginLeft), titleSize, titleLineHeight: (0, exports.makeLineHeight)(mobile === null || mobile === void 0 ? void 0 : mobile.titleLineHeight.toFixed(5), titleSize), subtitleSize, subtitleLineHeight: (0, exports.makeLineHeight)(mobile === null || mobile === void 0 ? void 0 : mobile.subtitleLineHeight.toFixed(5), subtitleSize), subtitleMarginTop: (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.subtitleMarginTop) }; }; const makeItem = (item) => { const { mobile } = item; return Object.assign(Object.assign({}, mobile), { imageMargin: boxRemsToPixels(mobile.imageMargin), imageMaxHeight: (0, exports.remsToPixels)(mobile.imageMaxHeight), imageMinHeight: (0, exports.remsToPixels)(mobile.imageMinHeight), imagePadding: (0, exports.remsToPixels)(mobile.imagePadding), imagePaddingAll: boxRemsToPixels(mobile.imagePaddingAll), maxWidth: (0, exports.remsToPixels)(mobile.maxWidth), padding: (0, exports.remsToPixels)(mobile.padding) }); }; const makeCategories = (categories) => { const { mobile } = categories; return Object.assign(Object.assign({}, mobile), { borderRadius: (0, exports.remsToPixels)(mobile.borderRadius), containerMaxWidth: (0, exports.remsToPixels)(mobile.containerMaxWidth), gap: (0, exports.remsToPixels)(mobile.gap), gapDouble: (0, exports.remsToPixels)(mobile.gapDouble), gapHalf: (0, exports.remsToPixels)(mobile.gapHalf), imageBorderRadius: (0, exports.remsToPixels)(mobile.imageBorderRadius), lineHeight: (0, exports.remsToPixels)(mobile.lineHeight), lineMargin: (0, exports.remsToPixels)(mobile.lineMargin), lineWidth: (0, exports.remsToPixels)(mobile.lineWidth), maxWidth: (0, exports.remsToPixels)(mobile.maxWidth), minWidth: (0, exports.remsToPixels)(mobile.minWidth), paddingBottom: (0, exports.remsToPixels)(mobile.paddingBottom), paddingHorizontal: (0, exports.remsToPixels)(mobile.paddingHorizontal), paddingTop: (0, exports.remsToPixels)(mobile.paddingTop), subtitleSize: (0, exports.remsToPixels)(mobile.subtitleSize), titleSize: (0, exports.remsToPixels)(mobile.titleSize) }); }; const fontSizeToLineHeight = (lineHeight, fontSize) => { var _a; const lineHt = (_a = parseFloat(lineHeight)) !== null && _a !== void 0 ? _a : 1; const textFontSize = (0, exports.remsToPixels)(fontSize); return `${(lineHt * (0, exports.pixelsToFloat)(textFontSize)).toFixed(2)}px`; }; const makeMenuItems = (menuItems, lineHeight) => { const { allergens, box, calories, container, content, buttons, image, price, tags, tagsAllergens, text, title } = menuItems; return { allergens: Object.assign(Object.assign({}, allergens), { fontSize: (0, exports.remsToPixels)(allergens.fontSize), fontSizeMobile: (0, exports.remsToPixels)(allergens.fontSizeMobile), letterSpacing: (0, exports.remsToPixels)(allergens.letterSpacing), lineHeight: fontSizeToLineHeight(lineHeight, allergens.fontSizeMobile), gap: (0, exports.remsToPixels)(allergens.gap), gapMobile: (0, exports.remsToPixels)(allergens.gapMobile), width: (0, exports.remsToPixels)(allergens.width), widthMobile: (0, exports.remsToPixels)(allergens.widthMobile) }), box: Object.assign(Object.assign({}, box), { border: boxRemsToPixels(box.border), borderMobile: boxRemsToPixels(box.borderMobile), borderRadius: (0, exports.remsToPixels)(box.borderRadius), borderRadiusMobile: (0, exports.remsToPixels)(box.borderRadiusMobile), margin: boxRemsToPixels(box.margin), marginMobile: boxRemsToPixels(box.marginMobile), minWidth: (0, exports.remsToPixels)(box.minWidth), minWidthMobile: (0, exports.remsToPixels)(box.minWidthMobile), padding: boxRemsToPixels(box.padding), paddingMobile: boxRemsToPixels(box.paddingMobile) }), calories: Object.assign(Object.assign({}, calories), { fontSize: (0, exports.remsToPixels)(calories.fontSize), fontSizeMobile: (0, exports.remsToPixels)(calories.fontSizeMobile), lineHeight: fontSizeToLineHeight(lineHeight, calories.fontSizeMobile), padding: boxRemsToPixels(calories.padding), paddingMobile: boxRemsToPixels(calories.paddingMobile) }), container: Object.assign(Object.assign({}, container), { gap: (0, exports.remsToPixels)(container.gap), gapHalf: (0, exports.remsToPixels)(container.gapHalf), gapHalfMobile: (0, exports.remsToPixels)(container.gapHalfMobile), gapMobile: (0, exports.remsToPixels)(container.gapMobile), margin: boxRemsToPixels(container.margin), marginMobile: boxRemsToPixels(container.marginMobile), maxWidth: (0, exports.remsToPixels)(container.maxWidth), padding: boxRemsToPixels(container.padding), paddingMobile: boxRemsToPixels(container.paddingMobile) }), content: Object.assign(Object.assign({}, content), { padding: boxRemsToPixels(content.padding), paddingMobile: boxRemsToPixels(content.paddingMobile) }), buttons: Object.assign(Object.assign({}, buttons), { gap: (0, exports.remsToPixels)(buttons.gap), gapMobile: (0, exports.remsToPixels)(buttons.gapMobile), padding: boxRemsToPixels(buttons.padding), paddingMobile: boxRemsToPixels(buttons.paddingMobile) }), image: Object.assign(Object.assign({}, image), { border: boxRemsToPixels(image.border), borderMobile: boxRemsToPixels(image.borderMobile), borderRadius: (0, exports.remsToPixels)(image.borderRadius), borderRadiusMobile: (0, exports.remsToPixels)(image.borderRadiusMobile), margin: boxRemsToPixels(image.margin), marginMobile: boxRemsToPixels(image.marginMobile), minWidth: (0, exports.remsToPixels)(image.minWidth), minWidthMobile: (0, exports.remsToPixels)(image.minWidthMobile), padding: boxRemsToPixels(image.padding), paddingMobile: boxRemsToPixels(image.paddingMobile) }), price: Object.assign(Object.assign({}, price), { fontSize: (0, exports.remsToPixels)(price.fontSize), fontSizeMobile: (0, exports.remsToPixels)(price.fontSizeMobile), lineHeight: fontSizeToLineHeight(lineHeight, price.fontSizeMobile), padding: boxRemsToPixels(price.padding), paddingMobile: boxRemsToPixels(price.paddingMobile) }), tags: Object.assign(Object.assign({}, tags), { fontSize: (0, exports.remsToPixels)(tags.fontSize), fontSizeMobile: (0, exports.remsToPixels)(tags.fontSizeMobile), letterSpacing: (0, exports.remsToPixels)(tags.letterSpacing), lineHeight: fontSizeToLineHeight(lineHeight, tags.fontSizeMobile), gap: (0, exports.remsToPixels)(tags.gap), gapMobile: (0, exports.remsToPixels)(tags.gapMobile), width: (0, exports.remsToPixels)(tags.width), widthMobile: (0, exports.remsToPixels)(tags.widthMobile) }), tagsAllergens: Object.assign(Object.assign({}, tagsAllergens), { gap: (0, exports.remsToPixels)(tagsAllergens.gap), gapMobile: (0, exports.remsToPixels)(tagsAllergens.gapMobile), padding: boxRemsToPixels(tagsAllergens.padding), paddingMobile: boxRemsToPixels(tagsAllergens.paddingMobile) }), text: Object.assign(Object.assign({}, text), { fontSize: (0, exports.remsToPixels)(text.fontSize), fontSizeMobile: (0, exports.remsToPixels)(text.fontSizeMobile), lineHeight: fontSizeToLineHeight(lineHeight, text.fontSizeMobile), padding: boxRemsToPixels(text.padding), paddingMobile: boxRemsToPixels(text.paddingMobile) }), title: Object.assign(Object.assign({}, title), { fontSize: (0, exports.remsToPixels)(title.fontSize), fontSizeMobile: (0, exports.remsToPixels)(title.fontSizeMobile), lineHeight: fontSizeToLineHeight(lineHeight, title.fontSizeMobile), padding: boxRemsToPixels(title.padding), paddingMobile: boxRemsToPixels(title.paddingMobile) }) }; }; const makeModifiers = (modifiers, lineHeight) => { const { box, calories, content, image, price, text, title } = modifiers; return Object.assign(Object.assign({}, modifiers), { box: Object.assign(Object.assign({}, box), { border: boxRemsToPixels(box.border), borderMobile: boxRemsToPixels(box.borderMobile), borderRadius: (0, exports.remsToPixels)(box.borderRadius), gap: (0, exports.remsToPixels)(box.gap), gapHalf: (0, exports.remsToPixels)(box.gapHalf), margin: boxRemsToPixels(box.margin), marginMobile: boxRemsToPixels(box.marginMobile), minHeight: (0, exports.remsToPixels)(box.minHeight), minHeightWithGap: (0, exports.remsToPixels)(box.minHeightWithGap), minWidth: (0, exports.remsToPixels)(box.minWidth), padding: boxRemsToPixels(box.padding), paddingMobile: boxRemsToPixels(box.paddingMobile) }), calories: Object.assign(Object.assign({}, calories), { fontSize: (0, exports.remsToPixels)(calories.fontSize), lineHeight: fontSizeToLineHeight(calories.fontSize, lineHeight) }), content: Object.assign(Object.assign({}, content), { padding: boxRemsToPixels(content.padding) }), image: Object.assign(Object.assign({}, image), { border: boxRemsToPixels(image.border), borderRadius: (0, exports.remsToPixels)(image.borderRadius), height: (0, exports.remsToPixels)(image.height), margin: boxRemsToPixels(image.margin), padding: boxRemsToPixels(image.padding), width: (0, exports.remsToPixels)(image.width) }), price: Object.assign(Object.assign({}, price), { fontSize: (0, exports.remsToPixels)(price.fontSize), lineHeight: fontSizeToLineHeight(price.fontSize, lineHeight) }), text: Object.assign(Object.assign({}, text), { fontSize: (0, exports.remsToPixels)(text.fontSize), lineHeight: fontSizeToLineHeight(text.fontSize, lineHeight) }), title: Object.assign(Object.assign({}, title), { fontSize: (0, exports.remsToPixels)(title.fontSize), lineHeight: fontSizeToLineHeight(title.fontSize, lineHeight) }) }); }; const makeTags = (tags) => { return Object.assign(Object.assign({}, tags), { image: Object.assign(Object.assign({}, tags.image), { padding: (0, exports.remsToPixels)(tags.container.padding), paddingMobile: (0, exports.remsToPixels)(tags.container.paddingMobile), margin: (0, exports.remsToPixels)(tags.container.margin), marginMobile: (0, exports.remsToPixels)(tags.container.marginMobile) }), container: Object.assign(Object.assign({}, tags.container), { padding: (0, exports.remsToPixels)(tags.container.padding), paddingMobile: (0, exports.remsToPixels)(tags.container.paddingMobile), margin: (0, exports.remsToPixels)(tags.container.margin), marginMobile: (0, exports.remsToPixels)(tags.container.marginMobile) }), box: Object.assign(Object.assign({}, tags.box), { padding: (0, exports.remsToPixels)(tags.box.padding), paddingMobile: (0, exports.remsToPixels)(tags.box.paddingMobile), margin: (0, exports.remsToPixels)(tags.box.margin), marginMobile: (0, exports.remsToPixels)(tags.box.marginMobile) }), text: Object.assign(Object.assign({}, tags.text), { fontSize: (0, exports.remsToPixels)(tags.text.fontSize), fontSizeMobile: (0, exports.remsToPixels)(tags.text.fontSizeMobile) }) }); }; const makeLogo = (logo) => { return { marginTop: (0, exports.remsToPixels)(logo.marginTop), marginTopMobile: (0, exports.remsToPixels)(logo.marginTopMobile), width: (0, exports.remsToPixels)(logo.width), widthMobile: (0, exports.remsToPixels)(logo.widthMobile) }; }; const makeBottomTabs = (bottomTabs) => { const fontSize = (0, exports.remsToPixels)(bottomTabs.buttons.fontSize); return { box: Object.assign(Object.assign({}, bottomTabs.box), { borderRadius: (0, exports.remsToPixels)(bottomTabs.box.borderRadius), borderWidth: (0, exports.remsToPixels)(bottomTabs.box.borderWidth), gap: (0, exports.remsToPixels)(bottomTabs.box.gap), padding: (0, exports.remsToPixels)(bottomTabs.box.padding) }), buttons: Object.assign(Object.assign({}, bottomTabs.buttons), { fontSize: fontSize, letterSpacing: (0, exports.remsToPixels)(bottomTabs.buttons.letterSpacing), lineHeight: (0, exports.makeLineHeight)(`${bottomTabs.buttons.lineHeight}`, fontSize), padding: (0, exports.remsToPixels)(bottomTabs.buttons.padding) }), icons: Object.assign(Object.assign({}, bottomTabs.icons), { padding: (0, exports.remsToPixels)(bottomTabs.icons.padding) }) }; }; exports.makeBottomTabs = makeBottomTabs; const decorateTheme = (theme) => { const logo = makeLogo(theme.logo); const logoFooter = makeLogo(theme.logoFooter); const fonts = makeFonts(theme.fonts, theme.lineHeight); const lineHeight = (0, exports.makeLineHeight)(theme.lineHeight, fonts.sizes.main); const layout = (0, exports.objRemsToPixels)(theme.layout); const buttons = makeButtons(theme.buttons); const border = makeBorder(theme.border); const inputs = makeInputs(theme.inputs); const counts = makeCounts(theme.counts); const cards = makeCards(theme.cards); const welcome = makeWelcome(theme.welcome); const item = makeItem(theme.item); const categories = makeCategories(theme.categories); const menuItems = makeMenuItems(theme.menuItems, theme.lineHeight); const modifiers = makeModifiers(theme.modifiers, theme.lineHeight); const tags = makeTags(theme.tags); const bottomTabs = (0, exports.makeBottomTabs)(theme.bottomTabs); return Object.assign(Object.assign({}, theme), { logo, logoFooter, fonts: fonts, lineHeight, layout: layout, buttons: buttons, border, inputs: inputs, counts, cards, welcome: welcome, item: item, categories, menuItems, modifiers, tags, bottomTabs }); }; exports.decorateTheme = decorateTheme; const hexToRgbA = (hex, opacity) => { let c; if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) { c = hex.substring(1).split(''); if (c.length === 3) { c = [c[0], c[0], c[1], c[1], c[2], c[2]]; } c = '0x' + c.join(''); return ('rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') + `,${opacity})`); } return null; }; exports.hexToRgbA = hexToRgbA;