UNPKG

react-application-core

Version:

A react-based application core for the business applications.

588 lines 20.3 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DomAccessor = void 0; var R = require("ramda"); var $ = require("jquery"); var inversify_1 = require("inversify"); require("jquery-ui/ui/position"); var util_1 = require("../../util"); var definition_1 = require("../../definition"); var di_1 = require("../../di"); var definitions_interface_1 = require("../../definitions.interface"); var DomAccessor = /** @class */ (function () { function DomAccessor() { } Object.defineProperty(DomAccessor.prototype, "documentBody", { /** * @stable [24.01.2020] * @returns {Element} */ get: function () { return this.environment.document.body; }, enumerable: false, configurable: true }); Object.defineProperty(DomAccessor.prototype, "rootElement", { /** * @stable [11.05.2020] * @returns {Element} */ get: function () { return this.document.getElementById(this.bootstrapSettings.rootId); }, enumerable: false, configurable: true }); /** * @stable [24.01.2020] * @param {IDomPositionConfigEntity} cfg */ DomAccessor.prototype.setPosition = function (cfg) { var cfg0 = util_1.FilterUtils.defValuesFilter(__assign(__assign(__assign(__assign({}, definition_1.DEFAULT_DOM_POSITION_CONFIG_ENTITY), cfg), { event: definitions_interface_1.UNDEF, element: definitions_interface_1.UNDEF }), util_1.ConditionUtils.ifNotNilThanValue(cfg.event, function (event) { return ({ of: util_1.CalcUtils.calc(event) }); }))); var el = this.asJqEl(cfg.element); el.position(cfg0); }; /** * @stable [22.11.2020] * @param cfg */ DomAccessor.prototype.fireEvent = function (cfg) { var eventName = cfg.eventName; this.dispatchEvent(__assign(__assign({}, cfg), { event: new Event(eventName) })); }; /** * @stable [22.11.2020] * @param cfg */ DomAccessor.prototype.dispatchEvent = function (cfg) { var event = cfg.event, _a = cfg.element, element = _a === void 0 ? this.window : _a; element.dispatchEvent(event); }; /** * @stable [13.12.2020] * @param cfg */ DomAccessor.prototype.downloadFile = function (cfg) { return util_1.DomUtils.downloadFile(cfg); }; /** * @stable [13.12.2020] * @param cfg */ DomAccessor.prototype.downloadFileByBlob = function (cfg) { util_1.DomUtils.downloadFileByBlob(cfg); }; /** * @stable [11.01.2020] * @param {Element} source * @returns {number} */ DomAccessor.prototype.getWidth = function (source) { return util_1.getWidth(source); }; /** * @stable [09.01.2020] * @param {IBaseEvent} event */ DomAccessor.prototype.cancelEvent = function (event) { util_1.cancelEvent(event); }; /** * @stable [08.01.2020] * @param {Partial<HTMLScriptElement>} cfg * @returns {Promise<HTMLScriptElement>} */ DomAccessor.prototype.createScript = function (cfg) { return util_1.createScript(cfg); }; /** * @stable [13.12.2020] * @param transform * @param transformOrigin */ DomAccessor.prototype.getTransformStyles = function (transform, transformOrigin) { if (transformOrigin === void 0) { transformOrigin = '0 0'; } // TODO Use https://github.com/FormidableLabs/radium return { transformOrigin: transformOrigin, transform: transform, }; }; /** * @stable [13.12.2020] * @param scale * @param transformOrigin */ DomAccessor.prototype.getTransformScaleStyles = function (scale, transformOrigin) { if (transformOrigin === void 0) { transformOrigin = '0 0'; } return this.getTransformStyles("scale(" + scale + ")", transformOrigin); }; /** * @stable [21.06.2020] * @param {Element} source * @param {string} property * @returns {string} */ DomAccessor.prototype.getProperty = function (source, property) { return this.asJqEl(source).css(property); }; /** * @stable [23.11.2019] * @param {ICaptureEventConfigEntity} cfg * @returns {() => void} */ DomAccessor.prototype.captureEvent = function (cfg) { var autoUnsubscribing = cfg.autoUnsubscribing, callback = cfg.callback, _a = cfg.capture, capture = _a === void 0 ? false : _a, _b = cfg.condition, condition = _b === void 0 ? function () { return true; } : _b, _c = cfg.element, element = _c === void 0 ? this.window : _c, eventName = cfg.eventName; var eventUnsubscriber; return eventUnsubscriber = this.eventManager.subscribe(element, eventName, function (event) { if (condition()) { if (autoUnsubscribing) { eventUnsubscriber(); } callback(event); } }, capture); }; /** * @stable [24.11.2019] * @param {ICaptureEventConfigEntity} cfg * @returns {() => void} */ DomAccessor.prototype.captureEventWithinElement = function (cfg) { var autoUnsubscribing = cfg.autoUnsubscribing, callback = cfg.callback, element = cfg.element, eventName = cfg.eventName, _a = cfg.parentElement, parentElement = _a === void 0 ? this.window : _a; var withinMenuEl = false; var enterUnsubscriber; var leaveUnsubscriber; var sideEffectsUnsubscriber = function () { if (util_1.TypeUtils.isFn(enterUnsubscriber)) { enterUnsubscriber(); enterUnsubscriber = null; } if (util_1.TypeUtils.isFn(leaveUnsubscriber)) { leaveUnsubscriber(); leaveUnsubscriber = null; } }; var touchedPlatform = this.environment.touchedPlatform; enterUnsubscriber = this.eventManager.subscribe(element, touchedPlatform ? definition_1.TouchEventsEnum.TOUCH_START : definition_1.EventsEnum.MOUSE_ENTER, function () { return withinMenuEl = true; }); leaveUnsubscriber = this.eventManager.subscribe(element, touchedPlatform ? definition_1.TouchEventsEnum.TOUCH_END : definition_1.EventsEnum.MOUSE_LEAVE, function () { return withinMenuEl = false; }); var originalUnSubscriber = this.captureEvent({ autoUnsubscribing: autoUnsubscribing, callback: function () { if (autoUnsubscribing) { sideEffectsUnsubscriber(); } callback(); }, condition: function () { return !withinMenuEl; }, element: parentElement, eventName: eventName, }); return function () { sideEffectsUnsubscriber(); originalUnSubscriber(); }; }; /** * @stable [24.01.2020] * @param {Element} element * @returns {boolean} */ DomAccessor.prototype.isElementFocused = function (element) { return this.environment.document.activeElement === element; }; /** * @stable [26.10.2019] * @param {Element} child * @param {Element} parent * @returns {boolean} */ DomAccessor.prototype.isElementVisibleWithinParent = function (child, parent) { return util_1.isElementVisibleWithinParent(child, parent); }; /** * @stable [22.10.2019] * @param {Element} target * @param {string} classNames * @returns {boolean} */ DomAccessor.prototype.hasClasses = function (target) { var classNames = []; for (var _i = 1; _i < arguments.length; _i++) { classNames[_i - 1] = arguments[_i]; } return util_1.hasClasses.apply(void 0, __spreadArrays([target], classNames)); }; /** * @stable [16.10.2019] * @param {string} selector * @param {Element} parent * @returns {Element} */ DomAccessor.prototype.findElement = function (selector, parent) { return R.isNil(selector) ? null : this.findElements(selector, parent)[0]; }; /** * @stable [08.10.2019] * @returns {boolean} */ DomAccessor.prototype.isAlreadyFocused = function () { return this.isInputElement(this.getActiveElement()); }; /** * @stable [07.10.2019] * @param {string} path */ DomAccessor.prototype.redirect = function (path) { this.window.location.assign(path); }; /** * @stable [16.10.2019] * @param {boolean} forceReload A Boolean to indicate that the page will always reload from the server. * If false or unspecified, the browser may reload the page from its HTTP cache. */ DomAccessor.prototype.reload = function (forceReload) { this.window.location.reload(forceReload); }; /** * @stable [01.10.2019] * @returns {Element} */ DomAccessor.prototype.addRootElement = function () { return util_1.addRootElement(this.bootstrapSettings.rootId); }; /** * @stable [11.05.2020] * @param {string} clsName */ DomAccessor.prototype.addClassNamesToRootElement = function () { var clsName = []; for (var _i = 0; _i < arguments.length; _i++) { clsName[_i] = arguments[_i]; } util_1.addClassNames.apply(void 0, __spreadArrays([this.rootElement], clsName)); }; /** * @stable [30.09.2019] * @param {string} tag * @param {Element} parent * @returns {Element} */ DomAccessor.prototype.createElement = function (tag, parent) { return util_1.createElement(tag, parent); }; /** * @stable [30.09.2019] * @param {Element} child * @param {Element} parent * @returns {Element} */ DomAccessor.prototype.addChild = function (child, parent) { return util_1.addChild(child, parent); }; /** * @stable [06.02.2020] * @returns {string} */ DomAccessor.prototype.asImageUrl = function (url) { return "url(" + url + ")"; }; /** * @stable [14.04.2019] * @param {Element} child * @param {Element} parent */ DomAccessor.prototype.removeChild = function (child, parent) { util_1.removeChild(child, parent); }; /** * @stable [04.04.2019] * @param {HTMLElement} element */ DomAccessor.prototype.enableFullScreen = function (element) { if (element === void 0) { element = document.body; } util_1.openFullScreen(element); }; /** * @stable [04.04.2019] * @param {HTMLElement} element */ DomAccessor.prototype.disableFullScreen = function (element) { if (element === void 0) { element = document.body; } // TODO }; /** * @stable [31.01.2020] * @param {string} selector * @param {Element} target * @returns {boolean} */ DomAccessor.prototype.hasElements = function (selector, target) { return this.findElements(selector, target).length > 0; }; /** * @stable [25.01.2020] * @param {IDomParentConfigEntity} cfg * @returns {boolean} */ DomAccessor.prototype.hasParent = function (cfg) { return this.getParents(cfg).length > 0; }; /** * @stable [25.01.2020] * @param {IDomParentConfigEntity} cfg * @returns {IJQueryElement} */ DomAccessor.prototype.getParents = function (cfg) { return this.asJqEl(cfg.element).parents(this.asSelector(cfg.parentClassName)); }; /** * @stable [29.01.2020] * @param {IDomParentConfigEntity} cfg * @returns {TElement[]} */ DomAccessor.prototype.getParentsAsElements = function (cfg) { return this.getParents(cfg).get(); }; /** * @stable [13.01.2019] * @param {Element} element * @param {string} clsNames */ DomAccessor.prototype.addClassNames = function (element) { var clsNames = []; for (var _i = 1; _i < arguments.length; _i++) { clsNames[_i - 1] = arguments[_i]; } util_1.addClassNames.apply(void 0, __spreadArrays([element], clsNames)); }; /** * @stable [13.01.2019] * @param {Element} element * @param {string} clsNames */ DomAccessor.prototype.removeClassNames = function (element) { var clsNames = []; for (var _i = 1; _i < arguments.length; _i++) { clsNames[_i - 1] = arguments[_i]; } util_1.removeClassNames.apply(void 0, __spreadArrays([element], clsNames)); }; /** * @stable [11.05.2020] * @param {string} clsNames */ DomAccessor.prototype.removeClassNamesFromRootElement = function () { var clsNames = []; for (var _i = 0; _i < arguments.length; _i++) { clsNames[_i] = arguments[_i]; } this.removeClassNames.apply(this, __spreadArrays([this.rootElement], clsNames)); }; /** * @stable [18.12.2018] * @param {Element} el * @param {number} left */ DomAccessor.prototype.setScrollLeft = function (el, left) { util_1.setScrollLeft(el, left); }; /** * @stable [18.12.2018] * @param {Element} el * @returns {number} */ DomAccessor.prototype.getScrollLeft = function (el) { return util_1.getScrollLeft(el); }; /** * @stable [18.12.2018] * @param {Element} el * @returns {number} */ DomAccessor.prototype.getScrollTop = function (el) { return util_1.getScrollTop(el); }; /** * @stable [13.12.2018] * @param {Element} source * @returns {number} */ DomAccessor.prototype.getHeight = function (source) { return util_1.getHeight(source); }; /** * @stable [13.12.2018] * @param {Element} source * @returns {IJQueryElement} */ DomAccessor.prototype.asJqEl = function (source) { return $(source); }; /** * @stable [01.12.2018] * @param {Element} el * @returns {IPresetsXYEntity} */ DomAccessor.prototype.getScrollInfo = function (el) { return { x: util_1.getScrollLeft(el), y: util_1.getScrollTop(el) }; }; /** * @stable [01.12.2018] * @param {Element} source * @returns {number} */ DomAccessor.prototype.getContentHeight = function (source) { return util_1.getContentHeight(source); }; /** * @stable [08.11.2019] * @param {IPresetsXYEntity | Element} payload * @param {Element} parent * @param {IScrollConfigEntity} config */ DomAccessor.prototype.scrollTo = function (payload, parent, config) { if (R.isNil(payload)) { return; } var xyEntity = payload; var el = payload; if (el instanceof Element) { util_1.scrollIntoView(el, parent, config); } else if (!R.isNil(xyEntity.x) || !R.isNil(xyEntity.y)) { util_1.scrollTo(parent, xyEntity); } }; /** * @stable [01.12.2018] * @param {Element} el * @param {number} top */ DomAccessor.prototype.setScrollTop = function (el, top) { util_1.setScrollTop(el, top); }; /** * @stable [09.10.2019] * @returns {Element} */ DomAccessor.prototype.getActiveElement = function () { return this.document.activeElement; }; /** * @stable [17.10.2019] * @param {string} id * @returns {Element} */ DomAccessor.prototype.getElement = function (id) { return this.document.getElementById(id); }; /** * @stable [25.01.2020] * @param {string} selector * @returns {string} */ DomAccessor.prototype.asSelector = function (selector) { return R.isNil(selector) ? selector : selector.startsWith('.') ? selector : "." + selector; }; Object.defineProperty(DomAccessor.prototype, "bootstrapSettings", { /** * @stable [01.10.2019] * @returns {IBootstrapSettings} */ get: function () { return this.settings.bootstrap || {}; }, enumerable: false, configurable: true }); Object.defineProperty(DomAccessor.prototype, "document", { /** * @stable [08.10.2019] * @returns {Document} */ get: function () { return this.environment.document; }, enumerable: false, configurable: true }); Object.defineProperty(DomAccessor.prototype, "window", { /** * @stable [08.10.2019] * @returns {Window} */ get: function () { return this.environment.window; }, enumerable: false, configurable: true }); /** * @stable [31.01.2020] * @param {string} selector * @param {Element} target * @returns {IJQueryElement} */ DomAccessor.prototype.findElements = function (selector, target) { if (target === void 0) { target = this.documentBody; } return this.asJqEl(target).find(this.asSelector(selector)); }; /** * @stable [09.10.2019] * @param {Element} element * @returns {boolean} */ DomAccessor.prototype.isInputElement = function (element) { return element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement; }; __decorate([ di_1.lazyInject(di_1.DI_TYPES.Environment), __metadata("design:type", Object) ], DomAccessor.prototype, "environment", void 0); __decorate([ di_1.lazyInject(di_1.DI_TYPES.EventManager), __metadata("design:type", Object) ], DomAccessor.prototype, "eventManager", void 0); __decorate([ di_1.lazyInject(di_1.DI_TYPES.Settings), __metadata("design:type", Object) ], DomAccessor.prototype, "settings", void 0); DomAccessor = __decorate([ inversify_1.injectable() ], DomAccessor); return DomAccessor; }()); exports.DomAccessor = DomAccessor; //# sourceMappingURL=dom-accessor.service.js.map