@dartcom/ui-kit 10.5.24 → 10.6.0
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/index.cjs +132 -13
- package/dist/index.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/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
package/dist/index.cjs
CHANGED
|
@@ -5662,9 +5662,134 @@ class ApiService {
|
|
|
5662
5662
|
}
|
|
5663
5663
|
}
|
|
5664
5664
|
|
|
5665
|
+
/**
|
|
5666
|
+
* SetService<T>
|
|
5667
|
+
*
|
|
5668
|
+
* Небольшой обёрткой над observable Set из MobX, которая:
|
|
5669
|
+
* - хранит уникальные значения типа T;
|
|
5670
|
+
* - предоставляет реактивные геттеры items / list;
|
|
5671
|
+
* - даёт удобные методы add / delete / toggle / clear;
|
|
5672
|
+
* - поддерживает batch‑операции addMany / deleteMany.
|
|
5673
|
+
*
|
|
5674
|
+
* Типичный сценарий использования:
|
|
5675
|
+
* - хранение множества выбранных id;
|
|
5676
|
+
* - хранение множества активных фильтров;
|
|
5677
|
+
* - хранение множества "выделенных" элементов в UI.
|
|
5678
|
+
*
|
|
5679
|
+
* Пример:
|
|
5680
|
+
* const selection = new SetService<string>();
|
|
5681
|
+
* selection.add('id-1');
|
|
5682
|
+
* selection.toggle('id-2');
|
|
5683
|
+
* selection.isContain('id-1'); // true
|
|
5684
|
+
*/
|
|
5685
|
+
class SetService {
|
|
5686
|
+
/**
|
|
5687
|
+
* Внутренний набор значений.
|
|
5688
|
+
*
|
|
5689
|
+
* Используется observable.set, чтобы:
|
|
5690
|
+
* - изменения были реактивны для MobX;
|
|
5691
|
+
* - операции add/delete были O(1) по времени.
|
|
5692
|
+
*/
|
|
5693
|
+
_items = observable.set();
|
|
5694
|
+
/**
|
|
5695
|
+
* Возвращает observable Set со всеми значениями.
|
|
5696
|
+
*
|
|
5697
|
+
* Подходит, если нужно работать с Set напрямую:
|
|
5698
|
+
* setService.items.has(value)
|
|
5699
|
+
*/
|
|
5700
|
+
get items() {
|
|
5701
|
+
return this._items;
|
|
5702
|
+
}
|
|
5703
|
+
/**
|
|
5704
|
+
* Возвращает значения набора в виде обычного массива.
|
|
5705
|
+
*
|
|
5706
|
+
* Удобно использовать в React-компонентах:
|
|
5707
|
+
* setService.list.map(...)
|
|
5708
|
+
*/
|
|
5709
|
+
get list() {
|
|
5710
|
+
return Array.from(this.items.values());
|
|
5711
|
+
}
|
|
5712
|
+
/**
|
|
5713
|
+
* Проверяет, содержится ли значение в наборе.
|
|
5714
|
+
*
|
|
5715
|
+
* @param value Значение для проверки.
|
|
5716
|
+
* @returns true, если value есть в наборе; иначе false.
|
|
5717
|
+
*/
|
|
5718
|
+
has(value) {
|
|
5719
|
+
return this.items.has(value);
|
|
5720
|
+
}
|
|
5721
|
+
/**
|
|
5722
|
+
* Возвращает значение, пустой ли список
|
|
5723
|
+
* @returns true, если в списке нет ни одного элемента; иначе false.
|
|
5724
|
+
*/
|
|
5725
|
+
get isEmpty() {
|
|
5726
|
+
return this.items.size === 0;
|
|
5727
|
+
}
|
|
5728
|
+
/**
|
|
5729
|
+
* Добавляет значение в набор.
|
|
5730
|
+
*
|
|
5731
|
+
* @param value Значение для добавления.
|
|
5732
|
+
*/
|
|
5733
|
+
add(value) {
|
|
5734
|
+
this._items.add(value);
|
|
5735
|
+
}
|
|
5736
|
+
/**
|
|
5737
|
+
* Добавляет в набор несколько значений подряд.
|
|
5738
|
+
*
|
|
5739
|
+
* @param values Массив значений для добавления.
|
|
5740
|
+
*/
|
|
5741
|
+
addMany(values) {
|
|
5742
|
+
values.forEach((value) => {
|
|
5743
|
+
this.add(value);
|
|
5744
|
+
});
|
|
5745
|
+
}
|
|
5746
|
+
/**
|
|
5747
|
+
* Удаляет значение из набора.
|
|
5748
|
+
*
|
|
5749
|
+
* @param value Значение для удаления.
|
|
5750
|
+
*/
|
|
5751
|
+
delete(value) {
|
|
5752
|
+
this._items.delete(value);
|
|
5753
|
+
}
|
|
5754
|
+
/**
|
|
5755
|
+
* Удаляет из набора несколько значений подряд.
|
|
5756
|
+
*
|
|
5757
|
+
* @param values Массив значений для удаления.
|
|
5758
|
+
*/
|
|
5759
|
+
deleteMany(values) {
|
|
5760
|
+
values.forEach((value) => {
|
|
5761
|
+
this.delete(value);
|
|
5762
|
+
});
|
|
5763
|
+
}
|
|
5764
|
+
/**
|
|
5765
|
+
* Переключает присутствие значения в наборе.
|
|
5766
|
+
*
|
|
5767
|
+
* Поведение:
|
|
5768
|
+
* - если значение уже есть, оно будет удалено;
|
|
5769
|
+
* - если значения нет, оно будет добавлено.
|
|
5770
|
+
*
|
|
5771
|
+
* @param value Значение для переключения.
|
|
5772
|
+
*/
|
|
5773
|
+
toggle(value) {
|
|
5774
|
+
if (this.has(value)) {
|
|
5775
|
+
this.delete(value);
|
|
5776
|
+
}
|
|
5777
|
+
else {
|
|
5778
|
+
this.add(value);
|
|
5779
|
+
}
|
|
5780
|
+
}
|
|
5781
|
+
/**
|
|
5782
|
+
* Полностью очищает набор.
|
|
5783
|
+
*/
|
|
5784
|
+
clear() {
|
|
5785
|
+
this._items.clear();
|
|
5786
|
+
}
|
|
5787
|
+
}
|
|
5788
|
+
|
|
5665
5789
|
class CollectionService {
|
|
5666
5790
|
props;
|
|
5667
5791
|
_items = observable.map();
|
|
5792
|
+
selectedIds = new SetService();
|
|
5668
5793
|
constructor(props) {
|
|
5669
5794
|
this.props = props;
|
|
5670
5795
|
makeAutoObservable(this);
|
|
@@ -5780,8 +5905,8 @@ class CollectionService {
|
|
|
5780
5905
|
clear() {
|
|
5781
5906
|
this._items.clear();
|
|
5782
5907
|
this.updatedId = null;
|
|
5783
|
-
this.selectedId = null;
|
|
5784
5908
|
this.deletedId = null;
|
|
5909
|
+
this.selectedIds.clear();
|
|
5785
5910
|
}
|
|
5786
5911
|
_updatedId = null;
|
|
5787
5912
|
get updatedId() {
|
|
@@ -5796,18 +5921,8 @@ class CollectionService {
|
|
|
5796
5921
|
return item;
|
|
5797
5922
|
}
|
|
5798
5923
|
}
|
|
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
|
-
}
|
|
5924
|
+
get isUpdated() {
|
|
5925
|
+
return this.updatedId !== null;
|
|
5811
5926
|
}
|
|
5812
5927
|
_deletedId = null;
|
|
5813
5928
|
get deletedId() {
|
|
@@ -5822,6 +5937,9 @@ class CollectionService {
|
|
|
5822
5937
|
return item;
|
|
5823
5938
|
}
|
|
5824
5939
|
}
|
|
5940
|
+
get isDeleted() {
|
|
5941
|
+
return this.deletedId !== null;
|
|
5942
|
+
}
|
|
5825
5943
|
}
|
|
5826
5944
|
|
|
5827
5945
|
/**
|
|
@@ -48194,6 +48312,7 @@ exports.Modal = modal;
|
|
|
48194
48312
|
exports.NoData = NoData;
|
|
48195
48313
|
exports.Paragraph = Paragraph;
|
|
48196
48314
|
exports.Select = FormSelect;
|
|
48315
|
+
exports.SetService = SetService;
|
|
48197
48316
|
exports.Tabs = Tabs;
|
|
48198
48317
|
exports.TangramLayer = TangramLayer;
|
|
48199
48318
|
exports.TextField = TextField;
|
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";
|
|
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,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"}
|
|
@@ -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};
|