mirror of https://github.com/friendica/friendica
84 lines
2.2 KiB
JavaScript
84 lines
2.2 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
var cls = require('./class');
|
||
|
var dom = require('./dom');
|
||
|
|
||
|
var toInt = exports.toInt = function (x) {
|
||
|
return parseInt(x, 10) || 0;
|
||
|
};
|
||
|
|
||
|
var clone = exports.clone = function (obj) {
|
||
|
if (!obj) {
|
||
|
return null;
|
||
|
} else if (obj.constructor === Array) {
|
||
|
return obj.map(clone);
|
||
|
} else if (typeof obj === 'object') {
|
||
|
var result = {};
|
||
|
for (var key in obj) {
|
||
|
result[key] = clone(obj[key]);
|
||
|
}
|
||
|
return result;
|
||
|
} else {
|
||
|
return obj;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
exports.extend = function (original, source) {
|
||
|
var result = clone(original);
|
||
|
for (var key in source) {
|
||
|
result[key] = clone(source[key]);
|
||
|
}
|
||
|
return result;
|
||
|
};
|
||
|
|
||
|
exports.isEditable = function (el) {
|
||
|
return dom.matches(el, "input,[contenteditable]") ||
|
||
|
dom.matches(el, "select,[contenteditable]") ||
|
||
|
dom.matches(el, "textarea,[contenteditable]") ||
|
||
|
dom.matches(el, "button,[contenteditable]");
|
||
|
};
|
||
|
|
||
|
exports.removePsClasses = function (element) {
|
||
|
var clsList = cls.list(element);
|
||
|
for (var i = 0; i < clsList.length; i++) {
|
||
|
var className = clsList[i];
|
||
|
if (className.indexOf('ps-') === 0) {
|
||
|
cls.remove(element, className);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
exports.outerWidth = function (element) {
|
||
|
return toInt(dom.css(element, 'width')) +
|
||
|
toInt(dom.css(element, 'paddingLeft')) +
|
||
|
toInt(dom.css(element, 'paddingRight')) +
|
||
|
toInt(dom.css(element, 'borderLeftWidth')) +
|
||
|
toInt(dom.css(element, 'borderRightWidth'));
|
||
|
};
|
||
|
|
||
|
exports.startScrolling = function (element, axis) {
|
||
|
cls.add(element, 'ps-in-scrolling');
|
||
|
if (typeof axis !== 'undefined') {
|
||
|
cls.add(element, 'ps-' + axis);
|
||
|
} else {
|
||
|
cls.add(element, 'ps-x');
|
||
|
cls.add(element, 'ps-y');
|
||
|
}
|
||
|
};
|
||
|
|
||
|
exports.stopScrolling = function (element, axis) {
|
||
|
cls.remove(element, 'ps-in-scrolling');
|
||
|
if (typeof axis !== 'undefined') {
|
||
|
cls.remove(element, 'ps-' + axis);
|
||
|
} else {
|
||
|
cls.remove(element, 'ps-x');
|
||
|
cls.remove(element, 'ps-y');
|
||
|
}
|
||
|
};
|
||
|
|
||
|
exports.env = {
|
||
|
isWebKit: 'WebkitAppearance' in document.documentElement.style,
|
||
|
supportsTouch: (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch),
|
||
|
supportsIePointer: window.navigator.msMaxTouchPoints !== null
|
||
|
};
|