@dartcom/ui-kit 10.6.0 → 10.6.2

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 +1 @@
1
- {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;;AAiD3C,wBAAqC"}
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 m}from"../../stores/modal/modal.esm.js";import r from"@mui/material/Box";import s from"@mui/material/Modal";import"../../node_modules/mobx-react-lite/es/index.esm.js";import{modalStyle as t}from"./styles.esm.js";import{observer as i}from"../../node_modules/mobx-react-lite/es/observer.esm.js";var a=i(({name:i,children:a,onClose:l,onOpen:n})=>{const d=o.useId(),p=m.getIsOpen(i);return o.useEffect(()=>{p?n?.({name:i}):l?.({name:i})},[p]),e(s,{open:p,onClose:()=>{m.close(i)},"aria-labelledby":`modal-${d}-title`,"aria-describedby":`modal-${d}-description`,children:e(r,{sx:({breakpoints:e})=>({...t,[e.up("sm")]:{minWidth:400},[e.down("sm")]:{minWidth:"80vw"}}),children:a})})});export{a as default};
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 { SxProps } from '@mui/material';
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,eAAO,MAAM,UAAU,EAAE,OAcxB,CAAC"}
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%)",bgcolor:"background.paper",border:"2px solid #000",boxShadow:24,p:4,maxHeight:"90vh",overflowX:"auto",overflowY:"auto"};export{o as modalStyle};
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: CustomModalProps['name'];
4
+ name: string;
5
5
  }) => void;
6
6
  onOpen?: (props: {
7
- name: CustomModalProps['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,gBAAgB,CAAC,MAAM,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9D"}
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,6 +5661,66 @@ class ApiService {
5662
5661
  }
5663
5662
  }
5664
5663
 
5664
+ const defaultId = null;
5665
+
5666
+ /**
5667
+ * ScalarIdService<Id>
5668
+ *
5669
+ * Небольшой сервис для хранения одного "текущего" идентификатора.
5670
+ * Подходит для:
5671
+ * - последнего обновлённого элемента (updatedId);
5672
+ * - последнего удалённого элемента (deletedId);
5673
+ * - текущего выделенного элемента (selectedId), если нужен один.
5674
+ *
5675
+ * Возможности:
5676
+ * - value: текущее значение или null;
5677
+ * - isSet: флаг, установлен ли id;
5678
+ * - set / reset: явное управление значением.
5679
+ *
5680
+ * Пример:
5681
+ * const updated = new ScalarIdService<string>();
5682
+ * updated.set('42');
5683
+ * updated.isSet; // true
5684
+ * updated.value; // '42'
5685
+ * updated.reset();
5686
+ */
5687
+ class ScalarIdService {
5688
+ /**
5689
+ * Внутреннее хранилище идентификатора.
5690
+ * null означает "ничего не выбрано / не установлено".
5691
+ */
5692
+ _value = defaultId;
5693
+ constructor() {
5694
+ makeAutoObservable(this, {}, { autoBind: true });
5695
+ }
5696
+ /**
5697
+ * Текущее значение id или null, если значение не установлено.
5698
+ */
5699
+ get value() {
5700
+ return this._value;
5701
+ }
5702
+ /**
5703
+ * Установить новое значение id.
5704
+ *
5705
+ * @param value Новое значение или null для сброса.
5706
+ */
5707
+ set(value) {
5708
+ this._value = value;
5709
+ }
5710
+ /**
5711
+ * Сбросить значение id в null.
5712
+ */
5713
+ reset() {
5714
+ this._value = defaultId;
5715
+ }
5716
+ /**
5717
+ * Признак, что значение установлено (отлично от null).
5718
+ */
5719
+ get isSet() {
5720
+ return this._value !== defaultId;
5721
+ }
5722
+ }
5723
+
5665
5724
  /**
5666
5725
  * SetService<T>
5667
5726
  *
@@ -5790,18 +5849,23 @@ class CollectionService {
5790
5849
  props;
5791
5850
  _items = observable.map();
5792
5851
  selectedIds = new SetService();
5852
+ _idSlots = new Map();
5793
5853
  constructor(props) {
5794
5854
  this.props = props;
5855
+ const { slots = [] } = props;
5795
5856
  makeAutoObservable(this);
5857
+ slots.forEach((slotName) => {
5858
+ this._idSlots.set(slotName, new ScalarIdService());
5859
+ });
5796
5860
  }
5797
5861
  /**
5798
- * Возаращает id по самому элементу коллекции
5862
+ * Возвращает id по самому элементу коллекции.
5799
5863
  */
5800
5864
  getIdByItem(item) {
5801
5865
  return this.props.getId(item);
5802
5866
  }
5803
5867
  /**
5804
- * Возвращает observable-коллекцию элементов в виде Map.
5868
+ * Возвращает observable‑коллекцию элементов в виде Map.
5805
5869
  */
5806
5870
  get items() {
5807
5871
  return this._items;
@@ -5810,90 +5874,35 @@ class CollectionService {
5810
5874
  * Возвращает все элементы коллекции в виде обычного массива.
5811
5875
  */
5812
5876
  get list() {
5813
- return Array.from(this.items.values());
5877
+ return Object.freeze(Array.from(this.items.values()));
5814
5878
  }
5815
- /**
5816
- * Возвращает все элементы, у которых значение указанного поля
5817
- * строго равно переданному значению.
5818
- *
5819
- * @typeParam K Ключ поля элемента.
5820
- * @param key Поле, по которому выполняется поиск.
5821
- * @param value Значение, с которым сравнивается поле.
5822
- * @returns Массив всех найденных элементов. Если совпадений нет, вернётся пустой массив.
5823
- */
5824
5879
  findAllBy(key, value) {
5825
5880
  return this.list.filter((item) => item[key] === value);
5826
5881
  }
5827
- /**
5828
- * Возвращает все элементы, у которых значение указанного поля
5829
- * входит в список переданных значений.
5830
- *
5831
- * @typeParam K Ключ поля элемента.
5832
- * @param key Поле, по которому выполняется поиск.
5833
- * @param values Набор допустимых значений поля.
5834
- * @returns Массив всех найденных элементов. Если совпадений нет, вернётся пустой массив.
5835
- */
5836
5882
  findAllIn(key, values) {
5837
5883
  const valuesSet = new Set(values);
5838
5884
  return this.list.filter((item) => valuesSet.has(item[key]));
5839
5885
  }
5840
- /**
5841
- * Возвращает все элементы, которые одновременно соответствуют
5842
- * всем переданным критериям.
5843
- *
5844
- * Метод выполняет точное сравнение по каждому полю.
5845
- * Если передан пустой объект критериев, будут возвращены все элементы коллекции.
5846
- *
5847
- * @param criteria Объект с набором полей и значений для поиска.
5848
- * @returns Массив всех элементов, удовлетворяющих всем условиям сразу.
5849
- */
5850
5886
  findAllWhere(criteria) {
5851
5887
  const entries = Object.entries(criteria);
5852
5888
  return this.list.filter((item) => entries.every(([key, value]) => item[key] === value));
5853
5889
  }
5854
- /**
5855
- * Возвращает элемент по его идентификатору.
5856
- *
5857
- * @param id Идентификатор элемента.
5858
- * @returns Найденный элемент или undefined, если элемента с таким id нет.
5859
- */
5860
5890
  getById(id) {
5861
- const item = this.items.get(id);
5862
- return item;
5891
+ return this.items.get(id) ?? null;
5863
5892
  }
5864
- /**
5865
- * Добавляет элемент в коллекцию.
5866
- *
5867
- * @param item Элемент для добавления или замены.
5868
- */
5869
5893
  add(item) {
5870
5894
  const key = this.props.getId(item);
5871
5895
  const value = this.props.normalizeItem(item);
5872
5896
  this._items.set(key, value);
5873
5897
  }
5874
- /**
5875
- * Добавляет в коллекцию несколько элементов подряд.
5876
- *
5877
- * @param items Массив элементов для добавления.
5878
- */
5879
5898
  addMany(items) {
5880
5899
  items.forEach((item) => {
5881
5900
  this.add(item);
5882
5901
  });
5883
5902
  }
5884
- /**
5885
- * Удаляет элемент из коллекции по id.
5886
- *
5887
- * @param id Идентификатор удаляемого элемента.
5888
- */
5889
5903
  delete(id) {
5890
5904
  this._items.delete(id);
5891
5905
  }
5892
- /**
5893
- * Удаляет из коллекции несколько элементов по списку id.
5894
- *
5895
- * @param ids Массив идентификаторов для удаления.
5896
- */
5897
5906
  deleteMany(ids) {
5898
5907
  ids.forEach((id) => {
5899
5908
  this.delete(id);
@@ -5904,41 +5913,72 @@ class CollectionService {
5904
5913
  */
5905
5914
  clear() {
5906
5915
  this._items.clear();
5907
- this.updatedId = null;
5908
- this.deletedId = null;
5916
+ this.resetSlots();
5909
5917
  this.selectedIds.clear();
5910
5918
  }
5911
- _updatedId = null;
5912
- get updatedId() {
5913
- return this._updatedId;
5914
- }
5915
- set updatedId(value) {
5916
- this._updatedId = value;
5919
+ /**
5920
+ * Запрос на получение отделельного экзепляра ScalarIdService
5921
+ *
5922
+ * @param name Имя слота.
5923
+ * @returns ScalarIdService по имени слота, если он был сконфигурирован.
5924
+ */
5925
+ getIdSlot(name) {
5926
+ return this._idSlots.get(name) ?? null;
5917
5927
  }
5918
- get updatedItem() {
5919
- if (this.updatedId != null) {
5920
- const item = this.getById(this.updatedId);
5921
- return item;
5928
+ /**
5929
+ * Возвращает id, хранящемуся в указанном слоте.
5930
+ *
5931
+ * @param name Имя слота.
5932
+ */
5933
+ getIdBySlot(name) {
5934
+ const slot = this.getIdSlot(name);
5935
+ if (slot) {
5936
+ return slot.value;
5922
5937
  }
5938
+ return null;
5923
5939
  }
5924
- get isUpdated() {
5925
- return this.updatedId !== null;
5926
- }
5927
- _deletedId = null;
5928
- get deletedId() {
5929
- return this._deletedId;
5940
+ /**
5941
+ * Возвращает элемент коллекции по id, хранящемуся в указанном слоте.
5942
+ *
5943
+ * @param name Имя слота.
5944
+ */
5945
+ getItemBySlot(name) {
5946
+ const slot = this.getIdSlot(name);
5947
+ if (slot && slot.isSet && slot.value !== null) {
5948
+ return this.getById(slot.value);
5949
+ }
5950
+ return null;
5930
5951
  }
5931
- set deletedId(value) {
5932
- this._deletedId = value;
5952
+ /**
5953
+ * Устанавливает id в указанный слот.
5954
+ *
5955
+ * @param name Имя слота.
5956
+ * @param value Новое значения id в слоте.
5957
+ */
5958
+ setIdSlot(name, value) {
5959
+ const slot = this.getIdSlot(name);
5960
+ if (slot) {
5961
+ slot.set(value);
5962
+ }
5933
5963
  }
5934
- get deletedItem() {
5935
- if (this.deletedId != null) {
5936
- const item = this.getById(this.deletedId);
5937
- return item;
5964
+ /**
5965
+ * Сбрасывает id в указанном слоте.
5966
+ *
5967
+ * @param name Имя слота.
5968
+ */
5969
+ resetIdSlot(name) {
5970
+ const slot = this.getIdSlot(name);
5971
+ if (slot) {
5972
+ slot.reset();
5938
5973
  }
5939
5974
  }
5940
- get isDeleted() {
5941
- return this.deletedId !== null;
5975
+ /**
5976
+ * Сбрасывает все слоты.
5977
+ */
5978
+ resetSlots() {
5979
+ this._idSlots.forEach((slot) => {
5980
+ slot.reset();
5981
+ });
5942
5982
  }
5943
5983
  }
5944
5984
 
@@ -9433,6 +9473,60 @@ class MapService {
9433
9473
  }
9434
9474
  }
9435
9475
  }
9476
+ /**
9477
+ * Вычисляет два узла, расположенных перпендикулярно отрезку
9478
+ * в его конечной точке на заданном расстоянии.
9479
+ *
9480
+ * Алгоритм:
9481
+ * 1. Вычисляет обратный азимут (направление от конечной точки к начальной).
9482
+ * 2. Поворачивает его на ±90° — получает два перпендикулярных направления.
9483
+ * 3. Смещает конечную точку на `offset` метров в каждую сторону,
9484
+ * используя плоскую аппроксимацию (приемлемо при offset ≤ 2000 м).
9485
+ *
9486
+ * Принимает и возвращает координаты в формате {@link FrontendLatLng}
9487
+ * (`{ lat, lng }`) для прямой совместимости с Leaflet.
9488
+ *
9489
+ * Типичный сценарий использования: построение нормалей к маршруту,
9490
+ * поперечных контрольных точек, перпендикулярных смещений на линии.
9491
+ *
9492
+ * @param params - Параметры расчёта.
9493
+ * @param params.from - Начальная точка отрезка.
9494
+ * @param params.to - Конечная точка отрезка. Перпендикуляр строится именно здесь.
9495
+ * @param params.offset - Расстояние смещения в метрах (по умолчанию 100 м).
9496
+ * @returns Два узла в формате {@link FrontendLatLng}, сдвинутых перпендикулярно
9497
+ * отрезку влево и вправо от конечной точки.
9498
+ *
9499
+ * @example
9500
+ * const { left, right } = mapService.getPerpendicularPoints({
9501
+ * from: { lat: 55.75, lng: 37.61 },
9502
+ * to: { lat: 55.76, lng: 37.62 },
9503
+ * });
9504
+ */
9505
+ getPerpendicularPoints({ from, to, offset = 100, }) {
9506
+ const φ1 = from.lat * this.DEG_TO_RAD;
9507
+ const λ1 = from.lng * this.DEG_TO_RAD;
9508
+ const φ2 = to.lat * this.DEG_TO_RAD;
9509
+ const λ2 = to.lng * this.DEG_TO_RAD;
9510
+ const Δλ = λ1 - λ2;
9511
+ const y = Math.sin(Δλ) * Math.cos(φ1);
9512
+ const x = Math.cos(φ2) * Math.sin(φ1) - Math.sin(φ2) * Math.cos(φ1) * Math.cos(Δλ);
9513
+ const reverseBearing = this.normalizeBearing(Math.atan2(y, x) * this.RAD_TO_DEG);
9514
+ const leftBearing = this.normalizeBearing(reverseBearing + 90);
9515
+ const rightBearing = this.normalizeBearing(reverseBearing + 270);
9516
+ const metersPerDegLat = (this.EARTH_RADIUS_M * Math.PI) / 180;
9517
+ const metersPerDegLon = metersPerDegLat * Math.cos(φ2);
9518
+ const shift = (bearing) => {
9519
+ const bearingRad = bearing * this.DEG_TO_RAD;
9520
+ return {
9521
+ lat: to.lat + (offset * Math.cos(bearingRad)) / metersPerDegLat,
9522
+ lng: to.lng + (offset * Math.sin(bearingRad)) / metersPerDegLon,
9523
+ };
9524
+ };
9525
+ return {
9526
+ left: shift(leftBearing),
9527
+ right: shift(rightBearing),
9528
+ };
9529
+ }
9436
9530
  }
9437
9531
  /**
9438
9532
  * Сервис для работы с географическими координатами и базовыми
@@ -44781,19 +44875,26 @@ const Loader = (props) => {
44781
44875
  return jsxRuntime.jsx(material.CircularProgress, { ...props });
44782
44876
  };
44783
44877
 
44784
- const modalStyle = {
44785
- position: 'absolute',
44786
- top: '50%',
44787
- left: '50%',
44788
- transform: 'translate(-50%, -50%)',
44789
- bgcolor: 'background.paper',
44790
- border: '2px solid #000',
44791
- boxShadow: 24,
44792
- p: 4,
44793
- maxHeight: '90vh',
44794
- overflowX: 'auto',
44795
- overflowY: 'auto',
44796
- };
44878
+ const ModalContainer = material.styled(material.Box)(({ theme }) => {
44879
+ const { spacing, breakpoints, palette } = theme;
44880
+ return {
44881
+ position: 'absolute',
44882
+ top: '50%',
44883
+ left: '50%',
44884
+ transform: 'translate(-50%, -50%)',
44885
+ backgroundColor: palette.white.main,
44886
+ borderRadius: spacing(2),
44887
+ padding: spacing(2),
44888
+ maxHeight: '90vh',
44889
+ overflow: 'auto',
44890
+ [breakpoints.up('sm')]: {
44891
+ minWidth: 400,
44892
+ },
44893
+ [breakpoints.down('sm')]: {
44894
+ minWidth: '80vw',
44895
+ },
44896
+ };
44897
+ });
44797
44898
 
44798
44899
  const CustomModal = ({ name, children, onClose, onOpen, }) => {
44799
44900
  const modalId = React__namespace.useId();
@@ -44808,17 +44909,7 @@ const CustomModal = ({ name, children, onClose, onOpen, }) => {
44808
44909
  }, [isOpen]);
44809
44910
  return (jsxRuntime.jsx(Modal, { open: isOpen, onClose: () => {
44810
44911
  modalStore.close(name);
44811
- }, "aria-labelledby": `modal-${modalId}-title`, "aria-describedby": `modal-${modalId}-description`, children: jsxRuntime.jsx(Box, { sx: ({ breakpoints }) => {
44812
- return {
44813
- ...modalStyle,
44814
- [breakpoints.up('sm')]: {
44815
- minWidth: 400,
44816
- },
44817
- [breakpoints.down('sm')]: {
44818
- minWidth: '80vw',
44819
- },
44820
- };
44821
- }, children: children }) }));
44912
+ }, "aria-labelledby": `modal-${modalId}-title`, "aria-describedby": `modal-${modalId}-description`, children: jsxRuntime.jsx(ModalContainer, { children: children }) }));
44822
44913
  };
44823
44914
  var modal = observer(CustomModal);
44824
44915
 
@@ -48309,8 +48400,10 @@ exports.LeafletLayer = LeafletLayer;
48309
48400
  exports.List = CustomList;
48310
48401
  exports.Loader = Loader;
48311
48402
  exports.Modal = modal;
48403
+ exports.ModalContainer = ModalContainer;
48312
48404
  exports.NoData = NoData;
48313
48405
  exports.Paragraph = Paragraph;
48406
+ exports.ScalarIdService = ScalarIdService;
48314
48407
  exports.Select = FormSelect;
48315
48408
  exports.SetService = SetService;
48316
48409
  exports.Tabs = Tabs;
@@ -48378,7 +48471,6 @@ exports.localizationService = localizationService;
48378
48471
  exports.loggerService = loggerService;
48379
48472
  exports.mapService = mapService;
48380
48473
  exports.modalStore = modalStore;
48381
- exports.modalStyle = modalStyle;
48382
48474
  exports.numberRequiredSchema = numberRequiredSchema;
48383
48475
  exports.numberSchema = numberSchema;
48384
48476
  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{modalStyle}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
+ 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{ScalarIdService}from"./services/scalar-id/scalar-id.service.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,100 +1,75 @@
1
- import { Nullable, StringOrNumber } from '../../lib';
1
+ import { StringOrNumber } from '../../lib';
2
+ import { ScalarIdService } from '../scalar-id';
2
3
  import { SetService } from '../set';
3
- export declare class CollectionService<T, Id extends StringOrNumber> {
4
+ export declare class CollectionService<T, Id extends StringOrNumber, TSlots extends string> {
4
5
  private readonly props;
5
6
  private readonly _items;
6
7
  readonly selectedIds: SetService<Id>;
8
+ private readonly _idSlots;
7
9
  constructor(props: {
8
10
  getId: (item: T) => Id;
9
11
  normalizeItem: (item: T) => T;
12
+ slots?: readonly TSlots[];
10
13
  });
11
14
  /**
12
- * Возаращает id по самому элементу коллекции
15
+ * Возвращает id по самому элементу коллекции.
13
16
  */
14
17
  getIdByItem(item: T): Id;
15
18
  /**
16
- * Возвращает observable-коллекцию элементов в виде Map.
19
+ * Возвращает observable‑коллекцию элементов в виде Map.
17
20
  */
18
21
  get items(): import("mobx").ObservableMap<StringOrNumber, T>;
19
22
  /**
20
23
  * Возвращает все элементы коллекции в виде обычного массива.
21
24
  */
22
- get list(): T[];
23
- /**
24
- * Возвращает все элементы, у которых значение указанного поля
25
- * строго равно переданному значению.
26
- *
27
- * @typeParam K Ключ поля элемента.
28
- * @param key Поле, по которому выполняется поиск.
29
- * @param value Значение, с которым сравнивается поле.
30
- * @returns Массив всех найденных элементов. Если совпадений нет, вернётся пустой массив.
31
- */
25
+ get list(): readonly T[];
32
26
  findAllBy<K extends keyof T>(key: K, value: T[K]): T[];
33
- /**
34
- * Возвращает все элементы, у которых значение указанного поля
35
- * входит в список переданных значений.
36
- *
37
- * @typeParam K Ключ поля элемента.
38
- * @param key Поле, по которому выполняется поиск.
39
- * @param values Набор допустимых значений поля.
40
- * @returns Массив всех найденных элементов. Если совпадений нет, вернётся пустой массив.
41
- */
42
27
  findAllIn<K extends keyof T>(key: K, values: readonly T[K][]): T[];
28
+ findAllWhere(criteria: Partial<T>): T[];
29
+ getById(id: Id): NonNullable<T> | null;
30
+ add(item: T): void;
31
+ addMany(items: T[]): void;
32
+ delete(id: Id): void;
33
+ deleteMany(ids: Id[]): void;
43
34
  /**
44
- * Возвращает все элементы, которые одновременно соответствуют
45
- * всем переданным критериям.
46
- *
47
- * Метод выполняет точное сравнение по каждому полю.
48
- * Если передан пустой объект критериев, будут возвращены все элементы коллекции.
49
- *
50
- * @param criteria Объект с набором полей и значений для поиска.
51
- * @returns Массив всех элементов, удовлетворяющих всем условиям сразу.
35
+ * Полностью очищает коллекцию и сбрасывает служебные состояния выбора.
52
36
  */
53
- findAllWhere(criteria: Partial<T>): T[];
37
+ clear(): void;
54
38
  /**
55
- * Возвращает элемент по его идентификатору.
39
+ * Запрос на получение отделельного экзепляра ScalarIdService
56
40
  *
57
- * @param id Идентификатор элемента.
58
- * @returns Найденный элемент или undefined, если элемента с таким id нет.
41
+ * @param name Имя слота.
42
+ * @returns ScalarIdService по имени слота, если он был сконфигурирован.
59
43
  */
60
- getById(id: Id): T | undefined;
44
+ getIdSlot(name: TSlots): ScalarIdService<Id> | null;
61
45
  /**
62
- * Добавляет элемент в коллекцию.
46
+ * Возвращает id, хранящемуся в указанном слоте.
63
47
  *
64
- * @param item Элемент для добавления или замены.
48
+ * @param name Имя слота.
65
49
  */
66
- add(item: T): void;
50
+ getIdBySlot(name: TSlots): import("../../lib").Nullable<Id>;
67
51
  /**
68
- * Добавляет в коллекцию несколько элементов подряд.
52
+ * Возвращает элемент коллекции по id, хранящемуся в указанном слоте.
69
53
  *
70
- * @param items Массив элементов для добавления.
54
+ * @param name Имя слота.
71
55
  */
72
- addMany(items: T[]): void;
56
+ getItemBySlot(name: TSlots): NonNullable<T> | null;
73
57
  /**
74
- * Удаляет элемент из коллекции по id.
58
+ * Устанавливает id в указанный слот.
75
59
  *
76
- * @param id Идентификатор удаляемого элемента.
60
+ * @param name Имя слота.
61
+ * @param value Новое значения id в слоте.
77
62
  */
78
- delete(id: Id): void;
63
+ setIdSlot(name: TSlots, value: Id): void;
79
64
  /**
80
- * Удаляет из коллекции несколько элементов по списку id.
65
+ * Сбрасывает id в указанном слоте.
81
66
  *
82
- * @param ids Массив идентификаторов для удаления.
67
+ * @param name Имя слота.
83
68
  */
84
- deleteMany(ids: Id[]): void;
69
+ resetIdSlot(name: TSlots): void;
85
70
  /**
86
- * Полностью очищает коллекцию и сбрасывает служебные состояния выбора.
71
+ * Сбрасывает все слоты.
87
72
  */
88
- clear(): void;
89
- private _updatedId;
90
- get updatedId(): Nullable<Id>;
91
- set updatedId(value: Nullable<Id>);
92
- get updatedItem(): T | undefined;
93
- get isUpdated(): boolean;
94
- private _deletedId;
95
- get deletedId(): Nullable<Id>;
96
- set deletedId(value: Nullable<Id>);
97
- get deletedItem(): T | undefined;
98
- get isDeleted(): boolean;
73
+ resetSlots(): void;
99
74
  }
100
75
  //# 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,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
+ {"version":3,"file":"collection.service.d.ts","sourceRoot":"","sources":["../../../src/services/collection/collection.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,qBAAa,iBAAiB,CAC5B,CAAC,EACD,EAAE,SAAS,cAAc,EACzB,MAAM,SAAS,MAAM;IASnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAPxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAE9D,SAAgB,WAAW,iBAAwB;IAEnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;gBAGhD,KAAK,EAAE;QACtB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KAC3B;IAWH;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,CAAC;IAI1B;;OAEG;IACH,IAAW,KAAK,oDAEf;IAED;;OAEG;IACH,IAAW,IAAI,iBAEd;IAEM,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAIhD,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;IAM5D,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAQjC,OAAO,CAAC,EAAE,EAAE,EAAE;IAId,GAAG,CAAC,IAAI,EAAE,CAAC;IAQX,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE;IAMlB,MAAM,CAAC,EAAE,EAAE,EAAE;IAIb,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE;IAM3B;;OAEG;IACI,KAAK;IAQZ;;;;;OAKG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM;IAI7B;;;;OAIG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM;IAU/B;;;;OAIG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM;IAUjC;;;;;OAKG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;IAQxC;;;;OAIG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM;IAQ/B;;OAEG;IACI,UAAU;CAKlB"}
@@ -1 +1 @@
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};
1
+ import{observable as t,makeAutoObservable as e}from"../../node_modules/mobx/dist/mobx.esm.esm.js";import{ScalarIdService as s}from"../scalar-id/scalar-id.service.esm.js";import{SetService as r}from"../set/set.service.esm.js";class i{props;_items=t.map();selectedIds=new r;_idSlots=new Map;constructor(t){this.props=t;const{slots:r=[]}=t;e(this),r.forEach(t=>{this._idSlots.set(t,new s)})}getIdByItem(t){return this.props.getId(t)}get items(){return this._items}get list(){return Object.freeze(Array.from(this.items.values()))}findAllBy(t,e){return this.list.filter(s=>s[t]===e)}findAllIn(t,e){const s=new Set(e);return this.list.filter(e=>s.has(e[t]))}findAllWhere(t){const e=Object.entries(t);return this.list.filter(t=>e.every(([e,s])=>t[e]===s))}getById(t){return this.items.get(t)??null}add(t){const e=this.props.getId(t),s=this.props.normalizeItem(t);this._items.set(e,s)}addMany(t){t.forEach(t=>{this.add(t)})}delete(t){this._items.delete(t)}deleteMany(t){t.forEach(t=>{this.delete(t)})}clear(){this._items.clear(),this.resetSlots(),this.selectedIds.clear()}getIdSlot(t){return this._idSlots.get(t)??null}getIdBySlot(t){const e=this.getIdSlot(t);return e?e.value:null}getItemBySlot(t){const e=this.getIdSlot(t);return e&&e.isSet&&null!==e.value?this.getById(e.value):null}setIdSlot(t,e){const s=this.getIdSlot(t);s&&s.set(e)}resetIdSlot(t){const e=this.getIdSlot(t);e&&e.reset()}resetSlots(){this._idSlots.forEach(t=>{t.reset()})}}export{i as CollectionService};
@@ -6,5 +6,6 @@ export * from './localization';
6
6
  export * from './logger';
7
7
  export * from './map';
8
8
  export * from './query';
9
+ export * from './scalar-id';
9
10
  export * from './set';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -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;AACxB,cAAc,OAAO,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,aAAa,CAAC;AAC5B,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 e=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:e,azimuth:n,unit:i="meters"})=>{const s=t.lat*this.DEG_TO_RAD,a=t.lng*this.DEG_TO_RAD,r=this.normalizeBearing(n)*this.DEG_TO_RAD,o=this.distanceToMeters(e,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),u=Math.asin(h*E+l*c*D),L=a+Math.atan2(_*c*l,E-h*Math.sin(u));return{lat:u*this.RAD_TO_DEG,lng:this.normalizeLongitude(L*this.RAD_TO_DEG)}};haversineDistance(t,e,n="meters"){const i=t.lat*this.DEG_TO_RAD,s=e.lat*this.DEG_TO_RAD,a=(e.lat-t.lat)*this.DEG_TO_RAD,r=(e.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,n)}initialBearing(t,e){const n=t.lat*this.DEG_TO_RAD,i=e.lat*this.DEG_TO_RAD,s=t.lng*this.DEG_TO_RAD,a=e.lng*this.DEG_TO_RAD,r=Math.sin(a-s)*Math.cos(i),o=Math.cos(n)*Math.sin(i)-Math.sin(n)*Math.cos(i)*Math.cos(a-s);return this.normalizeBearing(Math.atan2(r,o)*this.RAD_TO_DEG)}convertDistance(e,n="meters"){return e/t[n]}distanceToMeters(e,n="meters"){return e*t[n]}getPolylineLength(t,e="meters"){const n=t.reduce((t,e,n,i)=>{const s=i[n+1];if(!s)return t;return t+this.haversineDistance(e,s,"meters")},0);return this.convertDistance(n,e)}coordinatesEqual(t,e){return this.haversineDistance(t,e,"meters")<=this.COORDINATE_EQUALITY_EPSILON_M}replaceInFlatRing(t,e,n,i){return t.map(t=>i(t,e)?n:t)}replaceCoordinateInLine(t,e,n,i=this.coordinatesEqual.bind(this)){return this.replaceInFlatRing(t,e,n,i)}replaceCoordinateInPolygon(t,e,n,i=this.coordinatesEqual.bind(this)){return t.map(t=>this.replaceInFlatRing(t,e,n,i))}replaceCoordinateInMultiPolygon(t,e,n,i=this.coordinatesEqual.bind(this)){return t.map(t=>this.replaceCoordinateInPolygon(t,e,n,i))}sampleLineByDistance(t,e={}){const{interval:n=1e3,maxPoints:i,unit:s="meters",includeStart:a=!1}=e;if(t.length<2)return[];const r=this.distanceToMeters(n,s);if(!Number.isFinite(r)||r<=0)return[];const o=[];let h=0,l=t[0];a&&o.push(l);for(let e=1;e<t.length;e++){const n=t[e],s=this.haversineDistance(l,n,"meters");if(Number.isFinite(s)&&0!==s){for(h+=s;h>=r;){const t=(s-(h-r))/s,e=l.lat+t*(n.lat-l.lat),a=l.lng+t*(n.lng-l.lng);if(o.push({lat:e,lng:a}),null!=i&&o.length>=i)return o;h-=r}l=n}else l=n}return null!=i?o.slice(0,i):o}getPolylineCenter(t){if(0===t.length)return null;if(1===t.length)return t[0];const e=this.getPolylineLength(t,"meters");if(0===e)return t[0];const n=e/2;let i=0,s=t[0];for(let e=1;e<t.length;e++){const a=t[e],r=this.haversineDistance(s,a,"meters");if(0!==r){if(i+r>=n){const t=(n-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,e]){return{lat:e,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))))}}};export{e as mapService};
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,2 @@
1
+ export * from './scalar-id.service';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/scalar-id/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const defaultId: null;
2
+ //# sourceMappingURL=scalar-id.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalar-id.constants.d.ts","sourceRoot":"","sources":["../../../src/services/scalar-id/scalar-id.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,MAAO,CAAC"}
@@ -0,0 +1 @@
1
+ const l=null;export{l as defaultId};
@@ -0,0 +1,49 @@
1
+ import { Nullable } from '../../lib';
2
+ /**
3
+ * ScalarIdService<Id>
4
+ *
5
+ * Небольшой сервис для хранения одного "текущего" идентификатора.
6
+ * Подходит для:
7
+ * - последнего обновлённого элемента (updatedId);
8
+ * - последнего удалённого элемента (deletedId);
9
+ * - текущего выделенного элемента (selectedId), если нужен один.
10
+ *
11
+ * Возможности:
12
+ * - value: текущее значение или null;
13
+ * - isSet: флаг, установлен ли id;
14
+ * - set / reset: явное управление значением.
15
+ *
16
+ * Пример:
17
+ * const updated = new ScalarIdService<string>();
18
+ * updated.set('42');
19
+ * updated.isSet; // true
20
+ * updated.value; // '42'
21
+ * updated.reset();
22
+ */
23
+ export declare class ScalarIdService<Id> {
24
+ /**
25
+ * Внутреннее хранилище идентификатора.
26
+ * null означает "ничего не выбрано / не установлено".
27
+ */
28
+ private _value;
29
+ constructor();
30
+ /**
31
+ * Текущее значение id или null, если значение не установлено.
32
+ */
33
+ get value(): Nullable<Id>;
34
+ /**
35
+ * Установить новое значение id.
36
+ *
37
+ * @param value Новое значение или null для сброса.
38
+ */
39
+ set(value: Id): void;
40
+ /**
41
+ * Сбросить значение id в null.
42
+ */
43
+ reset(): void;
44
+ /**
45
+ * Признак, что значение установлено (отлично от null).
46
+ */
47
+ get isSet(): boolean;
48
+ }
49
+ //# sourceMappingURL=scalar-id.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalar-id.service.d.ts","sourceRoot":"","sources":["../../../src/services/scalar-id/scalar-id.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAMjC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,eAAe,CAAC,EAAE;IAC7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAA2B;;IAMzC;;OAEG;IACH,IAAW,KAAK,iBAEf;IAED;;;;OAIG;IACI,GAAG,CAAC,KAAK,EAAE,EAAE;IAIpB;;OAEG;IACI,KAAK;IAIZ;;OAEG;IACH,IAAW,KAAK,YAEf;CACF"}
@@ -0,0 +1 @@
1
+ import{makeAutoObservable as s}from"../../node_modules/mobx/dist/mobx.esm.esm.js";import{defaultId as t}from"./scalar-id.constants.esm.js";class e{_value=t;constructor(){s(this,{},{autoBind:!0})}get value(){return this._value}set(s){this._value=s}reset(){this._value=t}get isSet(){return this._value!==t}}export{e as ScalarIdService};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dartcom/ui-kit",
3
- "version": "10.6.0",
3
+ "version": "10.6.2",
4
4
  "description": "Кастомная библиотека компонентов Dartcom",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",