UNPKG

@atlaskit/editor-plugin-code-block

Version:

Code block plugin for @atlaskit/editor-core

55 lines (52 loc) 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.shouldAutoCloseQuote = exports.getAutoClosingQuoteInfo = exports.QUOTE_MAP = void 0; var QUOTE_MAP = exports.QUOTE_MAP = { "'": "'", '"': '"', '`': '`' }; // when directly before a closing bracket // Ignored via go/ees005 // eslint-disable-next-line require-unicode-regexp var CLOSING_BRACKET_REGEX = /^[}\])]/; // exclusion: when directly before a non-whitespace character // Ignored via go/ees005 // eslint-disable-next-line require-unicode-regexp var NON_WHITESPACE_AFTER_REGEX = /^[^\s]/; // exclusion: when directly after a letter or quote // Ignored via go/ees005 // eslint-disable-next-line require-unicode-regexp var ALPHANUMERIC_END_REGEX = /[A-Za-z0-9]$/; // Ignored via go/ees005 // eslint-disable-next-line require-unicode-regexp var QUOTE_END_REGEX = /[\'\"\'`]$/; var shouldAutoCloseQuote = exports.shouldAutoCloseQuote = function shouldAutoCloseQuote(before, after) { // when directly before a closing bracket if (CLOSING_BRACKET_REGEX.test(after)) { return true; } // exclusion: when directly before a non-whitespace character if (NON_WHITESPACE_AFTER_REGEX.test(after)) { return false; } // exclusion: when directly after a letter or quote if (ALPHANUMERIC_END_REGEX.test(before) || QUOTE_END_REGEX.test(before)) { return false; } return true; }; var getAutoClosingQuoteInfo = exports.getAutoClosingQuoteInfo = function getAutoClosingQuoteInfo(before, after) { var left = Object.keys(QUOTE_MAP).find(function (item) { return before.endsWith(item); }); var right = left ? QUOTE_MAP[left] : undefined; var hasTrailingMatchingQuote = right ? after.startsWith(right) : false; return { left: left, right: right, hasTrailingMatchingQuote: hasTrailingMatchingQuote }; };