UNPKG

upfront-editable

Version:
79 lines (64 loc) 3.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.init = init; exports.disable = disable; exports.setBlockId = setBlockId; exports.getState = getState; exports.setState = setState; exports.previous = exports.next = void 0; var _config = _interopRequireDefault(require("./config")); var content = _interopRequireWildcard(require("./content")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var nextBlockId = 1; var state = {}; var next = getSibling('nextElementSibling'); exports.next = next; var previous = getSibling('previousElementSibling'); exports.previous = previous; function init(elem, _ref) { var normalize = _ref.normalize, shouldSpellcheck = _ref.shouldSpellcheck; setBlockId(elem); elem.setAttribute('contenteditable', true); elem.setAttribute('spellcheck', Boolean(shouldSpellcheck)); elem.classList.remove(_config["default"].editableDisabledClass); elem.classList.add(_config["default"].editableClass); if (normalize) content.tidyHtml(elem); } function disable(elem) { elem.removeAttribute('contenteditable'); elem.removeAttribute('spellcheck'); setState(elem, undefined); elem.classList.remove(_config["default"].editableClass); elem.classList.add(_config["default"].editableDisabledClass); } function setBlockId(elem) { if (!elem.hasAttribute('data-editable')) { elem.setAttribute('data-editable', "id-".concat(nextBlockId)); nextBlockId += 1; } } function getState(elem) { if (elem.hasAttribute('data-editable')) { var id = elem.getAttribute('data-editable'); return state[id]; } } function setState(elem, data) { if (elem.hasAttribute('data-editable')) { var id = elem.getAttribute('data-editable'); state[id] = data; } } // Helpers // ------- function getSibling(type) { return function (element) { var sibling = element[type]; return sibling && sibling.getAttribute('contenteditable') ? sibling : null; }; }