luna-data-grid
Version:
Grid for displaying datasets
165 lines (164 loc) • 5.75 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.hasSelection = exports.loadImage = exports.resetCanvasSize = exports.getPlatform = exports.pxToNum = exports.executeAfterTransition = exports.hasVerticalScrollbar = exports.measuredScrollbarWidth = exports.eventPage = exports.eventClient = exports.hasTouchSupport = exports.classPrefix = exports.exportCjs = void 0;
var map_1 = __importDefault(require("licia/map"));
var trim_1 = __importDefault(require("licia/trim"));
var root_1 = __importDefault(require("licia/root"));
var html_1 = __importDefault(require("licia/html"));
var isNum_1 = __importDefault(require("licia/isNum"));
var contain_1 = __importDefault(require("licia/contain"));
var toNum_1 = __importDefault(require("licia/toNum"));
var detectOs_1 = __importDefault(require("licia/detectOs"));
var loadImg_1 = __importDefault(require("licia/loadImg"));
var isHidden_1 = __importDefault(require("licia/isHidden"));
function exportCjs(module, clazz) {
try {
module.exports = clazz;
module.exports.default = clazz;
}
catch (e) {
}
}
exports.exportCjs = exportCjs;
function classPrefix(name) {
var prefix = "luna-".concat(name, "-");
function processClass(str) {
return (0, map_1.default)((0, trim_1.default)(str).split(/\s+/), function (singleClass) {
if ((0, contain_1.default)(singleClass, prefix)) {
return singleClass;
}
return singleClass.replace(/[\w-]+/, function (match) { return "".concat(prefix).concat(match); });
}).join(' ');
}
return function (str) {
if (/<[^>]*>/g.test(str)) {
try {
var tree = html_1.default.parse(str);
traverseTree(tree, function (node) {
if (node.attrs && node.attrs.class) {
node.attrs.class = processClass(node.attrs.class);
}
});
return html_1.default.stringify(tree);
}
catch (e) {
return processClass(str);
}
}
return processClass(str);
};
}
exports.classPrefix = classPrefix;
function traverseTree(tree, handler) {
for (var i = 0, len = tree.length; i < len; i++) {
var node = tree[i];
handler(node);
if (node.content) {
traverseTree(node.content, handler);
}
}
}
exports.hasTouchSupport = 'ontouchstart' in root_1.default;
function eventClient(type, e) {
var name = type === 'x' ? 'clientX' : 'clientY';
if (e[name]) {
return e[name];
}
if (e.changedTouches) {
return e.changedTouches[0][name];
}
return 0;
}
exports.eventClient = eventClient;
function eventPage(type, e) {
var name = type === 'x' ? 'pageX' : 'pageY';
if (e[name]) {
return e[name];
}
if (e.changedTouches) {
return e.changedTouches[0][name];
}
return 0;
}
exports.eventPage = eventPage;
var scrollbarWidth;
function measuredScrollbarWidth() {
if ((0, isNum_1.default)(scrollbarWidth)) {
return scrollbarWidth;
}
if (!document) {
return 16;
}
var scrollDiv = document.createElement('div');
var innerDiv = document.createElement('div');
scrollDiv.setAttribute('style', 'display: block; width: 100px; height: 100px; overflow: scroll;');
innerDiv.setAttribute('style', 'height: 200px');
scrollDiv.appendChild(innerDiv);
var container = document.body || document.documentElement;
container.appendChild(scrollDiv);
scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
container.removeChild(scrollDiv);
return scrollbarWidth;
}
exports.measuredScrollbarWidth = measuredScrollbarWidth;
function hasVerticalScrollbar(el) {
return el.scrollHeight > el.offsetHeight;
}
exports.hasVerticalScrollbar = hasVerticalScrollbar;
function executeAfterTransition(el, callback) {
if ((0, isHidden_1.default)(el)) {
return callback();
}
var handler = function (e) {
var target = e.target;
if (target !== el) {
return;
}
el.removeEventListener('transitionend', handler);
callback();
};
el.addEventListener('transitionend', handler);
}
exports.executeAfterTransition = executeAfterTransition;
function pxToNum(str) {
return (0, toNum_1.default)(str.replace('px', ''));
}
exports.pxToNum = pxToNum;
function getPlatform() {
var os = (0, detectOs_1.default)();
if (os === 'os x') {
return 'mac';
}
return os;
}
exports.getPlatform = getPlatform;
function resetCanvasSize(canvas) {
canvas.width = Math.round(canvas.offsetWidth * window.devicePixelRatio);
canvas.height = Math.round(canvas.offsetHeight * window.devicePixelRatio);
}
exports.resetCanvasSize = resetCanvasSize;
function loadImage(url) {
return new Promise(function (resolve, reject) {
(0, loadImg_1.default)(url, function (err, img) {
if (err) {
return reject(err);
}
resolve(img);
});
});
}
exports.loadImage = loadImage;
function hasSelection(node) {
var selection = window.getSelection();
if (!selection || selection.type !== 'Range' || selection.toString() === '') {
return false;
}
var anchorNode = selection.anchorNode, focusNode = selection.focusNode;
return (selection.containsNode(node, true) ||
(anchorNode && node.contains(anchorNode)) ||
(focusNode && node.contains(focusNode)));
}
exports.hasSelection = hasSelection;