1 | "use strict";
|
2 |
|
3 | var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard");
|
4 |
|
5 | var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
6 |
|
7 | var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
8 |
|
9 | _Object$defineProperty(exports, "__esModule", {
|
10 | value: true
|
11 | });
|
12 |
|
13 | exports.default = void 0;
|
14 |
|
15 | var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
16 |
|
17 | var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
|
18 |
|
19 | var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
20 |
|
21 | var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
22 |
|
23 | var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
24 |
|
25 | var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
26 |
|
27 | var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
28 |
|
29 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
|
30 |
|
31 | var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
32 |
|
33 | var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array"));
|
34 |
|
35 | var React = _interopRequireWildcard(require("react"));
|
36 |
|
37 | var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
38 |
|
39 | var _mapeoEntityFilter = _interopRequireDefault(require("mapeo-entity-filter"));
|
40 |
|
41 | var _ObservationDialog = _interopRequireDefault(require("./ObservationDialog"));
|
42 |
|
43 | var _stats = _interopRequireDefault(require("./stats"));
|
44 |
|
45 | var _helpers = require("./utils/helpers");
|
46 |
|
47 |
|
48 | var noop = function noop() {};
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 | var createFilter = function createFilter(filter
|
55 | /*: Filter | void*/
|
56 | ) {
|
57 | if (!(0, _isArray.default)(filter) || filter[0] !== 'all' || filter.length < 2) {
|
58 | return function () {
|
59 | return true;
|
60 | };
|
61 | }
|
62 |
|
63 | var presetFilter = (0, _map.default)(filter).call(filter, function (subFilter) {
|
64 | var _context;
|
65 |
|
66 | if (!(0, _isArray.default)(subFilter) || subFilter[1] !== '$preset' && !(0, _isEqual.default)(subFilter[1], ['$preset'])) {
|
67 | return subFilter;
|
68 | }
|
69 |
|
70 | return (0, _concat.default)(_context = [subFilter[0], 'categoryId']).call(_context, (0, _toConsumableArray2.default)((0, _slice.default)(subFilter).call(subFilter, 2)));
|
71 | });
|
72 | return (0, _mapeoEntityFilter.default)(presetFilter);
|
73 | };
|
74 |
|
75 | var WrappedMapView = function WrappedMapView(_ref) {
|
76 | var _ref$observations = _ref.observations,
|
77 | observations = _ref$observations === void 0 ? [] : _ref$observations,
|
78 | _ref$onUpdateObservat = _ref.onUpdateObservation,
|
79 | onUpdateObservation = _ref$onUpdateObservat === void 0 ? noop : _ref$onUpdateObservat,
|
80 | _ref$onDeleteObservat = _ref.onDeleteObservation,
|
81 | onDeleteObservation = _ref$onDeleteObservat === void 0 ? noop : _ref$onDeleteObservat,
|
82 | _ref$presets = _ref.presets,
|
83 | presets = _ref$presets === void 0 ? [] : _ref$presets,
|
84 | getMediaUrl = _ref.getMediaUrl,
|
85 | filter = (0, _filter.default)(_ref),
|
86 | children = _ref.children,
|
87 | otherProps = (0, _objectWithoutProperties2.default)(_ref, ["observations", "onUpdateObservation", "onDeleteObservation", "presets", "getMediaUrl", "filter", "children"]);
|
88 | var stats = React.useMemo(function () {
|
89 | return (0, _stats.default)(observations);
|
90 | }, [observations]);
|
91 |
|
92 | var _React$useState = React.useState(null),
|
93 | _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
94 | editingObservation = _React$useState2[0],
|
95 | setEditingObservation = _React$useState2[1];
|
96 |
|
97 | var _React$useState3 = React.useState(),
|
98 | _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
|
99 | editingInitialImageIndex = _React$useState4[0],
|
100 | setEditingInitialImageIndex = _React$useState4[1];
|
101 |
|
102 | var getPresetWithFallback = React.useCallback(function (observation
|
103 | /*: Observation*/
|
104 | )
|
105 | /*: PresetWithAdditionalFields*/
|
106 | {
|
107 | var _context2;
|
108 |
|
109 | var preset = getPreset(observation, presets);
|
110 | var defaultPreset = (0, _helpers.defaultGetPreset)(observation, stats);
|
111 | if (!preset) return defaultPreset;
|
112 | return (0, _assign.default)({}, preset, {
|
113 | additionalFields: (0, _filter.default)(_context2 = defaultPreset.additionalFields).call(_context2,
|
114 | function (additionalField) {
|
115 | var _context3;
|
116 |
|
117 | return !(0, _find.default)(_context3 = preset.fields).call(_context3, function (field) {
|
118 | var fieldKey = (0, _isArray.default)(field.key) ? field.key : [field.key];
|
119 | var additionalFieldKey = (0, _isArray.default)(additionalField.key) ? additionalField.key : [additionalField.key];
|
120 | return (0, _isEqual.default)(fieldKey, additionalFieldKey);
|
121 | });
|
122 | })
|
123 | });
|
124 | }, [presets, stats]);
|
125 | var handleObservationClick = React.useCallback(function (observationId, imageIndex) {
|
126 | setEditingInitialImageIndex(imageIndex);
|
127 | setEditingObservation((0, _find.default)(observations).call(observations, function (obs) {
|
128 | return obs.id === observationId;
|
129 | }));
|
130 | }, [observations]);
|
131 | var getMedia = React.useCallback(function (attachment) {
|
132 | var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
133 | _ref2$width = _ref2.width,
|
134 | width = _ref2$width === void 0 ? 800 : _ref2$width;
|
135 |
|
136 | var dpr = window.devicePixelRatio;
|
137 | var size = width < 300 * dpr ? 'thumbnail' : width < 1200 * dpr ? 'preview' : 'original';
|
138 | return {
|
139 | src: getMediaUrl(attachment.id, size),
|
140 | type: 'image'
|
141 | };
|
142 | }, [getMediaUrl]);
|
143 | var filterFunction = React.useMemo(function () {
|
144 | return createFilter(filter);
|
145 | }, [filter]);
|
146 | var filteredObservations = React.useMemo(function () {
|
147 | return filter ? (0, _filter.default)(observations).call(observations, filterFunction) : observations;
|
148 | }, [observations, filterFunction, filter]);
|
149 | return React.createElement(React.Fragment, null, children({
|
150 | onClickObservation: handleObservationClick,
|
151 | filteredObservations: filteredObservations,
|
152 | getPreset: getPresetWithFallback,
|
153 | getMedia: getMedia
|
154 | }), React.createElement(_ObservationDialog.default, {
|
155 | open: !!editingObservation,
|
156 | observation: editingObservation,
|
157 | initialImageIndex: editingInitialImageIndex,
|
158 | getPreset: getPresetWithFallback,
|
159 | getMedia: getMedia,
|
160 | onRequestClose: function onRequestClose() {
|
161 | return setEditingObservation(false);
|
162 | },
|
163 | onSave: onUpdateObservation,
|
164 | onDelete: onDeleteObservation
|
165 | }));
|
166 | };
|
167 |
|
168 | var _default = WrappedMapView;
|
169 |
|
170 | exports.default = _default;
|
171 |
|
172 | function getPreset(observation
|
173 | /*: Observation*/
|
174 | , presets
|
175 | /*: PresetWithFields[]*/
|
176 | )
|
177 | /*: PresetWithFields | void*/
|
178 | {
|
179 | var tags = observation.tags;
|
180 | if (!tags || !tags.categoryId) return;
|
181 | var preset = (0, _find.default)(presets).call(presets, function (preset) {
|
182 | return preset.id === tags.categoryId;
|
183 | });
|
184 | return preset;
|
185 | }
|
186 |
|
\ | No newline at end of file |