@brizy/media-gallery
Version:
122 lines (121 loc) • 4.31 kB
JavaScript
function _array_like_to_array(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 _array_with_holes(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterable_to_array_limit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally{
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally{
if (_d) throw _e;
}
}
return _arr;
}
function _non_iterable_rest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _sliced_to_array(arr, i) {
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
}
function _unsupported_iterable_to_array(o, minLen) {
if (!o) return;
if (typeof o === "string") return _array_like_to_array(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(n);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
}
import React, { useCallback, useMemo } from "react";
import { Content as CContent } from "../../../components/pages/StockPhotos/Content";
import * as State from "../types/State";
import * as Actions from "../types/Actions";
import { useDispatch } from "react-redux";
import { always, pipe, trim } from "ramda";
import { match } from "fp-utilities";
import { createElement } from "../../../utils/react/createElement";
import { Loading } from "../../../components/Loading";
import { isBulkSelectedOrInsert, isMultipleBulkSelect, isWithContent } from "../utils";
import { useDebouncedOnChange } from "../../../utils/react/hooks";
var Container = function(s) {
var items = s.items, stateSearch = s.search, newSearch = s.newSearch;
var dispatch = useDispatch();
var onBulkSelect = useCallback(function() {
return pipe(Actions.bulkSelect, dispatch)();
}, [
dispatch
]);
var onSelectItem = useCallback(function(v) {
return pipe(Actions.selectItem, dispatch)(v);
}, [
dispatch
]);
var _onSearchChange = useCallback(function(v) {
return pipe(trim, Actions.setSearchValue, dispatch)(v);
}, [
dispatch
]);
var _useDebouncedOnChange = _sliced_to_array(useDebouncedOnChange(newSearch, _onSearchChange, 500), 3), _search = _useDebouncedOnChange[0], onSearchChange = _useDebouncedOnChange[1], onSearchBlur = _useDebouncedOnChange[2];
var onSearchClick = useCallback(function() {
return pipe(always(_search), trim, Actions.search, dispatch)();
}, [
dispatch,
_search
]);
var search = useMemo(function() {
return {
value: _search,
onChange: onSearchChange,
onBlur: onSearchBlur
};
}, [
_search,
onSearchChange,
onSearchBlur
]);
var isSearchDisabled = useMemo(function() {
return _search === stateSearch;
}, [
_search,
stateSearch
]);
return React.createElement(CContent, {
items: items,
isMultipleSelected: isMultipleBulkSelect(s),
isBulkSelected: isBulkSelectedOrInsert(s),
isDisabledBulkSelected: !items.length,
isSearchDisabled: isSearchDisabled,
onBulkSelect: onBulkSelect,
onSelectItem: onSelectItem,
onSearchClick: onSearchClick,
search: search
});
};
export var Content = match([
State.isInit,
createElement(Loading)
], [
State.isLoadError,
always(null)
], [
isWithContent,
createElement(Container)
]);