@sanity/desk-tool
Version:
Tool for managing all sorts of content in a structured manner
55 lines (54 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isDocumentWithType = isDocumentWithType;
exports.isExpanded = isExpanded;
exports.maybeSelectAll = maybeSelectAll;
exports.select = select;
exports.selectElement = selectElement;
exports.toggleExpanded = toggleExpanded;
var _hashlru = _interopRequireDefault(require("hashlru"));
var _isRecord = require("../../../utils/isRecord");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var lru = (0, _hashlru.default)(1000);
function isExpanded(keyPath, value) {
var cached = lru.get(keyPath);
if (cached === undefined) {
lru.set(keyPath, Array.isArray(value) || (0, _isRecord.isRecord)(value));
return isExpanded(keyPath, value);
}
return cached;
}
function toggleExpanded(event) {
var path = event.path;
var current = lru.get(path);
if (current === undefined) {
// something is wrong
return;
}
lru.set(path, !current);
}
function selectElement(element) {
var sel = window.getSelection();
if (sel) {
var range = document.createRange();
sel.removeAllRanges();
range.selectNodeContents(element);
sel.addRange(range);
}
}
function select(event) {
selectElement(event.currentTarget);
}
function maybeSelectAll(event) {
var selectAll = event.keyCode === 65 && (event.metaKey || event.ctrlKey);
if (!selectAll) {
return;
}
event.preventDefault();
selectElement(event.currentTarget);
}
function isDocumentWithType(value) {
return typeof (value === null || value === void 0 ? void 0 : value._type) === 'string';
}