UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

201 lines (178 loc) 7.13 kB
'use strict'; const TABSTRIP_ITEM_RE_CSS = /(\.k-tabstrip(?!-|\w)[^{,]*?[\s>+~])\.k-item\b/g; const TABSTRIP_ITEM_RE_JS = /(\.k-tabstrip(?!-|\w)[^'"]*?[\s>+~])\.k-item\b/g; function applyTabstripItemReplacementCss(str) { let result = str.replaceAll('.k-tabstrip-item.k-item', '.k-tabstrip-item'); TABSTRIP_ITEM_RE_CSS.lastIndex = 0; result = result.replace(TABSTRIP_ITEM_RE_CSS, (_, prefix) => prefix + '.k-tabstrip-item'); TABSTRIP_ITEM_RE_CSS.lastIndex = 0; return result; } function applyTabstripItemReplacementJs(str) { let result = str.replaceAll('.k-tabstrip-item.k-item', '.k-tabstrip-item'); TABSTRIP_ITEM_RE_JS.lastIndex = 0; result = result.replace(TABSTRIP_ITEM_RE_JS, (_, prefix) => prefix + '.k-tabstrip-item'); TABSTRIP_ITEM_RE_JS.lastIndex = 0; return result; } function transformStringLiterals(root, j, fn) { let changed = false; const visit = path => { if (typeof path.node.value !== 'string') { return; } const updated = fn(path.node.value); if (updated === path.node.value) { return; } path.node.value = updated; if (path.node.extra) { path.node.extra.rawValue = updated; if (path.node.extra.raw) { path.node.extra.raw = fn(path.node.extra.raw); } } changed = true; }; root.find(j.StringLiteral).forEach(visit); root.find(j.Literal, n => typeof n.value === 'string').forEach(visit); return changed; } function transformTemplateLiterals(root, j, fn) { let changed = false; root.find(j.TemplateLiteral).forEach(path => { path.node.quasis.forEach(quasi => { const updatedRaw = fn(quasi.value.raw); const updatedCooked = quasi.value.cooked != null ? fn(quasi.value.cooked) : null; if (updatedRaw !== quasi.value.raw || updatedCooked !== quasi.value.cooked) { quasi.value.raw = updatedRaw; if (quasi.value.cooked != null) { quasi.value.cooked = updatedCooked; } changed = true; } }); }); return changed; } function applyTreeViewClassRenames(str) { let result = str; result = result.replaceAll('k-treeview-top', 'k-treeview-item-content'); result = result.replaceAll('k-treeview-mid', 'k-treeview-item-content'); result = result.replaceAll('k-treeview-bot', 'k-treeview-item-content'); result = result.replace( /\.k-treeview-leaf(\.k-(?:hover|focus|selected|disabled)\b)/g, '.k-treeview-item-content$1' ); return result; } function applyVirtualListClassRename(str) { let result = str.replaceAll('k-virtual-content', 'k-list-ul'); result = result.replaceAll('.k-list-ul.k-list-ul', '.k-list-ul'); return result; } function applyMultiColumnComboBoxGroupHeaderRename(str) { return str.replaceAll('k-list-group-sticky-header', 'k-table-group-sticky-header'); } const CHAT_OPTION_RENAMES = new Map([ ['suggestedActionsScrollable', 'suggestedActionsLayoutMode'], ['suggestionsScrollable', 'suggestionsLayoutMode'], ]); function transformChatLayoutModeOptions(root, j) { let changed = false; const visitProp = (path) => { const node = path.node; if (node.computed) { return; } const keyName = node.key.type === 'Identifier' ? node.key.name : (node.key.type === 'StringLiteral' || node.key.type === 'Literal') ? node.key.value : null; if (!keyName || !CHAT_OPTION_RENAMES.has(keyName)) { return; } const newName = CHAT_OPTION_RENAMES.get(keyName); if (node.key.type === 'Identifier') { node.key.name = newName; } else { node.key.value = newName; if (node.key.extra) { node.key.extra.rawValue = newName; if (node.key.extra.raw) { node.key.extra.raw = node.key.extra.raw.replace(keyName, newName); } } } const val = node.value; if (val.type === 'BooleanLiteral' || (val.type === 'Literal' && typeof val.value === 'boolean')) { node.value = j.stringLiteral(val.value === false ? 'wrap' : 'scroll'); } changed = true; }; root.find(j.ObjectProperty).forEach(visitProp); root.find(j.Property, n => !n.computed && !n.method && !n.shorthand).forEach(visitProp); return changed; } function applyFillModeClassSplitsCss(str) { let result = str; result = result.replace(/\.k-button-solid-secondary\b/g, '.k-button-solid.k-button-secondary'); result = result.replace(/\.k-button-solid-primary\b/g, '.k-button-solid.k-button-primary'); result = result.replace(/\.k-button-solid-base\b/g, '.k-button-solid'); result = result.replace(/\.k-button-flat-secondary\b/g, '.k-button-flat.k-button-secondary'); result = result.replace(/\.k-button-flat-primary\b/g, '.k-button-flat.k-button-primary'); result = result.replace(/\.k-button-flat-base\b/g, '.k-button-flat'); result = result.replace(/\.k-chip-solid-primary\b/g, '.k-chip-solid.k-button-primary'); result = result.replace(/\.k-chip-solid-base\b/g, '.k-chip-solid'); return result; } function applyFillModeClassSplitsJs(str) { let result = str; result = result.replaceAll('k-button-solid-secondary', 'k-button-solid k-button-secondary'); result = result.replaceAll('k-button-solid-primary', 'k-button-solid k-button-primary'); result = result.replaceAll('k-button-solid-base', 'k-button-solid'); result = result.replaceAll('k-button-flat-secondary', 'k-button-flat k-button-secondary'); result = result.replaceAll('k-button-flat-primary', 'k-button-flat k-button-primary'); result = result.replaceAll('k-button-flat-base', 'k-button-flat'); result = result.replaceAll('k-chip-solid-primary', 'k-chip-solid k-button-primary'); result = result.replaceAll('k-chip-solid-base', 'k-chip-solid'); return result; } const APPEARANCE_DEFAULT_CLASSES = [ 'k-button-sm', 'k-button-md', 'k-button-lg', 'k-input-sm', 'k-input-md', 'k-input-lg', 'k-picker-sm', 'k-picker-md', 'k-picker-lg', 'k-checkbox-sm', 'k-checkbox-md', 'k-checkbox-lg', 'k-chip-sm', 'k-chip-md', 'k-chip-lg', 'k-badge-sm', 'k-badge-md', 'k-badge-lg', 'k-avatar-sm', 'k-avatar-md', 'k-avatar-lg', 'k-loader-sm', 'k-loader-md', 'k-loader-lg', 'k-calendar-md', 'k-table-md', 'k-toolbar-md', 'k-form-md', 'k-rounded-sm', 'k-rounded-md', 'k-rounded-lg', 'k-rounded-full', 'k-button-solid', 'k-input-solid', 'k-picker-solid', 'k-chip-solid', 'k-badge-solid', 'k-avatar-solid', ]; function applyAppearanceDefaultStrips(str) { let result = str; for (const cls of APPEARANCE_DEFAULT_CLASSES) { const escaped = cls.replace(/-/g, '\\-'); result = result.replace(new RegExp(`\\.${escaped}(?=\\.)`, 'g'), ''); result = result.replace(new RegExp(`(?<=[\\w-])\\.${escaped}(?=[\\s{,>+~.:#\\[)]|$)`, 'g'), ''); } return result; } module.exports = { TABSTRIP_ITEM_RE_CSS, TABSTRIP_ITEM_RE_JS, applyTabstripItemReplacementCss, applyTabstripItemReplacementJs, applyTreeViewClassRenames, applyVirtualListClassRename, applyMultiColumnComboBoxGroupHeaderRename, applyFillModeClassSplitsCss, applyFillModeClassSplitsJs, applyAppearanceDefaultStrips, transformChatLayoutModeOptions, transformStringLiterals, transformTemplateLiterals, };