@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
160 lines (151 loc) • 5.67 kB
JavaScript
;
const iconClassMappings = {
'k-i-arrow-s': 'k-i-arrow-60-down',
'k-i-arrow-e': 'k-i-arrow-60-right',
'k-i-arrow-n': 'k-i-arrow-60-up',
'k-i-arrow-w': 'k-i-arrow-60-left',
'k-i-seek-n': 'k-i-arrow-seek-up',
'k-i-seek-e': 'k-i-arrow-end-right',
'k-i-seek-s': 'k-i-arrow-seek-down',
'k-i-seek-w': 'k-i-arrow-end-left',
'k-i-sarrow-n': 'k-i-arrow-60-up',
'k-i-sarrow-e': 'k-i-arrow-60-right',
'k-i-sarrow-s': 'k-i-arrow-60-down',
'k-i-sarrow-w': 'k-i-arrow-60-left',
'k-i-collapse': 'k-i-arrow-60-down',
'k-i-expand': 'k-i-arrow-60-right',
'k-i-expand-n': 'k-i-arrow-60-up',
'k-i-expand-e': 'k-i-arrow-60-right',
'k-i-expand-s': 'k-i-arrow-60-down',
'k-i-expand-w': 'k-i-arrow-60-left',
'k-i-resize-nw': 'k-i-arrow-45-up-left',
'k-i-arrowhead-n': 'k-i-arrow-chevron-up',
'k-i-arrowhead-e': 'k-i-arrow-chevron-right',
'k-i-arrowhead-s': 'k-i-arrow-chevron-down',
'k-i-arrowhead-w': 'k-i-arrow-chevron-left',
'k-i-deny': 'k-i-cancel-outline',
'k-plus': 'k-i-plus',
'k-i-splus': 'k-i-plus-sm',
'k-minus': 'k-i-minus',
'k-i-sminus': 'k-i-minus-sm',
'k-i-refresh-clear': 'k-i-non-recurrence',
'k-i-restore': 'k-i-window-restore',
'k-i-maximize': 'k-i-window-maximize',
'k-i-minimize': 'k-i-window-minimize',
'k-i-insert-image': 'k-i-image-insert',
'k-i-insert-file': 'k-i-file-add',
'k-i-pdfa': 'k-i-pdf',
'k-i-xlsa': 'k-i-xls',
'k-i-hamburger': 'k-i-menu',
'k-i-vbars': 'k-i-more-vertical',
'k-i-hbars': 'k-i-more-horizontal',
'k-i-dimension': 'k-i-arrows-dimensions',
'k-i-undo-large': 'k-i-undo',
'k-i-redo-large': 'k-i-redo',
'k-i-rotate-ccw': 'k-i-rotate-left',
'k-i-rotate-cw': 'k-i-rotate-right',
'k-i-strike-through': 'k-i-strikethrough',
'k-i-text': 'k-i-foreground-color',
'k-i-fx': 'k-i-formula-fx',
'k-i-subscript': 'k-i-sub-script',
'k-i-superscript': 'k-i-sup-script',
'k-i-increase-decimal': 'k-i-decimal-increase',
'k-i-decrease-decimal': 'k-i-decimal-decrease',
'k-i-justify-left': 'k-i-align-left',
'k-i-justify-center': 'k-i-align-center',
'k-i-justify-right': 'k-i-align-right',
'k-i-justify-full': 'k-i-align-justify',
'k-i-justify-clear': 'k-i-align-remove',
'k-i-insert-n': 'k-i-insert-up',
'k-i-insert-m': 'k-i-insert-middle',
'k-i-insert-s': 'k-i-insert-down',
'k-i-insert-unordered-list': 'k-i-list-unordered',
'k-i-insert-ordered-list': 'k-i-list-ordered',
'k-i-clearformat': 'k-i-clear-css',
'k-i-create-table': 'k-i-table-light-dialog',
'k-i-add-column-left': 'k-i-table-column-insert-left',
'k-i-add-column-right': 'k-i-table-column-insert-right',
'k-i-group-delete': 'k-i-close',
'k-i-delete-column': 'k-i-table-column-delete',
'k-i-add-row-above': 'k-i-table-row-insert-above',
'k-i-add-row-below': 'k-i-table-row-insert-below',
'k-i-delete-row': 'k-i-table-row-delete',
'k-i-merge-cells': 'k-i-cells-merge',
'k-i-normal-layout': 'k-i-table-unmerge',
'k-i-page-layout': 'k-i-layout-2-by-2',
'k-i-all-borders': 'k-i-borders-all',
'k-i-inside-borders': 'k-i-borders-inside',
'k-i-inside-horizontal-borders': 'k-i-borders-inside-horizontal',
'k-i-inside-vertical-borders': 'k-i-borders-inside-vertical',
'k-i-outside-borders': 'k-i-borders-outside',
'k-i-top-border': 'k-i-border-top',
'k-i-right-border': 'k-i-border-right',
'k-i-bottom-border': 'k-i-border-bottom',
'k-i-left-border': 'k-i-border-left',
'k-i-no-borders': 'k-i-border-no',
'k-i-merge-horizontally': 'k-i-cells-merge-horizontally',
'k-i-merge-vertically': 'k-i-cells-merge-vertically',
'k-i-freeze-col': 'k-i-column-freeze',
'k-i-freeze-row': 'k-i-row-freeze',
'k-i-freeze-panes': 'k-i-pane-freeze',
'k-i-format-number': 'k-i-custom-format',
'k-i-fullscreen-enter': 'k-i-full-screen',
'k-i-volume-low': 'k-i-volume-down',
'k-i-volume-high': 'k-i-volume-up',
'k-i-volume-mute': 'k-i-volume-off',
};
const sortedOldClasses = Object.keys(iconClassMappings).sort((a, b) => b.length - a.length);
function buildIconRegex() {
const escaped = sortedOldClasses.map(c => c.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
return new RegExp('(?<![\\w-])(' + escaped.join('|') + ')(?![\\w-])', 'g');
}
const ICON_RE = buildIconRegex();
function applyIconClassRenames(str) {
return str.replace(ICON_RE, (match) => iconClassMappings[match] || match);
}
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;
}
module.exports = {
iconClassMappings,
applyIconClassRenames,
transformStringLiterals,
transformTemplateLiterals,
};