katoikia-app/web-ui/web-react/node_modules/primereact/galleria/galleria.esm.js

1246 lines
43 KiB
JavaScript

import React, { Component } from 'react';
import { classNames, UniqueComponentId, DomHandler, ZIndexUtils } from 'primereact/utils';
import { Ripple } from 'primereact/ripple';
import PrimeReact from 'primereact/api';
import { CSSTransition } from 'primereact/csstransition';
import { Portal } from 'primereact/portal';
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
Object.defineProperty(Constructor, "prototype", {
writable: false
});
return Constructor;
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
Object.defineProperty(subClass, "prototype", {
writable: false
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _typeof(obj) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
}, _typeof(obj);
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
} else if (call !== void 0) {
throw new TypeError("Derived constructors may only return object or undefined");
}
return _assertThisInitialized(self);
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _extends() {
_extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
function _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _isNativeReflectConstruct$2() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var GalleriaItemComponent = /*#__PURE__*/function (_Component) {
_inherits(GalleriaItemComponent, _Component);
var _super = _createSuper$2(GalleriaItemComponent);
function GalleriaItemComponent(props) {
var _this;
_classCallCheck(this, GalleriaItemComponent);
_this = _super.call(this, props);
_this.navForward = _this.navForward.bind(_assertThisInitialized(_this));
_this.navBackward = _this.navBackward.bind(_assertThisInitialized(_this));
_this.next = _this.next.bind(_assertThisInitialized(_this));
_this.prev = _this.prev.bind(_assertThisInitialized(_this));
return _this;
}
_createClass(GalleriaItemComponent, [{
key: "step",
value: function step(index) {
if (this.itemsContainer) {
this.itemsContainer.style.transform = this.isVertical() ? "translate3d(0, ".concat(index * 100, "%, 0)") : "translate3d(".concat(index * 100, "%, 0, 0)");
this.itemsContainer.style.transition = 'transform 500ms ease 0s';
}
}
}, {
key: "next",
value: function next() {
var nextItemIndex = this.props.activeItemIndex + 1;
this.props.onActiveItemChange({
index: this.props.circular && this.props.value.length - 1 === this.props.activeItemIndex ? 0 : nextItemIndex
});
}
}, {
key: "prev",
value: function prev() {
var prevItemIndex = this.props.activeItemIndex !== 0 ? this.props.activeItemIndex - 1 : 0;
this.props.onActiveItemChange({
index: this.props.circular && this.props.activeItemIndex === 0 ? this.props.value.length - 1 : prevItemIndex
});
}
}, {
key: "stopSlideShow",
value: function stopSlideShow() {
if (this.props.slideShowActive && this.props.stopSlideShow) {
this.props.stopSlideShow();
}
}
}, {
key: "navBackward",
value: function navBackward(e) {
this.stopSlideShow();
this.prev();
if (e && e.cancelable) {
e.preventDefault();
}
}
}, {
key: "navForward",
value: function navForward(e) {
this.stopSlideShow();
this.next();
if (e && e.cancelable) {
e.preventDefault();
}
}
}, {
key: "onIndicatorClick",
value: function onIndicatorClick(index) {
this.stopSlideShow();
this.props.onActiveItemChange({
index: index
});
}
}, {
key: "onIndicatorMouseEnter",
value: function onIndicatorMouseEnter(index) {
if (this.props.changeItemOnIndicatorHover) {
this.stopSlideShow();
this.props.onActiveItemChange({
index: index
});
}
}
}, {
key: "onIndicatorKeyDown",
value: function onIndicatorKeyDown(event, index) {
if (event.which === 13) {
this.stopSlideShow();
this.props.onActiveItemChange({
index: index
});
}
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
if (this.props.autoPlay) {
this.props.startSlideShow();
}
}
}, {
key: "renderBackwardNavigator",
value: function renderBackwardNavigator() {
if (this.props.showItemNavigators) {
var isDisabled = !this.props.circular && this.props.activeItemIndex === 0;
var buttonClassName = classNames('p-galleria-item-prev p-galleria-item-nav p-link', {
'p-disabled': isDisabled
});
return /*#__PURE__*/React.createElement("button", {
type: "button",
className: buttonClassName,
onClick: this.navBackward,
disabled: isDisabled
}, /*#__PURE__*/React.createElement("span", {
className: "p-galleria-item-prev-icon pi pi-chevron-left"
}), /*#__PURE__*/React.createElement(Ripple, null));
}
return null;
}
}, {
key: "renderForwardNavigator",
value: function renderForwardNavigator() {
if (this.props.showItemNavigators) {
var isDisabled = !this.props.circular && this.props.activeItemIndex === this.props.value.length - 1;
var buttonClassName = classNames('p-galleria-item-next p-galleria-item-nav p-link', {
'p-disabled': isDisabled
});
return /*#__PURE__*/React.createElement("button", {
type: "button",
className: buttonClassName,
onClick: this.navForward,
disabled: isDisabled
}, /*#__PURE__*/React.createElement("span", {
className: "p-galleria-item-next-icon pi pi-chevron-right"
}), /*#__PURE__*/React.createElement(Ripple, null));
}
return null;
}
}, {
key: "renderCaption",
value: function renderCaption() {
if (this.props.caption) {
var content = this.props.caption(this.props.value[this.props.activeItemIndex]);
return /*#__PURE__*/React.createElement("div", {
className: "p-galleria-caption"
}, content);
}
return null;
}
}, {
key: "renderIndicator",
value: function renderIndicator(index) {
var _this2 = this;
var indicator = this.props.indicator && this.props.indicator(index);
var isActive = this.props.activeItemIndex === index;
var indicatorItemClassName = classNames('p-galleria-indicator', {
'p-highlight': isActive
});
if (!indicator) {
indicator = /*#__PURE__*/React.createElement("button", {
type: "button",
tabIndex: -1,
className: "p-link"
}, /*#__PURE__*/React.createElement(Ripple, null));
}
return /*#__PURE__*/React.createElement("li", {
className: indicatorItemClassName,
key: 'p-galleria-indicator-' + index,
tabIndex: 0,
onClick: function onClick() {
return _this2.onIndicatorClick(index);
},
onMouseEnter: function onMouseEnter() {
return _this2.onIndicatorMouseEnter(index);
},
onKeyDown: function onKeyDown(e) {
return _this2.onIndicatorKeyDown(e, index);
}
}, indicator);
}
}, {
key: "renderIndicators",
value: function renderIndicators() {
if (this.props.showIndicators) {
var indicatorsContentClassName = classNames('p-galleria-indicators p-reset', this.props.indicatorsContentClassName);
var indicators = [];
for (var i = 0; i < this.props.value.length; i++) {
indicators.push(this.renderIndicator(i));
}
return /*#__PURE__*/React.createElement("ul", {
className: indicatorsContentClassName
}, indicators);
}
return null;
}
}, {
key: "render",
value: function render() {
var _this3 = this;
var content = this.props.itemTemplate && this.props.itemTemplate(this.props.value[this.props.activeItemIndex]);
var backwardNavigator = this.renderBackwardNavigator();
var forwardNavigator = this.renderForwardNavigator();
var caption = this.renderCaption();
var indicators = this.renderIndicators();
return /*#__PURE__*/React.createElement("div", {
ref: function ref(el) {
return _this3.props.forwardRef(el);
},
className: "p-galleria-item-wrapper"
}, /*#__PURE__*/React.createElement("div", {
className: "p-galleria-item-container"
}, backwardNavigator, /*#__PURE__*/React.createElement("div", {
className: "p-galleria-item"
}, content), forwardNavigator, caption), indicators);
}
}]);
return GalleriaItemComponent;
}(Component);
var GalleriaItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
return /*#__PURE__*/React.createElement(GalleriaItemComponent, _extends({
forwardRef: ref
}, props));
});
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) {
arr2[i] = arr[i];
}
return arr2;
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
function _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _isNativeReflectConstruct$1() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var GalleriaThumbnailItem = /*#__PURE__*/function (_Component) {
_inherits(GalleriaThumbnailItem, _Component);
var _super = _createSuper$1(GalleriaThumbnailItem);
function GalleriaThumbnailItem(props) {
var _this;
_classCallCheck(this, GalleriaThumbnailItem);
_this = _super.call(this, props);
_this.onItemClick = _this.onItemClick.bind(_assertThisInitialized(_this));
_this.onItemKeyDown = _this.onItemKeyDown.bind(_assertThisInitialized(_this));
return _this;
}
_createClass(GalleriaThumbnailItem, [{
key: "onItemClick",
value: function onItemClick(event) {
this.props.onItemClick({
originalEvent: event,
index: this.props.index
});
}
}, {
key: "onItemKeyDown",
value: function onItemKeyDown(event) {
if (event.which === 13) {
this.props.onItemClick({
originalEvent: event,
index: this.props.index
});
}
}
}, {
key: "render",
value: function render() {
var content = this.props.template && this.props.template(this.props.item);
var itemClassName = classNames(this.props.className, 'p-galleria-thumbnail-item', {
'p-galleria-thumbnail-item-current': this.props.current,
'p-galleria-thumbnail-item-active': this.props.active,
'p-galleria-thumbnail-item-start': this.props.start,
'p-galleria-thumbnail-item-end': this.props.end
});
return /*#__PURE__*/React.createElement("div", {
className: itemClassName
}, /*#__PURE__*/React.createElement("div", {
className: "p-galleria-thumbnail-item-content",
tabIndex: this.props.active ? 0 : null,
onClick: this.onItemClick,
onKeyDown: this.onItemKeyDown
}, content));
}
}]);
return GalleriaThumbnailItem;
}(Component);
_defineProperty(GalleriaThumbnailItem, "defaultProps", {
index: null,
template: null,
item: null,
current: false,
active: false,
start: false,
end: false,
className: null,
onItemClick: null
});
var GalleriaThumbnails = /*#__PURE__*/function (_Component2) {
_inherits(GalleriaThumbnails, _Component2);
var _super2 = _createSuper$1(GalleriaThumbnails);
function GalleriaThumbnails(props) {
var _this2;
_classCallCheck(this, GalleriaThumbnails);
_this2 = _super2.call(this, props);
_this2.state = {
numVisible: props.numVisible,
totalShiftedItems: 0,
page: 0
};
_this2.navForward = _this2.navForward.bind(_assertThisInitialized(_this2));
_this2.navBackward = _this2.navBackward.bind(_assertThisInitialized(_this2));
_this2.onTransitionEnd = _this2.onTransitionEnd.bind(_assertThisInitialized(_this2));
_this2.onTouchStart = _this2.onTouchStart.bind(_assertThisInitialized(_this2));
_this2.onTouchMove = _this2.onTouchMove.bind(_assertThisInitialized(_this2));
_this2.onTouchEnd = _this2.onTouchEnd.bind(_assertThisInitialized(_this2));
_this2.onItemClick = _this2.onItemClick.bind(_assertThisInitialized(_this2));
_this2.attributeSelector = UniqueComponentId();
return _this2;
}
_createClass(GalleriaThumbnails, [{
key: "step",
value: function step(dir) {
var totalShiftedItems = this.state.totalShiftedItems + dir;
if (dir < 0 && -1 * totalShiftedItems + this.state.numVisible > this.props.value.length - 1) {
totalShiftedItems = this.state.numVisible - this.props.value.length;
} else if (dir > 0 && totalShiftedItems > 0) {
totalShiftedItems = 0;
}
if (this.props.circular) {
if (dir < 0 && this.props.value.length - 1 === this.props.activeItemIndex) {
totalShiftedItems = 0;
} else if (dir > 0 && this.props.activeItemIndex === 0) {
totalShiftedItems = this.state.numVisible - this.props.value.length;
}
}
if (this.itemsContainer) {
DomHandler.removeClass(this.itemsContainer, 'p-items-hidden');
this.itemsContainer.style.transform = this.props.isVertical ? "translate3d(0, ".concat(totalShiftedItems * (100 / this.state.numVisible), "%, 0)") : "translate3d(".concat(totalShiftedItems * (100 / this.state.numVisible), "%, 0, 0)");
this.itemsContainer.style.transition = 'transform 500ms ease 0s';
}
this.setState({
totalShiftedItems: totalShiftedItems
});
}
}, {
key: "stopSlideShow",
value: function stopSlideShow() {
if (this.props.slideShowActive && this.props.stopSlideShow) {
this.props.stopSlideShow();
}
}
}, {
key: "getMedianItemIndex",
value: function getMedianItemIndex() {
var index = Math.floor(this.state.numVisible / 2);
return this.state.numVisible % 2 ? index : index - 1;
}
}, {
key: "navBackward",
value: function navBackward(e) {
this.stopSlideShow();
var prevItemIndex = this.props.activeItemIndex !== 0 ? this.props.activeItemIndex - 1 : 0;
var diff = prevItemIndex + this.state.totalShiftedItems;
if (this.state.numVisible - diff - 1 > this.getMedianItemIndex() && (-1 * this.state.totalShiftedItems !== 0 || this.props.circular)) {
this.step(1);
}
this.props.onActiveItemChange({
index: this.props.circular && this.props.activeItemIndex === 0 ? this.props.value.length - 1 : prevItemIndex
});
if (e.cancelable) {
e.preventDefault();
}
}
}, {
key: "navForward",
value: function navForward(e) {
this.stopSlideShow();
var nextItemIndex = this.props.activeItemIndex + 1;
if (nextItemIndex + this.state.totalShiftedItems > this.getMedianItemIndex() && (-1 * this.state.totalShiftedItems < this.getTotalPageNumber() - 1 || this.props.circular)) {
this.step(-1);
}
this.props.onActiveItemChange({
index: this.props.circular && this.props.value.length - 1 === this.props.activeItemIndex ? 0 : nextItemIndex
});
if (e.cancelable) {
e.preventDefault();
}
}
}, {
key: "onItemClick",
value: function onItemClick(event) {
this.stopSlideShow();
var selectedItemIndex = event.index;
if (selectedItemIndex !== this.props.activeItemIndex) {
var diff = selectedItemIndex + this.state.totalShiftedItems;
var dir = 0;
if (selectedItemIndex < this.props.activeItemIndex) {
dir = this.state.numVisible - diff - 1 - this.getMedianItemIndex();
if (dir > 0 && -1 * this.state.totalShiftedItems !== 0) {
this.step(dir);
}
} else {
dir = this.getMedianItemIndex() - diff;
if (dir < 0 && -1 * this.state.totalShiftedItems < this.getTotalPageNumber() - 1) {
this.step(dir);
}
}
this.props.onActiveItemChange({
index: selectedItemIndex
});
}
}
}, {
key: "onTransitionEnd",
value: function onTransitionEnd(e) {
if (this.itemsContainer && e.propertyName === 'transform') {
DomHandler.addClass(this.itemsContainer, 'p-items-hidden');
this.itemsContainer.style.transition = '';
}
}
}, {
key: "onTouchStart",
value: function onTouchStart(e) {
var touchobj = e.changedTouches[0];
this.startPos = {
x: touchobj.pageX,
y: touchobj.pageY
};
}
}, {
key: "onTouchMove",
value: function onTouchMove(e) {
if (e.cancelable) {
e.preventDefault();
}
}
}, {
key: "onTouchEnd",
value: function onTouchEnd(e) {
var touchobj = e.changedTouches[0];
if (this.props.isVertical) {
this.changePageOnTouch(e, touchobj.pageY - this.startPos.y);
} else {
this.changePageOnTouch(e, touchobj.pageX - this.startPos.x);
}
}
}, {
key: "changePageOnTouch",
value: function changePageOnTouch(e, diff) {
if (diff < 0) {
// left
this.navForward(e);
} else {
// right
this.navBackward(e);
}
}
}, {
key: "getTotalPageNumber",
value: function getTotalPageNumber() {
return this.props.value.length > this.state.numVisible ? this.props.value.length - this.state.numVisible + 1 : 0;
}
}, {
key: "createStyle",
value: function createStyle() {
if (!this.thumbnailsStyle) {
this.thumbnailsStyle = DomHandler.createInlineStyle(PrimeReact.nonce);
}
var innerHTML = "\n .p-galleria-thumbnail-items[".concat(this.attributeSelector, "] .p-galleria-thumbnail-item {\n flex: 1 0 ").concat(100 / this.state.numVisible, "%\n }\n ");
if (this.props.responsiveOptions) {
this.responsiveOptions = _toConsumableArray(this.props.responsiveOptions);
this.responsiveOptions.sort(function (data1, data2) {
var value1 = data1.breakpoint;
var value2 = data2.breakpoint;
var result = null;
if (value1 == null && value2 != null) result = -1;else if (value1 != null && value2 == null) result = 1;else if (value1 == null && value2 == null) result = 0;else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2, undefined, {
numeric: true
});else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;
return -1 * result;
});
for (var i = 0; i < this.responsiveOptions.length; i++) {
var res = this.responsiveOptions[i];
innerHTML += "\n @media screen and (max-width: ".concat(res.breakpoint, ") {\n .p-galleria-thumbnail-items[").concat(this.attributeSelector, "] .p-galleria-thumbnail-item {\n flex: 1 0 ").concat(100 / res.numVisible, "%\n }\n }\n ");
}
}
this.thumbnailsStyle.innerHTML = innerHTML;
}
}, {
key: "calculatePosition",
value: function calculatePosition() {
if (this.itemsContainer && this.responsiveOptions) {
var windowWidth = window.innerWidth;
var matchedResponsiveData = {
numVisible: this.props.numVisible
};
for (var i = 0; i < this.responsiveOptions.length; i++) {
var res = this.responsiveOptions[i];
if (parseInt(res.breakpoint, 10) >= windowWidth) {
matchedResponsiveData = res;
}
}
if (this.state.numVisible !== matchedResponsiveData.numVisible) {
this.setState({
numVisible: matchedResponsiveData.numVisible
});
}
}
}
}, {
key: "bindDocumentListeners",
value: function bindDocumentListeners() {
var _this3 = this;
if (!this.documentResizeListener) {
this.documentResizeListener = function () {
_this3.calculatePosition();
};
window.addEventListener('resize', this.documentResizeListener);
}
}
}, {
key: "unbindDocumentListeners",
value: function unbindDocumentListeners() {
if (this.documentResizeListener) {
window.removeEventListener('resize', this.documentResizeListener);
this.documentResizeListener = null;
}
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
if (this.itemsContainer) {
this.itemsContainer.setAttribute(this.attributeSelector, '');
}
this.createStyle();
this.calculatePosition();
if (this.props.responsiveOptions) {
this.bindDocumentListeners();
}
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate(prevProps, prevState) {
var totalShiftedItems = this.state.totalShiftedItems;
if (prevState.numVisible !== this.state.numVisible || prevProps.activeItemIndex !== this.props.activeItemIndex) {
if (this.props.activeItemIndex <= this.getMedianItemIndex()) {
totalShiftedItems = 0;
} else if (this.props.value.length - this.state.numVisible + this.getMedianItemIndex() < this.props.activeItemIndex) {
totalShiftedItems = this.state.numVisible - this.props.value.length;
} else if (this.props.value.length - this.state.numVisible < this.props.activeItemIndex && this.state.numVisible % 2 === 0) {
totalShiftedItems = this.props.activeItemIndex * -1 + this.getMedianItemIndex() + 1;
} else {
totalShiftedItems = this.props.activeItemIndex * -1 + this.getMedianItemIndex();
}
if (totalShiftedItems !== this.state.totalShiftedItems) {
this.setState({
totalShiftedItems: totalShiftedItems
});
}
this.itemsContainer.style.transform = this.props.isVertical ? "translate3d(0, ".concat(totalShiftedItems * (100 / this.state.numVisible), "%, 0)") : "translate3d(".concat(totalShiftedItems * (100 / this.state.numVisible), "%, 0, 0)");
if (prevProps.activeItemIndex !== this.props.activeItemIndex) {
DomHandler.removeClass(this.itemsContainer, 'p-items-hidden');
this.itemsContainer.style.transition = 'transform 500ms ease 0s';
}
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
if (this.props.responsiveOptions) {
this.unbindDocumentListeners();
}
}
}, {
key: "renderItems",
value: function renderItems() {
var _this4 = this;
return this.props.value.map(function (item, index) {
var firstIndex = _this4.state.totalShiftedItems * -1,
lastIndex = firstIndex + _this4.state.numVisible - 1,
isActive = firstIndex <= index && lastIndex >= index,
start = firstIndex === index,
end = lastIndex === index,
current = _this4.props.activeItemIndex === index;
return /*#__PURE__*/React.createElement(GalleriaThumbnailItem, {
key: index,
index: index,
template: _this4.props.itemTemplate,
item: item,
active: isActive,
start: start,
end: end,
onItemClick: _this4.onItemClick,
current: current
});
});
}
}, {
key: "renderBackwardNavigator",
value: function renderBackwardNavigator() {
if (this.props.showThumbnailNavigators) {
var isDisabled = !this.props.circular && this.props.activeItemIndex === 0 || this.props.value.length <= this.state.numVisible;
var buttonClassName = classNames('p-galleria-thumbnail-prev p-link', {
'p-disabled': isDisabled
}),
iconClassName = classNames('p-galleria-thumbnail-prev-icon pi', {
'pi-chevron-left': !this.props.isVertical,
'pi-chevron-up': this.props.isVertical
});
return /*#__PURE__*/React.createElement("button", {
className: buttonClassName,
onClick: this.navBackward,
disabled: isDisabled
}, /*#__PURE__*/React.createElement("span", {
className: iconClassName
}), /*#__PURE__*/React.createElement(Ripple, null));
}
return null;
}
}, {
key: "renderForwardNavigator",
value: function renderForwardNavigator() {
if (this.props.showThumbnailNavigators) {
var isDisabled = !this.props.circular && this.props.activeItemIndex === this.props.value.length - 1 || this.props.value.length <= this.state.numVisible;
var buttonClassName = classNames('p-galleria-thumbnail-next p-link', {
'p-disabled': isDisabled
}),
iconClassName = classNames('p-galleria-thumbnail-next-icon pi', {
'pi-chevron-right': !this.props.isVertical,
'pi-chevron-down': this.props.isVertical
});
return /*#__PURE__*/React.createElement("button", {
className: buttonClassName,
onClick: this.navForward,
disabled: isDisabled
}, /*#__PURE__*/React.createElement("span", {
className: iconClassName
}), /*#__PURE__*/React.createElement(Ripple, null));
}
return null;
}
}, {
key: "renderContent",
value: function renderContent() {
var _this5 = this;
var items = this.renderItems();
var height = this.props.isVertical ? this.props.contentHeight : '';
var backwardNavigator = this.renderBackwardNavigator();
var forwardNavigator = this.renderForwardNavigator();
return /*#__PURE__*/React.createElement("div", {
className: "p-galleria-thumbnail-container"
}, backwardNavigator, /*#__PURE__*/React.createElement("div", {
className: "p-galleria-thumbnail-items-container",
style: {
'height': height
}
}, /*#__PURE__*/React.createElement("div", {
ref: function ref(el) {
return _this5.itemsContainer = el;
},
className: "p-galleria-thumbnail-items",
onTransitionEnd: this.onTransitionEnd,
onTouchStart: this.onTouchStart,
onTouchMove: this.onTouchMove,
onTouchEnd: this.onTouchEnd
}, items)), forwardNavigator);
}
}, {
key: "render",
value: function render() {
var content = this.renderContent();
return /*#__PURE__*/React.createElement("div", {
className: "p-galleria-thumbnail-wrapper"
}, content);
}
}]);
return GalleriaThumbnails;
}(Component);
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var Galleria = /*#__PURE__*/function (_Component) {
_inherits(Galleria, _Component);
var _super = _createSuper(Galleria);
function Galleria(props) {
var _this;
_classCallCheck(this, Galleria);
_this = _super.call(this, props);
_this.state = {
visible: false,
numVisible: props.numVisible,
slideShowActive: false
};
if (!_this.props.onItemChange) {
_this.state = _objectSpread(_objectSpread({}, _this.state), {}, {
activeIndex: props.activeIndex
});
}
_this.onActiveItemChange = _this.onActiveItemChange.bind(_assertThisInitialized(_this));
_this.show = _this.show.bind(_assertThisInitialized(_this));
_this.hide = _this.hide.bind(_assertThisInitialized(_this));
_this.startSlideShow = _this.startSlideShow.bind(_assertThisInitialized(_this));
_this.stopSlideShow = _this.stopSlideShow.bind(_assertThisInitialized(_this));
_this.onEnter = _this.onEnter.bind(_assertThisInitialized(_this));
_this.onEntering = _this.onEntering.bind(_assertThisInitialized(_this));
_this.onEntered = _this.onEntered.bind(_assertThisInitialized(_this));
_this.onExit = _this.onExit.bind(_assertThisInitialized(_this));
_this.onExited = _this.onExited.bind(_assertThisInitialized(_this));
_this.galleriaRef = /*#__PURE__*/React.createRef();
return _this;
}
_createClass(Galleria, [{
key: "activeItemIndex",
get: function get() {
return this.props.onItemChange ? this.props.activeIndex : this.state.activeIndex;
}
}, {
key: "onActiveItemChange",
value: function onActiveItemChange(event) {
if (this.props.onItemChange) {
this.props.onItemChange(event);
} else {
this.setState({
activeIndex: event.index
});
}
}
}, {
key: "show",
value: function show() {
this.setState({
visible: true
});
}
}, {
key: "hide",
value: function hide() {
this.setState({
visible: false
});
}
}, {
key: "onEnter",
value: function onEnter() {
DomHandler.addClass(document.body, 'p-overflow-hidden');
}
}, {
key: "onEntering",
value: function onEntering() {
ZIndexUtils.set('modal', this.mask, PrimeReact.autoZIndex, this.props.baseZIndex || PrimeReact.zIndex['modal']);
DomHandler.addMultipleClasses(this.mask, 'p-component-overlay p-component-overlay-enter');
}
}, {
key: "onEntered",
value: function onEntered() {
this.props.onShow && this.props.onShow();
}
}, {
key: "onExit",
value: function onExit() {
DomHandler.removeClass(document.body, 'p-overflow-hidden');
DomHandler.addClass(this.mask, 'p-component-overlay-leave');
}
}, {
key: "onExited",
value: function onExited() {
ZIndexUtils.clear(this.mask);
this.props.onHide && this.props.onHide();
}
}, {
key: "isAutoPlayActive",
value: function isAutoPlayActive() {
return this.state.slideShowActive;
}
}, {
key: "startSlideShow",
value: function startSlideShow() {
var _this2 = this;
this.interval = setInterval(function () {
var activeIndex = _this2.props.circular && _this2.props.value.length - 1 === _this2.activeItemIndex ? 0 : _this2.activeItemIndex + 1;
_this2.onActiveItemChange({
index: activeIndex
});
}, this.props.transitionInterval);
this.setState({
slideShowActive: true
});
}
}, {
key: "stopSlideShow",
value: function stopSlideShow() {
if (this.interval) {
clearInterval(this.interval);
}
this.setState({
slideShowActive: false
});
}
}, {
key: "getPositionClassName",
value: function getPositionClassName(preClassName, position) {
var positions = ['top', 'left', 'bottom', 'right'];
var pos = positions.find(function (item) {
return item === position;
});
return pos ? "".concat(preClassName, "-").concat(pos) : '';
}
}, {
key: "isVertical",
value: function isVertical() {
return this.props.thumbnailsPosition === 'left' || this.props.thumbnailsPosition === 'right';
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate(prevProps, prevState) {
if (prevProps.value !== this.props.value) {
if (this.props.value && this.props.value.length < this.state.numVisible) {
this.setState({
numVisible: this.props.value.length
});
}
}
if (prevProps.numVisible !== this.props.numVisible) {
this.setState({
numVisible: this.props.numVisible
});
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
if (this.state.slideShowActive) {
this.stopSlideShow();
}
ZIndexUtils.clear(this.mask);
}
}, {
key: "renderHeader",
value: function renderHeader() {
if (this.props.header) {
return /*#__PURE__*/React.createElement("div", {
className: "p-galleria-header"
}, this.props.header);
}
return null;
}
}, {
key: "renderFooter",
value: function renderFooter() {
if (this.props.footer) {
return /*#__PURE__*/React.createElement("div", {
className: "p-galleria-footer"
}, this.props.footer);
}
return null;
}
}, {
key: "renderElement",
value: function renderElement() {
var _this3 = this;
var isVertical = this.isVertical();
var thumbnailsPosClassName = this.props.showThumbnails && this.getPositionClassName('p-galleria-thumbnails', this.props.thumbnailsPosition);
var indicatorPosClassName = this.props.showIndicators && this.getPositionClassName('p-galleria-indicators', this.props.indicatorsPosition);
var galleriaClassName = classNames('p-galleria p-component', this.props.className, {
'p-galleria-fullscreen': this.props.fullScreen,
'p-galleria-indicator-onitem': this.props.showIndicatorsOnItem,
'p-galleria-item-nav-onhover': this.props.showItemNavigatorsOnHover && !this.props.fullScreen
}, thumbnailsPosClassName, indicatorPosClassName);
var closeIcon = this.props.fullScreen && /*#__PURE__*/React.createElement("button", {
type: "button",
className: "p-galleria-close p-link",
onClick: this.hide
}, /*#__PURE__*/React.createElement("span", {
className: "p-galleria-close-icon pi pi-times"
}), /*#__PURE__*/React.createElement(Ripple, null));
var header = this.renderHeader();
var footer = this.renderFooter();
var element = /*#__PURE__*/React.createElement("div", {
ref: this.galleriaRef,
id: this.props.id,
className: galleriaClassName,
style: this.props.style
}, closeIcon, header, /*#__PURE__*/React.createElement("div", {
className: "p-galleria-content"
}, /*#__PURE__*/React.createElement(GalleriaItem, {
ref: function ref(el) {
return _this3.previewContent = el;
},
value: this.props.value,
activeItemIndex: this.activeItemIndex,
onActiveItemChange: this.onActiveItemChange,
itemTemplate: this.props.item,
circular: this.props.circular,
caption: this.props.caption,
showIndicators: this.props.showIndicators,
changeItemOnIndicatorHover: this.props.changeItemOnIndicatorHover,
indicator: this.props.indicator,
showItemNavigators: this.props.showItemNavigators,
autoPlay: this.props.autoPlay,
slideShowActive: this.state.slideShowActive,
startSlideShow: this.startSlideShow,
stopSlideShow: this.stopSlideShow
}), this.props.showThumbnails && /*#__PURE__*/React.createElement(GalleriaThumbnails, {
value: this.props.value,
activeItemIndex: this.activeItemIndex,
onActiveItemChange: this.onActiveItemChange,
itemTemplate: this.props.thumbnail,
numVisible: this.state.numVisible,
responsiveOptions: this.props.responsiveOptions,
circular: this.props.circular,
isVertical: isVertical,
contentHeight: this.props.verticalThumbnailViewPortHeight,
showThumbnailNavigators: this.props.showThumbnailNavigators,
autoPlay: this.props.autoPlay,
slideShowActive: this.state.slideShowActive,
stopSlideShow: this.stopSlideShow
})), footer);
return element;
}
}, {
key: "renderGalleria",
value: function renderGalleria() {
var _this4 = this;
var element = this.renderElement();
if (this.props.fullScreen) {
var maskClassName = classNames('p-galleria-mask', {
'p-galleria-visible': this.state.visible
});
var galleriaWrapper = /*#__PURE__*/React.createElement("div", {
ref: function ref(el) {
return _this4.mask = el;
},
className: maskClassName
}, /*#__PURE__*/React.createElement(CSSTransition, {
nodeRef: this.galleriaRef,
classNames: "p-galleria",
"in": this.state.visible,
timeout: {
enter: 150,
exit: 150
},
options: this.props.transitionOptions,
unmountOnExit: true,
onEnter: this.onEnter,
onEntering: this.onEntering,
onEntered: this.onEntered,
onExit: this.onExit,
onExited: this.onExited
}, element));
return /*#__PURE__*/React.createElement(Portal, {
element: galleriaWrapper
});
} else {
return element;
}
}
}, {
key: "render",
value: function render() {
return this.props.value && this.props.value.length > 0 && this.renderGalleria();
}
}]);
return Galleria;
}(Component);
_defineProperty(Galleria, "defaultProps", {
id: null,
value: null,
activeIndex: 0,
fullScreen: false,
item: null,
thumbnail: null,
indicator: null,
caption: null,
className: null,
style: null,
header: null,
footer: null,
numVisible: 3,
responsiveOptions: null,
showItemNavigators: false,
showThumbnailNavigators: true,
showItemNavigatorsOnHover: false,
changeItemOnIndicatorHover: false,
circular: false,
autoPlay: false,
transitionInterval: 4000,
showThumbnails: true,
thumbnailsPosition: "bottom",
verticalThumbnailViewPortHeight: "300px",
showIndicators: false,
showIndicatorsOnItem: false,
indicatorsPosition: "bottom",
baseZIndex: 0,
transitionOptions: null,
onItemChange: null
});
export { Galleria };