@redneckz/wildless-cms-uni-blocks 0.14.333 → 0.14.334

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.
Files changed (158) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +108 -50
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  5. package/bundle/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  6. package/bundle/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  7. package/bundle/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  8. package/bundle/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  9. package/bundle/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  10. package/bundle/icons/IconName.d.ts +4 -2
  11. package/bundle/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  12. package/bundle/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  13. package/cosmos-static/icons/MapMarkerClusterYellowIcon.svg +1 -0
  14. package/cosmos-static/icons/sprites.svg +1 -0
  15. package/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  16. package/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  17. package/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  18. package/dist/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  19. package/dist/components/OfficesAtmsMap/OfficesMap.js +12 -9
  20. package/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  21. package/dist/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  22. package/dist/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  23. package/dist/components/OfficesAtmsMap/renderDescriptionBlock.js +9 -0
  24. package/dist/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  25. package/dist/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  26. package/dist/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  27. package/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  28. package/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +35 -0
  29. package/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  30. package/dist/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  31. package/dist/components/OfficesAtmsMap/useOffices.js +4 -2
  32. package/dist/components/OfficesAtmsMap/useOffices.js.map +1 -1
  33. package/dist/icons/IconName.d.ts +4 -2
  34. package/dist/icons/IconName.js +3 -1
  35. package/dist/icons/IconName.js.map +1 -1
  36. package/dist/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  37. package/dist/ui-kit/YandexMap/YandexMap.js +2 -2
  38. package/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
  39. package/dist/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  40. package/dist/ui-kit/YandexMap/renderClusterer.js +33 -14
  41. package/dist/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  42. package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  43. package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  44. package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  45. package/lib/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  46. package/lib/components/OfficesAtmsMap/OfficesMap.js +12 -9
  47. package/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  48. package/lib/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  49. package/lib/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +2 -0
  50. package/lib/components/OfficesAtmsMap/renderDescriptionBlock.js +6 -0
  51. package/lib/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  52. package/lib/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  53. package/lib/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  54. package/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +6 -0
  55. package/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +31 -0
  56. package/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  57. package/lib/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  58. package/lib/components/OfficesAtmsMap/useOffices.js +4 -2
  59. package/lib/components/OfficesAtmsMap/useOffices.js.map +1 -1
  60. package/lib/icons/IconName.d.ts +4 -2
  61. package/lib/icons/IconName.js +3 -1
  62. package/lib/icons/IconName.js.map +1 -1
  63. package/lib/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  64. package/lib/ui-kit/YandexMap/YandexMap.js +2 -2
  65. package/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
  66. package/lib/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  67. package/lib/ui-kit/YandexMap/renderClusterer.js +32 -13
  68. package/lib/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  69. package/mobile/bundle/bundle.umd.js +108 -50
  70. package/mobile/bundle/bundle.umd.min.js +1 -1
  71. package/mobile/bundle/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  72. package/mobile/bundle/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  73. package/mobile/bundle/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  74. package/mobile/bundle/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  75. package/mobile/bundle/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  76. package/mobile/bundle/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  77. package/mobile/bundle/icons/IconName.d.ts +4 -2
  78. package/mobile/bundle/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  79. package/mobile/bundle/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  80. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  81. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  82. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  83. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  84. package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js +12 -9
  85. package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  86. package/mobile/dist/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  87. package/mobile/dist/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  88. package/mobile/dist/components/OfficesAtmsMap/renderDescriptionBlock.js +9 -0
  89. package/mobile/dist/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  90. package/mobile/dist/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  91. package/mobile/dist/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  92. package/mobile/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  93. package/mobile/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +35 -0
  94. package/mobile/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  95. package/mobile/dist/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  96. package/mobile/dist/components/OfficesAtmsMap/useOffices.js +4 -2
  97. package/mobile/dist/components/OfficesAtmsMap/useOffices.js.map +1 -1
  98. package/mobile/dist/icons/IconName.d.ts +4 -2
  99. package/mobile/dist/icons/IconName.js +3 -1
  100. package/mobile/dist/icons/IconName.js.map +1 -1
  101. package/mobile/dist/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  102. package/mobile/dist/ui-kit/YandexMap/YandexMap.js +2 -2
  103. package/mobile/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
  104. package/mobile/dist/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  105. package/mobile/dist/ui-kit/YandexMap/renderClusterer.js +33 -14
  106. package/mobile/dist/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  107. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  108. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  109. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  110. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  111. package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js +12 -9
  112. package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  113. package/mobile/lib/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  114. package/mobile/lib/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  115. package/mobile/lib/components/OfficesAtmsMap/renderDescriptionBlock.js +6 -0
  116. package/mobile/lib/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  117. package/mobile/lib/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  118. package/mobile/lib/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  119. package/mobile/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  120. package/mobile/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +31 -0
  121. package/mobile/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  122. package/mobile/lib/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  123. package/mobile/lib/components/OfficesAtmsMap/useOffices.js +4 -2
  124. package/mobile/lib/components/OfficesAtmsMap/useOffices.js.map +1 -1
  125. package/mobile/lib/icons/IconName.d.ts +4 -2
  126. package/mobile/lib/icons/IconName.js +3 -1
  127. package/mobile/lib/icons/IconName.js.map +1 -1
  128. package/mobile/lib/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  129. package/mobile/lib/ui-kit/YandexMap/YandexMap.js +2 -2
  130. package/mobile/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
  131. package/mobile/lib/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  132. package/mobile/lib/ui-kit/YandexMap/renderClusterer.js +32 -13
  133. package/mobile/lib/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  134. package/mobile/src/components/OfficesAtmsMap/OfficesAtmsMapLayout.tsx +34 -45
  135. package/mobile/src/components/OfficesAtmsMap/OfficesAtmsMapProps.tsx +15 -0
  136. package/mobile/src/components/OfficesAtmsMap/OfficesMap.tsx +28 -12
  137. package/mobile/src/components/OfficesAtmsMap/YandexMapProps.ts +1 -0
  138. package/mobile/src/components/OfficesAtmsMap/renderDescriptionBlock.tsx +29 -0
  139. package/mobile/src/components/OfficesAtmsMap/renderFiltrationForm.tsx +2 -1
  140. package/mobile/src/components/OfficesAtmsMap/renderRemoteWorkplaceCard.tsx +86 -0
  141. package/mobile/src/components/OfficesAtmsMap/useOffices.ts +11 -4
  142. package/mobile/src/icons/IconName.ts +5 -5
  143. package/mobile/src/icons/MapMarkerClusterYellowIcon.svg +1 -0
  144. package/mobile/src/ui-kit/YandexMap/YandexMap.tsx +3 -3
  145. package/mobile/src/ui-kit/YandexMap/renderClusterer.ts +62 -16
  146. package/package.json +1 -1
  147. package/src/components/OfficesAtmsMap/OfficesAtmsMapLayout.tsx +34 -45
  148. package/src/components/OfficesAtmsMap/OfficesAtmsMapProps.tsx +15 -0
  149. package/src/components/OfficesAtmsMap/OfficesMap.tsx +28 -12
  150. package/src/components/OfficesAtmsMap/YandexMapProps.ts +1 -0
  151. package/src/components/OfficesAtmsMap/renderDescriptionBlock.tsx +29 -0
  152. package/src/components/OfficesAtmsMap/renderFiltrationForm.tsx +2 -1
  153. package/src/components/OfficesAtmsMap/renderRemoteWorkplaceCard.tsx +86 -0
  154. package/src/components/OfficesAtmsMap/useOffices.ts +11 -4
  155. package/src/icons/IconName.ts +5 -1
  156. package/src/icons/MapMarkerClusterYellowIcon.svg +1 -0
  157. package/src/ui-kit/YandexMap/YandexMap.tsx +3 -3
  158. package/src/ui-kit/YandexMap/renderClusterer.ts +62 -16
@@ -1,20 +1,27 @@
1
1
  import { useAsyncData } from '@redneckz/uni-jsx/lib/hooks/useAsyncData';
2
2
  import { fetchJSON } from '../../utils/fetchJSON';
3
- import { type Branch } from './OfficesAtmsMapProps';
3
+ import { type Branch, type RemoteWorkplace } from './OfficesAtmsMapProps';
4
4
 
5
5
  const EMPTY_VALUE = [];
6
6
 
7
7
  export function useOffices(regionCode?: string) {
8
8
  const { data = EMPTY_VALUE } = useAsyncData(
9
- `/api/v1/branches?regionCode=${regionCode}`,
9
+ `/api/v1/branchesAndRemoteWorkplaces?regionCode=${regionCode}`,
10
10
  fetchMap,
11
11
  );
12
12
 
13
13
  return data;
14
14
  }
15
15
 
16
- const fetchMap = async (url: string): Promise<Branch[]> => {
17
- const result = await fetchJSON<Branch[]>(url, { method: 'GET' });
16
+ const fetchMap = async (
17
+ url: string,
18
+ ): Promise<{ branches: Branch[]; remoteWorkplaces: RemoteWorkplace[] }[]> => {
19
+ const result = await fetchJSON<{ branches: Branch[]; remoteWorkplaces: RemoteWorkplace[] }[]>(
20
+ url,
21
+ {
22
+ method: 'GET',
23
+ },
24
+ );
18
25
 
19
26
  return Array.isArray(result) ? result : EMPTY_VALUE;
20
27
  };
@@ -16,6 +16,7 @@ export const IconsWithoutInversion = new Set([
16
16
  'HouseIcon',
17
17
  'MagnifierIcon',
18
18
  'MapMarkerClusterIcon',
19
+ 'MapMarkerClusterYellowIcon',
19
20
  'MapMarkerSingleIcon',
20
21
  'MapOpenedIcon',
21
22
  'MoneyInsuranceIcon',
@@ -93,6 +94,7 @@ export enum IconMap {
93
94
  MagnifierIcon = 'MagnifierIcon',
94
95
  MailIcon = 'MailIcon',
95
96
  MapMarkerClusterIcon = 'MapMarkerClusterIcon',
97
+ MapMarkerClusterYellowIcon = 'MapMarkerClusterYellowIcon',
96
98
  MapMarkerSingleIcon = 'MapMarkerSingleIcon',
97
99
  MapOpenedIcon = 'MapOpenedIcon',
98
100
  MinusIcon = 'MinusIcon',
@@ -200,6 +202,7 @@ export enum IconTitleMap {
200
202
  MagnifierIcon = 'MagnifierIcon',
201
203
  MailIcon = 'E-mail',
202
204
  MapMarkerClusterIcon = 'Маркер карты',
205
+ MapMarkerClusterYellowIcon = 'Маркер карты (желтый)',
203
206
  MapMarkerSingleIcon = 'Маркер карты РСХБ',
204
207
  MapOpenedIcon = 'Иконка Развёрнутая карта',
205
208
  MinusIcon = 'Минус',
@@ -248,7 +251,7 @@ export enum IconTitleMap {
248
251
  * @title Иконка
249
252
  * @enumNames [
250
253
  * "",
251
- * 'Достижение', 'Деньги', 'Лого «Apple»', 'Стрелка \'Вниз\'', 'Стрелка сплошная \'Вниз\'', 'Стрелка \'Влево\'', 'Стрелка \'Вправо\'', 'Стрелка \'Вверх-право\'', 'Стрелка \'Вверх\'', 'Стрелка сплошная \'Вверх\'', 'Банкомат', 'Банк', 'Белорусский флаг', 'Портфель', 'Здание с деревом', 'Бургер', 'Скруглённый календарь', 'Календарь', 'Календарь с галочкой', 'Кред. карта', 'Кред. карта под наклоном', 'Карта', 'Кред. карта с галочкой', 'Инвестиции', 'Диаграмма (в круге)', 'Деньги внутри кошелька', 'Стрелка \'Влево\'', 'Китайский юань', 'Клиент', 'Крестик', 'Монеты', 'Конвертирование', 'Копирование', 'Здание суда', 'Кубок', 'Разработка', 'Скидка', 'Скачать документ', 'Документ', 'Доллар', 'Зелёная \'галочка\' в круге', 'Зелёная \'галочка\'', 'Лого «Дзен»', 'Пустой кошелёк с возвратом', 'Пустой кошелёк', 'Евро', 'Факс', 'FullScreenIcon', 'Геолокация', 'Глобус', 'Gps', 'Сетка (белая)', 'HeadphonesIcon', 'Сердце', 'Сердцебеение', 'Ипотека', 'Лого «Huawei»', 'Замок', 'Logo', 'Лупа', 'MagnifierIcon', 'E-mail', 'Маркер карты', 'Маркер карты РСХБ', 'Иконка Развёрнутая карта', 'Минус', 'Деньги', 'Денежное страхование', 'Монитор и мобильный', 'Новый документ', 'Колокольчик нотификаций', 'Лого «Одноклассники»', 'Пачка бумаги А4', 'Бизнес', 'Проценты (круг.)', 'PercentIcon', 'Персональная карта', 'Звонящий телефон', 'Телефон', 'Лого «PlayMarket»', 'Плюс в круге', 'Плюс', 'Профиль, 2 персоны', 'Профиль', 'Ошибка', 'Ок', 'Рубль (круг.)', 'Лого «Rustore»', 'Лого «Rutube»', 'Сейф', 'Безопасность', 'Безопасность', 'Подписанные документы', 'Маленькие часы', 'Кольцо', 'Лого «Telegram»', 'Самолётик', 'Пользователь в рамке', 'Пользователь', 'Лого «VK»', 'Кошелёк с плюсом', 'Кошелёк', 'Кошелёк с деньгами', 'Лого «Youtube»'
254
+ * 'Достижение', 'Деньги', 'Лого «Apple»', 'Стрелка \'Вниз\'', 'Стрелка сплошная \'Вниз\'', 'Стрелка \'Влево\'', 'Стрелка \'Вправо\'', 'Стрелка \'Вверх-право\'', 'Стрелка \'Вверх\'', 'Стрелка сплошная \'Вверх\'', 'Банкомат', 'Банк', 'Белорусский флаг', 'Портфель', 'Здание с деревом', 'Бургер', 'Скруглённый календарь', 'Календарь', 'Календарь с галочкой', 'Кред. карта', 'Кред. карта под наклоном', 'Карта', 'Кред. карта с галочкой', 'Инвестиции', 'Диаграмма (в круге)', 'Деньги внутри кошелька', 'Стрелка \'Влево\'', 'Китайский юань', 'Клиент', 'Крестик', 'Монеты', 'Конвертирование', 'Копирование', 'Здание суда', 'Кубок', 'Разработка', 'Скидка', 'Скачать документ', 'Документ', 'Доллар', 'Зелёная \'галочка\' в круге', 'Зелёная \'галочка\'', 'Лого «Дзен»', 'Пустой кошелёк с возвратом', 'Пустой кошелёк', 'Евро', 'Факс', 'FullScreenIcon', 'Геолокация', 'Глобус', 'Gps', 'Сетка (белая)', 'HeadphonesIcon', 'Сердце', 'Сердцебеение', 'Ипотека', 'Лого «Huawei»', 'Замок', 'Logo', 'Лупа', 'MagnifierIcon', 'E-mail', 'Маркер карты', 'Маркер карты (желтый)', 'Маркер карты РСХБ', 'Иконка Развёрнутая карта', 'Минус', 'Деньги', 'Денежное страхование', 'Монитор и мобильный', 'Новый документ', 'Колокольчик нотификаций', 'Лого «Одноклассники»', 'Пачка бумаги А4', 'Бизнес', 'Проценты (круг.)', 'PercentIcon', 'Персональная карта', 'Звонящий телефон', 'Телефон', 'Лого «PlayMarket»', 'Плюс в круге', 'Плюс', 'Профиль, 2 персоны', 'Профиль', 'Ошибка', 'Ок', 'Рубль (круг.)', 'Лого «Rustore»', 'Лого «Rutube»', 'Сейф', 'Безопасность', 'Безопасность', 'Подписанные документы', 'Маленькие часы', 'Кольцо', 'Лого «Telegram»', 'Самолётик', 'Пользователь в рамке', 'Пользователь', 'Лого «VK»', 'Кошелёк с плюсом', 'Кошелёк', 'Кошелёк с деньгами', 'Лого «Youtube»'
252
255
  * ]
253
256
  */
254
257
  export type IconName =
@@ -316,6 +319,7 @@ export type IconName =
316
319
  | 'MagnifierIcon'
317
320
  | 'MailIcon'
318
321
  | 'MapMarkerClusterIcon'
322
+ | 'MapMarkerClusterYellowIcon'
319
323
  | 'MapMarkerSingleIcon'
320
324
  | 'MapOpenedIcon'
321
325
  | 'MinusIcon'
@@ -0,0 +1 @@
1
+ <svg title="Маркер карты (желтый)" viewBox="0 0 88 94" xmlns="http://www.w3.org/2000/svg" fill="none"><g opacity=".1" filter="url(#a)"><ellipse cx="44.5" cy="65.5" rx="11.5" ry="1.5" fill="#1C1C1C"/></g><g filter="url(#b)"><path fill-rule="evenodd" clip-rule="evenodd" d="M44 62.36c-1.506 2.197-1.507 2.196-1.507 2.196l-.006-.004-.014-.009-.045-.03-.156-.104a34.7 34.7 0 0 1-.561-.386 57.212 57.212 0 0 1-7.824-6.667C29.707 53.066 25 46.701 25 39.48c0-4.901 2.002-9.602 5.565-13.067C34.128 22.947 38.961 21 44 21c5.04 0 9.872 1.947 13.435 5.413C60.998 29.878 63 34.579 63 39.48c0 7.221-4.707 13.585-8.887 17.876a57.212 57.212 0 0 1-7.824 6.667 34.7 34.7 0 0 1-.717.49l-.045.03-.014.009-.004.003s-.003.002-1.509-2.195Zm0 0 1.506 2.197a2.78 2.78 0 0 1-3.013 0L44 62.36Z" fill="#CCA012"/></g><path fill-rule="evenodd" clip-rule="evenodd" d="M31 40c0-7.18 5.82-13 13-13s13 5.82 13 13-5.82 13-13 13-13-5.82-13-13Z" fill="#fff"/><defs><filter id="a" x="27" y="58" width="35" height="15" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation="3" result="effect1_foregroundBlur_9189_125614"/></filter><filter id="b" x="0" y="0" width="88" height="94" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/><feOffset dy="4"/><feGaussianBlur stdDeviation="12.5"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_9189_125614"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_9189_125614" result="shape"/></filter></defs></svg>
@@ -11,7 +11,7 @@ import { useYandexMaps } from './useYandexMaps';
11
11
  import { ZoomButton } from './ZoomButton';
12
12
 
13
13
  interface YandexMapProps {
14
- points?: BalloonPoints[];
14
+ points: BalloonPoints[];
15
15
  className?: string;
16
16
  zoom?: number;
17
17
  }
@@ -42,10 +42,10 @@ export const YandexMap = JSX<YandexMapProps>(({ points, className = '', zoom = 5
42
42
  suppressMapOpenBlock: true,
43
43
  });
44
44
 
45
- renderClusterer(yandexMaps, map.current, points);
45
+ renderClusterer({ yandexMaps, map: map.current, points });
46
46
  });
47
47
  } else if (yandexMaps) {
48
- renderClusterer(yandexMaps, map.current, points);
48
+ renderClusterer({ yandexMaps, map: map.current, points });
49
49
 
50
50
  if (!points?.length) {
51
51
  map.current.setCenter(DEFAULT_CENTER_COORDS);
@@ -4,17 +4,71 @@
4
4
  import type ymaps from 'yandex-maps';
5
5
  import { type BalloonPoints } from '../../components/OfficesAtmsMap/YandexMapProps'; //! Вынести этот тип в файл YandexMapProps.ts расположенный в корне этого компонента
6
6
 
7
- export function renderClusterer(yandexMaps: typeof ymaps, map: ymaps.Map, points: BalloonPoints[]) {
7
+ const MapMarkerClusterIcon = '/icons/MapMarkerClusterIcon.svg';
8
+ const MapMarkerClusterYellowIcon = '/icons/MapMarkerClusterYellowIcon.svg';
9
+
10
+ export function renderClusterer({
11
+ yandexMaps,
12
+ map,
13
+ points,
14
+ }: {
15
+ yandexMaps: typeof ymaps;
16
+ map: ymaps.Map;
17
+ points: BalloonPoints[];
18
+ }) {
8
19
  map.geoObjects.removeAll();
9
20
 
10
21
  const clusterIconContentLayout = yandexMaps.templateLayoutFactory.createClass(
11
22
  '<div style="margin-top: -3px;">{{properties.geoObjects.length}}</div>',
12
23
  );
13
24
 
14
- const clusterer = new yandexMaps.Clusterer({
25
+ const officeClusterer = defineClusterer('offices', yandexMaps, clusterIconContentLayout);
26
+
27
+ if (points.length && points.every((_) => 'type' in _)) {
28
+ const remoteWorkplaceClusterer = defineClusterer(
29
+ 'workplaces',
30
+ yandexMaps,
31
+ clusterIconContentLayout,
32
+ );
33
+
34
+ const remoteWorkplaceGeoObjects = defineGeoObjects(
35
+ points.filter((_) => _.type === 'workplaces'),
36
+ 'workplaces',
37
+ yandexMaps,
38
+ );
39
+
40
+ const officesGeoObjects = defineGeoObjects(
41
+ points.filter((_) => _.type === 'offices'),
42
+ 'offices',
43
+ yandexMaps,
44
+ );
45
+
46
+ officeClusterer.add(officesGeoObjects);
47
+ remoteWorkplaceClusterer.add(remoteWorkplaceGeoObjects);
48
+
49
+ map.geoObjects.add(remoteWorkplaceClusterer as any);
50
+ map.geoObjects.add(officeClusterer as any);
51
+ } else {
52
+ const geoObjects = defineGeoObjects(points, 'offices', yandexMaps);
53
+ officeClusterer.add(geoObjects);
54
+ map.geoObjects.add(officeClusterer as any);
55
+ }
56
+ map.setBounds(yandexMaps.util.bounds.fromPoints(points.map((_) => _.coords))).then(() => {
57
+ if (map.getZoom() > 10) {
58
+ map.setZoom(10);
59
+ }
60
+ });
61
+ }
62
+
63
+ const defineClusterer = (
64
+ type: string,
65
+ yandexMaps: typeof ymaps,
66
+ clusterIconContentLayout: ymaps.IClassConstructor<ymaps.layout.templateBased.Base>,
67
+ ) => {
68
+ return new yandexMaps.Clusterer({
15
69
  clusterIcons: [
16
70
  {
17
- href: '/icons/MapMarkerClusterIcon.svg',
71
+ href: type === 'offices' ? MapMarkerClusterIcon : MapMarkerClusterYellowIcon,
18
72
  size: [78, 84],
19
73
  offset: [-35, -50],
20
74
  },
@@ -23,8 +77,10 @@ export function renderClusterer(yandexMaps: typeof ymaps, map: ymaps.Map, points
23
77
  clusterHideIconOnBalloonOpen: false,
24
78
  geoObjectHideIconOnBalloonOpen: false,
25
79
  } as ymaps.IClustererOptions);
80
+ };
26
81
 
27
- const geoObjects = points.map(
82
+ const defineGeoObjects = (pointArr: BalloonPoints[], type: string, yandexMaps: typeof ymaps) => {
83
+ return pointArr.map(
28
84
  ({ coords, content }) =>
29
85
  new yandexMaps.Placemark(
30
86
  coords,
@@ -36,20 +92,10 @@ export function renderClusterer(yandexMaps: typeof ymaps, map: ymaps.Map, points
36
92
  },
37
93
  {
38
94
  iconLayout: 'default#image',
39
- iconImageHref: '/icons/MapMarkerSingleIcon.svg',
95
+ iconImageHref: type === 'offices' ? MapMarkerClusterIcon : MapMarkerClusterYellowIcon,
40
96
  iconImageSize: [78, 84],
41
97
  iconImageOffset: [-35, -50],
42
98
  },
43
99
  ),
44
100
  );
45
-
46
- clusterer.add(geoObjects);
47
-
48
- map.geoObjects.add(clusterer as any);
49
-
50
- map.setBounds(yandexMaps.util.bounds.fromPoints(points.map((_) => _.coords))).then(() => {
51
- if (map.getZoom() > 10) {
52
- map.setZoom(10);
53
- }
54
- });
55
- }
101
+ };