aa-ledger 1.0.4__py3-none-any.whl → 2.0.0__py3-none-any.whl

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 (280) hide show
  1. {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/METADATA +5 -6
  2. aa_ledger-2.0.0.dist-info/RECORD +267 -0
  3. ledger/__init__.py +2 -2
  4. ledger/admin.py +23 -18
  5. ledger/api/__init__.py +23 -7
  6. ledger/api/{ledger/admin.py → admin.py} +25 -31
  7. ledger/api/alliance.py +755 -0
  8. ledger/api/character.py +786 -0
  9. ledger/api/corporation.py +1141 -0
  10. ledger/api/{helpers.py → helpers/core.py} +33 -33
  11. ledger/api/helpers/icons.py +372 -0
  12. ledger/api/helpers/planetary_helper.py +354 -0
  13. ledger/api/planetary.py +354 -0
  14. ledger/api/schema.py +240 -15
  15. ledger/app_settings.py +11 -27
  16. ledger/auth_hooks.py +2 -2
  17. ledger/constants.py +50 -177
  18. ledger/decorators.py +2 -46
  19. ledger/forms.py +133 -39
  20. ledger/helpers/billboard.py +194 -144
  21. ledger/helpers/cache.py +105 -0
  22. ledger/helpers/discord.py +2 -4
  23. ledger/helpers/eveonline.py +160 -0
  24. ledger/helpers/ledger_data.py +23 -0
  25. ledger/helpers/ref_type.py +53 -78
  26. ledger/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  27. ledger/locale/cs_CZ/LC_MESSAGES/django.po +349 -193
  28. ledger/locale/de/LC_MESSAGES/django.mo +0 -0
  29. ledger/locale/de/LC_MESSAGES/django.po +528 -379
  30. ledger/locale/django.pot +721 -546
  31. ledger/locale/es/LC_MESSAGES/django.mo +0 -0
  32. ledger/locale/es/LC_MESSAGES/django.po +349 -194
  33. ledger/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  34. ledger/locale/fr_FR/LC_MESSAGES/django.po +349 -193
  35. ledger/locale/it_IT/LC_MESSAGES/django.mo +0 -0
  36. ledger/locale/it_IT/LC_MESSAGES/django.po +349 -193
  37. ledger/locale/ja/LC_MESSAGES/django.mo +0 -0
  38. ledger/locale/ja/LC_MESSAGES/django.po +348 -193
  39. ledger/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
  40. ledger/locale/ko_KR/LC_MESSAGES/django.po +349 -193
  41. ledger/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  42. ledger/locale/nl_NL/LC_MESSAGES/django.po +349 -193
  43. ledger/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  44. ledger/locale/pl_PL/LC_MESSAGES/django.po +350 -193
  45. ledger/locale/ru/LC_MESSAGES/django.mo +0 -0
  46. ledger/locale/ru/LC_MESSAGES/django.po +348 -193
  47. ledger/locale/sk/LC_MESSAGES/django.mo +0 -0
  48. ledger/locale/sk/LC_MESSAGES/django.po +348 -193
  49. ledger/locale/uk/LC_MESSAGES/django.mo +0 -0
  50. ledger/locale/uk/LC_MESSAGES/django.po +348 -193
  51. ledger/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  52. ledger/locale/zh_Hans/LC_MESSAGES/django.po +348 -193
  53. ledger/managers/character_audit_manager.py +28 -20
  54. ledger/managers/character_journal_manager.py +185 -357
  55. ledger/managers/character_mining_manager.py +52 -26
  56. ledger/managers/character_planetary_manager.py +178 -136
  57. ledger/managers/corporation_audit_manager.py +36 -27
  58. ledger/managers/corporation_journal_manager.py +92 -56
  59. ledger/managers/general_manager.py +8 -7
  60. ledger/migrations/0018_remove_characterplanet_ledger_char_planet__58a5b6_idx_and_more.py +44 -0
  61. ledger/migrations/0019_rename_characteraudit_characterowner_and_more.py +48 -0
  62. ledger/models/__init__.py +5 -11
  63. ledger/models/characteraudit.py +101 -109
  64. ledger/models/corporationaudit.py +94 -49
  65. ledger/models/general.py +105 -211
  66. ledger/models/helpers/update_manager.py +302 -0
  67. ledger/models/planetary.py +60 -205
  68. ledger/providers.py +101 -0
  69. ledger/static/ledger/css/{ledger.css → aa-ledger.css} +54 -28
  70. ledger/static/ledger/js/aa-ledger.js +124 -0
  71. ledger/static/ledger/js/charts.js +25 -1
  72. ledger/static/ledger/js/view-alliance-ledger.js +383 -0
  73. ledger/static/ledger/js/view-character-ledger.js +388 -0
  74. ledger/static/ledger/js/view-corporation-ledger.js +402 -0
  75. ledger/static/ledger/js/view-planetary.js +492 -0
  76. ledger/static/ledger/libs/amCharts/5.14.4/js/flow.js +2 -0
  77. ledger/static/ledger/libs/amCharts/5.14.4/js/index.js +2 -0
  78. ledger/static/ledger/libs/amCharts/5.14.4/js/percent.js +2 -0
  79. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Animated.js +2 -0
  80. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Dark.js +2 -0
  81. ledger/static/ledger/libs/amCharts/5.14.4/js/xy.js +2 -0
  82. ledger/static/ledger/libs/datatables/2.3.5/css/dataTables.bootstrap5.css +610 -0
  83. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.bootstrap5.js +122 -0
  84. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.js +14127 -0
  85. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.bootstrap5.css +516 -0
  86. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.dataTables.css +529 -0
  87. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/columnControl.bootstrap5.js +73 -0
  88. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/dataTables.columnControl.js +3090 -0
  89. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/css/fixedHeader.bootstrap5.css +20 -0
  90. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/dataTables.fixedHeader.js +1203 -0
  91. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/fixedHeader.bootstrap5.js +59 -0
  92. ledger/tasks.py +157 -141
  93. ledger/templates/ledger/base.html +59 -21
  94. ledger/templates/ledger/bundles/aa-ledger-css.html +3 -0
  95. ledger/templates/ledger/bundles/aa-ledger-js.html +3 -0
  96. ledger/templates/ledger/bundles/view-alliance-ledger-js.html +14 -0
  97. ledger/templates/ledger/bundles/view-character-ledger-js.html +15 -0
  98. ledger/templates/ledger/bundles/view-character-planetary-css.html +3 -0
  99. ledger/templates/ledger/bundles/view-character-planetary-js.html +4 -0
  100. ledger/templates/ledger/bundles/view-corporation-ledger-js.html +15 -0
  101. ledger/templates/ledger/partials/modal/confirm.html +0 -1
  102. ledger/templates/ledger/partials/modal/request-accept-delete-alliance.html +38 -0
  103. ledger/templates/ledger/partials/modal/request-accept-delete-character.html +38 -0
  104. ledger/templates/ledger/partials/modal/request-accept-delete-corporation.html +38 -0
  105. ledger/templates/ledger/partials/modal/request-accept-switch-notification.html +38 -0
  106. ledger/templates/ledger/partials/modal/request-view-alliance-details.html +26 -0
  107. ledger/templates/ledger/partials/modal/request-view-character-details.html +26 -0
  108. ledger/templates/ledger/partials/modal/request-view-corporation-details.html +26 -0
  109. ledger/templates/ledger/partials/modal/request-view-extractor.html +32 -0
  110. ledger/templates/ledger/partials/modal/request-view-factory.html +31 -0
  111. ledger/templates/ledger/partials/{menu → navigation}/administration.html +8 -0
  112. ledger/templates/ledger/partials/{menu → navigation}/navigation.html +2 -2
  113. ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance_corporations.html +3 -3
  114. ledger/templates/ledger/partials/view-alliance-administration/dashboard.html +81 -0
  115. ledger/templates/ledger/partials/view-alliance-ledger/alliance-billboard.html +25 -0
  116. ledger/templates/ledger/partials/view-alliance-ledger/alliance-ledger-details.html +21 -0
  117. ledger/templates/ledger/partials/view-alliance-ledger/alliance-table.html +24 -0
  118. ledger/templates/ledger/partials/view-alliance-ledger/information/daily.html +18 -0
  119. ledger/templates/ledger/partials/view-alliance-ledger/information/hourly.html +18 -0
  120. ledger/templates/ledger/partials/view-alliance-ledger/information/summary.html +19 -0
  121. ledger/templates/ledger/partials/{administration → view-character-administration}/character.html +1 -9
  122. ledger/templates/ledger/partials/{administration → view-character-administration}/dashboard.html +0 -34
  123. ledger/templates/ledger/partials/view-character-ledger/character-billboard.html +25 -0
  124. ledger/templates/ledger/partials/view-character-ledger/character-ledger-details.html +21 -0
  125. ledger/templates/ledger/partials/view-character-ledger/character-table.html +25 -0
  126. ledger/templates/ledger/partials/view-character-ledger/information/daily.html +18 -0
  127. ledger/templates/ledger/partials/view-character-ledger/information/hourly.html +18 -0
  128. ledger/templates/ledger/partials/view-character-ledger/information/summary.html +19 -0
  129. ledger/templates/ledger/partials/view-character-planetary/extractor-table.html +24 -0
  130. ledger/templates/ledger/partials/view-character-planetary/factory-table.html +24 -0
  131. ledger/templates/ledger/partials/view-character-planetary/planetary-table.html +22 -0
  132. ledger/templates/ledger/partials/view-character-planetary/storage-table.html +23 -0
  133. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation.html +5 -13
  134. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation_characters.html +1 -1
  135. ledger/templates/ledger/partials/view-corporation-administration/dashboard.html +81 -0
  136. ledger/templates/ledger/partials/view-corporation-ledger/corporation-billboard.html +25 -0
  137. ledger/templates/ledger/partials/view-corporation-ledger/corporation-ledger-details.html +21 -0
  138. ledger/templates/ledger/partials/view-corporation-ledger/corporation-table.html +26 -0
  139. ledger/templates/ledger/partials/view-corporation-ledger/information/daily.html +18 -0
  140. ledger/templates/ledger/partials/view-corporation-ledger/information/hourly.html +18 -0
  141. ledger/templates/ledger/partials/view-corporation-ledger/information/summary.html +19 -0
  142. ledger/templates/ledger/view-administration.html +62 -0
  143. ledger/templates/ledger/view-alliance-administration.html +49 -0
  144. ledger/templates/ledger/view-alliance-ledger.html +72 -0
  145. ledger/templates/ledger/view-alliance-overview.html +131 -0
  146. ledger/templates/ledger/view-character-administration.html +42 -0
  147. ledger/templates/ledger/view-character-ledger.html +73 -0
  148. ledger/templates/ledger/view-character-overview.html +135 -0
  149. ledger/templates/ledger/view-character-planetary-overview.html +135 -0
  150. ledger/templates/ledger/view-character-planetary.html +73 -0
  151. ledger/templates/ledger/view-corporation-administration.html +42 -0
  152. ledger/templates/ledger/view-corporation-ledger.html +73 -0
  153. ledger/templates/ledger/view-corporation-overview.html +131 -0
  154. ledger/templatetags/ledger.py +3 -5
  155. ledger/tests/__init__.py +187 -0
  156. ledger/tests/test_admin.py +164 -68
  157. ledger/tests/test_auth_hook.py +31 -13
  158. ledger/tests/test_decarators.py +14 -79
  159. ledger/tests/test_discord_installed.py +0 -1
  160. ledger/tests/test_helpers/test_ledger_data.py +19 -0
  161. ledger/tests/test_managers/test_character_audit_manager.py +111 -69
  162. ledger/tests/test_managers/test_character_journal_manager.py +48 -208
  163. ledger/tests/test_managers/test_character_mining_manager.py +37 -16
  164. ledger/tests/test_managers/test_corporation_division_manager.py +66 -28
  165. ledger/tests/test_managers/test_corporation_journal_manager.py +39 -42
  166. ledger/tests/test_managers/test_general_manager.py +78 -18
  167. ledger/tests/test_managers/test_planetary_manager.py +73 -32
  168. ledger/tests/test_models/test_characteraudit.py +58 -74
  169. ledger/tests/test_models/test_characterminingledger.py +20 -26
  170. ledger/tests/test_models/test_characterwalletjournal.py +10 -33
  171. ledger/tests/test_models/test_corporationaudit.py +41 -35
  172. ledger/tests/test_models/test_corporationwalletjournal.py +35 -32
  173. ledger/tests/test_models/test_general.py +44 -11
  174. ledger/tests/test_models/test_planetary.py +14 -80
  175. ledger/tests/test_templatetags.py +2 -7
  176. ledger/tests/test_views/corporation/test_add_corp.py +16 -35
  177. ledger/tests/test_views/corporation/test_delete_corporation.py +66 -42
  178. ledger/tests/test_views/test_access.py +512 -545
  179. ledger/tests/test_views/test_add_ally.py +57 -46
  180. ledger/tests/test_views/test_add_char.py +21 -33
  181. ledger/tests/test_views/test_delete_character.py +24 -21
  182. ledger/tests/testdata/README_ESI_STUB.md +430 -0
  183. ledger/tests/testdata/esi_stub_openapi.py +511 -0
  184. ledger/tests/testdata/integrations/__init__.py +0 -0
  185. ledger/tests/testdata/{load_eveuniverse.py → integrations/eveuniverse.py} +0 -1
  186. ledger/tests/testdata/integrations/planetary.py +13 -0
  187. ledger/tests/testdata/json/factory.json +281 -0
  188. ledger/tests/testdata/json/inactive.json +281 -0
  189. ledger/tests/testdata/json/pins.json +175 -272
  190. ledger/tests/testdata/json/route.json +95 -528
  191. ledger/tests/testdata/test_esi_stub.py +468 -0
  192. ledger/tests/testdata/utils.py +601 -0
  193. ledger/thirdparty/charlink_hook.py +60 -30
  194. ledger/urls.py +0 -135
  195. ledger/views/alliance/add_ally.py +2 -4
  196. ledger/views/alliance/alliance_ledger.py +64 -147
  197. ledger/views/character/add_char.py +8 -10
  198. ledger/views/character/character_ledger.py +60 -126
  199. ledger/views/character/planetary.py +5 -98
  200. ledger/views/corporation/add_corp.py +10 -12
  201. ledger/views/corporation/corporation_ledger.py +65 -327
  202. ledger/views/index.py +92 -30
  203. aa_ledger-1.0.4.dist-info/RECORD +0 -236
  204. ledger/api/api_helper/planetary_helper.py +0 -107
  205. ledger/api/ledger/__init__.py +0 -7
  206. ledger/api/ledger/planetary.py +0 -231
  207. ledger/helpers/alliance.py +0 -317
  208. ledger/helpers/character.py +0 -251
  209. ledger/helpers/core.py +0 -665
  210. ledger/helpers/corporation.py +0 -427
  211. ledger/helpers/data_exporter.py +0 -452
  212. ledger/static/ledger/js/planetary-confirm.js +0 -66
  213. ledger/static/ledger/js/planetary.js +0 -143
  214. ledger/templates/ledger/admin.html +0 -43
  215. ledger/templates/ledger/allyledger/admin/alliance_administration.html +0 -46
  216. ledger/templates/ledger/allyledger/admin/alliance_overview.html +0 -108
  217. ledger/templates/ledger/allyledger/alliance_ledger.html +0 -86
  218. ledger/templates/ledger/bundles/character-ledger-bundles.html +0 -66
  219. ledger/templates/ledger/bundles/corporation-ledger-bundles.html +0 -75
  220. ledger/templates/ledger/bundles/ledger-bundles.html +0 -23
  221. ledger/templates/ledger/bundles/ledger-css.html +0 -3
  222. ledger/templates/ledger/bundles/planetary-bundles.html +0 -50
  223. ledger/templates/ledger/bundles/table-css.html +0 -3
  224. ledger/templates/ledger/charledger/admin/character_administration.html +0 -39
  225. ledger/templates/ledger/charledger/admin/character_overview.html +0 -106
  226. ledger/templates/ledger/charledger/character_ledger.html +0 -94
  227. ledger/templates/ledger/charledger/planetary/admin/planetary_overview.html +0 -123
  228. ledger/templates/ledger/charledger/planetary/planetary_ledger.html +0 -54
  229. ledger/templates/ledger/corpledger/admin/corporation_administration.html +0 -39
  230. ledger/templates/ledger/corpledger/admin/corporation_overview.html +0 -108
  231. ledger/templates/ledger/corpledger/corporation_ledger.html +0 -129
  232. ledger/templates/ledger/data-export.html +0 -78
  233. ledger/templates/ledger/error.html +0 -31
  234. ledger/templates/ledger/partials/form/error-message.html +0 -1
  235. ledger/templates/ledger/partials/information/daily.html +0 -56
  236. ledger/templates/ledger/partials/information/day.html +0 -48
  237. ledger/templates/ledger/partials/information/error.html +0 -8
  238. ledger/templates/ledger/partials/information/hourly.html +0 -53
  239. ledger/templates/ledger/partials/information/summary.html +0 -88
  240. ledger/templates/ledger/partials/information/view_character_content.html +0 -35
  241. ledger/templates/ledger/partials/modal/switchalarm_confirm.html +0 -39
  242. ledger/templates/ledger/partials/modal/view_extractor.html +0 -48
  243. ledger/templates/ledger/partials/modal/view_factory.html +0 -123
  244. ledger/templates/ledger/partials/table/char-ledger.html +0 -85
  245. ledger/templates/ledger/partials/table/corp-ledger.html +0 -66
  246. ledger/templates/ledger/partials/table/planetary.html +0 -18
  247. ledger/templates/ledger/partials/thirdparty/billboard.html +0 -22
  248. ledger/templates/ledger/partials/view/card.html +0 -160
  249. ledger/templates/ledger/permission.html +0 -2
  250. ledger/tests/test_helpers/test_billboard.py +0 -11
  251. ledger/tests/test_helpers/test_data_exporter.py +0 -207
  252. ledger/tests/test_tasks.py +0 -282
  253. ledger/tests/test_view_helpers/test_core.py +0 -47
  254. ledger/tests/test_views/corporation/test_corporation.py +0 -267
  255. ledger/tests/test_views/test_planetary.py +0 -137
  256. ledger/tests/testdata/esi_stub.py +0 -109
  257. ledger/tests/testdata/esi_stub_migration.py +0 -80
  258. ledger/tests/testdata/generate_characteraudit.py +0 -106
  259. ledger/tests/testdata/generate_corporationaudit.py +0 -74
  260. ledger/tests/testdata/generate_events.py +0 -31
  261. ledger/tests/testdata/generate_miningledger.py +0 -13
  262. ledger/tests/testdata/generate_planets.py +0 -48
  263. ledger/tests/testdata/generate_walletjournal.py +0 -42
  264. ledger/tests/testdata/json/czarno-pins.json +0 -240
  265. ledger/tests/testdata/json/czarno-routes.json +0 -165
  266. ledger/tests/testdata/json/pins2.json +0 -538
  267. {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/WHEEL +0 -0
  268. {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/licenses/LICENSE +0 -0
  269. /ledger/{tests/test_view_helpers → api/helpers}/__init__.py +0 -0
  270. /ledger/templates/ledger/bundles/{ally-administration-bundles.html → view-alliance-administration-js.html} +0 -0
  271. /ledger/templates/ledger/bundles/{char-administration-bundles.html → view-character-administration-js.html} +0 -0
  272. /ledger/templates/ledger/bundles/{corp-administration-bundles.html → view-corporation-administration-js.html} +0 -0
  273. /ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance.html +0 -0
  274. /ledger/tests/testdata/{esi.json → esi_test_data.json} +0 -0
  275. /ledger/tests/testdata/{allianceauth.json → integrations/allianceauth.json} +0 -0
  276. /ledger/tests/testdata/{load_allianceauth.py → integrations/allianceauth.py} +0 -0
  277. /ledger/tests/testdata/{eveentity.json → integrations/eveentity.json} +0 -0
  278. /ledger/tests/testdata/{load_eveentity.py → integrations/eveentity.py} +0 -0
  279. /ledger/tests/testdata/{eveuniverse.json → integrations/eveuniverse.json} +0 -0
  280. /ledger/tests/testdata/{planetary.json → integrations/planetary.json} +0 -0
@@ -0,0 +1,492 @@
1
+ /* global aaLedgerSettings, aaLedgerSettingsOverride, _bootstrapTooltip, fetchGet, fetchPost, bootstrap, DataTable, moment */
2
+
3
+ $(document).ready(() => {
4
+ /**
5
+ * Table :: IDs
6
+ */
7
+ const planetaryTable = $('#planets-details');
8
+ const storageTable = $('#storage-table');
9
+ const factoryTable = $('#factory-table');
10
+ const extractorTable = $('#extractors-table');
11
+ /**
12
+ * Modals :: IDs
13
+ */
14
+ const modalRequestViewFactory = $('#ledger-view-planetary-factory');
15
+ const modalRequestViewExtractor = $('#ledger-view-planetary-extractor');
16
+ const modalRequestToggleNotification = $('#ledger-accept-planet-toggle-notification');
17
+
18
+ /**
19
+ * Translation
20
+ */
21
+ const confirmSwitchAlarm = aaLedgerSettings.translations.confirmSwitchAlarm;
22
+ const switchAlarm = aaLedgerSettings.translations.buttonSwitchAlarm;
23
+
24
+ fetchGet({
25
+ url: aaLedgerSettings.url.Planetary,
26
+ })
27
+ .then((data) => {
28
+ if (data) {
29
+ /**
30
+ * Table :: Planetary
31
+ * Initialize DataTable for Planetary Table
32
+ * @type {*|jQuery}
33
+ */
34
+ const planetaryDataTable = new DataTable(planetaryTable, {
35
+ data: data,
36
+ language: aaLedgerSettings.dataTables.language,
37
+ layout: aaLedgerSettings.dataTables.layout,
38
+ ordering: aaLedgerSettings.dataTables.ordering,
39
+ columnControl: aaLedgerSettings.dataTables.columnControl,
40
+ order: [[4, 'desc']],
41
+ columnDefs: [
42
+ {
43
+ orderable: false,
44
+ targets: [3, 5, 6, 8],
45
+ columnControl: [
46
+ {target: 0, content: []},
47
+ {target: 1, content: []}
48
+ ]
49
+ },
50
+ {
51
+ targets: [3],
52
+ width: '20%'
53
+ },
54
+ {
55
+ targets: [2, 5, 8],
56
+ width: '32px'
57
+ }
58
+ ],
59
+ pageLength: 25,
60
+ columns: [
61
+ {
62
+ data: {
63
+ display: (data) => data.owner.icon + ' ' + data.owner.character_name,
64
+ sort: (data) => data.owner.character_name,
65
+ filter: (data) => data.owner.character_name
66
+ }
67
+ },
68
+ {
69
+ data: {
70
+ display: (data) => data.planet.type.icon + ' ' + data.planet.name + data.alarm,
71
+ sort: (data) => data.planet.name,
72
+ filter: (data) => data.planet.name
73
+ }
74
+ },
75
+ {
76
+ data: {
77
+ display: (data) => data.planet.upgrade_level,
78
+ sort: (data) => data.planet.upgrade_level,
79
+ filter: (data) => data.planet.upgrade_level
80
+ }
81
+ },
82
+ {
83
+ data: {
84
+ display: (data) => {
85
+ const items = data.factories.flatMap(f => f.products);
86
+ const icons = Array.from(new Set(items.map(product => product.icon))).join(' ');
87
+ return `${icons} ${data.actions.factory_info_button}`;
88
+ },
89
+ }
90
+ },
91
+ {
92
+ data: 'progress_bar'
93
+ },
94
+ {
95
+ data: {
96
+ display: (data) => data.actions.extractor_info_button,
97
+ }
98
+ },
99
+ {
100
+ data: {
101
+ display: (data) => data.expired,
102
+ sort: (data) => data.expired,
103
+ filter: (data) => data.expired
104
+ }
105
+ },
106
+ {
107
+ data: {
108
+ display: (data) => {
109
+ const date = moment(data.planet.last_update);
110
+ if (!data.planet.last_update || !date.isValid()) {
111
+ return 'N/A';
112
+ }
113
+ return date.fromNow();
114
+ },
115
+ sort: (data) => data.planet.last_update,
116
+ filter: (data) => data.planet.last_update
117
+ }
118
+ },
119
+ {
120
+ data: {
121
+ display: (data) => data.actions.toggle_notification_button,
122
+ }
123
+ }
124
+ ],
125
+ initComplete: function() {
126
+ _bootstrapTooltip({selector: '#planets-details' });
127
+ },
128
+ drawCallback: function () {
129
+ _bootstrapTooltip({selector: '#planets-details' });
130
+ },
131
+ });
132
+ }
133
+ })
134
+ .catch((error) => {
135
+ console.error('Error fetching planetary data:', error);
136
+ });
137
+
138
+ /**
139
+ * Modal:: View Factory Details :: Table :: Storage :: Helper Function :: Load Modal DataTable
140
+ * Load data into Storage DataTable and redraw in View Factory Details Modal
141
+ * @param {Object} tableData Ajax API Response Data
142
+ * @private
143
+ */
144
+ const _loadstorageModalDataTable = (tableData) => {
145
+ const dtStorage = storageTable.DataTable();
146
+ dtStorage.clear().rows.add(tableData).draw();
147
+ };
148
+
149
+ /**
150
+ * Modal:: View Factory Details :: Table :: Storage :: Helper Function :: Clear Modal DataTable
151
+ * Clear data from Storage DataTable and redraw in View Factory Details Modal
152
+ * @private
153
+ */
154
+ const _clearstorageModalDataTable = () => {
155
+ const dtStorage = storageTable.DataTable();
156
+ dtStorage.clear().draw();
157
+ };
158
+
159
+ /**
160
+ * Modal :: View Factory Details :: Table :: Storage Table DataTable
161
+ * Initialize DataTable for View Factory Details Modal :: Storage Table
162
+ * @type {*|jQuery}
163
+ */
164
+ const storageDataTable = new DataTable(storageTable, {
165
+ data: null, // Loaded via API on modal open
166
+ language: aaLedgerSettings.dataTables.language,
167
+ layout: aaLedgerSettings.dataTables.layout,
168
+ ordering: aaLedgerSettings.dataTables.ordering,
169
+ columnControl: aaLedgerSettings.dataTables.columnControl,
170
+ order: [[1, 'desc']],
171
+ columns: [
172
+ {
173
+ data: {
174
+ display: (data) => data.factory_name,
175
+ sort: (data) => data.factory_name,
176
+ filter: (data) => data.factory_name
177
+ }
178
+ },
179
+ {
180
+ data: {
181
+ display: (data) => data.product.icon + ' ' + data.product.item_name,
182
+ sort: (data) => data.product.item_name,
183
+ filter: (data) => data.product.item_name,
184
+ }
185
+ },
186
+ {
187
+ data:
188
+ {
189
+ display: (data) => data.product.item_quantity.toLocaleString(aaLedgerSettings.locale),
190
+ sort: (data) => data.product.item_quantity,
191
+ filter: (data) => data.product.item_quantity,
192
+ }
193
+ },
194
+ ],
195
+ initComplete: function () {
196
+ _bootstrapTooltip({selector: '#storage-table'});
197
+ },
198
+ drawCallback: function () {
199
+ _bootstrapTooltip({selector: '#storage-table'});
200
+ },
201
+ });
202
+
203
+ /**
204
+ * Modal:: View Factory Details :: Table :: Factory :: Helper Function :: Load Modal DataTable
205
+ * Load data into Factory DataTable and redraw in View Factory Details Modal
206
+ * @param {Object} tableData Ajax API Response Data
207
+ * @private
208
+ */
209
+ const _loadfactoryModalDataTable = (tableData) => {
210
+ const dtFactory = factoryTable.DataTable();
211
+ dtFactory.clear().rows.add(tableData.factories).draw();
212
+
213
+ const dtStorage = storageTable.DataTable();
214
+ dtStorage.clear().rows.add(tableData.storage).draw();
215
+ };
216
+
217
+ /**
218
+ * Modal:: View Factory Details :: Table :: Factory :: Helper Function :: Clear Modal DataTable
219
+ * Clear data from Factory DataTable and redraw in View Factory Details Modal
220
+ * @private
221
+ */
222
+ const _clearfactoryModalDataTable = () => {
223
+ const dtFactory = factoryTable.DataTable();
224
+ dtFactory.clear().draw();
225
+
226
+ const dtStorage = storageTable.DataTable();
227
+ dtStorage.clear().draw();
228
+ };
229
+
230
+ /**
231
+ * Modal :: View Factory Details :: Table :: Factory Table DataTable
232
+ * Initialize DataTable for View Factory Details Modal :: Factory Table
233
+ * @type {*|jQuery}
234
+ */
235
+ const factoryDataTable = new DataTable(factoryTable, {
236
+ data: null, // Loaded via API on modal open
237
+ language: aaLedgerSettings.dataTables.language,
238
+ layout: aaLedgerSettings.dataTables.layout,
239
+ ordering: aaLedgerSettings.dataTables.ordering,
240
+ columnControl: aaLedgerSettings.dataTables.columnControl,
241
+ order: [[0, 'desc']],
242
+ columnDefs: [
243
+ {
244
+ orderable: false,
245
+ targets: [1, 3],
246
+ columnControl: [
247
+ {target: 0, content: []},
248
+ {target: 1, content: []}
249
+ ]
250
+ }
251
+ ],
252
+ columns: [
253
+ {
254
+ data: {
255
+ display: (data) => data.factory_name,
256
+ sort: (data) => data.factory_name,
257
+ filter: (data) => data.factory_name
258
+ }
259
+ },
260
+ {
261
+ data: {
262
+ display: (data) => Object.values(data.input_products).map(product => product.icon),
263
+ sort: (data) => Object.values(data.input_products).map(product => product.item_name),
264
+ filter: (data) => Object.values(data.input_products).map(product => product.item_name)
265
+ }
266
+ },
267
+ {
268
+ data:
269
+ {
270
+ display: (data) => data.output_product ? data.output_product.icon + ' ' + data.output_product.item_name : '',
271
+ sort: (data) => data.output_product ? data.output_product.item_name : '',
272
+ filter: (data) => data.output_product ? data.output_product.item_name : ''
273
+ }
274
+ },
275
+ {
276
+ data:
277
+ {
278
+ display: (data) => data.is_active,
279
+ sort: (data) => data.is_active,
280
+ filter: (data) => data.is_active
281
+ }
282
+ },
283
+ ],
284
+ initComplete: function () {
285
+ _bootstrapTooltip({selector: '#factory-table'});
286
+ },
287
+ drawCallback: function () {
288
+ _bootstrapTooltip({selector: '#factory-table'});
289
+ },
290
+ });
291
+
292
+ /**
293
+ * Modal :: Factory :: Info Button Click Handler
294
+ * @const {_loadfactoryModalDataTable} :: Load Factory Data into Factory DataTable in the Factory Modal
295
+ * @const {_clearfactoryModalDataTable} :: Clear related DataTable on Close
296
+ * When opening, fetch data from the API Endpoint defined in the button's data-action attribute
297
+ * and load it into the Factory DataTable related to the Factory Modal
298
+ */
299
+ modalRequestViewFactory.on('show.bs.modal', (event) => {
300
+ const button = $(event.relatedTarget);
301
+ const url = button.data('action');
302
+
303
+ // guard clause for previous Modal reload function
304
+ if (!url) {
305
+ return;
306
+ }
307
+
308
+ fetchGet({
309
+ url: url,
310
+ })
311
+ .then((data) => {
312
+ if (data) {
313
+ _loadfactoryModalDataTable(data);
314
+ }
315
+ })
316
+ .catch((error) => {
317
+ console.error('Error fetching Factory Modal:', error);
318
+ });
319
+ })
320
+ .on('hide.bs.modal', () => {
321
+ _clearfactoryModalDataTable();
322
+ });
323
+
324
+ /**
325
+ * Modal :: View Extractor Details :: Table :: Extractors Table DataTable
326
+ * Initialize DataTable for View Extractor Details Modal :: Extractors Table
327
+ * @type {*|jQuery}
328
+ */
329
+ const extractorDataTable = new DataTable(extractorTable, {
330
+ data: null, // Loaded via API on modal open
331
+ language: aaLedgerSettings.dataTables.language,
332
+ layout: aaLedgerSettings.dataTables.layout,
333
+ ordering: aaLedgerSettings.dataTables.ordering,
334
+ columnControl: aaLedgerSettings.dataTables.columnControl,
335
+ order: [[0, 'desc']],
336
+ columns: [
337
+ {
338
+ data: {
339
+ display: (data) => data.icon + ' ' + data.item_name,
340
+ sort: (data) => data.item_name,
341
+ filter: (data) => data.item_name
342
+ }
343
+ },
344
+ {
345
+ data: {
346
+ display: (data) => {
347
+ const date = moment(data.install_time);
348
+ if (!data.install_time || !date.isValid()) {
349
+ return 'N/A';
350
+ }
351
+ return date.fromNow();
352
+ },
353
+ sort: (data) => data.install_time,
354
+ filter: (data) => data.install_time
355
+ }
356
+ },
357
+ {
358
+ data:
359
+ {
360
+ display: (data) => {
361
+ const date = moment(data.expiry_time);
362
+ if (!data.expiry_time || !date.isValid()) {
363
+ return 'N/A';
364
+ }
365
+ return date.fromNow();
366
+ },
367
+ sort: (data) => data.expiry_time,
368
+ filter: (data) => data.expiry_time
369
+ }
370
+ },
371
+ {
372
+ data:
373
+ {
374
+ display: (data) => data.progress.html,
375
+ sort: (data) => data.progress.percentage,
376
+ filter: (data) => data.progress.percentage
377
+ }
378
+ },
379
+ ],
380
+ initComplete: function () {
381
+ _bootstrapTooltip({selector: '#extractors-table'});
382
+ },
383
+ drawCallback: function () {
384
+ _bootstrapTooltip({selector: '#extractors-table'});
385
+ },
386
+ });
387
+
388
+ /**
389
+ * Modal:: View Extractor Details :: Table :: Extractor :: Helper Function :: Load Modal DataTable
390
+ * Load data into Extractor DataTable and redraw in View Extractor Details Modal
391
+ * @param {Object} tableData Ajax API Response Data
392
+ * @private
393
+ */
394
+ const _loadextractorModalDataTable = (tableData) => {
395
+ const dtExtractor = extractorTable.DataTable();
396
+ dtExtractor.clear().rows.add(tableData.extractors).draw();
397
+ };
398
+
399
+ /**
400
+ * Modal:: View Extractor Details :: Table :: Extractor :: Helper Function :: Clear Modal DataTable
401
+ * Clear data from Extractor DataTable and redraw in View Extractor Details Modal
402
+ * @private
403
+ */
404
+ const _clearextractorModalDataTable = () => {
405
+ const dtExtractor = extractorTable.DataTable();
406
+ dtExtractor.clear().draw();
407
+ };
408
+
409
+ /**
410
+ * Modal :: Extractor :: Info Button Click Handler
411
+ * @const {_loadextractorModalDataTable} :: Load Extractor Data into Extractor DataTable in the Extractor Modal
412
+ * @const {_clearextractorModalDataTable} :: Clear related DataTable on Close
413
+ * When opening, fetch data from the API Endpoint defined in the button's data-action attribute
414
+ * and load it into the Extractor DataTable related to the Extractor Modal
415
+ */
416
+ modalRequestViewExtractor.on('show.bs.modal', (event) => {
417
+ const button = $(event.relatedTarget);
418
+ const url = button.data('action');
419
+
420
+ // guard clause for previous Modal reload function
421
+ if (!url) {
422
+ return;
423
+ }
424
+
425
+ fetchGet({
426
+ url: url,
427
+ })
428
+ .then((data) => {
429
+ if (data) {
430
+ _loadextractorModalDataTable(data);
431
+ }
432
+ })
433
+ .catch((error) => {
434
+ console.error('Error fetching Extractor Modal:', error);
435
+ });
436
+ })
437
+ .on('hide.bs.modal', () => {
438
+ _clearextractorModalDataTable();
439
+ });
440
+
441
+ /**
442
+ * Table :: Planetary :: Reload DataTable
443
+ * Reload the Planetary DataTable with new data
444
+ * @param {Array} newData - New data to load into the DataTable
445
+ * @returns {void}
446
+ */
447
+ function _reloadPlanetaryDataTable(newData) {
448
+ const dtPlanetary = planetaryTable.DataTable();
449
+ dtPlanetary.clear().rows.add(newData).draw();
450
+ }
451
+
452
+ /**
453
+ * Table :: Planetary :: Toggle Notification Button Click Handler
454
+ * Open Confirm Toggle Notification Modal
455
+ * On Confirmation send a request to the API Endpoint and close the modal
456
+ */
457
+ modalRequestToggleNotification.on('show.bs.modal', (event) => {
458
+ const button = $(event.relatedTarget);
459
+ const url = button.data('action');
460
+ const form = modalRequestToggleNotification.find('form');
461
+ const csrfMiddlewareToken = form.find('input[name="csrfmiddlewaretoken"]').val();
462
+
463
+ modalRequestToggleNotification.find('#modal-button-confirm-accept-request').on('click', () => {
464
+ fetchPost({
465
+ url: url,
466
+ csrfToken: csrfMiddlewareToken,
467
+ })
468
+ .then((data) => {
469
+ if (data.success === true) {
470
+ fetchGet({
471
+ url: aaLedgerSettings.url.Planetary,
472
+ })
473
+ .then((newData) => {
474
+ if (newData) {
475
+ _reloadPlanetaryDataTable(newData);
476
+ }
477
+ })
478
+ .catch((error) => {
479
+ console.error('Error fetching planetary data:', error);
480
+ });
481
+ modalRequestToggleNotification.modal('hide');
482
+ }
483
+ })
484
+ .catch((error) => {
485
+ console.error(`Error posting switch notification request: ${error.message}`);
486
+ });
487
+ });
488
+ })
489
+ .on('hide.bs.modal', () => {
490
+ modalRequestToggleNotification.find('#modal-button-confirm-accept-request').unbind('click');
491
+ });
492
+ });
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_am5=self.webpackChunk_am5||[]).push([[1239],{2924:function(e,t,n){n.r(t),n.d(t,{ArcDiagram:function(){return We},ArcDiagramLink:function(){return Fe},ArcDiagramNodes:function(){return Ge},Chord:function(){return ae},ChordDirected:function(){return oe},ChordLink:function(){return ie},ChordLinkDirected:function(){return re},ChordNodes:function(){return ee},ChordNonRibbon:function(){return le},DefaultTheme:function(){return u},Flow:function(){return p},FlowLink:function(){return ne},FlowNode:function(){return q},FlowNodes:function(){return Z},Sankey:function(){return Re},SankeyLink:function(){return he},SankeyNodes:function(){return ue}});var i=n(7582),s=n(3409),a=n(6245),r=n(2754),o=n(3783),l=n(5071),c=n(9395);class u extends s.Q{setupDefaultRules(){super.setupDefaultRules();const e=this._root.interfaceColors,t=this.rule.bind(this);t("Flow").setAll({width:a.AQ,height:a.AQ,paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,hiddenSize:.05,minSize:0,minHiddenValue:0}),t("FlowNodes").setAll({colors:r.U.new(this._root,{}),legendLabelText:"{name}",legendValueText:"{sumOutgoing.formatNumber('#.#')}"}),t("FlowNode").setAll({setStateOnChildren:!0,cursorOverStyle:"pointer",toggleKey:"disabled"}),t("FlowNode").states.create("disabled",{}),t("FlowNode",["unknown"]).setAll({draggable:!1,opacity:0}),t("Label",["flow"]).states.create("disabled",{fill:e.get("disabled")}),t("RadialLabel",["flow","node"]).setAll({text:"{name}",populateText:!0}),t("FlowLink").setAll({fillStyle:"gradient",strokeStyle:"gradient"}),t("FlowLink",["source","unknown"]).setAll({}),t("FlowLink",["target","unknown"]).setAll({}),t("FlowNode").events.on("pointerover",(e=>{const t=e.target.dataItem;if(t){const e=t.get("outgoingLinks");e&&l.each(e,(e=>{const t=e.get("link");t.hover(),t.hideTooltip()}));const n=t.get("incomingLinks");n&&l.each(n,(e=>{const t=e.get("link");t.hover(),t.hideTooltip()}))}let n=t.get("slice")||t.get("rectangle");n&&n.get("tooltipText")&&n.showTooltip()})),t("FlowNode").events.on("pointerout",(e=>{const t=e.target.dataItem;if(t){const e=t.get("outgoingLinks");e&&l.each(e,(e=>{e.get("link").unhover()}));const n=t.get("incomingLinks");n&&l.each(n,(e=>{e.get("link").unhover()}))}})),t("Sankey").setAll({orientation:"horizontal",nodeAlign:"justify",linkTension:.5,nodePadding:10,nodeWidth:10}),t("RoundedRectangle",["sankey","node","shape"]).setAll({cornerRadiusTL:0,cornerRadiusBL:0,cornerRadiusTR:0,cornerRadiusBR:0}),t("RoundedRectangle",["shape"]).states.create("disabled",{fill:e.get("disabled")}),t("SankeyLink").setAll({controlPointDistance:.2}),t("FlowNode",["sankey"]).setAll({draggable:!0});{const n=t("Graphics",["sankey","link"]);n.setAll({fillOpacity:.2,strokeOpacity:0,interactive:!0,tooltipText:"{sourceId} - {targetId}: {value}"}),(0,o.v)(n,"fill",e,"grid")}t("Graphics",["sankey","link"]).states.create("hover",{fillOpacity:.5}),t("Label",["sankey","node"]).setAll({text:"{name}",populateText:!0}),t("Label",["sankey","horizontal"]).setAll({y:a.CI,centerY:a.CI,paddingLeft:15}),t("Label",["sankey","vertical"]).setAll({x:a.CI,centerX:a.CI,paddingTop:15}),t("Chord").setAll({radius:(0,a.aQ)(90),nodeWidth:10,padAngle:1,startAngle:0,sort:"none"}),t("ChordDirected").setAll({linkHeadRadius:10}),t("ChordNodes").setAll({x:a.CI,y:a.CI}),t("FlowNode",["chord"]).setAll({draggable:!0}),t("ChordLink").setAll({sourceRadius:a.AQ,targetRadius:a.AQ,fillStyle:"solid",strokeStyle:"solid",tooltipText:"{sourceId} - {targetId}: {value}"}),t("Slice",["chord","node","shape"]).setAll({cornerRadius:0}),t("Slice",["shape"]).states.create("disabled",{fill:e.get("disabled")}),t("RadialLabel",["chord","node"]).setAll({radius:5,textType:"circular"}),t("ChordLinkDirected").setAll({headRadius:10});{const n=t("Graphics",["chord","link","shape"]);n.setAll({fillOpacity:.2,strokeOpacity:0,interactive:!0}),(0,o.v)(n,"fill",e,"grid"),(0,o.v)(n,"stroke",e,"grid")}t("Graphics",["chord","link","shape"]).states.create("hover",{fillOpacity:.5}),t("ChordNonRibbon").setAll({linkType:"curve"}),t("ChordLink",["basic"]).setAll({fillStyle:"none",strokeStyle:"source"}),t("Graphics",["chord","link","shape","basic"]).setAll({strokeOpacity:.4}),t("Graphics",["chord","link","shape","basic"]).states.create("hover",{strokeWidth:2,strokeOpacity:1}),t("ArcDiagram").setAll({orientation:"horizontal",nodePadding:5,minRadius:5,radiusKey:"sum",animationEasing:c.out(c.cubic)}),t("ArcDiagramNodes",["horizontal"]).setAll({y:a.AQ,centerY:a.AQ}),t("ArcDiagramNodes",["vertical"]).setAll({centerX:0}),t("Circle",["arcdiagram","node","shape"]).setAll({tooltipText:"{name}: {sum}"}),t("Circle",["arcdiagram","node","shape"]).states.create("disabled",{fill:e.get("disabled")});{const n=t("ArcDiagramLink",["link","shape"]);n.setAll({strokeOpacity:.15,strokeStyle:"solid",fillStyle:"none",isMeasured:!1}),(0,o.v)(n,"stroke",e,"grid")}t("ArcDiagramLink",["link","shape"]).states.create("hover",{strokeOpacity:1}),t("Label",["arcdiagram","node"]).setAll({text:"{name}",populateText:!0}),t("Label",["arcdiagram","horizontal"]).setAll({y:0,centerY:a.CI,centerX:a.AQ,rotation:-90}),t("Label",["arcdiagram","vertical"]).setAll({centerY:a.CI,centerX:a.AQ,paddingRight:15})}}var h=n(3399),d=n(8777),g=n(1747),f=n(5040);class p extends h.F{constructor(){super(...arguments),Object.defineProperty(this,"linksContainer",{enumerable:!0,configurable:!0,writable:!0,value:this.children.push(d.W.new(this._root,{}))}),Object.defineProperty(this,"_nodesData",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"_linksData",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"_index",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_nodesDataSet",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"_linksByIndex",{enumerable:!0,configurable:!0,writable:!0,value:{}})}_afterNew(){this._defaultThemes.push(u.new(this._root)),this.fields.push("disabled","sourceId","targetId"),this.nodes&&(this.nodes.flow=this),super._afterNew(),this.children.push(this.bulletsContainer)}processDataItem(e){super.processDataItem(e);const t=this.nodes;if(t){let n=!1,i=e.get("sourceId"),s=t.getDataItemById(i);s||(null==i&&(i="undefined"+this._index,this._index++,n=!0),t.data.push({id:i,unknown:n}),s=t.getDataItemById(i),n||s.set("name",i)),n=!1;let a=e.get("targetId"),r=t.getDataItemById(a);r||(null==a&&(a="undefined"+this._index,this._index++,n=!0),t.data.push({id:a,unknown:n}),r=t.getDataItemById(a),n||r.set("name",a)),s&&(e.set("source",s),t.addOutgoingLink(s,e)),r&&(e.set("target",r),t.addincomingLink(r,e)),e.set("link",this.makeLink(e));const o=this.nodes.dataItems.indexOf(s),l=this.nodes.dataItems.indexOf(r);this._linksByIndex[o+"_"+l]=e,s.get("unknown")&&(r&&s.set("fill",r.get("fill")),e.get("link").set("fillStyle","gradient")),r.get("unknown")&&(s&&r.set("fill",s.get("fill")),e.get("link").set("fillStyle","gradient")),this._updateLinkColor(e)}}_onDataClear(){this.nodes._userDataSet||(this.nodes.data.setAll([]),this.nodes._userDataSet=!1)}_prepareChildren(){super._prepareChildren();let e=1/0,t=-1/0,n=0;if(this._valuesDirty){this._nodesData=[];const i=this.nodes;i&&l.each(i.dataItems,(e=>{const t=e.get("d3SankeyNode");this._nodesData.push(t);const n=e.get("incomingLinks");let s=0,a=0;n&&l.each(n,(e=>{const t=e.get("value"),n=e.get("valueWorking");s+=t,a+=n})),e.set("sumIncoming",s),e.set("sumIncomingWorking",a);const r=e.get("outgoingLinks");let o=0,c=0;r&&l.each(r,(e=>{const t=e.get("value"),n=e.get("valueWorking");o+=t,c+=n})),e.set("sumOutgoing",o),e.set("sumOutgoingWorking",c),e.set("sum",s+o),e.set("sumWorking",a+c),i.updateLegendValue(e)})),this._linksData=[],l.each(this.dataItems,(i=>{let s=i.get("value");f.isNumber(s)&&(s<e&&(e=s),s>t&&(t=s),n+=s)})),l.each(this.dataItems,(e=>{let t=e.get("value");if(f.isNumber(t)){let t=e.get("valueWorking"),i=this.get("minSize",0);i>0&&t<i*n&&(t=i*n);let s={source:e.get("source").get("d3SankeyNode"),target:e.get("target").get("d3SankeyNode"),value:t};e.setRaw("d3SankeyLink",s),this._linksData.push(s),this.updateLegendValue(e)}})),this.setPrivateRaw("valueHigh",t),this.setPrivateRaw("valueLow",e),this.setPrivateRaw("valueSum",n)}}_updateLinkColor(e){const t=e.get("link"),n=t.get("fillStyle"),i=t.get("strokeStyle"),s=e.get("source"),a=e.get("target"),r=s.get("fill"),o=a.get("fill");switch(t.remove("fillGradient"),t.remove("strokeGradient"),n){case"solid":t._applyTemplates();break;case"source":t.set("fill",r);break;case"target":t.set("fill",o);break;case"gradient":let e=t._fillGradient;e||(e=g.o.new(this._root,{}));const n={color:r};s.get("unknown")&&(n.opacity=0);const i={color:o};a.get("unknown")&&(i.opacity=0),e.set("stops",[n,i]),t._fillGradient=e,t.set("fillGradient",e);break;case"none":t.set("fill",void 0)}switch(i){case"solid":t._applyTemplates();break;case"source":t.set("stroke",r);break;case"target":t.set("stroke",o);break;case"gradient":let e=t._strokeGradient;if(!e){e=g.o.new(this._root,{});const n={color:r};s.get("unknown")&&(n.opacity=0);const i={color:o};a.get("unknown")&&(i.opacity=0),e.set("stops",[n,i]),t._strokeGradient=e}t.set("strokeGradient",e);break;case"none":t.remove("stroke")}}disposeDataItem(e){super.disposeDataItem(e);let t=e.get("link");t&&(this.links.removeValue(t),t.dispose())}hideDataItem(e,t){const n=Object.create(null,{hideDataItem:{get:()=>super.hideDataItem}});return(0,i.mG)(this,void 0,void 0,(function*(){const i=[n.hideDataItem.call(this,e,t)],s=this.states.create("hidden",{}),a="stateAnimationDuration",r="stateAnimationEasing";f.isNumber(t)||(t=s.get(a,this.get(a,0)));const o=s.get(r,this.get(r));i.push(e.animate({key:"valueWorking",to:Math.max(this.get("minHiddenValue",0),this.get("hiddenSize",0)*e.get("value")),duration:t,easing:o}).waitForStop()),e.get("link").hide(),yield Promise.all(i)}))}showDataItem(e,t){const n=Object.create(null,{showDataItem:{get:()=>super.showDataItem}});return(0,i.mG)(this,void 0,void 0,(function*(){const i=[n.showDataItem.call(this,e,t)];f.isNumber(t)||(t=this.get("stateAnimationDuration",0));const s=this.get("stateAnimationEasing");i.push(e.animate({key:"valueWorking",to:e.get("value"),duration:t,easing:s}).waitForStop()),e.get("link").show(),yield Promise.all(i)}))}_positionBullet(e){const t=e.get("sprite");if(t){const n=t.dataItem;if(n){const t=n.get("link"),i=e.get("sprite");if(i){const n=t.getPoint(this._getBulletLocation(e));i.setAll({x:n.x,y:n.y}),e.get("autoRotate")&&i.set("rotation",n.angle+e.get("autoRotateAngle",0))}}}}_getBulletLocation(e){return e.get("locationY",0)}}Object.defineProperty(p,"className",{enumerable:!0,configurable:!0,writable:!0,value:"Flow"}),Object.defineProperty(p,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:h.F.classNames.concat([p.className])});var m=Math.abs,b=Math.cos,y=Math.sin,k=Math.PI,_=k/2,w=2*k,v=Math.max,x=1e-12;function D(e,t){return Array.from({length:t-e},((t,n)=>e+n))}function A(e,t){var n=0,i=null,s=null,a=null;function r(r){var o,l=r.length,c=new Array(l),u=D(0,l),h=new Array(l*l),d=new Array(l),g=0;r=Float64Array.from({length:l*l},t?(e,t)=>r[t%l][t/l|0]:(e,t)=>r[t/l|0][t%l]);for(let t=0;t<l;++t){let n=0;for(let i=0;i<l;++i)n+=r[t*l+i]+e*r[i*l+t];g+=c[t]=n}o=(g=v(0,w-n*l)/g)?n:w/l;{let t=0;i&&u.sort(((e,t)=>i(c[e],c[t])));for(const n of u){const i=t;if(e){const e=D(1+~l,l).filter((e=>e<0?r[~e*l+n]:r[n*l+e]));s&&e.sort(((e,t)=>s(e<0?-r[~e*l+n]:r[n*l+e],t<0?-r[~t*l+n]:r[n*l+t])));for(const i of e)i<0?(h[~i*l+n]||(h[~i*l+n]={source:null,target:null})).target={index:n,startAngle:t,endAngle:t+=r[~i*l+n]*g,value:r[~i*l+n]}:(h[n*l+i]||(h[n*l+i]={source:null,target:null})).source={index:n,startAngle:t,endAngle:t+=r[n*l+i]*g,value:r[n*l+i]};d[n]={index:n,startAngle:i,endAngle:t,value:c[n]}}else{const e=D(0,l).filter((e=>r[n*l+e]||r[e*l+n]));s&&e.sort(((e,t)=>s(r[n*l+e],r[n*l+t])));for(const i of e){let e;if(n<i?(e=h[n*l+i]||(h[n*l+i]={source:null,target:null}),e.source={index:n,startAngle:t,endAngle:t+=r[n*l+i]*g,value:r[n*l+i]}):(e=h[i*l+n]||(h[i*l+n]={source:null,target:null}),e.target={index:n,startAngle:t,endAngle:t+=r[n*l+i]*g,value:r[n*l+i]},n===i&&(e.source=e.target)),e.source&&e.target&&e.source.value<e.target.value){const t=e.source;e.source=e.target,e.target=t}}d[n]={index:n,startAngle:i,endAngle:t,value:c[n]}}t+=o}}return(h=Object.values(h)).groups=d,a?h.sort(a):h}return r.padAngle=function(e){return arguments.length?(n=v(0,e),r):n},r.sortGroups=function(e){return arguments.length?(i=e,r):i},r.sortSubgroups=function(e){return arguments.length?(s=e,r):s},r.sortChords=function(e){return arguments.length?(null==e?a=null:(t=e,a=function(e,n){return t(e.source.value+e.target.value,n.source.value+n.target.value)})._=e,r):a&&a._;var t},r}var P=n(5493),N=Array.prototype.slice;function I(e){return function(){return e}}function L(e){return e.source}function O(e){return e.target}function j(e){return e.radius}function S(e){return e.startAngle}function C(e){return e.endAngle}function T(){return 0}function R(){return 10}function M(e){var t=L,n=O,i=j,s=j,a=S,r=C,o=T,l=null;function c(){var c,u=t.apply(this,arguments),h=n.apply(this,arguments),d=o.apply(this,arguments)/2,g=N.call(arguments),f=+i.apply(this,(g[0]=u,g)),p=a.apply(this,g)-_,k=r.apply(this,g)-_,w=+s.apply(this,(g[0]=h,g)),v=a.apply(this,g)-_,D=r.apply(this,g)-_;if(l||(l=c=(0,P.ET)()),d>x&&(m(k-p)>2*d+x?k>p?(p+=d,k-=d):(p-=d,k+=d):p=k=(p+k)/2,m(D-v)>2*d+x?D>v?(v+=d,D-=d):(v-=d,D+=d):v=D=(v+D)/2),l.moveTo(f*b(p),f*y(p)),l.arc(0,0,f,p,k),p!==v||k!==D)if(e){var A=w-+e.apply(this,arguments),I=(v+D)/2;l.quadraticCurveTo(0,0,A*b(v),A*y(v)),l.lineTo(w*b(I),w*y(I)),l.lineTo(A*b(D),A*y(D))}else l.quadraticCurveTo(0,0,w*b(v),w*y(v)),l.arc(0,0,w,v,D);if(l.quadraticCurveTo(0,0,f*b(p),f*y(p)),l.closePath(),c)return l=null,c+""||null}return e&&(c.headRadius=function(t){return arguments.length?(e="function"==typeof t?t:I(+t),c):e}),c.radius=function(e){return arguments.length?(i=s="function"==typeof e?e:I(+e),c):i},c.sourceRadius=function(e){return arguments.length?(i="function"==typeof e?e:I(+e),c):i},c.targetRadius=function(e){return arguments.length?(s="function"==typeof e?e:I(+e),c):s},c.startAngle=function(e){return arguments.length?(a="function"==typeof e?e:I(+e),c):a},c.endAngle=function(e){return arguments.length?(r="function"==typeof e?e:I(+e),c):r},c.padAngle=function(e){return arguments.length?(o="function"==typeof e?e:I(+e),c):o},c.source=function(e){return arguments.length?(t=e,c):t},c.target=function(e){return arguments.length?(n=e,c):n},c.context=function(e){return arguments.length?(l=null==e?null:e,c):l},c}function G(){return M()}function F(){return M(R)}function W(e,t){return null==e||null==t?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Y(e,t){return null==e||null==t?NaN:t<e?-1:t>e?1:t>=e?0:NaN}n(7896);const{abs:z,max:B,min:V}=Math;function E(e){return{type:e}}function Q(e,t,n){this.k=e,this.x=t,this.y=n}["w","e"].map(E),["n","s"].map(E),["n","w","e","s","nw","ne","sw","se"].map(E),Q.prototype={constructor:Q,scale:function(e){return 1===e?this:new Q(this.k*e,this.x,this.y)},translate:function(e,t){return 0===e&0===t?this:new Q(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}},new Q(1,0,0),Q.prototype;var X=n(5769),H=n(7144),K=n(962);class q extends d.W{constructor(){super(...arguments),Object.defineProperty(this,"series",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}}Object.defineProperty(q,"className",{enumerable:!0,configurable:!0,writable:!0,value:"FlowNode"}),Object.defineProperty(q,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:d.W.classNames.concat([q.className])});class Z extends h.F{constructor(){super(...arguments),Object.defineProperty(this,"labels",{enumerable:!0,configurable:!0,writable:!0,value:this.addDisposer(new H.o(X.YS.new({}),(()=>K._._new(this._root,{themeTags:["flow"]},[this.labels.template]))))}),Object.defineProperty(this,"nodes",{enumerable:!0,configurable:!0,writable:!0,value:this.addDisposer(new H.o(X.YS.new({}),(()=>q._new(this._root,{themeTags:["node"]},[this.nodes.template]))))}),Object.defineProperty(this,"_userDataSet",{enumerable:!0,configurable:!0,writable:!0,value:!1})}_afterNew(){this.fields.push("unknown","name","fill"),this.set("idField","id"),this.set("nameField","id"),this.set("fillField","fill"),this.set("unknownField","unknown"),this.children.push(this.bulletsContainer),super._afterNew()}_onDataClear(){const e=this.get("colors");e&&e.reset();const t=this.get("patterns");t&&t.reset(),this._userDataSet=!0}processDataItem(e){if(super.processDataItem(e),e.setRaw("d3SankeyNode",{name:e.get("id"),dataItem:e}),null==e.get("fill")){let t=this.get("colors");t&&e.setRaw("fill",t.next())}if(null==e.get("fillPattern")){let t=this.get("patterns");t&&e.setRaw("fillPattern",t.next())}const t=this.makeNode(e);e.setRaw("node",t);const n=this.get("disabledField");if(n){const t=e.dataContext;t&&t[n]&&this.root.events.once("frameended",(()=>{this.disableDataItem(e,0)}))}}makeNode(e,t){const n=this.nodes.make();return this.nodes.push(n),t&&n.addTag(t),e.get("unknown")&&n.addTag("unknown"),this.children.push(n),n._setDataItem(e),n.series=this,n.events.on("click",(e=>{const t=e.target;if("disabled"==t.get("toggleKey")){const e=t.dataItem;e&&(e.isHidden()?this.enableDataItem(e):this.disableDataItem(e))}})),e.on("fill",(()=>{this._updateNodeColor(e)})),e.on("fillPattern",(()=>{this._updateNodeColor(e)})),e.set("node",n),n}_updateNodeColor(e){}disposeDataItem(e){super.disposeDataItem(e);let t=e.get("node");t&&(this.nodes.removeValue(t),t.dispose());let n=e.get("label");n&&(this.labels.removeValue(n),n.dispose())}addincomingLink(e,t){let n=e.get("incomingLinks");n||(n=[],e.set("incomingLinks",n)),n.push(t)}addOutgoingLink(e,t){let n=e.get("outgoingLinks");n||(n=[],e.set("outgoingLinks",n)),n.push(t)}showDataItem(e,t){const n=Object.create(null,{showDataItem:{get:()=>super.showDataItem}});return(0,i.mG)(this,void 0,void 0,(function*(){const i=[n.showDataItem.call(this,e,t)],s=this.flow;if(s){const n=e.get("node");n&&n.show();let i=e.get("label");i&&i.show(t);let a=e.get("outgoingLinks");a&&l.each(a,(e=>{s.showDataItem(e,t)})),a=e.get("incomingLinks"),a&&l.each(a,(e=>{s.showDataItem(e,t)}))}yield i}))}hideDataItem(e,t){const n=Object.create(null,{hideDataItem:{get:()=>super.hideDataItem}});return(0,i.mG)(this,void 0,void 0,(function*(){const i=[n.hideDataItem.call(this,e,t)],s=this.flow;if(s){const n=e.get("node");n&&n.hide();let i=e.get("label");i&&i.hide(t);let a=e.get("outgoingLinks");a&&l.each(a,(e=>{s.hideDataItem(e,t)})),a=e.get("incomingLinks"),a&&l.each(a,(e=>{s.hideDataItem(e,t)}))}yield i}))}enableDataItem(e,t){const n=Object.create(null,{showDataItem:{get:()=>super.showDataItem}});return(0,i.mG)(this,void 0,void 0,(function*(){const i=[n.showDataItem.call(this,e,t)],s=this.flow;if(s){const n=e.get("node");n&&this.root.events.once("frameended",(()=>{n.set("disabled",!1)}));let i=e.get("label");i&&i.set("disabled",!1);let a=e.get("outgoingLinks");a&&l.each(a,(e=>{s.showDataItem(e,t)})),a=e.get("incomingLinks"),a&&l.each(a,(e=>{s.showDataItem(e,t)}))}yield i}))}disableDataItem(e,t){const n=Object.create(null,{hideDataItem:{get:()=>super.hideDataItem}});return(0,i.mG)(this,void 0,void 0,(function*(){const i=[n.hideDataItem.call(this,e,t)],s=this.flow;if(s){const n=e.get("node");n&&this.root.events.once("frameended",(()=>{n.set("disabled",!0)}));let i=e.get("label");i&&i.set("disabled",!0);let a=e.get("outgoingLinks");a&&l.each(a,(e=>{s.hideDataItem(e,t)})),a=e.get("incomingLinks"),a&&l.each(a,(e=>{s.hideDataItem(e,t)}))}yield i}))}}Object.defineProperty(Z,"className",{enumerable:!0,configurable:!0,writable:!0,value:"FlowNodes"}),Object.defineProperty(Z,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:h.F.classNames.concat([Z.className])});var $=n(5863),U=n(815),J=n(751);class ee extends Z{constructor(){super(...arguments),Object.defineProperty(this,"labels",{enumerable:!0,configurable:!0,writable:!0,value:this.addDisposer(new H.o(X.YS.new({}),(()=>U.x._new(this._root,{},[this.labels.template]))))}),Object.defineProperty(this,"flow",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_dAngle",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"slices",{enumerable:!0,configurable:!0,writable:!0,value:this.addDisposer(new H.o(X.YS.new({}),(()=>$.p._new(this._root,{themeTags:["shape"]},[this.slices.template]))))}),Object.defineProperty(this,"rectangles",{enumerable:!0,configurable:!0,writable:!0,value:this.slices})}makeNode(e){const t=super.makeNode(e,"chord"),n=t.children.insertIndex(0,this.slices.make());e.set("slice",n),n._setSoft("fill",e.get("fill")),n._setSoft("fillPattern",e.get("fillPattern"));const i=this.labels.make();return this.labels.push(i),i.addTag("flow"),i.addTag("chord"),i.addTag("node"),t.children.push(i),e.set("label",i),t.events.on("dragstart",(e=>{let t=this.toLocal(e.point);const n=J.getAngle({x:0,y:0},t);this.flow&&(this._dAngle=this.flow.get("startAngle",0)-n)})),t.events.on("dragged",(e=>{let n=this.toLocal(e.point);const i=J.getAngle({x:0,y:0},n);t.setAll({x:0,y:0}),this.flow&&this.flow.set("startAngle",i+this._dAngle)})),i._setDataItem(e),n._setDataItem(e),t}_positionBullet(e){const t=e.get("sprite");if(t){const n=t.dataItem;if(n){const t=e.get("sprite");if(t){const i=n.get("slice"),s=e.get("locationX",.5),a=e.get("locationY",.5);if(i){const e=i.get("radius",0),n=i.get("innerRadius",0),r=n+(e-n)*a,o=i.get("startAngle",0)+i.get("arc",0)*s;t.setAll({x:r*J.cos(o),y:r*J.sin(o)})}}}}}_updateNodeColor(e){const t=e.get("slice");t&&(t.set("fill",e.get("fill")),t.set("fillPattern",e.get("fillPattern")))}disposeDataItem(e){super.disposeDataItem(e);let t=e.get("slice");t&&(this.slices.removeValue(t),t.dispose())}}Object.defineProperty(ee,"className",{enumerable:!0,configurable:!0,writable:!0,value:"ChordNodes"}),Object.defineProperty(ee,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:Z.classNames.concat([ee.className])});var te=n(1479);class ne extends te.T{constructor(){super(...arguments),Object.defineProperty(this,"series",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_fillGradient",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_strokeGradient",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}_changed(){if(super._changed(),this.isDirty("fillStyle")){const e=this.series,t=this.dataItem;e&&t&&e._updateLinkColor(t)}}_getTooltipPoint(){let e=this.get("tooltipY"),t=.5;return e instanceof a.gG&&(t=e.value),this.getPoint(t)}}Object.defineProperty(ne,"className",{enumerable:!0,configurable:!0,writable:!0,value:"FlowLink"}),Object.defineProperty(ne,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:te.T.classNames.concat([ne.className])});class ie extends ne{constructor(){super(...arguments),Object.defineProperty(this,"_p0",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_p1",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_type",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}getPoint(e){if(this._p0&&this._p1){if("line"===this._type){let t=J.getPointOnLine(this._p0,this._p1,e);return{x:t.x,y:t.y,angle:J.getAngle(this._p0,this._p1)}}{let t=J.getPointOnQuadraticCurve(this._p0,this._p1,{x:0,y:0},Math.max(0,e-.01)),n=J.getPointOnQuadraticCurve(this._p0,this._p1,{x:0,y:0},Math.min(1,e+.01)),i=J.getPointOnQuadraticCurve(this._p0,this._p1,{x:0,y:0},e);return{x:i.x,y:i.y,angle:J.getAngle(t,n)}}}return{x:0,y:0,angle:0}}}Object.defineProperty(ie,"className",{enumerable:!0,configurable:!0,writable:!0,value:"ChordLink"}),Object.defineProperty(ie,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:ne.classNames.concat([ie.className])});var se=n(7652);class ae extends p{constructor(){super(...arguments),Object.defineProperty(this,"links",{enumerable:!0,configurable:!0,writable:!0,value:this.addDisposer(new H.o(X.YS.new({}),(()=>ie._new(this._root,{themeTags:["link","shape"]},[this.links.template]))))}),Object.defineProperty(this,"nodes",{enumerable:!0,configurable:!0,writable:!0,value:this.children.push(ee.new(this._root,{}))}),Object.defineProperty(this,"_d3chord",{enumerable:!0,configurable:!0,writable:!0,value:A(!1,!1)}),Object.defineProperty(this,"_chordLayout",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"_ribbon",{enumerable:!0,configurable:!0,writable:!0,value:G()})}_afterNew(){this._settings.themeTags=se.mergeTags(this._settings.themeTags,["chord"]),this.linksContainer.setAll({x:a.CI,y:a.CI}),this.bulletsContainer.setAll({x:a.CI,y:a.CI}),super._afterNew()}_fixRibbon(e){e.startAngle((e=>e.startAngle+this.get("startAngle",0)*J.RADIANS+Math.PI/2)),e.endAngle((e=>e.endAngle+this.get("startAngle",0)*J.RADIANS+Math.PI/2))}makeLink(e){const t=this.linksContainer.children.push(this.links.make());return this.links.push(t),t._setDataItem(e),t.set("source",e.get("source")),t.set("target",e.get("target")),t.series=this,t}_makeMatrix(){const e=[];return l.each(this.nodes.dataItems,(t=>{const n=[];e.push(n);let i=t.get("outgoingLinks");l.each(this.nodes.dataItems,(e=>{let t=0;i&&l.each(i,(n=>{n.get("target")===e&&(t=n.get("valueWorking"));let i=this.getPrivate("valueSum",0),s=this.get("minSize",0);t>0&&s>0&&t<i*s&&(t=i*s)})),n.push(t)}))})),e}_prepareChildren(){super._prepareChildren(),this._fixRibbon(this._ribbon);let e=!1;if(this._valuesDirty||this._sizeDirty||this.isDirty("padAngle")||this.isDirty("startAngle")){const t=this._makeMatrix();this._d3chord.padAngle(this.get("padAngle",0)*J.RADIANS);const n=this.get("sort");"ascending"===n?this._d3chord.sortGroups(W):"descending"===n&&this._d3chord.sortGroups(Y),this._chordLayout=this._d3chord(t),e=!0}if(e||this.isDirty("radius")||this.isDirty("nodeWidth")){let e=se.relativeToValue(this.get("radius",0),Math.min(this.innerWidth(),this.innerHeight()))/2,t=0;const n=this.get("startAngle",0),i=this.get("nodeWidth",0);l.each(this.nodes.dataItems,(s=>{const a=s.get("slice"),r=this._chordLayout.groups[t],o=r.startAngle*J.DEGREES+n,l=r.endAngle*J.DEGREES+n;a.setAll({radius:e,innerRadius:e-i,startAngle:o,arc:l-o});const c=s.get("label");c.setAll({labelAngle:o+(l-o)/2}),c.setPrivate("radius",e),c.setPrivate("innerRadius",.1),t++}));const s=e-this.get("nodeWidth",0);l.each(this._chordLayout,(e=>{let t=this._linksByIndex[e.source.index+"_"+e.target.index];if(t||(t=this._linksByIndex[e.target.index+"_"+e.source.index]),t){const n=t.get("link");this._getLinkPoints(n,s,e),this._updateLink(this._ribbon,n,s,e)}}))}}_getLinkPoints(e,t,n){const i=n.source,s=n.target,a=this.get("startAngle",0)*J.RADIANS;if(i&&s){const n=i.startAngle,r=n+(i.endAngle-n)/2+a,o=s.startAngle,l=o+(s.endAngle-o)/2+a;e._p0={x:t*Math.cos(r),y:t*Math.sin(r)},e._p1={x:t*Math.cos(l),y:t*Math.sin(l)}}}_updateLink(e,t,n,i){i&&(e.sourceRadius(se.relativeToValue(t.get("sourceRadius",a.AQ),n)),e.targetRadius(se.relativeToValue(t.get("targetRadius",a.AQ),n)),t.set("draw",(t=>{e.context(t),e(i)})))}}Object.defineProperty(ae,"className",{enumerable:!0,configurable:!0,writable:!0,value:"Chord"}),Object.defineProperty(ae,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:p.classNames.concat([ae.className])});class re extends ie{_afterNew(){this._settings.themeTags=se.mergeTags(this._settings.themeTags,["chord","link","directed"]),super._afterNew()}}Object.defineProperty(re,"className",{enumerable:!0,configurable:!0,writable:!0,value:"ChordLinkDirected"}),Object.defineProperty(re,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:ie.classNames.concat([re.className])});class oe extends ae{constructor(){super(...arguments),Object.defineProperty(this,"_d3chord",{enumerable:!0,configurable:!0,writable:!0,value:A(!0,!1)}),Object.defineProperty(this,"_ribbonArrow",{enumerable:!0,configurable:!0,writable:!0,value:F()}),Object.defineProperty(this,"links",{enumerable:!0,configurable:!0,writable:!0,value:this.addDisposer(new H.o(X.YS.new({}),(()=>re._new(this._root,{themeTags:["link","shape"]},[this.links.template]))))})}makeLink(e){const t=this.linksContainer.children.push(this.links.make());return t._setDataItem(e),t.set("source",e.get("source")),t.set("target",e.get("target")),t.series=this,t}_afterNew(){this._settings.themeTags=se.mergeTags(this._settings.themeTags,["directed"]),super._afterNew(),this._markDirtyKey("linkHeadRadius")}_prepareChildren(){const e="linkHeadRadius";if(this.isDirty(e)){const t=this.get(e);if(null==t)this._ribbon=G();else{let e=F();e.headRadius(t),this._ribbon=e}}super._prepareChildren()}}Object.defineProperty(oe,"className",{enumerable:!0,configurable:!0,writable:!0,value:"ChordDirected"}),Object.defineProperty(oe,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:ae.classNames.concat([oe.className])});class le extends ae{_afterNew(){this._settings.themeTags=se.mergeTags(this._settings.themeTags,["chord","basic"]),super._afterNew()}_makeMatrix(){const e=[];return l.each(this.nodes.dataItems,(t=>{const n=[];e.push(n),l.each(this.nodes.dataItems,(e=>{let i=1;t===e&&(i=0),n.push(i)}))})),e}_updateLink(e,t,n,i){if(t._type=this.get("linkType"),i){const e=this.get("linkType");t.set("draw",(n=>{let i=t._p0,s=t._p1;i&&s&&(n.moveTo(i.x,i.y),"line"==e?n.lineTo(s.x,s.y):n.quadraticCurveTo(0,0,s.x,s.y))}))}}_getLinkPoints(e,t,n){const i=e.get("source"),s=e.get("target");if(i&&s){const n=i.get("slice"),a=s.get("slice"),r=n.get("startAngle",0)+n.get("arc",0)/2,o=a.get("startAngle",0)+a.get("arc",0)/2;e._p0={x:t*J.cos(r),y:t*J.sin(r)},e._p1={x:t*J.cos(o),y:t*J.sin(o)}}}}Object.defineProperty(le,"className",{enumerable:!0,configurable:!0,writable:!0,value:"ChordNonRibbon"}),Object.defineProperty(le,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:ae.classNames.concat([le.className])});var ce=n(3497);class ue extends Z{constructor(){super(...arguments),Object.defineProperty(this,"rectangles",{enumerable:!0,configurable:!0,writable:!0,value:this.addDisposer(new H.o(X.YS.new({}),(()=>ce.c._new(this._root,{themeTags:["shape"]},[this.rectangles.template]))))}),Object.defineProperty(this,"flow",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}makeNode(e){const t=this.flow,n=super.makeNode(e,"sankey"),i=n.children.insertIndex(0,this.rectangles.make());this.rectangles.push(i),i._setSoft("fill",e.get("fill")),i._setSoft("fillPattern",e.get("fillPattern")),e.set("rectangle",i),n.events.on("dragged",(()=>{const e=n.dataItem.get("d3SankeyNode");e&&t&&("horizontal"==t.get("orientation")?(e.x0=n.x(),e.y0=n.y()):(e.x0=n.y(),e.y0=n.x()),t.updateSankey())}));const s=this.labels.make();return this.labels.push(s),t&&s.addTag(t.get("orientation","")),n.children.push(s),e.set("label",s),s._setDataItem(e),i._setDataItem(e),n}_positionBullet(e){const t=e.get("sprite");if(t){const n=t.dataItem;if(n){const t=e.get("sprite");if(t){const i=n.get("rectangle"),s=n.get("node"),a=e.get("locationX",.5),r=e.get("locationY",.5);i&&t.setAll({x:s.x()+i.width()*a,y:s.y()+i.height()*r})}}}}disposeDataItem(e){super.disposeDataItem(e);let t=e.get("rectangle");t&&(this.rectangles.removeValue(t),t.dispose())}_updateNodeColor(e){const t=e.get("rectangle");t&&(t.set("fill",e.get("fill")),t.set("fillPattern",e.get("fillPattern")))}}Object.defineProperty(ue,"className",{enumerable:!0,configurable:!0,writable:!0,value:"SankeyNodes"}),Object.defineProperty(ue,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:Z.classNames.concat([ue.className])});class he extends ne{constructor(){super(...arguments),Object.defineProperty(this,"_svgPath",{enumerable:!0,configurable:!0,writable:!0,value:document.createElementNS("http://www.w3.org/2000/svg","path")}),Object.defineProperty(this,"_totalLength",{enumerable:!0,configurable:!0,writable:!0,value:0})}_beforeChanged(){if(super._beforeChanged(),this.isDirty("source")){const e=this.get("source");if(e){const t=e.get("node");this._disposers.push(t.events.on("positionchanged",(()=>{this.markDirty()})))}}if(this.isDirty("target")){const e=this.get("target");if(e){const t=e.get("node");this._disposers.push(t.events.on("positionchanged",(()=>{this.markDirty()})))}}if(this.isPrivateDirty("orientation")){const e=this.series,t=this.dataItem;t&&e&&e._updateLinkColor(t)}const e=this.get("target"),t=this.get("source");let n,i;if(t&&e){this._clear=!0,n=t.get("node"),i=e.get("node");let s=0,a=0,r=0,o=0,l=0,c=0,u=0,h=0,d=0,g=0,f=0,p=0,m=0,b=0,y=0,k=0,_=0,w=0;const v=this.dataItem;if(v){const x=v.get("d3SankeyLink");if(x){let v=x.width||0,D=this.getPrivate("orientation");"vertical"==D?(n&&(r=n.y()+n.get("dy",0)),i&&(o=i.y()+i.get("dy",0)),_=90,w=90,s=x.y0||0,a=x.y1||0,s+=n.get("dx",0),a+=i.get("dx",0),o<r&&([s,a]=[a,s],[r,o]=[o,r]),t.get("unknown")&&(s=a,r+=(o-r)/2),e.get("unknown")&&(a=s,o=r+(o-r)/2),l=s-v/2,c=r,u=a-v/2,h=o,d=s+v/2,g=a+v/2,f=r,p=o,m=s,b=a,y=r,k=o):(n&&(s=n.x()+n.get("dx",0)),i&&(a=i.x()+i.get("dx",0)),r=x.y0||0,o=x.y1||0,r+=n.get("dy",0),o+=i.get("dy",0),a<s&&([s,a]=[a,s],[r,o]=[o,r]),t.get("unknown")&&(r=o,s+=(a-s)/2),e.get("unknown")&&(o=r,a=s+(a-s)/2),l=s,c=r-v/2,u=a,h=o-v/2,d=s,g=a,f=r+v/2,p=o+v/2,m=s,b=a,y=r,k=o),J.round(l,3)==J.round(u,3)&&(u+=.01),J.round(c,3)==J.round(h,3)&&(h+=.01),J.round(d,3)==J.round(g,3)&&(g+=.01),J.round(f,3)==J.round(p,3)&&(p+=.01);let A=this.get("controlPointDistance",.2);A=Math.min(.4999,A);let P=l+(u-l)*A*J.cos(_),N=c+(h-c)*A*J.sin(_),I=u-(u-l)*A*J.cos(w),L=h-(h-c)*A*J.sin(w),O=m+(b-m)*A*J.cos(_),j=y+(k-y)*A*J.sin(_),S=b-(b-m)*A*J.cos(w),C=k-(k-y)*A*J.sin(w),T=J.getAngle({x:P,y:N},{x:I,y:L}),R=(v/J.cos(T)-v)/J.tan(T)*J.cos(_),M=(v/J.sin(T)-v)*J.tan(T)*J.sin(_),G=-R/2+d+(g-d)*A*J.cos(_),F=-M/2+f+(p-f)*A*J.sin(_),W=-R/2+g-(g-d)*A*J.cos(w),Y=-M/2+p-(p-f)*A*J.sin(w);P+=R/2,N+=M/2,I+=R/2,L+=M/2,"vertical"==D?(N=Math.min(h,Math.max(c+1,N)),F=Math.min(p,Math.max(f+1,F)),L=Math.max(c,Math.min(h-1,L)),Y=Math.max(f,Math.min(p-1,Y))):(P=Math.min(u,Math.max(l+1,P)),G=Math.min(g,Math.max(d+1,G)),I=Math.max(l,Math.min(u-1,I)),W=Math.max(d,Math.min(g-1,W)));let z=[[l,c,d,f],[P,N,G,F],[I,L,W,Y],[u,h,g,p]];this.set("draw",(e=>{const t=this.series;t._fillGenerator.context(e),t._fillGenerator(z)}));let B=[[m,y],[O,j],[S,C],[b,k]];const V=this.series._strokeGenerator(B);V&&(this._svgPath.setAttribute("d",V),this._totalLength=this._svgPath.getTotalLength())}}}this.series&&this.dataItem&&this.series._positionBullets(this.dataItem)}getPoint(e){if(this._svgPath&&this._svgPath.getAttribute("d")){let t=this._svgPath.getPointAtLength(e*this._totalLength-.1),n=this._svgPath.getPointAtLength(e*this._totalLength+.1),i=this.toGlobal(this._svgPath.getPointAtLength(e*this._totalLength));return{x:i.x,y:i.y,angle:J.getAngle(t,n)}}return{x:0,y:0,angle:0}}_getTooltipPoint(){return this.toLocal(super._getTooltipPoint())}}Object.defineProperty(he,"className",{enumerable:!0,configurable:!0,writable:!0,value:"SankeyLink"}),Object.defineProperty(he,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:ne.classNames.concat([he.className])});var de=n(3794),ge=n(774),fe=n(8289),pe=n(5892);function me(e,t){let n=0;if(void 0===t)for(let t of e)(t=+t)&&(n+=t);else{let i=-1;for(let s of e)(s=+t(s,++i,e))&&(n+=s)}return n}function be(e,t){let n;if(void 0===t)for(const t of e)null!=t&&(n<t||void 0===n&&t>=t)&&(n=t);else{let i=-1;for(let s of e)null!=(s=t(s,++i,e))&&(n<s||void 0===n&&s>=s)&&(n=s)}return n}function ye(e,t){let n;if(void 0===t)for(const t of e)null!=t&&(n>t||void 0===n&&t>=t)&&(n=t);else{let i=-1;for(let s of e)null!=(s=t(s,++i,e))&&(n>s||void 0===n&&s>=s)&&(n=s)}return n}function ke(e){return e.target.depth}function _e(e){return e.depth}function we(e,t){return t-1-e.height}function ve(e,t){return e.sourceLinks.length?e.depth:t-1}function xe(e){return e.targetLinks.length?e.depth:e.sourceLinks.length?ye(e.sourceLinks,ke)-1:0}function De(e){return function(){return e}}function Ae(e,t){return Ne(e.source,t.source)||e.index-t.index}function Pe(e,t){return Ne(e.target,t.target)||e.index-t.index}function Ne(e,t){return e.y0-t.y0}function Ie(e){return e.value}function Le(e){return e.index}function Oe(e){return e.nodes}function je(e){return e.links}function Se(e,t){const n=e.get(t);if(!n)throw new Error("missing: "+t);return n}function Ce({nodes:e}){for(const t of e){let e=t.y0,n=e;for(const n of t.sourceLinks)n.y0=e+n.width/2,e+=n.width;for(const e of t.targetLinks)e.y1=n+e.width/2,n+=e.width}}function Te(){let e,t,n,i=0,s=0,a=1,r=1,o=24,l=8,c=Le,u=ve,h=Oe,d=je,g=6;function f(){const f={nodes:h.apply(null,arguments),links:d.apply(null,arguments)};return function({nodes:e,links:t}){for(const[t,n]of e.entries())n.index=t,n.sourceLinks=[],n.targetLinks=[];const i=new Map(e.map(((t,n)=>[c(t,n,e),t])));for(const[e,n]of t.entries()){n.index=e;let{source:t,target:s}=n;"object"!=typeof t&&(t=n.source=Se(i,t)),"object"!=typeof s&&(s=n.target=Se(i,s)),t.sourceLinks.push(n),s.targetLinks.push(n)}if(null!=n)for(const{sourceLinks:t,targetLinks:i}of e)t.sort(n),i.sort(n)}(f),function({nodes:e}){for(const t of e)t.value=void 0===t.fixedValue?Math.max(me(t.sourceLinks,Ie),me(t.targetLinks,Ie)):t.fixedValue}(f),function({nodes:e}){const t=e.length;let n=new Set(e),i=new Set,s=0;for(;n.size;){for(const e of n){e.depth=s;for(const{target:t}of e.sourceLinks)i.add(t)}if(++s>t)throw new Error("circular link");n=i,i=new Set}}(f),function({nodes:e}){const t=e.length;let n=new Set(e),i=new Set,s=0;for(;n.size;){for(const e of n){e.height=s;for(const{source:t}of e.targetLinks)i.add(t)}if(++s>t)throw new Error("circular link");n=i,i=new Set}}(f),function(n){const c=function({nodes:e}){const n=be(e,(e=>e.depth))+1,s=(a-i-o)/(n-1),r=new Array(n);for(const t of e){const e=Math.max(0,Math.min(n-1,Math.floor(u.call(null,t,n))));t.layer=e,t.x0=i+e*s,t.x1=t.x0+o,r[e]?r[e].push(t):r[e]=[t]}if(t)for(const e of r)e.sort(t);return r}(n);e=Math.min(l,(r-s)/(be(c,(e=>e.length))-1)),function(t){const n=ye(t,(t=>(r-s-(t.length-1)*e)/me(t,Ie)));for(const i of t){let t=s;for(const s of i){s.y0=t,s.y1=t+s.value*n,t=s.y1+e;for(const e of s.sourceLinks)e.width=e.value*n}t=(r-t+e)/(i.length+1);for(let e=0;e<i.length;++e){const n=i[e];n.y0+=t*(e+1),n.y1+=t*(e+1)}w(i)}}(c);for(let e=0;e<g;++e){const t=Math.pow(.99,e),n=Math.max(1-t,(e+1)/g);m(c,t,n),p(c,t,n)}}(f),Ce(f),f}function p(e,n,i){for(let s=1,a=e.length;s<a;++s){const a=e[s];for(const e of a){let t=0,i=0;for(const{source:n,value:s}of e.targetLinks){let a=s*(e.layer-n.layer);t+=v(n,e)*a,i+=a}if(!(i>0))continue;let s=(t/i-e.y0)*n;e.y0+=s,e.y1+=s,_(e)}void 0===t&&a.sort(Ne),b(a,i)}}function m(e,n,i){for(let s=e.length-2;s>=0;--s){const a=e[s];for(const e of a){let t=0,i=0;for(const{target:n,value:s}of e.sourceLinks){let a=s*(n.layer-e.layer);t+=x(e,n)*a,i+=a}if(!(i>0))continue;let s=(t/i-e.y0)*n;e.y0+=s,e.y1+=s,_(e)}void 0===t&&a.sort(Ne),b(a,i)}}function b(t,n){const i=t.length>>1,a=t[i];k(t,a.y0-e,i-1,n),y(t,a.y1+e,i+1,n),k(t,r,t.length-1,n),y(t,s,0,n)}function y(t,n,i,s){for(;i<t.length;++i){const a=t[i],r=(n-a.y0)*s;r>1e-6&&(a.y0+=r,a.y1+=r),n=a.y1+e}}function k(t,n,i,s){for(;i>=0;--i){const a=t[i],r=(a.y1-n)*s;r>1e-6&&(a.y0-=r,a.y1-=r),n=a.y0-e}}function _({sourceLinks:e,targetLinks:t}){if(void 0===n){for(const{source:{sourceLinks:e}}of t)e.sort(Pe);for(const{target:{targetLinks:t}}of e)t.sort(Ae)}}function w(e){if(void 0===n)for(const{sourceLinks:t,targetLinks:n}of e)t.sort(Pe),n.sort(Ae)}function v(t,n){let i=t.y0-(t.sourceLinks.length-1)*e/2;for(const{target:s,width:a}of t.sourceLinks){if(s===n)break;i+=a+e}for(const{source:e,width:s}of n.targetLinks){if(e===t)break;i-=s}return i}function x(t,n){let i=n.y0-(n.targetLinks.length-1)*e/2;for(const{source:s,width:a}of n.targetLinks){if(s===t)break;i+=a+e}for(const{target:e,width:s}of t.sourceLinks){if(e===n)break;i-=s}return i}return f.update=function(e){return Ce(e),e},f.nodeId=function(e){return arguments.length?(c="function"==typeof e?e:De(e),f):c},f.nodeAlign=function(e){return arguments.length?(u="function"==typeof e?e:De(e),f):u},f.nodeSort=function(e){return arguments.length?(t=e,f):t},f.nodeWidth=function(e){return arguments.length?(o=+e,f):o},f.nodePadding=function(t){return arguments.length?(l=e=+t,f):l},f.nodes=function(e){return arguments.length?(h="function"==typeof e?e:De(e),f):h},f.links=function(e){return arguments.length?(d="function"==typeof e?e:De(e),f):d},f.linkSort=function(e){return arguments.length?(n=e,f):n},f.size=function(e){return arguments.length?(i=s=0,a=+e[0],r=+e[1],f):[a-i,r-s]},f.extent=function(e){return arguments.length?(i=+e[0][0],a=+e[1][0],s=+e[0][1],r=+e[1][1],f):[[i,s],[a,r]]},f.iterations=function(e){return arguments.length?(g=+e,f):g},f}class Re extends p{constructor(){super(...arguments),Object.defineProperty(this,"links",{enumerable:!0,configurable:!0,writable:!0,value:this.addDisposer(new H.o(X.YS.new({}),(()=>he._new(this._root,{themeTags:["link","shape"]},[this.links.template]))))}),Object.defineProperty(this,"nodes",{enumerable:!0,configurable:!0,writable:!0,value:this.children.push(ue.new(this._root,{}))}),Object.defineProperty(this,"_d3Sankey",{enumerable:!0,configurable:!0,writable:!0,value:Te()}),Object.defineProperty(this,"_d3Graph",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_fillGenerator",{enumerable:!0,configurable:!0,writable:!0,value:(0,de.Z)()}),Object.defineProperty(this,"_strokeGenerator",{enumerable:!0,configurable:!0,writable:!0,value:(0,ge.Z)()})}_afterNew(){this._settings.themeTags=se.mergeTags(this._settings.themeTags,["sankey",this._settings.orientation||"horizontal"]),this._fillGenerator.y0((function(e){return e[3]})),this._fillGenerator.x0((function(e){return e[2]})),this._fillGenerator.y1((function(e){return e[1]})),this._fillGenerator.x1((function(e){return e[0]})),super._afterNew()}makeLink(e){const t=e.get("source"),n=e.get("target"),i=this.links.make();return t.get("unknown")&&(i.addTag("source"),i.addTag("unknown")),n.get("unknown")&&(i.addTag("target"),i.addTag("unknown")),this.linksContainer.children.push(i),i._setDataItem(e),i.set("source",t),i.set("target",n),i.series=this,this.links.push(i),i}updateSankey(){const e=this._d3Graph;e&&(this._d3Sankey.update(e),l.each(this.dataItems,(e=>{const t=e.get("link");t.setPrivate("orientation",this.get("orientation")),t.markDirty()})))}_updateLinkColor(e){super._updateLinkColor(e);const t=this.get("orientation"),n=e.get("link")._fillGradient,i=e.get("link")._strokeGradient;"vertical"==t?(n&&n.set("rotation",90),i&&i.set("rotation",90)):(n&&n.set("rotation",0),i&&i.set("rotation",0))}_getBulletLocation(e){return"vertical"==this.get("orientation")?e.get("locationY",0):e.get("locationX",0)}_prepareChildren(){super._prepareChildren();let e=!1;if("vertical"==this.get("orientation")&&(e=!0),this.isDirty("orientation")||this.isDirty("linkTension")){const t=this.get("linkTension",.5);e?(this._fillGenerator.curve((0,pe.$)(t)),this._strokeGenerator.curve((0,pe.$)(t))):(this._fillGenerator.curve((0,fe.G)(t)),this._strokeGenerator.curve((0,fe.G)(t)))}if((this._valuesDirty||this._sizeDirty||this.isDirty("nodePadding")||this.isDirty("nodeWidth")||this.isDirty("nodeAlign")||this.isDirty("nodeSort")||this.isDirty("orientation")||this.isDirty("linkTension")||this.isDirty("linkSort"))&&this._nodesData.length>0){const t=this._d3Sankey;let n=this.innerWidth(),i=this.innerHeight();switch(e&&([n,i]=[i,n]),t.size([n,i]),t.nodePadding(this.get("nodePadding",10)),t.nodeWidth(this.get("nodeWidth",10)),t.nodeSort(this.get("nodeSort",null)),t.linkSort(this.get("linkSort")),this.get("nodeAlign")){case"right":t.nodeAlign(we);break;case"justify":t.nodeAlign(ve);break;case"center":t.nodeAlign(xe);break;default:t.nodeAlign(_e)}this._d3Graph=t({nodes:this._nodesData,links:this._linksData}),l.each(this.dataItems,(e=>{const t=e.get("link");t.setPrivate("orientation",this.get("orientation")),t.markDirty()}));const s=this._d3Graph;if(s){const t=s.nodes;l.each(t,(t=>{const n=t.dataItem,i=n.get("node");let s,a,r,o;e?(s=t.y0,a=t.y1,r=t.x0,o=t.x1):(s=t.x0,a=t.x1,r=t.y0,o=t.y1),f.isNumber(s)&&f.isNumber(a)&&f.isNumber(r)&&f.isNumber(o)&&(i.setAll({x:s,y:r,width:a-s,height:o-r}),n.get("rectangle").setAll({width:a-s,height:o-r}))}))}}}}Object.defineProperty(Re,"className",{enumerable:!0,configurable:!0,writable:!0,value:"Sankey"}),Object.defineProperty(Re,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:p.classNames.concat([Re.className])});var Me=n(8035);class Ge extends Z{constructor(){super(...arguments),Object.defineProperty(this,"labels",{enumerable:!0,configurable:!0,writable:!0,value:this.addDisposer(new H.o(X.YS.new({}),(()=>K._._new(this._root,{},[this.labels.template]))))}),Object.defineProperty(this,"flow",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_dAngle",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"circles",{enumerable:!0,configurable:!0,writable:!0,value:this.addDisposer(new H.o(X.YS.new({}),(()=>Me.C._new(this._root,{themeTags:["shape"]},[this.circles.template]))))})}makeNode(e){const t=super.makeNode(e,"ArcDiagram"),n=t.children.insertIndex(0,this.circles.make());e.set("circle",n),n._setSoft("fill",e.get("fill")),n._setSoft("fillPattern",e.get("fillPattern"));const i=this.labels.make();return this.labels.push(i),i.addTag("flow"),i.addTag("arcdiagram"),i.addTag("node"),t.children.push(i),e.set("label",i),i._setDataItem(e),n._setDataItem(e),t}disposeDataItem(e){super.disposeDataItem(e);let t=e.get("circle");t&&(this.circles.removeValue(t),t.dispose())}_updateNodeColor(e){const t=e.get("circle");t&&(t.set("fill",e.get("fill")),t.set("fillPattern",e.get("fillPattern")))}}Object.defineProperty(Ge,"className",{enumerable:!0,configurable:!0,writable:!0,value:"ArcDiagramNodes"}),Object.defineProperty(Ge,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:Z.classNames.concat([Ge.className])});class Fe extends ne{constructor(){super(...arguments),Object.defineProperty(this,"_p0",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_p1",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_radius",{enumerable:!0,configurable:!0,writable:!0,value:0})}_beforeChanged(){if(super._beforeChanged(),this.isDirty("source")){const e=this.get("source");if(e){const t=e.get("node");this._disposers.push(t.events.on("positionchanged",(()=>{this._markDirtyKey("stroke")})))}}if(this.isDirty("target")){const e=this.get("target");if(e){const t=e.get("node");this._disposers.push(t.events.on("positionchanged",(()=>{this._markDirtyKey("stroke")})))}}if(this.isPrivateDirty("orientation")){const e=this.series,t=this.dataItem;t&&e&&e._updateLinkColor(t)}this.series&&this.dataItem&&this.series._positionBullets(this.dataItem),"gradient"==this.get("strokeStyle")?this.set("isMeasured",!0):this.set("isMeasured",!1)}_changed(){super._changed(),this._clear&&this._draw()}_draw(){const e=this.get("target"),t=this.get("source");if(t&&e){let n=t.get("node"),i=e.get("node");const s=n.x(),a=n.y(),r=i.x(),o=i.y();this._p0={x:s,y:a},this._p1={x:r,y:o};let l=0;if("vertical"==this.getPrivate("orientation")){l=(o-a)/2;let e=1;a>o&&(e=-1),this._display.arc(s,a+l,l*e,-Math.PI/2,Math.PI/2)}else{l=(r-s)/2;let e=1;s>r&&(e=-1),this._display.arc(s+l,a,l*e,-Math.PI,0)}this._radius=l}}getPoint(e){if(this._p0&&this._p1){const t=this._radius;if("vertical"==this.getPrivate("orientation")){let n=180*e-90;return{y:this._p0.y+t+t*J.sin(n),x:t*J.cos(n),angle:n+90}}{let n=180+180*e;return{x:this._p0.x+t+t*J.cos(n),y:t*J.sin(n),angle:n+90}}}return{x:0,y:0,angle:0}}}Object.defineProperty(Fe,"className",{enumerable:!0,configurable:!0,writable:!0,value:"ArcDiagramLink"}),Object.defineProperty(Fe,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:ne.classNames.concat([Fe.className])});class We extends p{constructor(){super(...arguments),Object.defineProperty(this,"links",{enumerable:!0,configurable:!0,writable:!0,value:this.addDisposer(new H.o(X.YS.new({}),(()=>Fe._new(this._root,{themeTags:["link","shape"]},[this.links.template]))))}),Object.defineProperty(this,"nodes",{enumerable:!0,configurable:!0,writable:!0,value:this.children.push(Ge.new(this._root,{}))})}_afterNew(){this._settings.themeTags=se.mergeTags(this._settings.themeTags,["arcdiagram",this._settings.orientation||"horizontal"]),super._afterNew(),this.nodes.children.push(this.bulletsContainer)}makeLink(e){const t=this.nodes.children.moveValue(this.links.make(),0);return this.links.push(t),t._setDataItem(e),t.set("source",e.get("source")),t.set("target",e.get("target")),t.series=this,t}_prepareChildren(){if(super._prepareChildren(),this._valuesDirty||this._sizeDirty||this.isDirty("orientation")){let e=1;const t=this.get("orientation");l.each(this.dataItems,(e=>{e.get("link").setPrivate("orientation",this.get("orientation"))})),e="vertical"==t?this.innerHeight():this.innerWidth();let n=0,i=1/0,s=this.get("radiusKey");"none"!=s&&l.each(this.nodes.dataItems,(e=>{let t=e.get(s+"Working");n+=t,i=Math.min(i,t)}));const a=this.nodes.dataItems.length,r=this.get("nodePadding",10),o=this.get("minRadius",5);e-=a*(r+2*o),e<=0&&(e=0);let c=e/(n-a*i),u=0;const h=this.get("animationDuration",0),d=this.get("animationEasing");l.each(this.nodes.dataItems,(n=>{let l=n.get(s+"Working");const g=n.get("node");let f=o+c*(l-i)/2;if("none"==s&&(f=o+e/a/2),"vertical"==t){g.set("x",0);const e=u+r+f;0==g.y()?g.set("y",e):g.animate({key:"y",to:e,duration:h,easing:d})}else{g.set("y",0);const e=u+r+f;0==g.x()?g.set("x",e):g.animate({key:"x",to:e,duration:h,easing:d})}u=u+r+2*f,n.get("circle").set("radius",f)}))}}_updateLinkColor(e){super._updateLinkColor(e);const t=this.get("orientation"),n=e.get("link")._fillGradient,i=e.get("link")._strokeGradient;"vertical"==t?(n&&n.set("rotation",90),i&&i.set("rotation",90)):(n&&n.set("rotation",0),i&&i.set("rotation",0))}}Object.defineProperty(We,"className",{enumerable:!0,configurable:!0,writable:!0,value:"ArcDiagram"}),Object.defineProperty(We,"classNames",{enumerable:!0,configurable:!0,writable:!0,value:p.classNames.concat([We.className])})},906:function(e,t,n){n.r(t),n.d(t,{am5flow:function(){return i}});const i=n(2924)}},function(e){var t=(906,e(e.s=906)),n=window;for(var i in t)n[i]=t[i];t.__esModule&&Object.defineProperty(n,"__esModule",{value:!0})}]);
2
+ //# sourceMappingURL=flow.js.map