UNPKG

react-application-core

Version:

A react-based application core for the business applications.

409 lines 15.3 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DomUtils = exports.openFullScreen = exports.setStickyElementProperties = exports.isElementVisibleWithinParent = exports.scrollTo = exports.hasClasses = exports.preventContextMenu = exports.toJqEl = exports.isDocumentHasFocus = exports.setScrollLeft = exports.setScrollTop = exports.getScrollTop = exports.getScrollLeft = exports.getContentHeight = exports.getHeight = exports.getWidth = exports.createPreloadedImg = exports.removeChild = exports.addChild = exports.addRootElement = exports.removeClassNames = exports.addClassNames = exports.createScript = exports.createElement = exports.getElementById = void 0; var $ = require("jquery"); var R = require("ramda"); var blob_1 = require("./blob"); var type_1 = require("./type"); var nvl_1 = require("./nvl"); var filter_1 = require("./filter"); var definition_1 = require("../definition"); var cls_1 = require("./cls"); var cond_1 = require("./cond"); /** * @stable [28.08.2019] * @param {string} id * @returns {TElement} */ exports.getElementById = function (id) { return document.getElementById(id); }; /** * @stable [14.06.2018] * @param {string} tag * @param {Element} parent * @returns {TElement} */ exports.createElement = function (tag, parent) { if (tag === void 0) { tag = 'div'; } if (parent === void 0) { parent = document.body; } var el = document.createElement(tag); exports.addChild(el, parent); return el; }; /** * @stable [08.01.2020] * @param {Partial<HTMLScriptElement>} cfg * @returns {Promise<HTMLScriptElement>} */ exports.createScript = function (cfg) { return new Promise(function (resolve) { var el = exports.createElement('script'); el.type = 'text/javascript'; el.onload = function () { return resolve(el); }; Object.assign(el, cfg); }); }; /** * @stable [12.05.2020] * @param {Element} element * @param {string} clsName */ exports.addClassNames = function (element) { var clsName = []; for (var _i = 1; _i < arguments.length; _i++) { clsName[_i - 1] = arguments[_i]; } if (R.isNil(element)) { return; } exports.toJqEl(element).addClass(cls_1.joinClassName.apply(void 0, clsName)); }; /** * @stable [12.05.2020] * @param {Element} element * @param {string} clsName */ exports.removeClassNames = function (element) { var clsName = []; for (var _i = 1; _i < arguments.length; _i++) { clsName[_i - 1] = arguments[_i]; } if (R.isNil(element)) { return; } exports.toJqEl(element).removeClass(cls_1.joinClassName.apply(void 0, clsName)); }; /** * @stable [20.09.2019] * @param {string} rootId * @returns {Element} */ exports.addRootElement = function (rootId) { var rootEl = exports.createElement(); rootEl.setAttribute('id', rootId); exports.addClassNames(rootEl, 'rac-root'); return rootEl; }; /** * @stable [28.06.2018] * @param {Element} child * @param {Element} parent * @returns {Element} */ exports.addChild = function (child, parent) { if (parent === void 0) { parent = document.body; } return parent.appendChild(child); }; /** * @stable [28.06.2018] * @param {Element} child * @param {Element} parent * @returns {Element} */ exports.removeChild = function (child, parent) { if (parent === void 0) { parent = document.body; } return parent.removeChild(child); }; /** * @stable [14.06.2018] * @param {string} images */ exports.createPreloadedImg = function () { var images = []; for (var _i = 0; _i < arguments.length; _i++) { images[_i] = arguments[_i]; } var preloadedWrapper = exports.createElement(); preloadedWrapper.style.width = '0px'; preloadedWrapper.style.height = '0px'; images.forEach(function (src) { var el = exports.createElement('img', preloadedWrapper); el.src = src; el.style.height = '0px'; el.style.width = '0px'; }); }; /** * @stable [04.10.2018] * @param {Element} source * @returns {number} */ exports.getWidth = function (source) { return $(source).width(); }; /** * @stable [27.10.2018] * @param {Element} source * @returns {number} */ exports.getHeight = function (source) { return $(source).height(); }; /** * @stable [27.10.2018] * @param {Element} source * @returns {number} */ exports.getContentHeight = function (source) { return $(source).children().height(); }; /** * @stable [01.12.2018] * @param {Element} source * @returns {number} */ exports.getScrollLeft = function (source) { return $(source).scrollLeft(); }; /** * @stable [01.12.2018] * @param {Element} source * @returns {number} */ exports.getScrollTop = function (source) { return $(source).scrollTop(); }; /** * @stable [01.12.2018] * @param {Element} source * @param {number} value * @returns {IJQueryElement} */ exports.setScrollTop = function (source, value) { return $(source).scrollTop(value); }; /** * @stable [18.12.2018] * @param {Element} source * @param {number} value * @returns {IJQueryElement} */ exports.setScrollLeft = function (source, value) { return $(source).scrollLeft(value); }; /** * @stable [23.06.2018] * @returns {boolean} */ exports.isDocumentHasFocus = function () { return type_1.isFn(document.hasFocus) && document.hasFocus(); }; /** * @stable [13.12.2018] * @param {Element} source * @returns {IJQueryElement} */ exports.toJqEl = function (source) { return $(source); }; /** * @stable [13.12.2020] * @param cfg */ var downloadFileByUrl = function (cfg) { var fileName = cfg.fileName, url = cfg.url; var loader = exports.createElement('a'); try { exports.addClassNames(loader, definition_1.ComponentClassesEnum.INVISIBLE); loader.download = nvl_1.NvlUtils.nvl(fileName, url); loader.href = url; loader.click(); } finally { exports.removeChild(loader); } }; /** * @stable [13.12.2020] * @param cfg */ var downloadFile = function (cfg) { return __awaiter(void 0, void 0, void 0, function () { var detectFileType, fileName, url, data, fileExtension; return __generator(this, function (_a) { switch (_a.label) { case 0: detectFileType = cfg.detectFileType, fileName = cfg.fileName, url = cfg.url; return [4 /*yield*/, blob_1.BlobUtils.fromUrlToBlob(url)]; case 1: data = _a.sent(); return [4 /*yield*/, cond_1.ConditionUtils.orNull(detectFileType, function () { return __awaiter(void 0, void 0, void 0, function () { var _a, _b; return __generator(this, function (_c) { switch (_c.label) { case 0: _b = (_a = blob_1.BlobUtils).asFileExtension; return [4 /*yield*/, blob_1.BlobUtils.detectBlobMimeType(data)]; case 1: return [2 /*return*/, _b.apply(_a, [_c.sent()])]; } }); }); })]; case 2: fileExtension = _a.sent(); return [2 /*return*/, downloadFileByBlob({ data: data, fileName: fileExtension ? nvl_1.NvlUtils.nvl(fileName, url) + "." + fileExtension : fileName, })]; } }); }); }; /** * @stable [13.12.2020] * @param cfg */ var downloadFileByBlob = function (cfg) { var blob = cfg.data; var fileName = cfg.fileName; var url = URL.createObjectURL(blob); try { downloadFileByUrl({ url: url, fileName: fileName }); } finally { URL.revokeObjectURL(url); } }; /** * @stable [30.07.2018] * @returns {() => boolean} */ exports.preventContextMenu = function () { return document.body.oncontextmenu = function () { return false; }; }; /** * @stable [22.10.2019] * @param {Element} target * @param {string} classNames * @returns {boolean} */ exports.hasClasses = function (target) { var classNames = []; for (var _i = 1; _i < arguments.length; _i++) { classNames[_i - 1] = arguments[_i]; } var el = exports.toJqEl(target); return filter_1.FilterUtils.trueValuesArrayFilter.apply(filter_1.FilterUtils, classNames.map(function (className) { return el.hasClass(className); })).length > 0; }; /** * @stable [01.12.2018] * @param {Element} element * @param {IPresetsXYEntity} xyEntity */ exports.scrollTo = function (element, xyEntity) { return element.scrollTo(xyEntity.x, xyEntity.y); }; /** * @stable [26.10.2019] * @param {Element} element * @param {Element} parent * @returns {boolean} */ exports.isElementVisibleWithinParent = function (element, parent) { if (R.isNil(parent) || R.isNil(element)) { return false; } var parentJEl = exports.toJqEl(parent); var selectedJEl = exports.toJqEl(element); var parentJElOuterHeight = parentJEl.outerHeight(); var parentJElOffset = parentJEl.offset(); var parentJElOffsetTop = parentJElOffset.top; var selectedJElOffset = selectedJEl.offset(); var selectedJElOffsetTop = selectedJElOffset.top; var diff = selectedJElOffsetTop - parentJElOffsetTop; return diff <= parentJElOuterHeight && diff + selectedJEl.outerHeight() > 0; }; /** * @stable [11.10.2019] * @param {Element} stickyWrapperEl * @param {string} stickySelector * @param {(stickyJEl: IJQueryElement) => any} widthResolver */ exports.setStickyElementProperties = function (stickyWrapperEl, stickySelector, widthResolver) { if (widthResolver === void 0) { widthResolver = function (stickyJEl) { return stickyJEl.parent().width(); }; } if (R.isNil(stickyWrapperEl)) { return; } var stickyWrapperJEl = exports.toJqEl(stickyWrapperEl); if (R.isNil(stickyWrapperJEl) || R.isNil(stickyWrapperJEl.val())) { return; } var marginTop; var top; var left; var width; var stickyJEls = stickyWrapperJEl.find(stickySelector); if (R.isNil(stickyJEls)) { return; } stickyJEls.each(function (index) { var stickyJEl = exports.toJqEl(stickyJEls.get(index)); var stickyWrapperJElTop = stickyWrapperJEl.offset().top; var stickyJElPosition = stickyJEl.css('position'); var stickyJElTop = stickyJEl.offset().top; var stickyJElMarginBottom = parseInt(stickyJEl.css('margin-bottom'), 10); var stickyJElHeight = stickyJEl.height() + (isNaN(stickyJElMarginBottom) ? 0 : stickyJElMarginBottom); var stickyAfterJEl = exports.toJqEl(stickyJEl.siblings()[0]); var stickyAfterOffset = stickyAfterJEl.offset(); var stickyAfterJElTop = stickyAfterOffset.top; if ((stickyJElPosition === 'fixed' && stickyAfterJElTop >= stickyJElHeight + stickyWrapperJElTop) || stickyJElTop > stickyWrapperJElTop) { top = 0; left = 0; marginTop = 0; width = 'initial'; stickyJEl.removeClass('rac-sticky-fixed'); } else if (stickyJElTop <= stickyWrapperJElTop) { left = stickyAfterOffset.left; top = stickyWrapperJElTop; marginTop = stickyJElHeight; width = widthResolver(stickyJEl); stickyJEl.addClass('rac-sticky-fixed'); } stickyJEl.css({ top: top, left: left, width: width }); stickyAfterJEl.css('margin-top', marginTop + "px"); // Additional <tbody> offset }); }; /** * @stable [18.08.2020] * @param elem */ exports.openFullScreen = function (elem) { if (elem.requestFullscreen) { elem.requestFullscreen(); } else if (type_1.isFn(elem.mozRequestFullScreen)) { /* Firefox */ elem.mozRequestFullScreen(); } else if (type_1.isFn(elem.webkitRequestFullscreen)) { /* Chrome, Safari and Opera */ elem.webkitRequestFullscreen(); } else if (type_1.isFn(elem.msRequestFullscreen)) { /* IE/Edge */ elem.msRequestFullscreen(); } }; /** * @stable [13.12.2020] */ var DomUtils = /** @class */ (function () { function DomUtils() { } DomUtils.downloadFile = downloadFile; DomUtils.downloadFileByBlob = downloadFileByBlob; DomUtils.downloadFileByUrl = downloadFileByUrl; return DomUtils; }()); exports.DomUtils = DomUtils; //# sourceMappingURL=dom.js.map