@dartcom/ui-kit 10.5.24 → 10.6.1
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.
- package/dist/components/modal/modal.d.ts.map +1 -1
- package/dist/components/modal/modal.esm.js +1 -1
- package/dist/components/modal/styles.d.ts +1 -2
- package/dist/components/modal/styles.d.ts.map +1 -1
- package/dist/components/modal/styles.esm.js +1 -1
- package/dist/components/modal/types.d.ts +2 -2
- package/dist/components/modal/types.d.ts.map +1 -1
- package/dist/index.cjs +208 -39
- package/dist/index.esm.js +1 -1
- package/dist/layouts/auth/auth.esm.js +1 -1
- package/dist/pages/auth/auth.esm.js +1 -1
- package/dist/services/collection/collection.service.d.ts +5 -5
- package/dist/services/collection/collection.service.d.ts.map +1 -1
- package/dist/services/collection/collection.service.esm.js +1 -1
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/map/map.service.d.ts +37 -0
- package/dist/services/map/map.service.d.ts.map +1 -1
- package/dist/services/map/map.service.esm.js +1 -1
- package/dist/services/set/index.d.ts +2 -0
- package/dist/services/set/index.d.ts.map +1 -0
- package/dist/services/set/set.service.d.ts +95 -0
- package/dist/services/set/set.service.d.ts.map +1 -0
- package/dist/services/set/set.service.esm.js +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;;AAkC3C,wBAAqC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import*as o from"react";import"../../stores/alert/alert.esm.js";import{modalStore as
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import*as o from"react";import"../../stores/alert/alert.esm.js";import{modalStore as r}from"../../stores/modal/modal.esm.js";import m from"@mui/material/Modal";import"../../node_modules/mobx-react-lite/es/index.esm.js";import{ModalContainer as s}from"./styles.esm.js";import{observer as t}from"../../node_modules/mobx-react-lite/es/observer.esm.js";var a=t(({name:t,children:a,onClose:l,onOpen:i})=>{const d=o.useId(),n=r.getIsOpen(t);return o.useEffect(()=>{n?i?.({name:t}):l?.({name:t})},[n]),e(m,{open:n,onClose:()=>{r.close(t)},"aria-labelledby":`modal-${d}-title`,"aria-describedby":`modal-${d}-description`,children:e(s,{children:a})})});export{a as default};
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
export declare const modalStyle: SxProps;
|
|
1
|
+
export declare const ModalContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
|
|
3
2
|
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/components/modal/styles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/components/modal/styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,mXA6BzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const o={position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",
|
|
1
|
+
import{styled as t,Box as o}from"@mui/material";const i=t(o)(({theme:t})=>{const{spacing:o,breakpoints:i,palette:a}=t;return{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",backgroundColor:a.white.main,borderRadius:o(2),padding:o(2),maxHeight:"90vh",overflow:"auto",[i.up("sm")]:{minWidth:400},[i.down("sm")]:{minWidth:"80vw"}}});export{i as ModalContainer};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export interface CustomModalProps {
|
|
2
2
|
name: string;
|
|
3
3
|
onClose?: (props: {
|
|
4
|
-
name:
|
|
4
|
+
name: string;
|
|
5
5
|
}) => void;
|
|
6
6
|
onOpen?: (props: {
|
|
7
|
-
name:
|
|
7
|
+
name: string;
|
|
8
8
|
}) => void;
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/modal/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/modal/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5C"}
|
package/dist/index.cjs
CHANGED
|
@@ -20,7 +20,6 @@ var Checkbox = require('@mui/material/Checkbox');
|
|
|
20
20
|
var FormControlLabel = require('@mui/material/FormControlLabel');
|
|
21
21
|
var styles$2 = require('@mui/material/styles');
|
|
22
22
|
var DateField$1 = require('@mui/x-date-pickers/DateField');
|
|
23
|
-
var Box = require('@mui/material/Box');
|
|
24
23
|
var Modal = require('@mui/material/Modal');
|
|
25
24
|
var lab = require('@mui/lab');
|
|
26
25
|
var xDatePickers = require('@mui/x-date-pickers');
|
|
@@ -5662,9 +5661,134 @@ class ApiService {
|
|
|
5662
5661
|
}
|
|
5663
5662
|
}
|
|
5664
5663
|
|
|
5664
|
+
/**
|
|
5665
|
+
* SetService<T>
|
|
5666
|
+
*
|
|
5667
|
+
* Небольшой обёрткой над observable Set из MobX, которая:
|
|
5668
|
+
* - хранит уникальные значения типа T;
|
|
5669
|
+
* - предоставляет реактивные геттеры items / list;
|
|
5670
|
+
* - даёт удобные методы add / delete / toggle / clear;
|
|
5671
|
+
* - поддерживает batch‑операции addMany / deleteMany.
|
|
5672
|
+
*
|
|
5673
|
+
* Типичный сценарий использования:
|
|
5674
|
+
* - хранение множества выбранных id;
|
|
5675
|
+
* - хранение множества активных фильтров;
|
|
5676
|
+
* - хранение множества "выделенных" элементов в UI.
|
|
5677
|
+
*
|
|
5678
|
+
* Пример:
|
|
5679
|
+
* const selection = new SetService<string>();
|
|
5680
|
+
* selection.add('id-1');
|
|
5681
|
+
* selection.toggle('id-2');
|
|
5682
|
+
* selection.isContain('id-1'); // true
|
|
5683
|
+
*/
|
|
5684
|
+
class SetService {
|
|
5685
|
+
/**
|
|
5686
|
+
* Внутренний набор значений.
|
|
5687
|
+
*
|
|
5688
|
+
* Используется observable.set, чтобы:
|
|
5689
|
+
* - изменения были реактивны для MobX;
|
|
5690
|
+
* - операции add/delete были O(1) по времени.
|
|
5691
|
+
*/
|
|
5692
|
+
_items = observable.set();
|
|
5693
|
+
/**
|
|
5694
|
+
* Возвращает observable Set со всеми значениями.
|
|
5695
|
+
*
|
|
5696
|
+
* Подходит, если нужно работать с Set напрямую:
|
|
5697
|
+
* setService.items.has(value)
|
|
5698
|
+
*/
|
|
5699
|
+
get items() {
|
|
5700
|
+
return this._items;
|
|
5701
|
+
}
|
|
5702
|
+
/**
|
|
5703
|
+
* Возвращает значения набора в виде обычного массива.
|
|
5704
|
+
*
|
|
5705
|
+
* Удобно использовать в React-компонентах:
|
|
5706
|
+
* setService.list.map(...)
|
|
5707
|
+
*/
|
|
5708
|
+
get list() {
|
|
5709
|
+
return Array.from(this.items.values());
|
|
5710
|
+
}
|
|
5711
|
+
/**
|
|
5712
|
+
* Проверяет, содержится ли значение в наборе.
|
|
5713
|
+
*
|
|
5714
|
+
* @param value Значение для проверки.
|
|
5715
|
+
* @returns true, если value есть в наборе; иначе false.
|
|
5716
|
+
*/
|
|
5717
|
+
has(value) {
|
|
5718
|
+
return this.items.has(value);
|
|
5719
|
+
}
|
|
5720
|
+
/**
|
|
5721
|
+
* Возвращает значение, пустой ли список
|
|
5722
|
+
* @returns true, если в списке нет ни одного элемента; иначе false.
|
|
5723
|
+
*/
|
|
5724
|
+
get isEmpty() {
|
|
5725
|
+
return this.items.size === 0;
|
|
5726
|
+
}
|
|
5727
|
+
/**
|
|
5728
|
+
* Добавляет значение в набор.
|
|
5729
|
+
*
|
|
5730
|
+
* @param value Значение для добавления.
|
|
5731
|
+
*/
|
|
5732
|
+
add(value) {
|
|
5733
|
+
this._items.add(value);
|
|
5734
|
+
}
|
|
5735
|
+
/**
|
|
5736
|
+
* Добавляет в набор несколько значений подряд.
|
|
5737
|
+
*
|
|
5738
|
+
* @param values Массив значений для добавления.
|
|
5739
|
+
*/
|
|
5740
|
+
addMany(values) {
|
|
5741
|
+
values.forEach((value) => {
|
|
5742
|
+
this.add(value);
|
|
5743
|
+
});
|
|
5744
|
+
}
|
|
5745
|
+
/**
|
|
5746
|
+
* Удаляет значение из набора.
|
|
5747
|
+
*
|
|
5748
|
+
* @param value Значение для удаления.
|
|
5749
|
+
*/
|
|
5750
|
+
delete(value) {
|
|
5751
|
+
this._items.delete(value);
|
|
5752
|
+
}
|
|
5753
|
+
/**
|
|
5754
|
+
* Удаляет из набора несколько значений подряд.
|
|
5755
|
+
*
|
|
5756
|
+
* @param values Массив значений для удаления.
|
|
5757
|
+
*/
|
|
5758
|
+
deleteMany(values) {
|
|
5759
|
+
values.forEach((value) => {
|
|
5760
|
+
this.delete(value);
|
|
5761
|
+
});
|
|
5762
|
+
}
|
|
5763
|
+
/**
|
|
5764
|
+
* Переключает присутствие значения в наборе.
|
|
5765
|
+
*
|
|
5766
|
+
* Поведение:
|
|
5767
|
+
* - если значение уже есть, оно будет удалено;
|
|
5768
|
+
* - если значения нет, оно будет добавлено.
|
|
5769
|
+
*
|
|
5770
|
+
* @param value Значение для переключения.
|
|
5771
|
+
*/
|
|
5772
|
+
toggle(value) {
|
|
5773
|
+
if (this.has(value)) {
|
|
5774
|
+
this.delete(value);
|
|
5775
|
+
}
|
|
5776
|
+
else {
|
|
5777
|
+
this.add(value);
|
|
5778
|
+
}
|
|
5779
|
+
}
|
|
5780
|
+
/**
|
|
5781
|
+
* Полностью очищает набор.
|
|
5782
|
+
*/
|
|
5783
|
+
clear() {
|
|
5784
|
+
this._items.clear();
|
|
5785
|
+
}
|
|
5786
|
+
}
|
|
5787
|
+
|
|
5665
5788
|
class CollectionService {
|
|
5666
5789
|
props;
|
|
5667
5790
|
_items = observable.map();
|
|
5791
|
+
selectedIds = new SetService();
|
|
5668
5792
|
constructor(props) {
|
|
5669
5793
|
this.props = props;
|
|
5670
5794
|
makeAutoObservable(this);
|
|
@@ -5780,8 +5904,8 @@ class CollectionService {
|
|
|
5780
5904
|
clear() {
|
|
5781
5905
|
this._items.clear();
|
|
5782
5906
|
this.updatedId = null;
|
|
5783
|
-
this.selectedId = null;
|
|
5784
5907
|
this.deletedId = null;
|
|
5908
|
+
this.selectedIds.clear();
|
|
5785
5909
|
}
|
|
5786
5910
|
_updatedId = null;
|
|
5787
5911
|
get updatedId() {
|
|
@@ -5796,18 +5920,8 @@ class CollectionService {
|
|
|
5796
5920
|
return item;
|
|
5797
5921
|
}
|
|
5798
5922
|
}
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
return this._selectedId;
|
|
5802
|
-
}
|
|
5803
|
-
set selectedId(value) {
|
|
5804
|
-
this._selectedId = value;
|
|
5805
|
-
}
|
|
5806
|
-
get selectedItem() {
|
|
5807
|
-
if (this.selectedId != null) {
|
|
5808
|
-
const item = this.getById(this.selectedId);
|
|
5809
|
-
return item;
|
|
5810
|
-
}
|
|
5923
|
+
get isUpdated() {
|
|
5924
|
+
return this.updatedId !== null;
|
|
5811
5925
|
}
|
|
5812
5926
|
_deletedId = null;
|
|
5813
5927
|
get deletedId() {
|
|
@@ -5822,6 +5936,9 @@ class CollectionService {
|
|
|
5822
5936
|
return item;
|
|
5823
5937
|
}
|
|
5824
5938
|
}
|
|
5939
|
+
get isDeleted() {
|
|
5940
|
+
return this.deletedId !== null;
|
|
5941
|
+
}
|
|
5825
5942
|
}
|
|
5826
5943
|
|
|
5827
5944
|
/**
|
|
@@ -9315,6 +9432,60 @@ class MapService {
|
|
|
9315
9432
|
}
|
|
9316
9433
|
}
|
|
9317
9434
|
}
|
|
9435
|
+
/**
|
|
9436
|
+
* Вычисляет два узла, расположенных перпендикулярно отрезку
|
|
9437
|
+
* в его конечной точке на заданном расстоянии.
|
|
9438
|
+
*
|
|
9439
|
+
* Алгоритм:
|
|
9440
|
+
* 1. Вычисляет обратный азимут (направление от конечной точки к начальной).
|
|
9441
|
+
* 2. Поворачивает его на ±90° — получает два перпендикулярных направления.
|
|
9442
|
+
* 3. Смещает конечную точку на `offset` метров в каждую сторону,
|
|
9443
|
+
* используя плоскую аппроксимацию (приемлемо при offset ≤ 2000 м).
|
|
9444
|
+
*
|
|
9445
|
+
* Принимает и возвращает координаты в формате {@link FrontendLatLng}
|
|
9446
|
+
* (`{ lat, lng }`) для прямой совместимости с Leaflet.
|
|
9447
|
+
*
|
|
9448
|
+
* Типичный сценарий использования: построение нормалей к маршруту,
|
|
9449
|
+
* поперечных контрольных точек, перпендикулярных смещений на линии.
|
|
9450
|
+
*
|
|
9451
|
+
* @param params - Параметры расчёта.
|
|
9452
|
+
* @param params.from - Начальная точка отрезка.
|
|
9453
|
+
* @param params.to - Конечная точка отрезка. Перпендикуляр строится именно здесь.
|
|
9454
|
+
* @param params.offset - Расстояние смещения в метрах (по умолчанию 100 м).
|
|
9455
|
+
* @returns Два узла в формате {@link FrontendLatLng}, сдвинутых перпендикулярно
|
|
9456
|
+
* отрезку влево и вправо от конечной точки.
|
|
9457
|
+
*
|
|
9458
|
+
* @example
|
|
9459
|
+
* const { left, right } = mapService.getPerpendicularPoints({
|
|
9460
|
+
* from: { lat: 55.75, lng: 37.61 },
|
|
9461
|
+
* to: { lat: 55.76, lng: 37.62 },
|
|
9462
|
+
* });
|
|
9463
|
+
*/
|
|
9464
|
+
getPerpendicularPoints({ from, to, offset = 100, }) {
|
|
9465
|
+
const φ1 = from.lat * this.DEG_TO_RAD;
|
|
9466
|
+
const λ1 = from.lng * this.DEG_TO_RAD;
|
|
9467
|
+
const φ2 = to.lat * this.DEG_TO_RAD;
|
|
9468
|
+
const λ2 = to.lng * this.DEG_TO_RAD;
|
|
9469
|
+
const Δλ = λ1 - λ2;
|
|
9470
|
+
const y = Math.sin(Δλ) * Math.cos(φ1);
|
|
9471
|
+
const x = Math.cos(φ2) * Math.sin(φ1) - Math.sin(φ2) * Math.cos(φ1) * Math.cos(Δλ);
|
|
9472
|
+
const reverseBearing = this.normalizeBearing(Math.atan2(y, x) * this.RAD_TO_DEG);
|
|
9473
|
+
const leftBearing = this.normalizeBearing(reverseBearing + 90);
|
|
9474
|
+
const rightBearing = this.normalizeBearing(reverseBearing + 270);
|
|
9475
|
+
const metersPerDegLat = (this.EARTH_RADIUS_M * Math.PI) / 180;
|
|
9476
|
+
const metersPerDegLon = metersPerDegLat * Math.cos(φ2);
|
|
9477
|
+
const shift = (bearing) => {
|
|
9478
|
+
const bearingRad = bearing * this.DEG_TO_RAD;
|
|
9479
|
+
return {
|
|
9480
|
+
lat: to.lat + (offset * Math.cos(bearingRad)) / metersPerDegLat,
|
|
9481
|
+
lng: to.lng + (offset * Math.sin(bearingRad)) / metersPerDegLon,
|
|
9482
|
+
};
|
|
9483
|
+
};
|
|
9484
|
+
return {
|
|
9485
|
+
left: shift(leftBearing),
|
|
9486
|
+
right: shift(rightBearing),
|
|
9487
|
+
};
|
|
9488
|
+
}
|
|
9318
9489
|
}
|
|
9319
9490
|
/**
|
|
9320
9491
|
* Сервис для работы с географическими координатами и базовыми
|
|
@@ -44663,19 +44834,26 @@ const Loader = (props) => {
|
|
|
44663
44834
|
return jsxRuntime.jsx(material.CircularProgress, { ...props });
|
|
44664
44835
|
};
|
|
44665
44836
|
|
|
44666
|
-
const
|
|
44667
|
-
|
|
44668
|
-
|
|
44669
|
-
|
|
44670
|
-
|
|
44671
|
-
|
|
44672
|
-
|
|
44673
|
-
|
|
44674
|
-
|
|
44675
|
-
|
|
44676
|
-
|
|
44677
|
-
|
|
44678
|
-
|
|
44837
|
+
const ModalContainer = material.styled(material.Box)(({ theme }) => {
|
|
44838
|
+
const { spacing, breakpoints, palette } = theme;
|
|
44839
|
+
return {
|
|
44840
|
+
position: 'absolute',
|
|
44841
|
+
top: '50%',
|
|
44842
|
+
left: '50%',
|
|
44843
|
+
transform: 'translate(-50%, -50%)',
|
|
44844
|
+
backgroundColor: palette.white.main,
|
|
44845
|
+
borderRadius: spacing(2),
|
|
44846
|
+
padding: spacing(2),
|
|
44847
|
+
maxHeight: '90vh',
|
|
44848
|
+
overflow: 'auto',
|
|
44849
|
+
[breakpoints.up('sm')]: {
|
|
44850
|
+
minWidth: 400,
|
|
44851
|
+
},
|
|
44852
|
+
[breakpoints.down('sm')]: {
|
|
44853
|
+
minWidth: '80vw',
|
|
44854
|
+
},
|
|
44855
|
+
};
|
|
44856
|
+
});
|
|
44679
44857
|
|
|
44680
44858
|
const CustomModal = ({ name, children, onClose, onOpen, }) => {
|
|
44681
44859
|
const modalId = React__namespace.useId();
|
|
@@ -44690,17 +44868,7 @@ const CustomModal = ({ name, children, onClose, onOpen, }) => {
|
|
|
44690
44868
|
}, [isOpen]);
|
|
44691
44869
|
return (jsxRuntime.jsx(Modal, { open: isOpen, onClose: () => {
|
|
44692
44870
|
modalStore.close(name);
|
|
44693
|
-
}, "aria-labelledby": `modal-${modalId}-title`, "aria-describedby": `modal-${modalId}-description`, children: jsxRuntime.jsx(
|
|
44694
|
-
return {
|
|
44695
|
-
...modalStyle,
|
|
44696
|
-
[breakpoints.up('sm')]: {
|
|
44697
|
-
minWidth: 400,
|
|
44698
|
-
},
|
|
44699
|
-
[breakpoints.down('sm')]: {
|
|
44700
|
-
minWidth: '80vw',
|
|
44701
|
-
},
|
|
44702
|
-
};
|
|
44703
|
-
}, children: children }) }));
|
|
44871
|
+
}, "aria-labelledby": `modal-${modalId}-title`, "aria-describedby": `modal-${modalId}-description`, children: jsxRuntime.jsx(ModalContainer, { children: children }) }));
|
|
44704
44872
|
};
|
|
44705
44873
|
var modal = observer(CustomModal);
|
|
44706
44874
|
|
|
@@ -48191,9 +48359,11 @@ exports.LeafletLayer = LeafletLayer;
|
|
|
48191
48359
|
exports.List = CustomList;
|
|
48192
48360
|
exports.Loader = Loader;
|
|
48193
48361
|
exports.Modal = modal;
|
|
48362
|
+
exports.ModalContainer = ModalContainer;
|
|
48194
48363
|
exports.NoData = NoData;
|
|
48195
48364
|
exports.Paragraph = Paragraph;
|
|
48196
48365
|
exports.Select = FormSelect;
|
|
48366
|
+
exports.SetService = SetService;
|
|
48197
48367
|
exports.Tabs = Tabs;
|
|
48198
48368
|
exports.TangramLayer = TangramLayer;
|
|
48199
48369
|
exports.TextField = TextField;
|
|
@@ -48259,7 +48429,6 @@ exports.localizationService = localizationService;
|
|
|
48259
48429
|
exports.loggerService = loggerService;
|
|
48260
48430
|
exports.mapService = mapService;
|
|
48261
48431
|
exports.modalStore = modalStore;
|
|
48262
|
-
exports.modalStyle = modalStyle;
|
|
48263
48432
|
exports.numberRequiredSchema = numberRequiredSchema;
|
|
48264
48433
|
exports.numberSchema = numberSchema;
|
|
48265
48434
|
exports.parseTrafficSignCSVFile = parseTrafficSignCSVFile;
|
package/dist/index.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{alertStore}from"./stores/alert/alert.esm.js";export{modalStore}from"./stores/modal/modal.esm.js";export{Operations}from"./lib/types.esm.js";export{useDeviceType}from"./lib/hooks/useDeviceType.esm.js";export{useGetUser,useLazyGetUser}from"./lib/hooks/useGetUser.esm.js";export{useShowErrorSnackbar}from"./lib/hooks/useShowErrorSnackbar.esm.js";export{useShowSnackbar}from"./lib/hooks/useShowSnackbar.esm.js";export{useSignIn}from"./lib/hooks/useSignIn.esm.js";export{useSignOut}from"./lib/hooks/useSignOut.esm.js";export{copyInformation,encodeString,getEntityNames,getImageSrc,getNewId,getUniqueKey,getUrlencodedBody,showSnackbar}from"./lib/utils.esm.js";export{_testApiKeys}from"./configs/global/constants.esm.js";export{GlobalConfig}from"./configs/global/global.esm.js";export{API_METHODS}from"./constants/api.esm.js";export{PanelsNames}from"./constants/map.esm.js";export{arraySchema,dateRequiredSchema,dateSchema,getStringRequiredSchema,getStringSchema,numberRequiredSchema,numberSchema}from"./constants/schema.esm.js";export{default as Accordion}from"./components/accordion/accordion.esm.js";export{default as AlertDialog}from"./components/alert-dialog/alert-dialog.esm.js";export{default as Button}from"./components/buttons/button/button.esm.js";export{default as DeleteButton}from"./components/buttons/delete/delete.esm.js";export{default as IconButton}from"./components/buttons/icon/icon.esm.js";export{default as UploadButton}from"./components/buttons/upload/upload.esm.js";export{default as Card}from"./components/card/card.esm.js";export{default as Checkbox}from"./components/checkbox/checkbox.esm.js";export{default as CopyText}from"./components/copy-text/copy-text.esm.js";export{default as DateField}from"./components/date-field/date-field.esm.js";export{default as DragList}from"./components/drag-list/drag-list.esm.js";export{default as DraggableContainer}from"./components/draggable-container/draggable-container.esm.js";export{default as ErrorBoundary}from"./components/error-boundary/error-boundary.esm.js";export{default as FormErrorMessage}from"./components/form/error-message/error-message.esm.js";export{default as Form}from"./components/form/form.esm.js";export{useFormContext}from"./components/form/hooks/useFormContext.esm.js";export{default as Input}from"./components/input/input.esm.js";export{SourceLayers,TangramSourceNames}from"./components/layers/leaflet/lib/types.esm.js";export{getAllLayers,getAllPointLayers,getAllPolygonLayers,getAllPolylineLayers,getBackendDate,getLayerModalsNames,getLayerName,getValidLayer}from"./components/layers/leaflet/lib/utils.esm.js";export{sourceUrl,tile_size}from"./components/layers/leaflet/config/constants.esm.js";export{getBuildingLayers}from"./components/layers/leaflet/layers/building/utils.esm.js";export{getBuiltupAreaLayers}from"./components/layers/leaflet/layers/builtup-area/utils.esm.js";export{getAdminAreaLayers}from"./components/layers/leaflet/layers/admin-area/utils.esm.js";export{getCameraLayers}from"./components/layers/leaflet/layers/camera/lib/utils.esm.js";export{cameraConfig}from"./components/layers/leaflet/layers/camera/config/constants.esm.js";export{getCityPOILayers}from"./components/layers/leaflet/layers/city-POI/utils.esm.js";export{getConditionLayers}from"./components/layers/leaflet/layers/condition/utils.esm.js";export{getFacilityAreaLayers}from"./components/layers/leaflet/layers/facility-area/utils.esm.js";export{landuseAreaFeatureTypes,landuseAreaLayerGeometryData,landuseAreaLayerLabelData}from"./components/layers/leaflet/layers/landuse-area/constants.esm.js";export{getLanduseAreaGeometryLayer,getLanduseAreaLabelLayer,getLanduseAreaLayers}from"./components/layers/leaflet/layers/landuse-area/utils.esm.js";export{getLaneMarkingArrowLayers}from"./components/layers/leaflet/layers/lane-marking-arrow/utils.esm.js";export{getLinkLayers}from"./components/layers/leaflet/layers/link/utils.esm.js";export{getNatureFieldLayers}from"./components/layers/leaflet/layers/nature-field/utils.esm.js";export{getNatureForestGeometryLayer,getNatureForestLayers}from"./components/layers/leaflet/layers/nature-forest/utils.esm.js";export{getOceanAreaLayers}from"./components/layers/leaflet/layers/ocean-area/utils.esm.js";export{getOneWayLayers}from"./components/layers/leaflet/layers/one-way/utils.esm.js";export{getPillarLayers}from"./components/layers/leaflet/layers/pillar/lib/utils.esm.js";export{pillarConfig}from"./components/layers/leaflet/layers/pillar/config/constants.esm.js";export{catIds,text_source}from"./components/layers/leaflet/layers/POI/constants.esm.js";export{getDefaultPOI,getPOILayers,getPOITypeLayer}from"./components/layers/leaflet/layers/POI/utils.esm.js";export{getPointAddressLayers}from"./components/layers/leaflet/layers/point-address/utils.esm.js";export{getRailroadLayers}from"./components/layers/leaflet/layers/railroad/utils.esm.js";export{getTrafficSignImgSrc,getTrafficSignLayers,parseTrafficSignCSVFile}from"./components/layers/leaflet/layers/traffic-sign/lib/utils.esm.js";export{allTrafficSigns,trafficSignConfig,trafficSigns,trafficSignsDop}from"./components/layers/leaflet/layers/traffic-sign/config/constants.esm.js";export{getTrafficSignalLayers}from"./components/layers/leaflet/layers/traffic-signal/lib/utils.esm.js";export{trafficSignalConfig}from"./components/layers/leaflet/layers/traffic-signal/config/constants.esm.js";export{getWaterAreaLayers}from"./components/layers/leaflet/layers/water-area/utils.esm.js";export{getWaterLinkLayers}from"./components/layers/leaflet/layers/water-link/utils.esm.js";export{default as LeafletLayer}from"./components/layers/leaflet/leaflet.esm.js";export{TangramLayer}from"./components/layers/leaflet/services/tangram-layer.esm.js";export{default as List}from"./components/list/list.esm.js";export{default as Loader}from"./components/loader/loader.esm.js";export{default as Modal}from"./components/modal/modal.esm.js";export{
|
|
1
|
+
export{alertStore}from"./stores/alert/alert.esm.js";export{modalStore}from"./stores/modal/modal.esm.js";export{Operations}from"./lib/types.esm.js";export{useDeviceType}from"./lib/hooks/useDeviceType.esm.js";export{useGetUser,useLazyGetUser}from"./lib/hooks/useGetUser.esm.js";export{useShowErrorSnackbar}from"./lib/hooks/useShowErrorSnackbar.esm.js";export{useShowSnackbar}from"./lib/hooks/useShowSnackbar.esm.js";export{useSignIn}from"./lib/hooks/useSignIn.esm.js";export{useSignOut}from"./lib/hooks/useSignOut.esm.js";export{copyInformation,encodeString,getEntityNames,getImageSrc,getNewId,getUniqueKey,getUrlencodedBody,showSnackbar}from"./lib/utils.esm.js";export{_testApiKeys}from"./configs/global/constants.esm.js";export{GlobalConfig}from"./configs/global/global.esm.js";export{API_METHODS}from"./constants/api.esm.js";export{PanelsNames}from"./constants/map.esm.js";export{arraySchema,dateRequiredSchema,dateSchema,getStringRequiredSchema,getStringSchema,numberRequiredSchema,numberSchema}from"./constants/schema.esm.js";export{default as Accordion}from"./components/accordion/accordion.esm.js";export{default as AlertDialog}from"./components/alert-dialog/alert-dialog.esm.js";export{default as Button}from"./components/buttons/button/button.esm.js";export{default as DeleteButton}from"./components/buttons/delete/delete.esm.js";export{default as IconButton}from"./components/buttons/icon/icon.esm.js";export{default as UploadButton}from"./components/buttons/upload/upload.esm.js";export{default as Card}from"./components/card/card.esm.js";export{default as Checkbox}from"./components/checkbox/checkbox.esm.js";export{default as CopyText}from"./components/copy-text/copy-text.esm.js";export{default as DateField}from"./components/date-field/date-field.esm.js";export{default as DragList}from"./components/drag-list/drag-list.esm.js";export{default as DraggableContainer}from"./components/draggable-container/draggable-container.esm.js";export{default as ErrorBoundary}from"./components/error-boundary/error-boundary.esm.js";export{default as FormErrorMessage}from"./components/form/error-message/error-message.esm.js";export{default as Form}from"./components/form/form.esm.js";export{useFormContext}from"./components/form/hooks/useFormContext.esm.js";export{default as Input}from"./components/input/input.esm.js";export{SourceLayers,TangramSourceNames}from"./components/layers/leaflet/lib/types.esm.js";export{getAllLayers,getAllPointLayers,getAllPolygonLayers,getAllPolylineLayers,getBackendDate,getLayerModalsNames,getLayerName,getValidLayer}from"./components/layers/leaflet/lib/utils.esm.js";export{sourceUrl,tile_size}from"./components/layers/leaflet/config/constants.esm.js";export{getBuildingLayers}from"./components/layers/leaflet/layers/building/utils.esm.js";export{getBuiltupAreaLayers}from"./components/layers/leaflet/layers/builtup-area/utils.esm.js";export{getAdminAreaLayers}from"./components/layers/leaflet/layers/admin-area/utils.esm.js";export{getCameraLayers}from"./components/layers/leaflet/layers/camera/lib/utils.esm.js";export{cameraConfig}from"./components/layers/leaflet/layers/camera/config/constants.esm.js";export{getCityPOILayers}from"./components/layers/leaflet/layers/city-POI/utils.esm.js";export{getConditionLayers}from"./components/layers/leaflet/layers/condition/utils.esm.js";export{getFacilityAreaLayers}from"./components/layers/leaflet/layers/facility-area/utils.esm.js";export{landuseAreaFeatureTypes,landuseAreaLayerGeometryData,landuseAreaLayerLabelData}from"./components/layers/leaflet/layers/landuse-area/constants.esm.js";export{getLanduseAreaGeometryLayer,getLanduseAreaLabelLayer,getLanduseAreaLayers}from"./components/layers/leaflet/layers/landuse-area/utils.esm.js";export{getLaneMarkingArrowLayers}from"./components/layers/leaflet/layers/lane-marking-arrow/utils.esm.js";export{getLinkLayers}from"./components/layers/leaflet/layers/link/utils.esm.js";export{getNatureFieldLayers}from"./components/layers/leaflet/layers/nature-field/utils.esm.js";export{getNatureForestGeometryLayer,getNatureForestLayers}from"./components/layers/leaflet/layers/nature-forest/utils.esm.js";export{getOceanAreaLayers}from"./components/layers/leaflet/layers/ocean-area/utils.esm.js";export{getOneWayLayers}from"./components/layers/leaflet/layers/one-way/utils.esm.js";export{getPillarLayers}from"./components/layers/leaflet/layers/pillar/lib/utils.esm.js";export{pillarConfig}from"./components/layers/leaflet/layers/pillar/config/constants.esm.js";export{catIds,text_source}from"./components/layers/leaflet/layers/POI/constants.esm.js";export{getDefaultPOI,getPOILayers,getPOITypeLayer}from"./components/layers/leaflet/layers/POI/utils.esm.js";export{getPointAddressLayers}from"./components/layers/leaflet/layers/point-address/utils.esm.js";export{getRailroadLayers}from"./components/layers/leaflet/layers/railroad/utils.esm.js";export{getTrafficSignImgSrc,getTrafficSignLayers,parseTrafficSignCSVFile}from"./components/layers/leaflet/layers/traffic-sign/lib/utils.esm.js";export{allTrafficSigns,trafficSignConfig,trafficSigns,trafficSignsDop}from"./components/layers/leaflet/layers/traffic-sign/config/constants.esm.js";export{getTrafficSignalLayers}from"./components/layers/leaflet/layers/traffic-signal/lib/utils.esm.js";export{trafficSignalConfig}from"./components/layers/leaflet/layers/traffic-signal/config/constants.esm.js";export{getWaterAreaLayers}from"./components/layers/leaflet/layers/water-area/utils.esm.js";export{getWaterLinkLayers}from"./components/layers/leaflet/layers/water-link/utils.esm.js";export{default as LeafletLayer}from"./components/layers/leaflet/leaflet.esm.js";export{TangramLayer}from"./components/layers/leaflet/services/tangram-layer.esm.js";export{default as List}from"./components/list/list.esm.js";export{default as Loader}from"./components/loader/loader.esm.js";export{default as Modal}from"./components/modal/modal.esm.js";export{ModalContainer}from"./components/modal/styles.esm.js";export{default as NoData}from"./components/no-data/no-data.esm.js";export{default as Paragraph}from"./components/paragraph/paragraph.esm.js";export{default as Select}from"./components/select/select.esm.js";export{default as Tabs}from"./components/tabs/tabs.esm.js";export{default as TextField}from"./components/text-field/text-field.esm.js";export{CSVUploader}from"./components/uploader/csv/csv.esm.js";export{default as ExcelUploader}from"./components/uploader/excel/excel.esm.js";export{default as AuthPage}from"./pages/auth/auth.esm.js";export{default as DartcomAuthProvider}from"./providers/auth/auth.esm.js";export{default as DartcomInitializeProvider}from"./providers/initialize/initialize.esm.js";export{default as DartcomLocalizationProvider}from"./providers/localization/localization.esm.js";export{default as DartcomProviders}from"./providers/providers.esm.js";export{ApiService}from"./services/api/api.service.esm.js";export{CollectionService}from"./services/collection/collection.service.esm.js";export{GeometryHistoryService}from"./services/geometry-history/geometry-history.service.esm.js";export{localStateService}from"./services/local-state/local-state.esm.js";export{localizationService}from"./services/localization/localization.esm.js";export{loggerService}from"./services/logger/logger.esm.js";export{mapService}from"./services/map/map.service.esm.js";export{queryService}from"./services/query/query.esm.js";export{SetService}from"./services/set/set.service.esm.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import"react";import"@mui/icons-material/ArrowDownward";import{Box as s}from"@mui/material";import"../../components/alert-dialog/alert-dialog.esm.js";import"@mui/material/IconButton";import"../../components/buttons/delete/delete.esm.js";import"../../components/buttons/icon/icon.esm.js";import"@mui/icons-material/CloudUpload";import"../../components/buttons/upload/styles.esm.js";import t from"../../components/card/card.esm.js";import"../../components/checkbox/checkbox.esm.js";import"../../node_modules/react-copy-to-clipboard-ts/dist/index.esm.js";import"../../lib/types.esm.js";import"axios";import"../../services/query/query.esm.js";import"../../node_modules/notistack/notistack.esm.esm.js";import"../../_virtual/uuid.esm.js";import"../../components/copy-text/styles.esm.js";import"@mui/x-date-pickers/DateField";import"../../components/paragraph/styles.esm.js";import"../../node_modules/@dnd-kit/core/dist/core.esm.esm.js";import"../../node_modules/@dnd-kit/sortable/dist/sortable.esm.esm.js";import"../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js";import"../../components/layers/leaflet/lib/types.esm.js";import"../../components/layers/leaflet/layers/condition/types.esm.js";import"../../components/layers/leaflet/layers/landuse-area/constants.esm.js";import"../../components/layers/leaflet/layers/nature-field/constants.esm.js";import"../../components/layers/leaflet/layers/nature-forest/constants.esm.js";import"../../components/layers/leaflet/layers/POI/utils.esm.js";import"../../components/layers/leaflet/layers/traffic-sign/config/constants.esm.js";import"../../components/layers/leaflet/layers/road-poly/types.esm.js";import"../../components/layers/leaflet/layers/road-poly/constants.esm.js";import"../../components/layers/leaflet/config/constants.esm.js";import"../../components/layers/leaflet/scene.yaml.esm.js";import"../../_virtual/leaflet-src.esm.js";import"../../components/modal/modal.esm.js";import"@mui/lab";import"../../node_modules/react-papaparse/dist/react-papaparse.es.esm.js";const o=({children:o})=>e(s,{sx:{display:"flex",alignItems:"center",height:"100vh",width:"100vw",overflow:"hidden"},children:e(s,{sx:{margin:"auto",maxWidth:"400px",width:"100%"},children:e(t,{children:o})})});export{o as default};
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import"react";import"@mui/icons-material/ArrowDownward";import{Box as s}from"@mui/material";import"../../components/alert-dialog/alert-dialog.esm.js";import"@mui/material/IconButton";import"../../components/buttons/delete/delete.esm.js";import"../../components/buttons/icon/icon.esm.js";import"@mui/icons-material/CloudUpload";import"../../components/buttons/upload/styles.esm.js";import t from"../../components/card/card.esm.js";import"../../components/checkbox/checkbox.esm.js";import"../../node_modules/react-copy-to-clipboard-ts/dist/index.esm.js";import"../../lib/types.esm.js";import"axios";import"../../services/query/query.esm.js";import"../../node_modules/notistack/notistack.esm.esm.js";import"../../_virtual/uuid.esm.js";import"../../components/copy-text/styles.esm.js";import"@mui/x-date-pickers/DateField";import"../../components/paragraph/styles.esm.js";import"../../node_modules/@dnd-kit/core/dist/core.esm.esm.js";import"../../node_modules/@dnd-kit/sortable/dist/sortable.esm.esm.js";import"../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js";import"../../components/layers/leaflet/lib/types.esm.js";import"../../components/layers/leaflet/layers/condition/types.esm.js";import"../../components/layers/leaflet/layers/landuse-area/constants.esm.js";import"../../components/layers/leaflet/layers/nature-field/constants.esm.js";import"../../components/layers/leaflet/layers/nature-forest/constants.esm.js";import"../../components/layers/leaflet/layers/POI/utils.esm.js";import"../../components/layers/leaflet/layers/traffic-sign/config/constants.esm.js";import"../../components/layers/leaflet/layers/road-poly/types.esm.js";import"../../components/layers/leaflet/layers/road-poly/constants.esm.js";import"../../components/layers/leaflet/config/constants.esm.js";import"../../components/layers/leaflet/scene.yaml.esm.js";import"../../_virtual/leaflet-src.esm.js";import"../../components/modal/modal.esm.js";import"../../components/modal/styles.esm.js";import"@mui/lab";import"../../node_modules/react-papaparse/dist/react-papaparse.es.esm.js";const o=({children:o})=>e(s,{sx:{display:"flex",alignItems:"center",height:"100vh",width:"100vw",overflow:"hidden"},children:e(s,{sx:{margin:"auto",maxWidth:"400px",width:"100%"},children:e(t,{children:o})})});export{o as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as s}from"react/jsx-runtime";import*as o from"react";import{useForm as t}from"../../node_modules/react-hook-form/dist/index.esm.esm.js";import"@mui/icons-material/ArrowDownward";import{Typography as r}from"@mui/material";import"../../components/alert-dialog/alert-dialog.esm.js";import m from"../../components/buttons/button/button.esm.js";import"../../components/buttons/delete/delete.esm.js";import"../../components/buttons/icon/icon.esm.js";import"@mui/icons-material/CloudUpload";import"../../components/buttons/upload/styles.esm.js";import"../../components/checkbox/checkbox.esm.js";import"../../node_modules/react-copy-to-clipboard-ts/dist/index.esm.js";import"../../lib/types.esm.js";import"axios";import"../../services/query/query.esm.js";import{useShowSnackbar as a}from"../../lib/hooks/useShowSnackbar.esm.js";import{useSignIn as n}from"../../lib/hooks/useSignIn.esm.js";import"../../_virtual/uuid.esm.js";import"../../node_modules/notistack/notistack.esm.esm.js";import"../../components/copy-text/styles.esm.js";import"@mui/x-date-pickers/DateField";import"../../components/paragraph/styles.esm.js";import i from"../../components/form/form.esm.js";import"../../node_modules/@dnd-kit/core/dist/core.esm.esm.js";import"../../node_modules/@dnd-kit/sortable/dist/sortable.esm.esm.js";import"../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js";import l from"../../components/input/input.esm.js";import"../../components/layers/leaflet/lib/types.esm.js";import"../../components/layers/leaflet/layers/condition/types.esm.js";import"../../components/layers/leaflet/layers/landuse-area/constants.esm.js";import"../../components/layers/leaflet/layers/nature-field/constants.esm.js";import"../../components/layers/leaflet/layers/nature-forest/constants.esm.js";import"../../components/layers/leaflet/layers/POI/utils.esm.js";import"../../components/layers/leaflet/layers/traffic-sign/config/constants.esm.js";import"../../components/layers/leaflet/layers/road-poly/types.esm.js";import"../../components/layers/leaflet/layers/road-poly/constants.esm.js";import"../../components/layers/leaflet/config/constants.esm.js";import"../../components/layers/leaflet/scene.yaml.esm.js";import"../../_virtual/leaflet-src.esm.js";import"../../components/modal/modal.esm.js";import"@mui/lab";import"../../node_modules/react-papaparse/dist/react-papaparse.es.esm.js";import p from"../../layouts/auth/auth.esm.js";import{defaultValues as c}from"./constants.esm.js";import{resolver as d}from"./schema.esm.js";const u=({onSuccess:u,onError:f})=>{const j=n(),y=a(),b=t({defaultValues:c,resolver:d}),{register:h,formState:{isValid:k}}=b,g=o.useCallback(e=>{j.mutate({body:e})},[j]);return o.useEffect(()=>{if(j.error){f(j.error);const{response:e}=j.error;if(e){const{data:{detail:s}}=e;y({message:s,variant:"error"})}}},[j.error]),o.useEffect(()=>{j.data&&u(j.data)},[j.data]),e(p,{children:s(i,{form:b,onSubmit:g,sx:()=>({justifyContent:"center",justifyItems:"center",alignContent:"center",alignItems:"center"}),children:[e(r,{variant:"h4",children:"Авторизация"}),e(l,{...h("username"),label:"Логин",placeholder:"Введите логин"}),e(l,{...h("password"),label:"Пароль",placeholder:"Введите пароль",type:"password"}),e(m,{type:"submit",disabled:!k,children:"Войти"})]})})};export{u as default};
|
|
1
|
+
import{jsx as e,jsxs as s}from"react/jsx-runtime";import*as o from"react";import{useForm as t}from"../../node_modules/react-hook-form/dist/index.esm.esm.js";import"@mui/icons-material/ArrowDownward";import{Typography as r}from"@mui/material";import"../../components/alert-dialog/alert-dialog.esm.js";import m from"../../components/buttons/button/button.esm.js";import"../../components/buttons/delete/delete.esm.js";import"../../components/buttons/icon/icon.esm.js";import"@mui/icons-material/CloudUpload";import"../../components/buttons/upload/styles.esm.js";import"../../components/checkbox/checkbox.esm.js";import"../../node_modules/react-copy-to-clipboard-ts/dist/index.esm.js";import"../../lib/types.esm.js";import"axios";import"../../services/query/query.esm.js";import{useShowSnackbar as a}from"../../lib/hooks/useShowSnackbar.esm.js";import{useSignIn as n}from"../../lib/hooks/useSignIn.esm.js";import"../../_virtual/uuid.esm.js";import"../../node_modules/notistack/notistack.esm.esm.js";import"../../components/copy-text/styles.esm.js";import"@mui/x-date-pickers/DateField";import"../../components/paragraph/styles.esm.js";import i from"../../components/form/form.esm.js";import"../../node_modules/@dnd-kit/core/dist/core.esm.esm.js";import"../../node_modules/@dnd-kit/sortable/dist/sortable.esm.esm.js";import"../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js";import l from"../../components/input/input.esm.js";import"../../components/layers/leaflet/lib/types.esm.js";import"../../components/layers/leaflet/layers/condition/types.esm.js";import"../../components/layers/leaflet/layers/landuse-area/constants.esm.js";import"../../components/layers/leaflet/layers/nature-field/constants.esm.js";import"../../components/layers/leaflet/layers/nature-forest/constants.esm.js";import"../../components/layers/leaflet/layers/POI/utils.esm.js";import"../../components/layers/leaflet/layers/traffic-sign/config/constants.esm.js";import"../../components/layers/leaflet/layers/road-poly/types.esm.js";import"../../components/layers/leaflet/layers/road-poly/constants.esm.js";import"../../components/layers/leaflet/config/constants.esm.js";import"../../components/layers/leaflet/scene.yaml.esm.js";import"../../_virtual/leaflet-src.esm.js";import"../../components/modal/modal.esm.js";import"../../components/modal/styles.esm.js";import"@mui/lab";import"../../node_modules/react-papaparse/dist/react-papaparse.es.esm.js";import p from"../../layouts/auth/auth.esm.js";import{defaultValues as c}from"./constants.esm.js";import{resolver as d}from"./schema.esm.js";const u=({onSuccess:u,onError:f})=>{const j=n(),y=a(),b=t({defaultValues:c,resolver:d}),{register:h,formState:{isValid:k}}=b,g=o.useCallback(e=>{j.mutate({body:e})},[j]);return o.useEffect(()=>{if(j.error){f(j.error);const{response:e}=j.error;if(e){const{data:{detail:s}}=e;y({message:s,variant:"error"})}}},[j.error]),o.useEffect(()=>{j.data&&u(j.data)},[j.data]),e(p,{children:s(i,{form:b,onSubmit:g,sx:()=>({justifyContent:"center",justifyItems:"center",alignContent:"center",alignItems:"center"}),children:[e(r,{variant:"h4",children:"Авторизация"}),e(l,{...h("username"),label:"Логин",placeholder:"Введите логин"}),e(l,{...h("password"),label:"Пароль",placeholder:"Введите пароль",type:"password"}),e(m,{type:"submit",disabled:!k,children:"Войти"})]})})};export{u as default};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Nullable, StringOrNumber } from '../../lib';
|
|
2
|
+
import { SetService } from '../set';
|
|
2
3
|
export declare class CollectionService<T, Id extends StringOrNumber> {
|
|
3
4
|
private readonly props;
|
|
4
|
-
private _items;
|
|
5
|
+
private readonly _items;
|
|
6
|
+
readonly selectedIds: SetService<Id>;
|
|
5
7
|
constructor(props: {
|
|
6
8
|
getId: (item: T) => Id;
|
|
7
9
|
normalizeItem: (item: T) => T;
|
|
@@ -88,13 +90,11 @@ export declare class CollectionService<T, Id extends StringOrNumber> {
|
|
|
88
90
|
get updatedId(): Nullable<Id>;
|
|
89
91
|
set updatedId(value: Nullable<Id>);
|
|
90
92
|
get updatedItem(): T | undefined;
|
|
91
|
-
|
|
92
|
-
get selectedId(): Nullable<Id>;
|
|
93
|
-
set selectedId(value: Nullable<Id>);
|
|
94
|
-
get selectedItem(): T | undefined;
|
|
93
|
+
get isUpdated(): boolean;
|
|
95
94
|
private _deletedId;
|
|
96
95
|
get deletedId(): Nullable<Id>;
|
|
97
96
|
set deletedId(value: Nullable<Id>);
|
|
98
97
|
get deletedItem(): T | undefined;
|
|
98
|
+
get isDeleted(): boolean;
|
|
99
99
|
}
|
|
100
100
|
//# sourceMappingURL=collection.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.service.d.ts","sourceRoot":"","sources":["../../../src/services/collection/collection.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAIjD,qBAAa,iBAAiB,CAAC,CAAC,EAAE,EAAE,SAAS,cAAc;
|
|
1
|
+
{"version":3,"file":"collection.service.d.ts","sourceRoot":"","sources":["../../../src/services/collection/collection.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAIjD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,qBAAa,iBAAiB,CAAC,CAAC,EAAE,EAAE,SAAS,cAAc;IAMvD,OAAO,CAAC,QAAQ,CAAC,KAAK;IALxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAE9D,SAAgB,WAAW,iBAAwB;gBAGhC,KAAK,EAAE;QACtB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;KAC/B;IAKH;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,CAAC;IAI1B;;OAEG;IACH,IAAW,KAAK,oDAEf;IAED;;OAEG;IACH,IAAW,IAAI,QAEd;IAED;;;;;;;;OAQG;IACI,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAIvD;;;;;;;;OAQG;IACI,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;IAMnE;;;;;;;;;OASG;IACI,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAQxC;;;;;OAKG;IACI,OAAO,CAAC,EAAE,EAAE,EAAE;IAMrB;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,CAAC;IAQlB;;;;OAIG;IACI,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE;IAMzB;;;;OAIG;IACI,MAAM,CAAC,EAAE,EAAE,EAAE;IAIpB;;;;OAIG;IACI,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE;IAM3B;;OAEG;IACI,KAAK;IASZ,OAAO,CAAC,UAAU,CAAsB;IACxC,IAAW,SAAS,iBAEnB;IACD,IAAW,SAAS,CAAC,KAAK,cAAA,EAEzB;IACD,IAAW,WAAW,kBAMrB;IACD,IAAW,SAAS,YAEnB;IAED,OAAO,CAAC,UAAU,CAAsB;IACxC,IAAW,SAAS,iBAEnB;IACD,IAAW,SAAS,CAAC,KAAK,cAAA,EAEzB;IACD,IAAW,WAAW,kBAMrB;IACD,IAAW,SAAS,YAEnB;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{observable as e,makeAutoObservable as t}from"../../node_modules/mobx/dist/mobx.esm.esm.js";class
|
|
1
|
+
import{observable as e,makeAutoObservable as t}from"../../node_modules/mobx/dist/mobx.esm.esm.js";import{SetService as d}from"../set/set.service.esm.js";class s{props;_items=e.map();selectedIds=new d;constructor(e){this.props=e,t(this)}getIdByItem(e){return this.props.getId(e)}get items(){return this._items}get list(){return Array.from(this.items.values())}findAllBy(e,t){return this.list.filter(d=>d[e]===t)}findAllIn(e,t){const d=new Set(t);return this.list.filter(t=>d.has(t[e]))}findAllWhere(e){const t=Object.entries(e);return this.list.filter(e=>t.every(([t,d])=>e[t]===d))}getById(e){return this.items.get(e)}add(e){const t=this.props.getId(e),d=this.props.normalizeItem(e);this._items.set(t,d)}addMany(e){e.forEach(e=>{this.add(e)})}delete(e){this._items.delete(e)}deleteMany(e){e.forEach(e=>{this.delete(e)})}clear(){this._items.clear(),this.updatedId=null,this.deletedId=null,this.selectedIds.clear()}_updatedId=null;get updatedId(){return this._updatedId}set updatedId(e){this._updatedId=e}get updatedItem(){if(null!=this.updatedId){return this.getById(this.updatedId)}}get isUpdated(){return null!==this.updatedId}_deletedId=null;get deletedId(){return this._deletedId}set deletedId(e){this._deletedId=e}get deletedItem(){if(null!=this.deletedId){return this.getById(this.deletedId)}}get isDeleted(){return null!==this.deletedId}}export{s as CollectionService};
|
package/dist/services/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC"}
|
|
@@ -256,6 +256,43 @@ declare class MapService {
|
|
|
256
256
|
extractCoordinatesFromGeom(geom: GeoJsonMultiLineString): FrontendLatLng[][];
|
|
257
257
|
extractCoordinatesFromGeom(geom: GeoJsonPolygon): FrontendLatLng[][];
|
|
258
258
|
extractCoordinatesFromGeom(geom: GeoJsonMultiPolygon): FrontendLatLng[][][];
|
|
259
|
+
/**
|
|
260
|
+
* Вычисляет два узла, расположенных перпендикулярно отрезку
|
|
261
|
+
* в его конечной точке на заданном расстоянии.
|
|
262
|
+
*
|
|
263
|
+
* Алгоритм:
|
|
264
|
+
* 1. Вычисляет обратный азимут (направление от конечной точки к начальной).
|
|
265
|
+
* 2. Поворачивает его на ±90° — получает два перпендикулярных направления.
|
|
266
|
+
* 3. Смещает конечную точку на `offset` метров в каждую сторону,
|
|
267
|
+
* используя плоскую аппроксимацию (приемлемо при offset ≤ 2000 м).
|
|
268
|
+
*
|
|
269
|
+
* Принимает и возвращает координаты в формате {@link FrontendLatLng}
|
|
270
|
+
* (`{ lat, lng }`) для прямой совместимости с Leaflet.
|
|
271
|
+
*
|
|
272
|
+
* Типичный сценарий использования: построение нормалей к маршруту,
|
|
273
|
+
* поперечных контрольных точек, перпендикулярных смещений на линии.
|
|
274
|
+
*
|
|
275
|
+
* @param params - Параметры расчёта.
|
|
276
|
+
* @param params.from - Начальная точка отрезка.
|
|
277
|
+
* @param params.to - Конечная точка отрезка. Перпендикуляр строится именно здесь.
|
|
278
|
+
* @param params.offset - Расстояние смещения в метрах (по умолчанию 100 м).
|
|
279
|
+
* @returns Два узла в формате {@link FrontendLatLng}, сдвинутых перпендикулярно
|
|
280
|
+
* отрезку влево и вправо от конечной точки.
|
|
281
|
+
*
|
|
282
|
+
* @example
|
|
283
|
+
* const { left, right } = mapService.getPerpendicularPoints({
|
|
284
|
+
* from: { lat: 55.75, lng: 37.61 },
|
|
285
|
+
* to: { lat: 55.76, lng: 37.62 },
|
|
286
|
+
* });
|
|
287
|
+
*/
|
|
288
|
+
getPerpendicularPoints({ from, to, offset, }: {
|
|
289
|
+
from: FrontendLatLng;
|
|
290
|
+
to: FrontendLatLng;
|
|
291
|
+
offset?: number;
|
|
292
|
+
}): {
|
|
293
|
+
left: FrontendLatLng;
|
|
294
|
+
right: FrontendLatLng;
|
|
295
|
+
};
|
|
259
296
|
}
|
|
260
297
|
/**
|
|
261
298
|
* Сервис для работы с географическими координатами и базовыми
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.service.d.ts","sourceRoot":"","sources":["../../../src/services/map/map.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"map.service.d.ts","sourceRoot":"","sources":["../../../src/services/map/map.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{DISTANCE_UNIT_FACTORS as t}from"./map.constants.esm.js";const
|
|
1
|
+
import{DISTANCE_UNIT_FACTORS as t}from"./map.constants.esm.js";const n=new class{EARTH_RADIUS_M=6371e3;FULL_CIRCLE_DEGREES=360;COORDINATE_EQUALITY_EPSILON_M=.002;constructor(){}get HALF_CIRCLE_DEGREES(){return this.FULL_CIRCLE_DEGREES/2}get DEG_TO_RAD(){return Math.PI/this.HALF_CIRCLE_DEGREES}get RAD_TO_DEG(){return this.HALF_CIRCLE_DEGREES/Math.PI}normalizeBearing(t){return(t%this.FULL_CIRCLE_DEGREES+this.FULL_CIRCLE_DEGREES)%this.FULL_CIRCLE_DEGREES}normalizeLongitude(t){return(t+this.FULL_CIRCLE_DEGREES+this.HALF_CIRCLE_DEGREES)%this.FULL_CIRCLE_DEGREES-this.HALF_CIRCLE_DEGREES}calculateDestination=({coordinate:t,distance:n,azimuth:e,unit:i="meters"})=>{const s=t.lat*this.DEG_TO_RAD,a=t.lng*this.DEG_TO_RAD,r=this.normalizeBearing(e)*this.DEG_TO_RAD,o=this.distanceToMeters(n,i)/this.EARTH_RADIUS_M,h=Math.sin(s),l=Math.cos(s),c=Math.sin(o),E=Math.cos(o),_=Math.sin(r),D=Math.cos(r),g=Math.asin(h*E+l*c*D),R=a+Math.atan2(_*c*l,E-h*Math.sin(g));return{lat:g*this.RAD_TO_DEG,lng:this.normalizeLongitude(R*this.RAD_TO_DEG)}};haversineDistance(t,n,e="meters"){const i=t.lat*this.DEG_TO_RAD,s=n.lat*this.DEG_TO_RAD,a=(n.lat-t.lat)*this.DEG_TO_RAD,r=(n.lng-t.lng)*this.DEG_TO_RAD,o=Math.sin(a/2)**2+Math.cos(i)*Math.cos(s)*Math.sin(r/2)**2,h=2*Math.atan2(Math.sqrt(o),Math.sqrt(1-o)),l=this.EARTH_RADIUS_M*h;return this.convertDistance(l,e)}initialBearing(t,n){const e=t.lat*this.DEG_TO_RAD,i=n.lat*this.DEG_TO_RAD,s=t.lng*this.DEG_TO_RAD,a=n.lng*this.DEG_TO_RAD,r=Math.sin(a-s)*Math.cos(i),o=Math.cos(e)*Math.sin(i)-Math.sin(e)*Math.cos(i)*Math.cos(a-s);return this.normalizeBearing(Math.atan2(r,o)*this.RAD_TO_DEG)}convertDistance(n,e="meters"){return n/t[e]}distanceToMeters(n,e="meters"){return n*t[e]}getPolylineLength(t,n="meters"){const e=t.reduce((t,n,e,i)=>{const s=i[e+1];if(!s)return t;return t+this.haversineDistance(n,s,"meters")},0);return this.convertDistance(e,n)}coordinatesEqual(t,n){return this.haversineDistance(t,n,"meters")<=this.COORDINATE_EQUALITY_EPSILON_M}replaceInFlatRing(t,n,e,i){return t.map(t=>i(t,n)?e:t)}replaceCoordinateInLine(t,n,e,i=this.coordinatesEqual.bind(this)){return this.replaceInFlatRing(t,n,e,i)}replaceCoordinateInPolygon(t,n,e,i=this.coordinatesEqual.bind(this)){return t.map(t=>this.replaceInFlatRing(t,n,e,i))}replaceCoordinateInMultiPolygon(t,n,e,i=this.coordinatesEqual.bind(this)){return t.map(t=>this.replaceCoordinateInPolygon(t,n,e,i))}sampleLineByDistance(t,n={}){const{interval:e=1e3,maxPoints:i,unit:s="meters",includeStart:a=!1}=n;if(t.length<2)return[];const r=this.distanceToMeters(e,s);if(!Number.isFinite(r)||r<=0)return[];const o=[];let h=0,l=t[0];a&&o.push(l);for(let n=1;n<t.length;n++){const e=t[n],s=this.haversineDistance(l,e,"meters");if(Number.isFinite(s)&&0!==s){for(h+=s;h>=r;){const t=(s-(h-r))/s,n=l.lat+t*(e.lat-l.lat),a=l.lng+t*(e.lng-l.lng);if(o.push({lat:n,lng:a}),null!=i&&o.length>=i)return o;h-=r}l=e}else l=e}return null!=i?o.slice(0,i):o}getPolylineCenter(t){if(0===t.length)return null;if(1===t.length)return t[0];const n=this.getPolylineLength(t,"meters");if(0===n)return t[0];const e=n/2;let i=0,s=t[0];for(let n=1;n<t.length;n++){const a=t[n],r=this.haversineDistance(s,a,"meters");if(0!==r){if(i+r>=e){const t=(e-i)/r;return{lat:s.lat+t*(a.lat-s.lat),lng:s.lng+t*(a.lng-s.lng)}}i+=r,s=a}else s=a}return t[t.length-1]}coordinateToLatLng([t,n]){return{lat:n,lng:t}}extractCoordinatesFromGeom(t){switch(t.type){case"Point":return this.coordinateToLatLng(t.coordinates);case"LineString":return t.coordinates.map(t=>this.coordinateToLatLng(t));case"MultiLineString":case"Polygon":return t.coordinates.map(t=>t.map(t=>this.coordinateToLatLng(t)));case"MultiPolygon":return t.coordinates.map(t=>t.map(t=>t.map(t=>this.coordinateToLatLng(t))))}}getPerpendicularPoints({from:t,to:n,offset:e=100}){const i=t.lat*this.DEG_TO_RAD,s=t.lng*this.DEG_TO_RAD,a=n.lat*this.DEG_TO_RAD,r=s-n.lng*this.DEG_TO_RAD,o=Math.sin(r)*Math.cos(i),h=Math.cos(a)*Math.sin(i)-Math.sin(a)*Math.cos(i)*Math.cos(r),l=this.normalizeBearing(Math.atan2(o,h)*this.RAD_TO_DEG),c=this.normalizeBearing(l+90),E=this.normalizeBearing(l+270),_=this.EARTH_RADIUS_M*Math.PI/180,D=_*Math.cos(a),g=t=>{const i=t*this.DEG_TO_RAD;return{lat:n.lat+e*Math.cos(i)/_,lng:n.lng+e*Math.sin(i)/D}};return{left:g(c),right:g(E)}}};export{n as mapService};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/set/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SetService<T>
|
|
3
|
+
*
|
|
4
|
+
* Небольшой обёрткой над observable Set из MobX, которая:
|
|
5
|
+
* - хранит уникальные значения типа T;
|
|
6
|
+
* - предоставляет реактивные геттеры items / list;
|
|
7
|
+
* - даёт удобные методы add / delete / toggle / clear;
|
|
8
|
+
* - поддерживает batch‑операции addMany / deleteMany.
|
|
9
|
+
*
|
|
10
|
+
* Типичный сценарий использования:
|
|
11
|
+
* - хранение множества выбранных id;
|
|
12
|
+
* - хранение множества активных фильтров;
|
|
13
|
+
* - хранение множества "выделенных" элементов в UI.
|
|
14
|
+
*
|
|
15
|
+
* Пример:
|
|
16
|
+
* const selection = new SetService<string>();
|
|
17
|
+
* selection.add('id-1');
|
|
18
|
+
* selection.toggle('id-2');
|
|
19
|
+
* selection.isContain('id-1'); // true
|
|
20
|
+
*/
|
|
21
|
+
export declare class SetService<T> {
|
|
22
|
+
/**
|
|
23
|
+
* Внутренний набор значений.
|
|
24
|
+
*
|
|
25
|
+
* Используется observable.set, чтобы:
|
|
26
|
+
* - изменения были реактивны для MobX;
|
|
27
|
+
* - операции add/delete были O(1) по времени.
|
|
28
|
+
*/
|
|
29
|
+
private readonly _items;
|
|
30
|
+
/**
|
|
31
|
+
* Возвращает observable Set со всеми значениями.
|
|
32
|
+
*
|
|
33
|
+
* Подходит, если нужно работать с Set напрямую:
|
|
34
|
+
* setService.items.has(value)
|
|
35
|
+
*/
|
|
36
|
+
get items(): import("mobx").ObservableSet<T>;
|
|
37
|
+
/**
|
|
38
|
+
* Возвращает значения набора в виде обычного массива.
|
|
39
|
+
*
|
|
40
|
+
* Удобно использовать в React-компонентах:
|
|
41
|
+
* setService.list.map(...)
|
|
42
|
+
*/
|
|
43
|
+
get list(): T[];
|
|
44
|
+
/**
|
|
45
|
+
* Проверяет, содержится ли значение в наборе.
|
|
46
|
+
*
|
|
47
|
+
* @param value Значение для проверки.
|
|
48
|
+
* @returns true, если value есть в наборе; иначе false.
|
|
49
|
+
*/
|
|
50
|
+
has(value: T): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Возвращает значение, пустой ли список
|
|
53
|
+
* @returns true, если в списке нет ни одного элемента; иначе false.
|
|
54
|
+
*/
|
|
55
|
+
get isEmpty(): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Добавляет значение в набор.
|
|
58
|
+
*
|
|
59
|
+
* @param value Значение для добавления.
|
|
60
|
+
*/
|
|
61
|
+
add(value: T): void;
|
|
62
|
+
/**
|
|
63
|
+
* Добавляет в набор несколько значений подряд.
|
|
64
|
+
*
|
|
65
|
+
* @param values Массив значений для добавления.
|
|
66
|
+
*/
|
|
67
|
+
addMany(values: T[]): void;
|
|
68
|
+
/**
|
|
69
|
+
* Удаляет значение из набора.
|
|
70
|
+
*
|
|
71
|
+
* @param value Значение для удаления.
|
|
72
|
+
*/
|
|
73
|
+
delete(value: T): void;
|
|
74
|
+
/**
|
|
75
|
+
* Удаляет из набора несколько значений подряд.
|
|
76
|
+
*
|
|
77
|
+
* @param values Массив значений для удаления.
|
|
78
|
+
*/
|
|
79
|
+
deleteMany(values: T[]): void;
|
|
80
|
+
/**
|
|
81
|
+
* Переключает присутствие значения в наборе.
|
|
82
|
+
*
|
|
83
|
+
* Поведение:
|
|
84
|
+
* - если значение уже есть, оно будет удалено;
|
|
85
|
+
* - если значения нет, оно будет добавлено.
|
|
86
|
+
*
|
|
87
|
+
* @param value Значение для переключения.
|
|
88
|
+
*/
|
|
89
|
+
toggle(value: T): void;
|
|
90
|
+
/**
|
|
91
|
+
* Полностью очищает набор.
|
|
92
|
+
*/
|
|
93
|
+
clear(): void;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=set.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.service.d.ts","sourceRoot":"","sources":["../../../src/services/set/set.service.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,UAAU,CAAC,CAAC;IACvB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAE9C;;;;;OAKG;IACH,IAAW,KAAK,oCAEf;IAED;;;;;OAKG;IACH,IAAW,IAAI,QAEd;IAED;;;;;OAKG;IACI,GAAG,CAAC,KAAK,EAAE,CAAC;IAInB;;;OAGG;IACH,IAAW,OAAO,YAEjB;IAED;;;;OAIG;IACI,GAAG,CAAC,KAAK,EAAE,CAAC;IAInB;;;;OAIG;IACI,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;IAM1B;;;;OAIG;IACI,MAAM,CAAC,KAAK,EAAE,CAAC;IAItB;;;;OAIG;IACI,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE;IAM7B;;;;;;;;OAQG;IACI,MAAM,CAAC,KAAK,EAAE,CAAC;IAQtB;;OAEG;IACI,KAAK;CAGb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{observable as e}from"../../node_modules/mobx/dist/mobx.esm.esm.js";class t{_items=e.set();get items(){return this._items}get list(){return Array.from(this.items.values())}has(e){return this.items.has(e)}get isEmpty(){return 0===this.items.size}add(e){this._items.add(e)}addMany(e){e.forEach(e=>{this.add(e)})}delete(e){this._items.delete(e)}deleteMany(e){e.forEach(e=>{this.delete(e)})}toggle(e){this.has(e)?this.delete(e):this.add(e)}clear(){this._items.clear()}}export{t as SetService};
|