utopia-ui 3.0.0-alpha.155 → 3.0.0-alpha.157

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,5 @@
1
1
  import "leaflet/dist/leaflet.css";
2
- import * as React from "react";
3
- import { Item, LayerProps, UtopiaMapProps } from "../../types";
2
+ import { UtopiaMapProps } from "../../types";
4
3
  import "./UtopiaMap.css";
5
- export interface MapEventListenerProps {
6
- selectNewItemPosition: LayerProps | Item | null;
7
- setSelectNewItemPosition: React.Dispatch<any>;
8
- setItemFormPopup: React.Dispatch<React.SetStateAction<any>>;
9
- }
10
4
  declare function UtopiaMap({ height, width, center, zoom, children, geo }: UtopiaMapProps): import("react/jsx-runtime").JSX.Element;
11
5
  export { UtopiaMap };
@@ -1,10 +1,17 @@
1
1
  /// <reference types="react" />
2
2
  import { Item, LayerProps } from '../../../types';
3
+ import { LatLng } from "leaflet";
4
+ import { ItemFormPopupProps } from "../Subcomponents/ItemFormPopup";
5
+ declare type PolygonClickedProps = {
6
+ position: LatLng;
7
+ setItemFormPopup: React.Dispatch<React.SetStateAction<ItemFormPopupProps | null>>;
8
+ };
3
9
  declare type UseSelectPositionManagerResult = ReturnType<typeof useSelectPositionManager>;
4
10
  declare function useSelectPositionManager(): {
5
11
  selectPosition: Item | LayerProps | null;
6
12
  setSelectPosition: React.Dispatch<React.SetStateAction<Item | LayerProps | null>>;
7
13
  setMarkerClicked: React.Dispatch<React.SetStateAction<Item>>;
14
+ setMapClicked: React.Dispatch<React.SetStateAction<PolygonClickedProps | undefined>>;
8
15
  };
9
16
  export declare const SelectPositionProvider: React.FunctionComponent<{
10
17
  children?: React.ReactNode;
@@ -12,4 +19,5 @@ export declare const SelectPositionProvider: React.FunctionComponent<{
12
19
  export declare const useSelectPosition: () => Item | LayerProps | null;
13
20
  export declare const useSetSelectPosition: () => UseSelectPositionManagerResult["setSelectPosition"];
14
21
  export declare const useSetMarkerClicked: () => UseSelectPositionManagerResult["setMarkerClicked"];
22
+ export declare const useSetMapClicked: () => UseSelectPositionManagerResult["setMapClicked"];
15
23
  export {};
package/dist/index.js CHANGED
@@ -113,14 +113,6 @@ function __spreadArray(to, from, pack) {
113
113
  return to.concat(ar || Array.prototype.slice.call(from));
114
114
  }
115
115
 
116
- var Geometry = /** @class */ (function () {
117
- function Geometry(lng, lat) {
118
- this.coordinates = [lng, lat];
119
- this.type = "Point";
120
- }
121
- return Geometry;
122
- }());
123
-
124
116
  function styleInject(css, ref) {
125
117
  if ( ref === void 0 ) ref = {};
126
118
  var insertAt = ref.insertAt;
@@ -148,7 +140,7 @@ function styleInject(css, ref) {
148
140
  }
149
141
  }
150
142
 
151
- var css_248z$2 = ".leaflet-container {\n text-align: left;\n background-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.spinner_V8m1%7Btransform-origin:center;animation:spinner_zKoa 2s linear infinite%7D.spinner_V8m1 circle%7Bstroke-linecap:round;animation:spinner_YpZS 1.5s ease-out infinite%7D%40keyframes spinner_zKoa%7B100%25%7Btransform:rotate(360deg)%7D%7D%40keyframes spinner_YpZS%7B0%25%7Bstroke-dasharray:0 150;stroke-dashoffset:0%7D47.5%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-16%7D95%25%2C100%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-59%7D%7D%3C%2Fstyle%3E%3Cg class='spinner_V8m1'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n background-repeat: no-repeat;\n background-attachment: fixed;\n background-position: 50% 80%; \n }\n \n \n \n input {\n box-sizing: border-box;\n }\n \n textarea {\n box-sizing: border-box;\n }\n \n .leaflet-control-attribution {\n display: none;\n }\n \n .leaflet-control-locate {\n display: none;\n }\n\n .leaflet-data-marker {\n \n background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAQCAYAAACcN8ZaAAAB3klEQVR42s3U4UdDURzG8czMXJnJ1Vwzc6VJZjaZJdlMlpQsKdmUFNOUspRSSqUolfQfr+fF98Vx5mwv9qbDx7LdznnO7/7Omej3+/+Ga0QMUYkhbvBgmhzCQxwxibIGrGEF8CQhU+LLtKQkQNqScUgjxRxTBIxbgfgD/BgnhM8kM5KTeclLQYqGkkMRBckzR8ic/mAgd5BAZplsUaqyIg2sDtHg2brUZJk5SmwopErJUWE8SpmTMhNvya60Zd/SNrR4bkeaskG4uiwRZk6yrJEYFibGAxn+scECHTmTnuVCzvmty3PHciB7bGKN6lQkzysPqIrHmpFhYbKUtckC1/Ioz4ZHuZdbuSLYiRxRpSZVWXZVxAzC0R4Ik5SQsu6w8yd5l2/5kg95I9SdXMoZQfYIUjeqEUrgOkXGPeN4TYRhxy8E+ZUf+eS7B7miIoeybVSjKDnm8u3+gH3pDTYwu1igATvs/pXqvBKiR4i2bNJfi1ZfUAnjgrOG8wY2quNzBKuU/ZS+uSFEl5O0xRGuUIlZCcw7xG5QPkeHYUSNV5WXGou2sC3rBC0LjenqCXGO0WEiTJa0Lr4KixdHBrDGuGGiRqCUpFk8pGIpQtCU7p4YPwxYxEMCk1aAMQZh8Ac8PfbIzYPJOwAAAABJRU5ErkJggg==') no-repeat;\n background-position: 6px 32px;\n }\n \n .crosshair-cursor-enabled {\n cursor: crosshair;\n }\n \n .leaflet-container {\n cursor: inherit;\n }\n \n .calendar-icon {\n position: relative;\n top: -35px;\n left: 10px;\n width: 13px;\n }\n \n .user-icon {\n position: relative;\n top: -36px;\n left: 10px;\n width: 13px;\n }\n\n .circle-icon {\n position: relative;\n top: -33px;\n left: 10px;\n width: 13px;\n }\n\n .fire-icon {\n position: relative;\n top: -36px;\n left: 10px;\n width: 13px;\n }\n\n .tree-icon {\n position: relative;\n top: -38px;\n left: 4px;\n width: 24px;\n }\n\n .music-icon {\n position: relative;\n top: -35px;\n left: 4px;\n width: 24px;\n }\n\n .drum-icon {\n position: relative;\n top: -38px;\n left: 4px;\n width: 24px;\n }\n \n .leaflet-popup-scrolled {\n overflow-x: hidden;\n }\n\n .leaflet-popup-content-wrapper, .leaflet-popup-tip{\n background-color: var(--fallback-b1,oklch(var(--b1)/1));\n color: var(--fallback-bc,oklch(var(--bc)/1));\n\n }\n\n .leaflet-tooltip {\n background-color: var(--fallback-b1,oklch(var(--b1)/1));\n color: var(--fallback-bc,oklch(var(--bc)/1));\n border-width: 0px;\n border-radius: 1em;\n transition: opacity 500ms;\n transition-delay: 50ms;\n }\n\n .leaflet-tooltip-top::before {\n border-top-color: var(--fallback-b1,oklch(var(--b1)/1));\n }\n\n .marker-cluster span {\n color: #000;\n }";
143
+ var css_248z$2 = ".leaflet-container {\n text-align: left;\n background-image: url(\"data:image/svg+xml,%3Csvg width='40' height='40' stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.spinner_V8m1%7Btransform-origin:center;animation:spinner_zKoa 2s linear infinite%7D.spinner_V8m1 circle%7Bstroke-linecap:round;animation:spinner_YpZS 1.5s ease-out infinite%7D%40keyframes spinner_zKoa%7B100%25%7Btransform:rotate(360deg)%7D%7D%40keyframes spinner_YpZS%7B0%25%7Bstroke-dasharray:0 150;stroke-dashoffset:0%7D47.5%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-16%7D95%25%2C100%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-59%7D%7D%3C%2Fstyle%3E%3Cg class='spinner_V8m1'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n background-repeat: no-repeat;\n background-attachment: fixed;\n background-position: 50% 80%; \n }\n \n input {\n box-sizing: border-box;\n }\n \n textarea {\n box-sizing: border-box;\n }\n \n .leaflet-control-attribution {\n display: none;\n }\n \n .leaflet-control-locate {\n display: none;\n }\n\n .leaflet-data-marker {\n \n background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAQCAYAAACcN8ZaAAAB3klEQVR42s3U4UdDURzG8czMXJnJ1Vwzc6VJZjaZJdlMlpQsKdmUFNOUspRSSqUolfQfr+fF98Vx5mwv9qbDx7LdznnO7/7Omej3+/+Ga0QMUYkhbvBgmhzCQxwxibIGrGEF8CQhU+LLtKQkQNqScUgjxRxTBIxbgfgD/BgnhM8kM5KTeclLQYqGkkMRBckzR8ic/mAgd5BAZplsUaqyIg2sDtHg2brUZJk5SmwopErJUWE8SpmTMhNvya60Zd/SNrR4bkeaskG4uiwRZk6yrJEYFibGAxn+scECHTmTnuVCzvmty3PHciB7bGKN6lQkzysPqIrHmpFhYbKUtckC1/Ioz4ZHuZdbuSLYiRxRpSZVWXZVxAzC0R4Ik5SQsu6w8yd5l2/5kg95I9SdXMoZQfYIUjeqEUrgOkXGPeN4TYRhxy8E+ZUf+eS7B7miIoeybVSjKDnm8u3+gH3pDTYwu1igATvs/pXqvBKiR4i2bNJfi1ZfUAnjgrOG8wY2quNzBKuU/ZS+uSFEl5O0xRGuUIlZCcw7xG5QPkeHYUSNV5WXGou2sC3rBC0LjenqCXGO0WEiTJa0Lr4KixdHBrDGuGGiRqCUpFk8pGIpQtCU7p4YPwxYxEMCk1aAMQZh8Ac8PfbIzYPJOwAAAABJRU5ErkJggg==') no-repeat;\n background-position: 6px 32px;\n }\n \n .crosshair-cursor-enabled {\n cursor: crosshair;\n }\n \n .leaflet-container {\n cursor: inherit;\n }\n \n .calendar-icon {\n position: relative;\n top: -35px;\n left: 10px;\n width: 13px;\n }\n \n .user-icon {\n position: relative;\n top: -36px;\n left: 10px;\n width: 13px;\n }\n\n .circle-icon {\n position: relative;\n top: -33px;\n left: 10px;\n width: 13px;\n }\n\n .fire-icon {\n position: relative;\n top: -36px;\n left: 10px;\n width: 13px;\n }\n\n .tree-icon {\n position: relative;\n top: -38px;\n left: 4px;\n width: 24px;\n }\n\n .music-icon {\n position: relative;\n top: -35px;\n left: 4px;\n width: 24px;\n }\n\n .drum-icon {\n position: relative;\n top: -38px;\n left: 4px;\n width: 24px;\n }\n \n .leaflet-popup-scrolled {\n overflow-x: hidden;\n }\n\n .leaflet-popup-content-wrapper, .leaflet-popup-tip{\n background-color: var(--fallback-b1,oklch(var(--b1)/1));\n color: var(--fallback-bc,oklch(var(--bc)/1));\n\n }\n\n .leaflet-tooltip {\n background-color: var(--fallback-b1,oklch(var(--b1)/1));\n color: var(--fallback-bc,oklch(var(--bc)/1));\n border-width: 0px;\n border-radius: 1em;\n transition: opacity 500ms;\n transition-delay: 50ms;\n }\n\n .leaflet-tooltip-top::before {\n border-top-color: var(--fallback-b1,oklch(var(--b1)/1));\n }\n\n .marker-cluster span {\n color: #000;\n }";
152
144
  styleInject(css_248z$2);
153
145
 
154
146
  var LayerContext = createContext({
@@ -3052,23 +3044,46 @@ var TagsControl = function () {
3052
3044
  }) })));
3053
3045
  };
3054
3046
 
3047
+ var Geometry = /** @class */ (function () {
3048
+ function Geometry(lng, lat) {
3049
+ this.coordinates = [lng, lat];
3050
+ this.type = "Point";
3051
+ }
3052
+ return Geometry;
3053
+ }());
3054
+
3055
3055
  var SelectPositionContext = createContext({
3056
3056
  selectPosition: null,
3057
3057
  setSelectPosition: function () { },
3058
3058
  setMarkerClicked: function () { },
3059
+ setMapClicked: function () { },
3059
3060
  });
3060
3061
  function useSelectPositionManager() {
3061
3062
  var _this = this;
3062
3063
  var _a = useState(null), selectPosition = _a[0], setSelectPosition = _a[1];
3063
3064
  var _b = useState(), markerClicked = _b[0], setMarkerClicked = _b[1];
3065
+ var _c = useState(), mapClicked = _c[0], setMapClicked = _c[1];
3064
3066
  var updateItem = useUpdateItem();
3065
3067
  var hasUserPermission = useHasUserPermission();
3066
3068
  useEffect(function () {
3067
3069
  if (selectPosition && markerClicked && 'text' in selectPosition) {
3068
- itemUpdate(__assign(__assign({}, selectPosition), { parent: markerClicked.id }));
3070
+ itemUpdateParent(__assign(__assign({}, selectPosition), { parent: markerClicked.id }));
3069
3071
  }
3070
3072
  }, [markerClicked]);
3071
- var itemUpdate = function (updatedItem) { return __awaiter(_this, void 0, void 0, function () {
3073
+ useEffect(function () {
3074
+ if (selectPosition != null) {
3075
+ if ('menuIcon' in selectPosition) {
3076
+ mapClicked && mapClicked.setItemFormPopup({ layer: selectPosition, position: mapClicked === null || mapClicked === void 0 ? void 0 : mapClicked.position });
3077
+ setSelectPosition(null);
3078
+ }
3079
+ if ('text' in selectPosition) {
3080
+ var position = (mapClicked === null || mapClicked === void 0 ? void 0 : mapClicked.position.lng) && new Geometry(mapClicked === null || mapClicked === void 0 ? void 0 : mapClicked.position.lng, mapClicked === null || mapClicked === void 0 ? void 0 : mapClicked.position.lat);
3081
+ position && itemUpdatePosition(__assign(__assign({}, selectPosition), { position: position }));
3082
+ setSelectPosition(null);
3083
+ }
3084
+ }
3085
+ }, [mapClicked]);
3086
+ var itemUpdateParent = function (updatedItem) { return __awaiter(_this, void 0, void 0, function () {
3072
3087
  var success, error_1;
3073
3088
  var _a, _b, _c, _d, _e, _f;
3074
3089
  return __generator(this, function (_g) {
@@ -3109,8 +3124,36 @@ function useSelectPositionManager() {
3109
3124
  }
3110
3125
  });
3111
3126
  }); };
3127
+ var itemUpdatePosition = function (updatedItem) { return __awaiter(_this, void 0, void 0, function () {
3128
+ var success, error_2;
3129
+ var _a, _b;
3130
+ return __generator(this, function (_c) {
3131
+ switch (_c.label) {
3132
+ case 0:
3133
+ success = false;
3134
+ _c.label = 1;
3135
+ case 1:
3136
+ _c.trys.push([1, 3, , 4]);
3137
+ return [4 /*yield*/, ((_b = (_a = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.layer) === null || _a === void 0 ? void 0 : _a.api) === null || _b === void 0 ? void 0 : _b.updateItem({ id: updatedItem.id, position: updatedItem.position }))];
3138
+ case 2:
3139
+ _c.sent();
3140
+ success = true;
3141
+ return [3 /*break*/, 4];
3142
+ case 3:
3143
+ error_2 = _c.sent();
3144
+ toast.error(error_2.toString());
3145
+ return [3 /*break*/, 4];
3146
+ case 4:
3147
+ if (success) {
3148
+ updateItem(updatedItem);
3149
+ toast.success("Item position updated");
3150
+ }
3151
+ return [2 /*return*/];
3152
+ }
3153
+ });
3154
+ }); };
3112
3155
  var linkItem = function (id) { return __awaiter(_this, void 0, void 0, function () {
3113
- var new_relations, updatedItem, success, error_2;
3156
+ var new_relations, updatedItem, success, error_3;
3114
3157
  var _a, _b;
3115
3158
  return __generator(this, function (_c) {
3116
3159
  switch (_c.label) {
@@ -3130,8 +3173,8 @@ function useSelectPositionManager() {
3130
3173
  success = true;
3131
3174
  return [3 /*break*/, 4];
3132
3175
  case 3:
3133
- error_2 = _c.sent();
3134
- toast.error(error_2.toString());
3176
+ error_3 = _c.sent();
3177
+ toast.error(error_3.toString());
3135
3178
  return [3 /*break*/, 4];
3136
3179
  case 4:
3137
3180
  if (success) {
@@ -3143,7 +3186,7 @@ function useSelectPositionManager() {
3143
3186
  }
3144
3187
  });
3145
3188
  }); };
3146
- return { selectPosition: selectPosition, setSelectPosition: setSelectPosition, setMarkerClicked: setMarkerClicked };
3189
+ return { selectPosition: selectPosition, setSelectPosition: setSelectPosition, setMarkerClicked: setMarkerClicked, setMapClicked: setMapClicked };
3147
3190
  }
3148
3191
  var SelectPositionProvider = function (_a) {
3149
3192
  var children = _a.children;
@@ -3160,6 +3203,10 @@ var useSetSelectPosition = function () {
3160
3203
  var useSetMarkerClicked = function () {
3161
3204
  var setMarkerClicked = useContext(SelectPositionContext).setMarkerClicked;
3162
3205
  return setMarkerClicked;
3206
+ };
3207
+ var useSetMapClicked = function () {
3208
+ var setMapClicked = useContext(SelectPositionContext).setMapClicked;
3209
+ return setMapClicked;
3163
3210
  };
3164
3211
 
3165
3212
  var ClusterRefContext = createContext({
@@ -3186,72 +3233,34 @@ var useSetClusterRef = function () {
3186
3233
  // for refreshing map on resize (needs to be implemented)
3187
3234
  var mapDivRef = React.createRef();
3188
3235
  function UtopiaMap(_a) {
3189
- var _this = this;
3190
3236
  var _b = _a.height, height = _b === void 0 ? "500px" : _b, _c = _a.width, width = _c === void 0 ? "100%" : _c, _d = _a.center, center = _d === void 0 ? [50.6, 9.5] : _d, _e = _a.zoom, zoom = _e === void 0 ? 10 : _e, children = _a.children, geo = _a.geo;
3191
- function MapEventListener(props) {
3237
+ function MapEventListener() {
3192
3238
  useMapEvents({
3193
3239
  click: function (e) {
3194
- var _a, _b, _c;
3195
- var params = new URLSearchParams(window.location.search);
3196
- window.history.pushState({}, "", "/" + "".concat(params.toString() !== "" ? "?".concat(params) : ""));
3197
- document.title = document.title.split("-")[0];
3198
- (_a = document.querySelector('meta[property="og:title"]')) === null || _a === void 0 ? void 0 : _a.setAttribute("content", document.title);
3199
- (_b = document.querySelector('meta[property="og:description"]')) === null || _b === void 0 ? void 0 : _b.setAttribute("content", "".concat((_c = document.querySelector('meta[name="description"]')) === null || _c === void 0 ? void 0 : _c.getAttribute("content")));
3240
+ resetMetaTags();
3200
3241
  console.log(e.latlng.lat + ',' + e.latlng.lng);
3201
- if (selectNewItemPosition != null) {
3202
- if ('menuIcon' in selectNewItemPosition) {
3203
- props.setItemFormPopup({ layer: props.selectNewItemPosition, position: e.latlng });
3204
- props.setSelectNewItemPosition(null);
3205
- }
3206
- if ('text' in selectNewItemPosition) {
3207
- var position = new Geometry(e.latlng.lng, e.latlng.lat);
3208
- itemUpdate(__assign(__assign({}, selectNewItemPosition), { position: position }));
3209
- setSelectNewItemPosition(null);
3210
- }
3211
- }
3242
+ selectNewItemPosition && setMapClicked({ position: e.latlng, setItemFormPopup: setItemFormPopup });
3212
3243
  },
3213
3244
  moveend: function (e) {
3214
3245
  console.log(e);
3215
- },
3246
+ }
3216
3247
  });
3217
3248
  return null;
3218
3249
  }
3219
- var itemUpdate = function (updatedItem) { return __awaiter(_this, void 0, void 0, function () {
3220
- var success, error_1;
3250
+ var resetMetaTags = function () {
3221
3251
  var _a, _b, _c;
3222
- return __generator(this, function (_d) {
3223
- switch (_d.label) {
3224
- case 0:
3225
- success = false;
3226
- _d.label = 1;
3227
- case 1:
3228
- _d.trys.push([1, 3, , 4]);
3229
- return [4 /*yield*/, ((_b = (_a = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.layer) === null || _a === void 0 ? void 0 : _a.api) === null || _b === void 0 ? void 0 : _b.updateItem({ id: updatedItem.id, position: updatedItem.position }))];
3230
- case 2:
3231
- _d.sent();
3232
- success = true;
3233
- return [3 /*break*/, 4];
3234
- case 3:
3235
- error_1 = _d.sent();
3236
- toast.error(error_1.toString());
3237
- return [3 /*break*/, 4];
3238
- case 4:
3239
- if (success) {
3240
- updateItem(updatedItem);
3241
- toast.success("Item position updated");
3242
- navigate("/" + ((_c = updatedItem.layer) === null || _c === void 0 ? void 0 : _c.name) + "/" + updatedItem.id);
3243
- }
3244
- return [2 /*return*/];
3245
- }
3246
- });
3247
- }); };
3252
+ var params = new URLSearchParams(window.location.search);
3253
+ window.history.pushState({}, "", "/" + "".concat(params.toString() !== "" ? "?".concat(params) : ""));
3254
+ document.title = document.title.split("-")[0];
3255
+ (_a = document.querySelector('meta[property="og:title"]')) === null || _a === void 0 ? void 0 : _a.setAttribute("content", document.title);
3256
+ (_b = document.querySelector('meta[property="og:description"]')) === null || _b === void 0 ? void 0 : _b.setAttribute("content", "".concat((_c = document.querySelector('meta[name="description"]')) === null || _c === void 0 ? void 0 : _c.getAttribute("content")));
3257
+ };
3248
3258
  var selectNewItemPosition = useSelectPosition();
3249
3259
  var setSelectNewItemPosition = useSetSelectPosition();
3250
3260
  var location = useLocation();
3251
- var updateItem = useUpdateItem();
3252
- var navigate = useNavigate();
3253
3261
  var setClusterRef = useSetClusterRef();
3254
3262
  var clusterRef = useClusterRef();
3263
+ var setMapClicked = useSetMapClicked();
3255
3264
  var _f = useState(null), itemFormPopup = _f[0], setItemFormPopup = _f[1];
3256
3265
  useEffect(function () {
3257
3266
  var params = new URLSearchParams(location.search);
@@ -3266,7 +3275,12 @@ function UtopiaMap(_a) {
3266
3275
  return (jsx(Fragment, { children: jsxs("div", __assign({ className: (selectNewItemPosition != null ? "crosshair-cursor-enabled" : undefined) }, { children: [jsxs(MapContainer, __assign({ ref: mapDivRef, style: { height: height, width: width }, center: new LatLng(center[0], center[1]), zoom: zoom, zoomControl: false, maxZoom: 19 }, { children: [jsx(Outlet, {}), jsxs(Control, __assign({ position: 'topLeft', zIndex: "1000" }, { children: [jsx(SearchControl, {}), jsx(TagsControl, {})] })), jsxs(Control, __assign({ position: 'bottomLeft', zIndex: "999" }, { children: [jsx(QuestControl, {}), jsx(LayerControl, {})] })), jsx(TileLayer, { maxZoom: 19, attribution: '\u00A9 <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors', url: "https://tile.osmand.net/hd/{z}/{x}/{y}.png" }), jsx(MarkerClusterGroup, __assign({ ref: function (r) { return setClusterRef(r); }, showCoverageOnHover: true, chunkedLoading: true, maxClusterRadius: 50, removeOutsideVisibleBounds: false }, { children: React.Children.toArray(children).map(function (child) {
3267
3276
  return React.isValidElement(child) ?
3268
3277
  React.cloneElement(child, { setItemFormPopup: setItemFormPopup, itemFormPopup: itemFormPopup, clusterRef: clusterRef }) : child;
3269
- }) })), geo && jsx(GeoJSON, { data: geo, onEachFeature: onEachFeature }), jsx(MapEventListener, { setSelectNewItemPosition: setSelectNewItemPosition, selectNewItemPosition: selectNewItemPosition, setItemFormPopup: setItemFormPopup })] })), jsx(AddButton, { triggerAction: setSelectNewItemPosition }), selectNewItemPosition != null &&
3278
+ }) })), geo && jsx(GeoJSON, { data: geo, onEachFeature: onEachFeature, eventHandlers: {
3279
+ click: function (e) {
3280
+ e.layer.closePopup();
3281
+ selectNewItemPosition && setMapClicked({ position: e.latlng, setItemFormPopup: setItemFormPopup });
3282
+ },
3283
+ } }), jsx(MapEventListener, {})] })), jsx(AddButton, { triggerAction: setSelectNewItemPosition }), selectNewItemPosition != null &&
3270
3284
  jsxs("div", __assign({ className: "tw-button tw-z-1000 tw-absolute tw-right-5 tw-top-4 tw-drop-shadow-md" }, { children: [jsx("label", __assign({ className: "tw-btn tw-btn-sm tw-rounded-2xl tw-btn-circle tw-btn-ghost hover:tw-bg-transparent tw-absolute tw-right-0 tw-top-0 tw-text-gray-600", onClick: function () {
3271
3285
  setSelectNewItemPosition(null);
3272
3286
  } }, { children: jsx("p", __assign({ className: 'tw-text-center ' }, { children: "\u2715" })) })), jsx("div", __assign({ className: "tw-alert tw-bg-base-100 tw-text-base-content" }, { children: jsx("div", { children: jsxs("span", { children: ["Select ", selectNewItemPosition.name, " position!"] }) }) }))] }))] })) }));
@@ -4939,11 +4953,11 @@ function OverlayItemProfileSettings() {
4939
4953
  urlTab ? setActiveTab(Number(urlTab)) : setActiveTab(1);
4940
4954
  }, [location]);
4941
4955
  useEffect(function () {
4942
- var _a, _b, _c, _d, _e, _f;
4956
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
4943
4957
  if ((_a = item.layer) === null || _a === void 0 ? void 0 : _a.itemColorField)
4944
4958
  setColor(getValue(item, (_b = item.layer) === null || _b === void 0 ? void 0 : _b.itemColorField));
4945
4959
  else
4946
- setColor(((_c = item.layer) === null || _c === void 0 ? void 0 : _c.markerDefaultColor) || "#3D3846");
4960
+ setColor(((_c = item.layer) === null || _c === void 0 ? void 0 : _c.itemColorField) && getValue(item, (_d = item.layer) === null || _d === void 0 ? void 0 : _d.itemColorField) ? getValue(item, (_e = item.layer) === null || _e === void 0 ? void 0 : _e.itemColorField) : (getItemTags(item) && getItemTags(item)[0] && getItemTags(item)[0].color ? getItemTags(item)[0].color : (_f = item === null || item === void 0 ? void 0 : item.layer) === null || _f === void 0 ? void 0 : _f.markerDefaultColor));
4947
4961
  setId((item === null || item === void 0 ? void 0 : item.id) ? item.id : "");
4948
4962
  setName((item === null || item === void 0 ? void 0 : item.name) ? item.name : "");
4949
4963
  setSubname((item === null || item === void 0 ? void 0 : item.subname) ? item.subname : "");
@@ -4952,15 +4966,15 @@ function OverlayItemProfileSettings() {
4952
4966
  setOffers([]);
4953
4967
  setNeeds([]);
4954
4968
  setRelations([]);
4955
- (_d = item === null || item === void 0 ? void 0 : item.offers) === null || _d === void 0 ? void 0 : _d.map(function (o) {
4969
+ (_g = item === null || item === void 0 ? void 0 : item.offers) === null || _g === void 0 ? void 0 : _g.map(function (o) {
4956
4970
  var offer = tags === null || tags === void 0 ? void 0 : tags.find(function (t) { return t.id === o.tags_id; });
4957
4971
  offer && setOffers(function (current) { return __spreadArray(__spreadArray([], current, true), [offer], false); });
4958
4972
  });
4959
- (_e = item === null || item === void 0 ? void 0 : item.needs) === null || _e === void 0 ? void 0 : _e.map(function (o) {
4973
+ (_h = item === null || item === void 0 ? void 0 : item.needs) === null || _h === void 0 ? void 0 : _h.map(function (o) {
4960
4974
  var need = tags === null || tags === void 0 ? void 0 : tags.find(function (t) { return t.id === o.tags_id; });
4961
4975
  need && setNeeds(function (current) { return __spreadArray(__spreadArray([], current, true), [need], false); });
4962
4976
  });
4963
- (_f = item.relations) === null || _f === void 0 ? void 0 : _f.map(function (r) {
4977
+ (_j = item.relations) === null || _j === void 0 ? void 0 : _j.map(function (r) {
4964
4978
  var item = items.find(function (i) { return i.id == r.related_items_id; });
4965
4979
  item && setRelations(function (current) { return __spreadArray(__spreadArray([], current, true), [item], false); });
4966
4980
  });
@@ -5112,7 +5126,7 @@ function OverlayItemProfileSettings() {
5112
5126
  }
5113
5127
  });
5114
5128
  }); };
5115
- return (jsx(Fragment, { children: jsx(MapOverlayPage, __assign({ backdrop: true, className: 'tw-mx-4 tw-mt-4 tw-mb-12 tw-overflow-x-hidden tw-max-h-[calc(100dvh-96px)] !tw-h-[calc(100dvh-96px)] tw-w-[calc(100%-32px)] md:tw-w-[calc(50%-32px)] tw-max-w-3xl !tw-left-auto tw-top-0 tw-bottom-0' }, { children: jsxs("div", __assign({ className: 'tw-flex tw-flex-col tw-h-full' }, { children: [jsxs("div", __assign({ className: "tw-flex" }, { children: [jsx(AvatarWidget, { avatar: image, setAvatar: setImage }), jsx(ColorPicker, { color: color ? color : "#3D3846", onChange: setColor, className: "-tw-left-6 tw-top-14 -tw-mr-6" }), jsxs("div", __assign({ className: 'tw-grow tw-mr-4' }, { children: [jsx(TextInput, { placeholder: "Name", defaultValue: (item === null || item === void 0 ? void 0 : item.name) ? item.name : "", updateFormValue: function (v) { return setName(v); }, containerStyle: 'tw-grow tw-input-md' }), jsx(TextInput, { placeholder: "Subtitle", defaultValue: (item === null || item === void 0 ? void 0 : item.subname) ? item.subname : "", updateFormValue: function (v) { return setSubname(v); }, containerStyle: 'tw-grow tw-input-sm tw-px-4 tw-mt-1' })] }))] })), jsxs("div", __assign({ role: "tablist", className: "tw-tabs tw-tabs-lifted tw-mt-4" }, { children: [jsx("input", { type: "radio", name: "my_tabs_2", role: "tab", className: "tw-tab [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]", "aria-label": "Info", checked: activeTab == 1 && true, onChange: function () { return updateActiveTab(1); } }), jsx("div", __assign({ role: "tabpanel", className: "tw-tab-content tw-bg-base-100 tw-border-[var(--fallback-bc,oklch(var(--bc)/0.2))] tw-rounded-box tw-h-[calc(100dvh-332px)] tw-min-h-56 tw-border-none" }, { children: jsx(TextAreaInput, { placeholder: "My Vision...", defaultValue: (item === null || item === void 0 ? void 0 : item.text) ? item.text : "", updateFormValue: function (v) { console.log(v); setText(v); }, containerStyle: 'tw-h-full', inputStyle: 'tw-h-full tw-border-t-0 tw-rounded-tl-none' }) })), ((_a = item.layer) === null || _a === void 0 ? void 0 : _a.itemType.offers_and_needs) &&
5129
+ return (jsx(Fragment, { children: jsx(MapOverlayPage, __assign({ backdrop: true, className: 'tw-mx-4 tw-mt-4 tw-mb-12 tw-overflow-x-hidden tw-max-h-[calc(100dvh-96px)] !tw-h-[calc(100dvh-96px)] tw-w-[calc(100%-32px)] md:tw-w-[calc(50%-32px)] tw-max-w-3xl !tw-left-auto tw-top-0 tw-bottom-0' }, { children: jsxs("div", __assign({ className: 'tw-flex tw-flex-col tw-h-full' }, { children: [jsxs("div", __assign({ className: "tw-flex" }, { children: [jsx(AvatarWidget, { avatar: image, setAvatar: setImage }), jsx(ColorPicker, { color: color, onChange: setColor, className: "-tw-left-6 tw-top-14 -tw-mr-6" }), jsxs("div", __assign({ className: 'tw-grow tw-mr-4' }, { children: [jsx(TextInput, { placeholder: "Name", defaultValue: (item === null || item === void 0 ? void 0 : item.name) ? item.name : "", updateFormValue: function (v) { return setName(v); }, containerStyle: 'tw-grow tw-input-md' }), jsx(TextInput, { placeholder: "Subtitle", defaultValue: (item === null || item === void 0 ? void 0 : item.subname) ? item.subname : "", updateFormValue: function (v) { return setSubname(v); }, containerStyle: 'tw-grow tw-input-sm tw-px-4 tw-mt-1' })] }))] })), jsxs("div", __assign({ role: "tablist", className: "tw-tabs tw-tabs-lifted tw-mt-4" }, { children: [jsx("input", { type: "radio", name: "my_tabs_2", role: "tab", className: "tw-tab [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]", "aria-label": "Info", checked: activeTab == 1 && true, onChange: function () { return updateActiveTab(1); } }), jsx("div", __assign({ role: "tabpanel", className: "tw-tab-content tw-bg-base-100 tw-border-[var(--fallback-bc,oklch(var(--bc)/0.2))] tw-rounded-box tw-h-[calc(100dvh-332px)] tw-min-h-56 tw-border-none" }, { children: jsx(TextAreaInput, { placeholder: "My Vision...", defaultValue: (item === null || item === void 0 ? void 0 : item.text) ? item.text : "", updateFormValue: function (v) { console.log(v); setText(v); }, containerStyle: 'tw-h-full', inputStyle: 'tw-h-full tw-border-t-0 tw-rounded-tl-none' }) })), ((_a = item.layer) === null || _a === void 0 ? void 0 : _a.itemType.offers_and_needs) &&
5116
5130
  jsxs(Fragment, { children: [jsx("input", { type: "radio", name: "my_tabs_2", role: "tab", className: "tw-tab tw-min-w-[10em] [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]", "aria-label": "Offers & Needs", checked: activeTab == 3 && true, onChange: function () { return updateActiveTab(3); } }), jsx("div", __assign({ role: "tabpanel", className: "tw-tab-content tw-bg-base-100 tw-border-[var(--fallback-bc,oklch(var(--bc)/0.2))] tw-rounded-box tw-h-[calc(100dvh-332px)] tw-min-h-56 tw-border-none" }, { children: jsxs("div", __assign({ className: 'tw-h-full' }, { children: [jsx("div", __assign({ className: 'tw-w-full tw-h-[calc(50%-0.75em)] tw-mb-4' }, { children: jsx(TagsWidget, { defaultTags: offers, onUpdate: function (v) { return setOffers(v); }, placeholder: "enter your offers", containerStyle: 'tw-bg-transparent tw-w-full tw-h-full tw-mt-3 tw-text-xs tw-h-[calc(100%-1rem)] tw-min-h-[5em] tw-pb-2 tw-overflow-auto' }) })), jsx("div", __assign({ className: 'tw-w-full tw-h-[calc(50%-0.75em)] ' }, { children: jsx(TagsWidget, { defaultTags: needs, onUpdate: function (v) { return setNeeds(v); }, placeholder: "enter your needs", containerStyle: 'tw-bg-transparent tw-w-full tw-h-full tw-mt-3 tw-text-xs tw-h-[calc(100%-1rem)] tw-min-h-[5em] tw-pb-2 tw-overflow-auto' }) }))] })) }))] }), ((_b = item.layer) === null || _b === void 0 ? void 0 : _b.itemType.relations) &&
5117
5131
  jsxs(Fragment, { children: [jsx("input", { type: "radio", name: "my_tabs_2", role: "tab", className: "tw-tab [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]", "aria-label": "Relations", checked: activeTab == 7 && true, onChange: function () { return updateActiveTab(7); } }), jsx("div", __assign({ role: "tabpanel", className: "tw-tab-content tw-bg-base-100 tw-rounded-box tw-h-[calc(100dvh-332px)] tw-overflow-y-auto tw-pt-4 tw-pb-1 -tw-mx-4 tw-overflow-x-hidden" }, { children: jsx("div", __assign({ className: 'tw-h-full' }, { children: jsxs("div", __assign({ className: 'tw-grid tw-grid-cols-1 sm:tw-grid-cols-2 md:tw-grid-cols-1 lg:tw-grid-cols-1 xl:tw-grid-cols-1 2xl:tw-grid-cols-2' }, { children: [relations && relations.map(function (i) {
5118
5132
  return jsxs("div", __assign({ className: 'tw-cursor-pointer tw-card tw-bg-base-200 tw-border-[1px] tw-border-base-300 tw-card-body tw-shadow-xl tw-text-base-content tw-mx-4 tw-p-6 tw-mb-4', onClick: function () { return navigate('/item/' + i.id); } }, { children: [jsx(LinkedItemsHeaderView, { unlinkPermission: updatePermission, item: i, unlinkCallback: unlinkItem, loading: loading }), jsx("div", __assign({ className: 'tw-overflow-y-auto tw-overflow-x-hidden tw-max-h-64 fade' }, { children: jsx(TextView, { truncate: true, item: i }) }))] }), i.id);