react-application-core
Version:
A react-based application core for the business applications.
646 lines • 22.2 kB
JavaScript
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
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);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Viewer = void 0;
var React = require("react");
var R = require("ramda");
var util_1 = require("../../util");
var definition_1 = require("../../definition");
var definitions_interface_1 = require("../../definitions.interface");
var button_component_1 = require("../button/button.component");
var dialog_component_1 = require("../dialog/dialog.component");
var generic_component_1 = require("../base/generic.component");
var info_component_1 = require("../info/info.component");
var Viewer = /** @class */ (function (_super) {
__extends(Viewer, _super);
/**
* @stable [13.12.2020]
* @param originalProps
*/
function Viewer(originalProps) {
var _this = _super.call(this, originalProps) || this;
_this.previewDialogRef = React.createRef();
_this.onBack = _this.onBack.bind(_this);
_this.onDecrementScale = _this.onDecrementScale.bind(_this);
_this.onForward = _this.onForward.bind(_this);
_this.onIncrementScale = _this.onIncrementScale.bind(_this);
_this.onLoadError = _this.onLoadError.bind(_this);
_this.onLoadStart = _this.onLoadStart.bind(_this);
_this.onLoadSucceed = _this.onLoadSucceed.bind(_this);
_this.onPreviewDialogClose = _this.onPreviewDialogClose.bind(_this);
_this.onPreviewDialogOpen = _this.onPreviewDialogOpen.bind(_this);
_this.showPreviewDialog = _this.showPreviewDialog.bind(_this);
_this.state = {};
return _this;
}
/**
* @stable [13.12.2020]
* @param prevProps
* @param prevState
*/
Viewer.prototype.componentDidUpdate = function (prevProps, prevState) {
if (this.hasInlineDialogBeenClosed(prevProps, prevState) || this.hasSrcChanges(prevProps, prevState)) {
this.refreshOnSrcChanges();
}
else if (this.hasInternalChanges(prevProps, prevState)) {
this.refreshOnInternalChanges();
}
};
/**
* @stable [16.03.2020]
*/
Viewer.prototype.componentDidMount = function () {
this.refreshOnSrcChanges();
};
/**
* @stable [13.12.2020]
*/
Viewer.prototype.render = function () {
var style = this.originalProps.style;
return (React.createElement("div", { style: style, className: this.getClassName() },
this.originalChildren,
this.isBodyElementRendered && this.bodyElement,
this.previewIconElement,
this.previewDialogElement));
};
Object.defineProperty(Viewer.prototype, "previewExtraActionsElement", {
/**
* @stable [14.12.2020]
* @protected
*/
get: function () {
return (React.createElement(React.Fragment, null,
this.incrementScaleActionElement,
this.decrementScaleActionElement,
this.previewBackActionElement,
this.previewForwardActionElement));
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "previewForwardActionElement", {
/**
* @stable [13.12.2020]
* @protected
*/
get: function () {
return (React.createElement(button_component_1.Button, { icon: definition_1.IconsEnum.ARROW_RIGHT, disabled: this.isPreviewForwardActionDisabled, onClick: this.onForward }));
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "previewBackActionElement", {
/**
* @stable [13.12.2020]
* @protected
*/
get: function () {
return (React.createElement(button_component_1.Button, { icon: definition_1.IconsEnum.ARROW_LEFT, disabled: this.isPreviewBackActionDisabled, onClick: this.onBack }));
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "incrementScaleActionElement", {
/**
* @stable [13.12.2020]
* @protected
*/
get: function () {
return (React.createElement(button_component_1.Button, { icon: definition_1.IconsEnum.SEARCH_PLUS, onClick: this.onIncrementScale }));
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "decrementScaleActionElement", {
/**
* @stable [13.12.2020]
* @protected
*/
get: function () {
return (React.createElement(button_component_1.Button, { icon: definition_1.IconsEnum.SEARCH_MINUS, disabled: this.isDecrementScaleActionDisabled, onClick: this.onDecrementScale }));
},
enumerable: false,
configurable: true
});
/**
* @stable [18.03.2020]
* @param {AnyT} error
*/
Viewer.prototype.onLoadError = function (error) {
this.setState({ error: error, progress: false });
};
/**
* @stable [18.03.2020]
* @param {(...args) => void} callback
*/
Viewer.prototype.onLoadSucceed = function (callback) {
this.setState({ progress: false }, callback);
};
/**
* @stable [18.03.2020]
*/
Viewer.prototype.onLoadStart = function () {
this.setState({ error: null, progress: true });
};
Object.defineProperty(Viewer.prototype, "isPreviewForwardActionDisabled", {
/**
* @stable [13.12.2020]
* @protected
*/
get: function () {
return false;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "isPreviewBackActionDisabled", {
/**
* @stable [13.12.2020]
* @protected
*/
get: function () {
var previewPage = this.state.previewPage;
return !previewPage || previewPage === Viewer.DEFAULT_PAGE;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "isDecrementScaleActionDisabled", {
/**
* @stable [14.12.2020]
* @protected
*/
get: function () {
return this.nextDecrementPreviewScale < 0;
},
enumerable: false,
configurable: true
});
/**
* @stable [14.12.2020]
* @protected
*/
Viewer.prototype.getClassName = function () {
var _a = this.originalProps, className = _a.className, full = _a.full;
return util_1.ClsUtils.joinClassName(definition_1.ViewerClassesEnum.VIEWER, full && definition_1.ViewerClassesEnum.FULL_VIEWER, this.isSrcAbsent && definition_1.ViewerClassesEnum.EMPTY_VIEWER, this.isInfoRendered && definition_1.ViewerClassesEnum.INFO_VIEWER, util_1.CalcUtils.calc(className));
};
/**
* @stable [16.03.2020]
*/
Viewer.prototype.refreshOnSrcChanges = function () {
// Do nothing
};
/**
* @stable [16.03.2020]
*/
Viewer.prototype.refreshOnInternalChanges = function () {
// Do nothing
};
Object.defineProperty(Viewer.prototype, "contentElement", {
/**
* @stable [13.12.2020]
* @protected
*/
get: function () {
return null;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "previewElement", {
/**
* @stable [13.12.2020]
* @protected
*/
get: function () {
return null;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "inProgress", {
/**
* @stable [14.12.2020]
*/
get: function () {
return this.state.progress;
},
enumerable: false,
configurable: true
});
/**
* @stable [14.12.2020]
* @private
*/
Viewer.prototype.onPreviewDialogClose = function () {
var _this = this;
this.setState({
opened: false,
previewPage: definitions_interface_1.UNDEF,
previewScale: definitions_interface_1.UNDEF,
}, function () { return util_1.ConditionUtils.ifNotNilThanValue(_this.originalProps.onClosePreview, function (onClosePreview) { return onClosePreview(); }); });
};
/**
* @stable [14.12.2020]
* @private
*/
Viewer.prototype.onPreviewDialogOpen = function () {
util_1.ConditionUtils.ifNotNilThanValue(this.originalProps.onShowPreview, function (onShowPreview) { return onShowPreview(); });
};
/**
* @stable [13.12.2020]
* @param prevProps
* @param prevState
* @private
*/
Viewer.prototype.hasInternalChanges = function (prevProps, prevState) {
return (this.hasPageChanges(prevProps, prevState)
|| this.hasScaleChanges(prevProps, prevState));
};
/**
* @stable [13.12.2020]
* @param prevProps
* @param prevState
* @private
*/
Viewer.prototype.hasScaleChanges = function (prevProps, prevState) {
return util_1.ObjectUtils.isCurrentValueNotEqualPreviousValue(this.originalProps.scale, prevProps.scale);
};
/**
* @stable [13.12.2020]
* @param prevProps
* @param prevState
* @private
*/
Viewer.prototype.hasSrcChanges = function (prevProps, prevState) {
return util_1.ObjectUtils.isCurrentValueNotEqualPreviousValue(this.originalProps.src, prevProps.src);
};
/**
* @stable [13.12.2020]
* @param prevProps
* @param prevState
* @private
*/
Viewer.prototype.hasInlineDialogBeenClosed = function (prevProps, prevState) {
return this.isPreviewDialogInline && prevState.opened && !this.state.opened;
};
/**
* @stable [13.12.2020]
* @param prevProps
* @param prevState
* @private
*/
Viewer.prototype.hasPageChanges = function (prevProps, prevState) {
return (util_1.ObjectUtils.isCurrentValueNotEqualPreviousValue(this.originalProps.page, prevProps.page)
|| util_1.ObjectUtils.isCurrentValueNotEqualPreviousValue(this.state.page, prevState.page));
};
/**
* @stable [16.03.2020]
*/
Viewer.prototype.onBack = function () {
this.setState({ previewPage: this.actualOrDefaultPreviewPage - 1 });
};
/**
* @stable [16.03.2020]
*/
Viewer.prototype.onForward = function () {
this.setState({ previewPage: this.actualOrDefaultPreviewPage + 1 });
};
/**
* @stable [16.03.2020]
*/
Viewer.prototype.onIncrementScale = function () {
this.setState({ previewScale: this.actualOrDefaultPreviewScale + this.defaultScaleDiff });
};
/**
* @stable [14.12.2020]
*/
Viewer.prototype.onDecrementScale = function () {
this.setState({ previewScale: this.nextDecrementPreviewScale });
};
/**
* @stable [16.03.2020]
*/
Viewer.prototype.showPreviewDialog = function () {
var _this = this;
this.setState({ opened: true }, function () { return _this.previewDialogRef.current.activate(); });
};
Object.defineProperty(Viewer.prototype, "nextDecrementPreviewScale", {
/**
* @stable [14.12.2020]
* @private
*/
get: function () {
return this.actualOrDefaultPreviewScale - this.defaultScaleDiff;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "actualOrDefaultPage", {
/**
* @stable [16.03.2020]
* @returns {number}
*/
get: function () {
return util_1.NvlUtils.nvl(this.actualPage, Viewer.DEFAULT_PAGE);
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "actualPage", {
/**
* @stable [02.10.2020]
*/
get: function () {
return util_1.NvlUtils.nvl(this.state.page, this.originalProps.page);
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "actualOrDefaultPreviewPage", {
/**
* @stable [16.03.2020]
* @returns {number}
*/
get: function () {
return util_1.NvlUtils.nvl(this.actualPreviewPage, Viewer.DEFAULT_PAGE);
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "actualPreviewPage", {
/**
* @stable [16.03.2020]
* @returns {number}
*/
get: function () {
return util_1.NvlUtils.nvl(this.state.previewPage, this.props.previewPage);
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "actualOrDefaultPreviewScale", {
/**
* @stable [02.10.2020]
*/
get: function () {
return util_1.NvlUtils.coalesce(this.state.previewScale, this.originalProps.previewScale, this.defaultScale);
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "actualOrDefaultScale", {
/**
* @stable [02.10.2020]
*/
get: function () {
return util_1.NvlUtils.coalesce(this.state.scale, this.originalProps.scale, this.defaultScale);
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "actualSrc", {
/**
* @stable [18.03.2020]
* @returns {string}
*/
get: function () {
return this.props.src || this.props.defaultScr;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "defaultScaleDiff", {
/**
* @stable [23.03.2020]
* @returns {number}
*/
get: function () {
return .3;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "defaultScale", {
/**
* @stable [23.03.2020]
* @returns {number}
*/
get: function () {
return 1;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "ctor", {
/**
* @stable [14.12.2020]
* @protected
*/
get: function () {
return null;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "bodyElement", {
/**
* @stable [14.12.2020]
* @private
*/
get: function () {
var AN_ERROR_OCCURRED_WHILE_LOADING_THE_FILE = this.settings.messages.AN_ERROR_OCCURRED_WHILE_LOADING_THE_FILE;
var Component = this.viewerLocator.resolve(definition_1.ViewersEnum.PICTURE);
return this.isInfoRendered
? (React.createElement(info_component_1.Info, { progress: this.inProgress, error: AN_ERROR_OCCURRED_WHILE_LOADING_THE_FILE }))
: (this.isActualSrcAbsent
? React.createElement(Component, null)
: this.contentElement);
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "previewDialogElement", {
/**
* @stable [14.12.2020]
* @private
*/
get: function () {
var _a = this.settings.messages, CLOSE = _a.CLOSE, PREVIEW = _a.PREVIEW;
var configuration = this.previewDialogConfiguration;
return this.isPreviewDialogOpened && (React.createElement(dialog_component_1.Dialog, __assign({ title: PREVIEW, closeText: CLOSE }, configuration, { ref: this.previewDialogRef, className: util_1.ClsUtils.joinClassName(definition_1.DialogClassesEnum.PREVIEW_DIALOG, util_1.CalcUtils.calc(configuration.className)), acceptable: false, extraActions: this.previewExtraActionsElement, onActivate: this.onPreviewDialogOpen, onDeactivate: this.onPreviewDialogClose }), this.previewElement));
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "isPreviewDialogOpened", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return this.state.opened && this.canPreview;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "isBodyElementRendered", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return !this.isPreviewDialogOpened || !this.isPreviewDialogInline;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "isPreviewDialogInline", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return this.previewDialogConfiguration.inline;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "previewDialogConfiguration", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return this.mergedProps.previewDialogConfiguration || {};
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "previewIconElement", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return (this.canPreview && (this.uiFactory.makeIcon({
type: definition_1.IconsEnum.SEARCH_PLUS,
className: util_1.ClsUtils.joinClassName(definition_1.ComponentClassesEnum.ALIGNMENT_CENTER, definition_1.ViewerClassesEnum.VIEWER_PREVIEW_ICON),
onClick: this.showPreviewDialog,
})));
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "isInfoRendered", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return this.inProgress || this.doesErrorExist;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "canPreview", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return this.isPreviewUsed
&& !this.inProgress
&& !this.isActualSrcAbsent
&& !this.doesErrorExist;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "doesErrorExist", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return !R.isNil(this.state.error);
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "isActualSrcAbsent", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return this.isSrcAbsent && this.isDefaultSrcAbsent;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "isSrcAbsent", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return R.isNil(this.originalProps.src);
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "isDefaultSrcAbsent", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return R.isNil(this.originalProps.defaultScr);
},
enumerable: false,
configurable: true
});
Object.defineProperty(Viewer.prototype, "isPreviewUsed", {
/**
* @stable [13.12.2020]
* @private
*/
get: function () {
return this.originalProps.usePreview;
},
enumerable: false,
configurable: true
});
Viewer.defaultProps = {
full: true,
usePreview: true,
};
Viewer.DEFAULT_PAGE = 1;
return Viewer;
}(generic_component_1.GenericComponent));
exports.Viewer = Viewer;
//# sourceMappingURL=viewer.component.js.map