n8n-editor-ui 1.71.3 → 1.72.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-C7YrhVc7.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-WpdLQ_Lc.js} +1 -1
  2. package/dist/assets/{AuthView-Cnr31xHM.css → AuthView-BP3bsQpK.css} +3 -14
  3. package/dist/assets/{AuthView-BhrVKHQb.js → AuthView-xWm2P-0B.js} +1 -1
  4. package/dist/assets/{CanvasChat-B2z8TKEq.js → CanvasChat-CpplEK_c.js} +76 -104
  5. package/dist/assets/{CanvasChat-BuYT3e9G.css → CanvasChat-DhkdJLy7.css} +18 -81
  6. package/dist/assets/{CanvasControls-Gjw5xMXK.css → CanvasControls-BEOkwFDJ.css} +1 -2
  7. package/dist/assets/{CanvasControls-D3OVjMCG.js → CanvasControls-CNOZvEmR.js} +1 -1
  8. package/dist/assets/{ChangePasswordView-BkoEwfgW.js → ChangePasswordView-Bx4HKBs9.js} +2 -2
  9. package/dist/assets/CollectionParameter-IbNRc-rP.js +4 -0
  10. package/dist/assets/{ConcurrentExecutionsHeader-D99WmQjD.css → ConcurrentExecutionsHeader-ChCLnjVG.css} +7 -17
  11. package/dist/assets/{ConcurrentExecutionsHeader-D_jkbuah.js → ConcurrentExecutionsHeader-dMskl4He.js} +51 -47
  12. package/dist/assets/CredentialsView-CzforIh7.css +36 -0
  13. package/dist/assets/{CredentialsView-WgZTdwDF.js → CredentialsView-DYmrbOcr.js} +15 -25
  14. package/dist/assets/ErrorView-DZCz_7-d.css +22 -0
  15. package/dist/assets/{ErrorView-CCvyR8gc.js → ErrorView-DpKWfKAY.js} +1 -1
  16. package/dist/assets/{ExecutionsView-DNwpODRj.css → ExecutionsView-CLxQdDnP.css} +16 -43
  17. package/dist/assets/{ExecutionsView-BsIeNcoc.js → ExecutionsView-a2Slm2v9.js} +123 -38
  18. package/dist/assets/FileSaver.min-BiLlhrlQ.js +81 -0
  19. package/dist/assets/{FixedCollectionParameter-DzOGMEdq.css → FixedCollectionParameter-CUxLKPYJ.css} +1 -6
  20. package/dist/assets/{FixedCollectionParameter-DMpNSKjt.js → FixedCollectionParameter-DMiADFki.js} +5 -9
  21. package/dist/assets/{ForgotMyPasswordView-m-NI0pKA.js → ForgotMyPasswordView-RLODqWeW.js} +2 -2
  22. package/dist/assets/{MainHeader-DrUbWzLR.css → MainHeader-Bg4Jr0GW.css} +16 -63
  23. package/dist/assets/{MainHeader-CzdjrO1j.js → MainHeader-CZBWRbIF.js} +20 -33
  24. package/dist/assets/{MainSidebar-DL53w2zU.css → MainSidebar-B_Q71vG8.css} +16 -68
  25. package/dist/assets/{MainSidebar-CWZj9hUz.js → MainSidebar-Cm-l0HUG.js} +86 -71
  26. package/dist/assets/{NodeCreation-BNsKR1XL.js → NodeCreation-Bycww9rf.js} +10 -14
  27. package/dist/assets/{NodeCreation-30KXmZi2.css → NodeCreation-DTNNkgVv.css} +1 -5
  28. package/dist/assets/{NodeCreator-nENM_3bV.js → NodeCreator-BrgHuvb2.js} +54 -90
  29. package/dist/assets/{NodeCreator-CvOLgSO_.css → NodeCreator-BvqI_pdC.css} +21 -91
  30. package/dist/assets/{NodeViewSwitcher-tJDzCGJC.js → NodeViewSwitcher-D5JjSNB2.js} +7425 -1780
  31. package/dist/assets/{NodeViewSwitcher-jLTC590F.css → NodeViewSwitcher-DngiUgY8.css} +323 -950
  32. package/dist/assets/{ProjectCardBadge-Dwm_41ZR.js → ProjectCardBadge-B6a5Tl_X.js} +8 -13
  33. package/dist/assets/ProjectHeader-CDl0NBcF.css +21 -0
  34. package/dist/assets/{ProjectHeader-DTRxu2oO.js → ProjectHeader-CUoGk-wO.js} +61 -44
  35. package/dist/assets/{ProjectSettings-hzCZqVHM.js → ProjectSettings-BSOa51jE.js} +24 -42
  36. package/dist/assets/{ProjectSettings-CChpfrTS.css → ProjectSettings-DZws5IzZ.css} +2 -9
  37. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-Bv3nXXk5.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-ouQuoTYp.js} +1 -1
  38. package/dist/assets/{ResourcesListLayout-CKArPHiS.js → ResourcesListLayout-BKk7DIWo.js} +24 -30
  39. package/dist/assets/{ResourcesListLayout-I4rYUdFt.css → ResourcesListLayout-NZz6R66g.css} +11 -47
  40. package/dist/assets/{RunDataJson-jFaJ_yC4.js → RunDataJson-D7Whxi5x.js} +13 -13
  41. package/dist/assets/{RunDataJson-Dtc8i0I7.css → RunDataJson-DW_khHj4.css} +0 -1
  42. package/dist/assets/{RunDataJsonActions-zNKrn8z4.css → RunDataJsonActions-CoiM0oFP.css} +0 -1
  43. package/dist/assets/RunDataJsonActions-hLh8-Su6.js +5514 -0
  44. package/dist/assets/{RunDataSearch-BA0wlJtp.css → RunDataSearch-B4q8H9Ex.css} +0 -1
  45. package/dist/assets/{RunDataSearch-C9VyfwRz.js → RunDataSearch-Ds3EGLA6.js} +5 -7
  46. package/dist/assets/{RunDataTable-enskmmU4.css → RunDataTable-BOaG0Pms.css} +2 -10
  47. package/dist/assets/{RunDataTable-CK4Z05pd.js → RunDataTable-atOC6vYW.js} +9 -14
  48. package/dist/assets/{SamlOnboarding-POzPTpcl.js → SamlOnboarding-DuDPZUey.js} +4 -5
  49. package/dist/assets/{SettingsApiView-BOFUFUqU.js → SettingsApiView-CFlbEwnS.js} +1 -1
  50. package/dist/assets/{SettingsApiView-5wBxahqI.css → SettingsApiView-DX3S-5pa.css} +2 -8
  51. package/dist/assets/{SettingsCommunityNodesView-088VPv0r.js → SettingsCommunityNodesView-CJrxi3vi.js} +3 -3
  52. package/dist/assets/{SettingsCommunityNodesView-BTbugFls.css → SettingsCommunityNodesView-kzxtAoLp.css} +10 -42
  53. package/dist/assets/SettingsExternalSecrets-BnXyxlJd.css +29 -0
  54. package/dist/assets/{SettingsExternalSecrets-DlobsnOy.js → SettingsExternalSecrets-BusSlBVI.js} +14 -17
  55. package/dist/assets/SettingsLdapView-BLPKhtjA.js +2423 -0
  56. package/dist/assets/{SettingsLdapView-cRgzivq6.css → SettingsLdapView-BPh_inzE.css} +2 -8
  57. package/dist/assets/{SettingsLogStreamingView-EW9yIYwY.js → SettingsLogStreamingView-DI9OYnte.js} +20 -37
  58. package/dist/assets/SettingsLogStreamingView-Uz298HNW.css +46 -0
  59. package/dist/assets/{SettingsPersonalView-BOQgHIYm.css → SettingsPersonalView-CqzRUitO.css} +3 -13
  60. package/dist/assets/{SettingsPersonalView-DrJJtUL5.js → SettingsPersonalView-CwLPEQe5.js} +7 -10
  61. package/dist/assets/{SettingsSourceControl-COccchDl.js → SettingsSourceControl-BHiwsbh6.js} +1 -1
  62. package/dist/assets/{SettingsSourceControl-aZrwFtXG.css → SettingsSourceControl-C7H8sLJN.css} +5 -21
  63. package/dist/assets/{SettingsSso-BczGJSZo.js → SettingsSso-BUE-Dg9u.js} +10 -11
  64. package/dist/assets/{SettingsSso-DUkYL_--.css → SettingsSso-Be_ejj46.css} +3 -13
  65. package/dist/assets/{SettingsUsageAndPlan-vijI-va0.css → SettingsUsageAndPlan-C3fKPMTY.css} +13 -54
  66. package/dist/assets/{SettingsUsageAndPlan-OepwN_K0.js → SettingsUsageAndPlan-g8SYxLIm.js} +3 -7
  67. package/dist/assets/{SettingsUsersView-D6xH2uOE.js → SettingsUsersView-DsjbsMkp.js} +8 -15
  68. package/dist/assets/{SettingsView-D30Stwpp.js → SettingsView-BZqGq_NA.js} +3 -4
  69. package/dist/assets/{SettingsView-DOWbkj-V.css → SettingsView-o6uNYu0t.css} +1 -5
  70. package/dist/assets/{SetupView-DLhUy2sO.js → SetupView-DKcifLmN.js} +3 -9
  71. package/dist/assets/{SetupWorkflowCredentialsButton-FAOxK4hC.js → SetupWorkflowCredentialsButton-1FX7DWWs.js} +3 -5
  72. package/dist/assets/{SetupWorkflowFromTemplateView-29le4KEi.js → SetupWorkflowFromTemplateView-BI8db6Bn.js} +5 -9
  73. package/dist/assets/SetupWorkflowFromTemplateView-DjBcyMCl.css +26 -0
  74. package/dist/assets/{SigninView-B3r5QMqu.js → SigninView-DRl5Z9dU.js} +4 -5
  75. package/dist/assets/{SigninView-BEBHcgmK.css → SigninView-DzDE1gJb.css} +3 -14
  76. package/dist/assets/{SignoutView-DiRv1jyS.js → SignoutView-CD6CNCd4.js} +1 -1
  77. package/dist/assets/{SignupView-DepIL1mr.js → SignupView-BUIFD8_L.js} +2 -2
  78. package/dist/assets/{TemplateDetails-BG8YmNsP.js → TemplateDetails-BZy8nHAa.js} +1 -1
  79. package/dist/assets/{TemplateDetails-BjsdeJu8.css → TemplateDetails-p3M6A7jr.css} +1 -4
  80. package/dist/assets/{TemplateList-4lx8vpYf.css → TemplateList-BR3bpDTv.css} +13 -52
  81. package/dist/assets/{TemplateList-CEljIT09.js → TemplateList-DdYIfcdc.js} +1 -1
  82. package/dist/assets/{TemplatesCollectionView-C1BUeMtq.css → TemplatesCollectionView-DJVlK4Bb.css} +1 -5
  83. package/dist/assets/{TemplatesCollectionView-C1katHqi.js → TemplatesCollectionView-a9gOg1oh.js} +5 -5
  84. package/dist/assets/{TemplatesSearchView-BiokbeYf.css → TemplatesSearchView-CFrHWGcY.css} +4 -21
  85. package/dist/assets/{TemplatesSearchView-6ugazm6D.js → TemplatesSearchView-C_qp2w-Y.js} +5 -20
  86. package/dist/assets/{TemplatesView-BfnDbKo5.css → TemplatesView-CBNZZ_X1.css} +3 -16
  87. package/dist/assets/{TemplatesView-BnpZqzSI.js → TemplatesView-Srd2qTc6.js} +1 -1
  88. package/dist/assets/{TemplatesWorkflowView-D-rSlrYy.js → TemplatesWorkflowView-CDkCoN9X.js} +35 -39
  89. package/dist/assets/{TemplatesWorkflowView-BN5JjV6M.css → TemplatesWorkflowView-CVC0fbb6.css} +2 -10
  90. package/dist/assets/{TestDefinitionEditView-szspUG0t.css → TestDefinitionEditView-CVRXpJ4c.css} +13 -54
  91. package/dist/assets/{TestDefinitionEditView-Dw2F_7Ku.js → TestDefinitionEditView-CgQpahO7.js} +3 -4
  92. package/dist/assets/{TestDefinitionListView-Cv9ivpVk.js → TestDefinitionListView-BGJr2Okj.js} +4 -4
  93. package/dist/assets/{TestDefinitionListView-BfUssieW.css → TestDefinitionListView-BJVxwUdb.css} +9 -46
  94. package/dist/assets/{VariablesView-meR15bnW.css → VariablesView-BnGnRwcl.css} +3 -13
  95. package/dist/assets/{VariablesView-BrvfrvgE.js → VariablesView-DBlZthPg.js} +28 -38
  96. package/dist/assets/{VirtualSchema-Be-DGXEU.css → VirtualSchema-CIfwZj8N.css} +11 -48
  97. package/dist/assets/VirtualSchema-DkiHWd9N.js +378 -0
  98. package/dist/assets/{WorkerView-DhAgtBED.js → WorkerView--FWlY_KA.js} +14 -23
  99. package/dist/assets/WorkerView-CvXMClDD.css +123 -0
  100. package/dist/assets/{WorkflowActivator-Def_oRg7.js → WorkflowActivator-BbpMhG1U.js} +2 -2
  101. package/dist/assets/{WorkflowActivator-D8FiI2jP.css → WorkflowActivator-DSBGQvK0.css} +3 -9
  102. package/dist/assets/{WorkflowExecutionsInfoAccordion-lODxxxtv.js → WorkflowExecutionsInfoAccordion-DOpZ49kK.js} +1 -1
  103. package/dist/assets/{WorkflowExecutionsInfoAccordion-DfMew6q4.css → WorkflowExecutionsInfoAccordion-f5tIRAwu.css} +2 -14
  104. package/dist/assets/WorkflowExecutionsLandingPage-BodEQ5Bq.css +23 -0
  105. package/dist/assets/{WorkflowExecutionsLandingPage-Bidi-y5V.js → WorkflowExecutionsLandingPage-CAbWLqG8.js} +2 -2
  106. package/dist/assets/{WorkflowExecutionsPreview-DRCpGEbi.css → WorkflowExecutionsPreview-C-e7WZrK.css} +22 -98
  107. package/dist/assets/{WorkflowExecutionsPreview-d2F04pj8.js → WorkflowExecutionsPreview-CfUWIIgy.js} +39 -71
  108. package/dist/assets/{WorkflowExecutionsView-C6EMZ-AQ.css → WorkflowExecutionsView-CFOgmzpK.css} +18 -74
  109. package/dist/assets/{WorkflowExecutionsView-CHr4rzKW.js → WorkflowExecutionsView-DrfZ7QK8.js} +151 -165
  110. package/dist/assets/{WorkflowHistory-C-lUH0fo.css → WorkflowHistory-D0ufvWsH.css} +14 -57
  111. package/dist/assets/{WorkflowHistory-BSijDFcx.js → WorkflowHistory-eqsh1yXn.js} +16 -29
  112. package/dist/assets/{WorkflowOnboardingView-CvuowIe6.js → WorkflowOnboardingView-Kbe8c2_R.js} +22 -5
  113. package/dist/assets/{WorkflowPreview-CYf78I6t.js → WorkflowPreview-DKTyMYfO.js} +5 -11
  114. package/dist/assets/{WorkflowPreview-Bpiv2_RO.css → WorkflowPreview-DuLM6rtd.css} +4 -15
  115. package/dist/assets/{WorkflowsView-Bc1WW7-8.js → WorkflowsView-ClrcrpKc.js} +110 -120
  116. package/dist/assets/WorkflowsView-D5fBzfD4.css +65 -0
  117. package/dist/assets/{index-D50gpyk6.css → index-Bo70cRA3.css} +350 -1351
  118. package/dist/assets/{index-D57HUAs6.js → index-fCEqBD8K.js} +45117 -40863
  119. package/dist/assets/polyfills-BN5TIqPj.js +5985 -0
  120. package/dist/assets/{pushConnection.store-BrFt2YWH.js → pushConnection.store-Kmly9nV5.js} +2 -3
  121. package/dist/assets/{templateActions-BrLvM4wQ.js → templateActions-xeWyRgrU.js} +1 -1
  122. package/dist/assets/{testDefinition.store.ee-DJ6gErZh.js → testDefinition.store.ee-C9BPbACc.js} +1 -1
  123. package/dist/assets/{useBugReporting-v6zXxGxR.js → useBugReporting-CbgIVUCL.js} +1 -1
  124. package/dist/assets/{useExecutionDebugging-Dhwr-oW3.js → useExecutionDebugging-Cuf88DQE.js} +3 -6
  125. package/dist/assets/{useExecutionHelpers-Ovym9OwA.js → useExecutionHelpers-BIxUwlsh.js} +3 -4
  126. package/dist/assets/{useGlobalEntityCreation-D_NS7_je.js → useGlobalEntityCreation-DGVSN-Im.js} +29 -14
  127. package/dist/assets/{useNodeViewVersionSwitcher-ESq0kPP5.js → useNodeViewVersionSwitcher-Eg-dOWbq.js} +1 -1
  128. package/dist/assets/{usePushConnection-DCkWEVa2.js → usePushConnection-D-iAKJiL.js} +36 -22
  129. package/dist/assets/{useRunWorkflow-B_S0x25z.css → useRunWorkflow-BDl-2MsN.css} +24 -106
  130. package/dist/assets/{useRunWorkflow-g1Tw1vWo.js → useRunWorkflow-BXE6bWp2.js} +1547 -1581
  131. package/dist/assets/{useWorkflowActivate-DibPO-sA.js → useWorkflowActivate-D8cU5eJ_.js} +1 -1
  132. package/dist/index.html +4 -2
  133. package/package.json +1 -1
  134. package/tsconfig.json +2 -1
  135. package/vite.config.mts +11 -0
  136. package/dist/assets/CollectionParameter-D7-YFFFP.js +0 -4
  137. package/dist/assets/CredentialsView-ChjCCSbV.css +0 -56
  138. package/dist/assets/ErrorView-Dzof6SY8.css +0 -35
  139. package/dist/assets/FileSaver.min-BsJSdQo9.js +0 -74
  140. package/dist/assets/ProjectHeader-CTK_rV3h.css +0 -28
  141. package/dist/assets/RunDataJsonActions-CUYH2C-z.js +0 -5509
  142. package/dist/assets/SettingsExternalSecrets-BD5PuMIG.css +0 -50
  143. package/dist/assets/SettingsLdapView-CDm8JWNK.js +0 -2417
  144. package/dist/assets/SettingsLogStreamingView-CWIuI89G.css +0 -75
  145. package/dist/assets/SetupWorkflowFromTemplateView-CvsDVBkh.css +0 -44
  146. package/dist/assets/VirtualSchema-DFybirEh.js +0 -1863
  147. package/dist/assets/WorkerView-C_d54L0W.css +0 -181
  148. package/dist/assets/WorkflowExecutionsLandingPage-B1zCnzh_.css +0 -39
  149. package/dist/assets/WorkflowsView-C1eCTa1K.css +0 -82
  150. /package/dist/assets/{ProjectCardBadge-DPUG4BoB.css → ProjectCardBadge-DQvW5T7s.css} +0 -0
  151. /package/dist/assets/{SettingsUsersView-Ba9S2o-I.css → SettingsUsersView-C13eCMjh.css} +0 -0
@@ -0,0 +1,2423 @@
1
+ import { cI as getDefaultExportFromCjs, r as ref, aU as toRefs, o as onMounted, b0 as onUnmounted, c as openBlock, h as createElementBlock, s as renderSlot, i as createVNode, f as createCommentVNode, j as createBaseVNode, t as toDisplayString, H as watch, y as nextTick, gT as pushScopeId, gU as popScopeId, d as defineComponent, a as useToast, a3 as useDocumentTitle, a5 as usePageRedirectionHelper, p as useSettingsStore, q as computed, w as withCtx, k as createTextVNode, l as unref, n as normalizeClass, ay as withDirectives, e as createBlock, gV as ElTableColumn, gW as ElTable, g as useI18n, gX as createFormEventBus, ae as MODAL_CONFIRM, m as resolveComponent, di as resolveDirective, al as useMessage, gY as capitalizeFirstLetter, gZ as convertToDisplayDate, _ as _export_sfc } from "./index-fCEqBD8K.js";
2
+ var humanizeDuration$1 = { exports: {} };
3
+ var hasRequiredHumanizeDuration;
4
+ function requireHumanizeDuration() {
5
+ if (hasRequiredHumanizeDuration) return humanizeDuration$1.exports;
6
+ hasRequiredHumanizeDuration = 1;
7
+ (function(module) {
8
+ (function() {
9
+ var greek = {
10
+ y: function(c) {
11
+ return c === 1 ? "χρόνος" : "χρόνια";
12
+ },
13
+ mo: function(c) {
14
+ return c === 1 ? "μήνας" : "μήνες";
15
+ },
16
+ w: function(c) {
17
+ return c === 1 ? "εβδομάδα" : "εβδομάδες";
18
+ },
19
+ d: function(c) {
20
+ return c === 1 ? "μέρα" : "μέρες";
21
+ },
22
+ h: function(c) {
23
+ return c === 1 ? "ώρα" : "ώρες";
24
+ },
25
+ m: function(c) {
26
+ return c === 1 ? "λεπτό" : "λεπτά";
27
+ },
28
+ s: function(c) {
29
+ return c === 1 ? "δευτερόλεπτο" : "δευτερόλεπτα";
30
+ },
31
+ ms: function(c) {
32
+ return (c === 1 ? "χιλιοστό" : "χιλιοστά") + " του δευτερολέπτου";
33
+ },
34
+ decimal: ","
35
+ };
36
+ var ARABIC_DIGITS = ["۰", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"];
37
+ var LANGUAGES = {
38
+ af: {
39
+ y: "jaar",
40
+ mo: function(c) {
41
+ return "maand" + (c === 1 ? "" : "e");
42
+ },
43
+ w: function(c) {
44
+ return c === 1 ? "week" : "weke";
45
+ },
46
+ d: function(c) {
47
+ return c === 1 ? "dag" : "dae";
48
+ },
49
+ h: function(c) {
50
+ return c === 1 ? "uur" : "ure";
51
+ },
52
+ m: function(c) {
53
+ return c === 1 ? "minuut" : "minute";
54
+ },
55
+ s: function(c) {
56
+ return "sekonde" + (c === 1 ? "" : "s");
57
+ },
58
+ ms: function(c) {
59
+ return "millisekonde" + (c === 1 ? "" : "s");
60
+ },
61
+ decimal: ","
62
+ },
63
+ ar: {
64
+ y: function(c) {
65
+ return ["سنة", "سنتان", "سنوات"][getArabicForm(c)];
66
+ },
67
+ mo: function(c) {
68
+ return ["شهر", "شهران", "أشهر"][getArabicForm(c)];
69
+ },
70
+ w: function(c) {
71
+ return ["أسبوع", "أسبوعين", "أسابيع"][getArabicForm(c)];
72
+ },
73
+ d: function(c) {
74
+ return ["يوم", "يومين", "أيام"][getArabicForm(c)];
75
+ },
76
+ h: function(c) {
77
+ return ["ساعة", "ساعتين", "ساعات"][getArabicForm(c)];
78
+ },
79
+ m: function(c) {
80
+ return ["دقيقة", "دقيقتان", "دقائق"][getArabicForm(c)];
81
+ },
82
+ s: function(c) {
83
+ return ["ثانية", "ثانيتان", "ثواني"][getArabicForm(c)];
84
+ },
85
+ ms: function(c) {
86
+ return ["جزء من الثانية", "جزآن من الثانية", "أجزاء من الثانية"][getArabicForm(c)];
87
+ },
88
+ decimal: ",",
89
+ delimiter: " و ",
90
+ _formatCount: function(count, decimal) {
91
+ var replacements = assign(ARABIC_DIGITS, { ".": decimal });
92
+ var characters = count.toString().split("");
93
+ for (var i = 0; i < characters.length; i++) {
94
+ var character = characters[i];
95
+ if (has(replacements, character)) {
96
+ characters[i] = replacements[character];
97
+ }
98
+ }
99
+ return characters.join("");
100
+ }
101
+ },
102
+ bg: {
103
+ y: function(c) {
104
+ return ["години", "година", "години"][getSlavicForm(c)];
105
+ },
106
+ mo: function(c) {
107
+ return ["месеца", "месец", "месеца"][getSlavicForm(c)];
108
+ },
109
+ w: function(c) {
110
+ return ["седмици", "седмица", "седмици"][getSlavicForm(c)];
111
+ },
112
+ d: function(c) {
113
+ return ["дни", "ден", "дни"][getSlavicForm(c)];
114
+ },
115
+ h: function(c) {
116
+ return ["часа", "час", "часа"][getSlavicForm(c)];
117
+ },
118
+ m: function(c) {
119
+ return ["минути", "минута", "минути"][getSlavicForm(c)];
120
+ },
121
+ s: function(c) {
122
+ return ["секунди", "секунда", "секунди"][getSlavicForm(c)];
123
+ },
124
+ ms: function(c) {
125
+ return ["милисекунди", "милисекунда", "милисекунди"][getSlavicForm(c)];
126
+ },
127
+ decimal: ","
128
+ },
129
+ bn: {
130
+ y: "বছর",
131
+ mo: "মাস",
132
+ w: "সপ্তাহ",
133
+ d: "দিন",
134
+ h: "ঘন্টা",
135
+ m: "মিনিট",
136
+ s: "সেকেন্ড",
137
+ ms: "মিলিসেকেন্ড"
138
+ },
139
+ ca: {
140
+ y: function(c) {
141
+ return "any" + (c === 1 ? "" : "s");
142
+ },
143
+ mo: function(c) {
144
+ return "mes" + (c === 1 ? "" : "os");
145
+ },
146
+ w: function(c) {
147
+ return "setman" + (c === 1 ? "a" : "es");
148
+ },
149
+ d: function(c) {
150
+ return "di" + (c === 1 ? "a" : "es");
151
+ },
152
+ h: function(c) {
153
+ return "hor" + (c === 1 ? "a" : "es");
154
+ },
155
+ m: function(c) {
156
+ return "minut" + (c === 1 ? "" : "s");
157
+ },
158
+ s: function(c) {
159
+ return "segon" + (c === 1 ? "" : "s");
160
+ },
161
+ ms: function(c) {
162
+ return "milisegon" + (c === 1 ? "" : "s");
163
+ },
164
+ decimal: ","
165
+ },
166
+ cs: {
167
+ y: function(c) {
168
+ return ["rok", "roku", "roky", "let"][getCzechOrSlovakForm(c)];
169
+ },
170
+ mo: function(c) {
171
+ return ["měsíc", "měsíce", "měsíce", "měsíců"][getCzechOrSlovakForm(c)];
172
+ },
173
+ w: function(c) {
174
+ return ["týden", "týdne", "týdny", "týdnů"][getCzechOrSlovakForm(c)];
175
+ },
176
+ d: function(c) {
177
+ return ["den", "dne", "dny", "dní"][getCzechOrSlovakForm(c)];
178
+ },
179
+ h: function(c) {
180
+ return ["hodina", "hodiny", "hodiny", "hodin"][getCzechOrSlovakForm(c)];
181
+ },
182
+ m: function(c) {
183
+ return ["minuta", "minuty", "minuty", "minut"][getCzechOrSlovakForm(c)];
184
+ },
185
+ s: function(c) {
186
+ return ["sekunda", "sekundy", "sekundy", "sekund"][getCzechOrSlovakForm(c)];
187
+ },
188
+ ms: function(c) {
189
+ return ["milisekunda", "milisekundy", "milisekundy", "milisekund"][getCzechOrSlovakForm(c)];
190
+ },
191
+ decimal: ","
192
+ },
193
+ cy: {
194
+ y: "flwyddyn",
195
+ mo: "mis",
196
+ w: "wythnos",
197
+ d: "diwrnod",
198
+ h: "awr",
199
+ m: "munud",
200
+ s: "eiliad",
201
+ ms: "milieiliad"
202
+ },
203
+ da: {
204
+ y: "år",
205
+ mo: function(c) {
206
+ return "måned" + (c === 1 ? "" : "er");
207
+ },
208
+ w: function(c) {
209
+ return "uge" + (c === 1 ? "" : "r");
210
+ },
211
+ d: function(c) {
212
+ return "dag" + (c === 1 ? "" : "e");
213
+ },
214
+ h: function(c) {
215
+ return "time" + (c === 1 ? "" : "r");
216
+ },
217
+ m: function(c) {
218
+ return "minut" + (c === 1 ? "" : "ter");
219
+ },
220
+ s: function(c) {
221
+ return "sekund" + (c === 1 ? "" : "er");
222
+ },
223
+ ms: function(c) {
224
+ return "millisekund" + (c === 1 ? "" : "er");
225
+ },
226
+ decimal: ","
227
+ },
228
+ de: {
229
+ y: function(c) {
230
+ return "Jahr" + (c === 1 ? "" : "e");
231
+ },
232
+ mo: function(c) {
233
+ return "Monat" + (c === 1 ? "" : "e");
234
+ },
235
+ w: function(c) {
236
+ return "Woche" + (c === 1 ? "" : "n");
237
+ },
238
+ d: function(c) {
239
+ return "Tag" + (c === 1 ? "" : "e");
240
+ },
241
+ h: function(c) {
242
+ return "Stunde" + (c === 1 ? "" : "n");
243
+ },
244
+ m: function(c) {
245
+ return "Minute" + (c === 1 ? "" : "n");
246
+ },
247
+ s: function(c) {
248
+ return "Sekunde" + (c === 1 ? "" : "n");
249
+ },
250
+ ms: function(c) {
251
+ return "Millisekunde" + (c === 1 ? "" : "n");
252
+ },
253
+ decimal: ","
254
+ },
255
+ el: greek,
256
+ en: {
257
+ y: function(c) {
258
+ return "year" + (c === 1 ? "" : "s");
259
+ },
260
+ mo: function(c) {
261
+ return "month" + (c === 1 ? "" : "s");
262
+ },
263
+ w: function(c) {
264
+ return "week" + (c === 1 ? "" : "s");
265
+ },
266
+ d: function(c) {
267
+ return "day" + (c === 1 ? "" : "s");
268
+ },
269
+ h: function(c) {
270
+ return "hour" + (c === 1 ? "" : "s");
271
+ },
272
+ m: function(c) {
273
+ return "minute" + (c === 1 ? "" : "s");
274
+ },
275
+ s: function(c) {
276
+ return "second" + (c === 1 ? "" : "s");
277
+ },
278
+ ms: function(c) {
279
+ return "millisecond" + (c === 1 ? "" : "s");
280
+ },
281
+ decimal: "."
282
+ },
283
+ eo: {
284
+ y: function(c) {
285
+ return "jaro" + (c === 1 ? "" : "j");
286
+ },
287
+ mo: function(c) {
288
+ return "monato" + (c === 1 ? "" : "j");
289
+ },
290
+ w: function(c) {
291
+ return "semajno" + (c === 1 ? "" : "j");
292
+ },
293
+ d: function(c) {
294
+ return "tago" + (c === 1 ? "" : "j");
295
+ },
296
+ h: function(c) {
297
+ return "horo" + (c === 1 ? "" : "j");
298
+ },
299
+ m: function(c) {
300
+ return "minuto" + (c === 1 ? "" : "j");
301
+ },
302
+ s: function(c) {
303
+ return "sekundo" + (c === 1 ? "" : "j");
304
+ },
305
+ ms: function(c) {
306
+ return "milisekundo" + (c === 1 ? "" : "j");
307
+ },
308
+ decimal: ","
309
+ },
310
+ es: {
311
+ y: function(c) {
312
+ return "año" + (c === 1 ? "" : "s");
313
+ },
314
+ mo: function(c) {
315
+ return "mes" + (c === 1 ? "" : "es");
316
+ },
317
+ w: function(c) {
318
+ return "semana" + (c === 1 ? "" : "s");
319
+ },
320
+ d: function(c) {
321
+ return "día" + (c === 1 ? "" : "s");
322
+ },
323
+ h: function(c) {
324
+ return "hora" + (c === 1 ? "" : "s");
325
+ },
326
+ m: function(c) {
327
+ return "minuto" + (c === 1 ? "" : "s");
328
+ },
329
+ s: function(c) {
330
+ return "segundo" + (c === 1 ? "" : "s");
331
+ },
332
+ ms: function(c) {
333
+ return "milisegundo" + (c === 1 ? "" : "s");
334
+ },
335
+ decimal: ","
336
+ },
337
+ et: {
338
+ y: function(c) {
339
+ return "aasta" + (c === 1 ? "" : "t");
340
+ },
341
+ mo: function(c) {
342
+ return "kuu" + (c === 1 ? "" : "d");
343
+ },
344
+ w: function(c) {
345
+ return "nädal" + (c === 1 ? "" : "at");
346
+ },
347
+ d: function(c) {
348
+ return "päev" + (c === 1 ? "" : "a");
349
+ },
350
+ h: function(c) {
351
+ return "tund" + (c === 1 ? "" : "i");
352
+ },
353
+ m: function(c) {
354
+ return "minut" + (c === 1 ? "" : "it");
355
+ },
356
+ s: function(c) {
357
+ return "sekund" + (c === 1 ? "" : "it");
358
+ },
359
+ ms: function(c) {
360
+ return "millisekund" + (c === 1 ? "" : "it");
361
+ },
362
+ decimal: ","
363
+ },
364
+ eu: {
365
+ y: "urte",
366
+ mo: "hilabete",
367
+ w: "aste",
368
+ d: "egun",
369
+ h: "ordu",
370
+ m: "minutu",
371
+ s: "segundo",
372
+ ms: "milisegundo",
373
+ decimal: ","
374
+ },
375
+ fa: {
376
+ y: "سال",
377
+ mo: "ماه",
378
+ w: "هفته",
379
+ d: "روز",
380
+ h: "ساعت",
381
+ m: "دقیقه",
382
+ s: "ثانیه",
383
+ ms: "میلی ثانیه",
384
+ decimal: "."
385
+ },
386
+ fi: {
387
+ y: function(c) {
388
+ return c === 1 ? "vuosi" : "vuotta";
389
+ },
390
+ mo: function(c) {
391
+ return c === 1 ? "kuukausi" : "kuukautta";
392
+ },
393
+ w: function(c) {
394
+ return "viikko" + (c === 1 ? "" : "a");
395
+ },
396
+ d: function(c) {
397
+ return "päivä" + (c === 1 ? "" : "ä");
398
+ },
399
+ h: function(c) {
400
+ return "tunti" + (c === 1 ? "" : "a");
401
+ },
402
+ m: function(c) {
403
+ return "minuutti" + (c === 1 ? "" : "a");
404
+ },
405
+ s: function(c) {
406
+ return "sekunti" + (c === 1 ? "" : "a");
407
+ },
408
+ ms: function(c) {
409
+ return "millisekunti" + (c === 1 ? "" : "a");
410
+ },
411
+ decimal: ","
412
+ },
413
+ fo: {
414
+ y: "ár",
415
+ mo: function(c) {
416
+ return c === 1 ? "mánaður" : "mánaðir";
417
+ },
418
+ w: function(c) {
419
+ return c === 1 ? "vika" : "vikur";
420
+ },
421
+ d: function(c) {
422
+ return c === 1 ? "dagur" : "dagar";
423
+ },
424
+ h: function(c) {
425
+ return c === 1 ? "tími" : "tímar";
426
+ },
427
+ m: function(c) {
428
+ return c === 1 ? "minuttur" : "minuttir";
429
+ },
430
+ s: "sekund",
431
+ ms: "millisekund",
432
+ decimal: ","
433
+ },
434
+ fr: {
435
+ y: function(c) {
436
+ return "an" + (c >= 2 ? "s" : "");
437
+ },
438
+ mo: "mois",
439
+ w: function(c) {
440
+ return "semaine" + (c >= 2 ? "s" : "");
441
+ },
442
+ d: function(c) {
443
+ return "jour" + (c >= 2 ? "s" : "");
444
+ },
445
+ h: function(c) {
446
+ return "heure" + (c >= 2 ? "s" : "");
447
+ },
448
+ m: function(c) {
449
+ return "minute" + (c >= 2 ? "s" : "");
450
+ },
451
+ s: function(c) {
452
+ return "seconde" + (c >= 2 ? "s" : "");
453
+ },
454
+ ms: function(c) {
455
+ return "milliseconde" + (c >= 2 ? "s" : "");
456
+ },
457
+ decimal: ","
458
+ },
459
+ gr: greek,
460
+ he: {
461
+ y: function(c) {
462
+ return c === 1 ? "שנה" : "שנים";
463
+ },
464
+ mo: function(c) {
465
+ return c === 1 ? "חודש" : "חודשים";
466
+ },
467
+ w: function(c) {
468
+ return c === 1 ? "שבוע" : "שבועות";
469
+ },
470
+ d: function(c) {
471
+ return c === 1 ? "יום" : "ימים";
472
+ },
473
+ h: function(c) {
474
+ return c === 1 ? "שעה" : "שעות";
475
+ },
476
+ m: function(c) {
477
+ return c === 1 ? "דקה" : "דקות";
478
+ },
479
+ s: function(c) {
480
+ return c === 1 ? "שניה" : "שניות";
481
+ },
482
+ ms: function(c) {
483
+ return c === 1 ? "מילישנייה" : "מילישניות";
484
+ },
485
+ decimal: "."
486
+ },
487
+ hr: {
488
+ y: function(c) {
489
+ if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {
490
+ return "godine";
491
+ }
492
+ return "godina";
493
+ },
494
+ mo: function(c) {
495
+ if (c === 1) {
496
+ return "mjesec";
497
+ } else if (c === 2 || c === 3 || c === 4) {
498
+ return "mjeseca";
499
+ }
500
+ return "mjeseci";
501
+ },
502
+ w: function(c) {
503
+ if (c % 10 === 1 && c !== 11) {
504
+ return "tjedan";
505
+ }
506
+ return "tjedna";
507
+ },
508
+ d: function(c) {
509
+ return c === 1 ? "dan" : "dana";
510
+ },
511
+ h: function(c) {
512
+ if (c === 1) {
513
+ return "sat";
514
+ } else if (c === 2 || c === 3 || c === 4) {
515
+ return "sata";
516
+ }
517
+ return "sati";
518
+ },
519
+ m: function(c) {
520
+ var mod10 = c % 10;
521
+ if ((mod10 === 2 || mod10 === 3 || mod10 === 4) && (c < 10 || c > 14)) {
522
+ return "minute";
523
+ }
524
+ return "minuta";
525
+ },
526
+ s: function(c) {
527
+ var mod10 = c % 10;
528
+ if (mod10 === 5 || Math.floor(c) === c && c >= 10 && c <= 19) {
529
+ return "sekundi";
530
+ } else if (mod10 === 1) {
531
+ return "sekunda";
532
+ } else if (mod10 === 2 || mod10 === 3 || mod10 === 4) {
533
+ return "sekunde";
534
+ }
535
+ return "sekundi";
536
+ },
537
+ ms: function(c) {
538
+ if (c === 1) {
539
+ return "milisekunda";
540
+ } else if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {
541
+ return "milisekunde";
542
+ }
543
+ return "milisekundi";
544
+ },
545
+ decimal: ","
546
+ },
547
+ hi: {
548
+ y: "साल",
549
+ mo: function(c) {
550
+ return c === 1 ? "महीना" : "महीने";
551
+ },
552
+ w: function(c) {
553
+ return c === 1 ? "हफ़्ता" : "हफ्ते";
554
+ },
555
+ d: "दिन",
556
+ h: function(c) {
557
+ return c === 1 ? "घंटा" : "घंटे";
558
+ },
559
+ m: "मिनट",
560
+ s: "सेकंड",
561
+ ms: "मिलीसेकंड",
562
+ decimal: "."
563
+ },
564
+ hu: {
565
+ y: "év",
566
+ mo: "hónap",
567
+ w: "hét",
568
+ d: "nap",
569
+ h: "óra",
570
+ m: "perc",
571
+ s: "másodperc",
572
+ ms: "ezredmásodperc",
573
+ decimal: ","
574
+ },
575
+ id: {
576
+ y: "tahun",
577
+ mo: "bulan",
578
+ w: "minggu",
579
+ d: "hari",
580
+ h: "jam",
581
+ m: "menit",
582
+ s: "detik",
583
+ ms: "milidetik",
584
+ decimal: "."
585
+ },
586
+ is: {
587
+ y: "ár",
588
+ mo: function(c) {
589
+ return "mánuð" + (c === 1 ? "ur" : "ir");
590
+ },
591
+ w: function(c) {
592
+ return "vik" + (c === 1 ? "a" : "ur");
593
+ },
594
+ d: function(c) {
595
+ return "dag" + (c === 1 ? "ur" : "ar");
596
+ },
597
+ h: function(c) {
598
+ return "klukkutím" + (c === 1 ? "i" : "ar");
599
+ },
600
+ m: function(c) {
601
+ return "mínút" + (c === 1 ? "a" : "ur");
602
+ },
603
+ s: function(c) {
604
+ return "sekúnd" + (c === 1 ? "a" : "ur");
605
+ },
606
+ ms: function(c) {
607
+ return "millisekúnd" + (c === 1 ? "a" : "ur");
608
+ },
609
+ decimal: "."
610
+ },
611
+ it: {
612
+ y: function(c) {
613
+ return "ann" + (c === 1 ? "o" : "i");
614
+ },
615
+ mo: function(c) {
616
+ return "mes" + (c === 1 ? "e" : "i");
617
+ },
618
+ w: function(c) {
619
+ return "settiman" + (c === 1 ? "a" : "e");
620
+ },
621
+ d: function(c) {
622
+ return "giorn" + (c === 1 ? "o" : "i");
623
+ },
624
+ h: function(c) {
625
+ return "or" + (c === 1 ? "a" : "e");
626
+ },
627
+ m: function(c) {
628
+ return "minut" + (c === 1 ? "o" : "i");
629
+ },
630
+ s: function(c) {
631
+ return "second" + (c === 1 ? "o" : "i");
632
+ },
633
+ ms: function(c) {
634
+ return "millisecond" + (c === 1 ? "o" : "i");
635
+ },
636
+ decimal: ","
637
+ },
638
+ ja: {
639
+ y: "年",
640
+ mo: "ヶ月",
641
+ w: "週",
642
+ d: "日",
643
+ h: "時間",
644
+ m: "分",
645
+ s: "秒",
646
+ ms: "ミリ秒",
647
+ decimal: "."
648
+ },
649
+ km: {
650
+ y: "ឆ្នាំ",
651
+ mo: "ខែ",
652
+ w: "សប្តាហ៍",
653
+ d: "ថ្ងៃ",
654
+ h: "ម៉ោង",
655
+ m: "នាទី",
656
+ s: "វិនាទី",
657
+ ms: "មិល្លីវិនាទី"
658
+ },
659
+ kn: {
660
+ y: function(c) {
661
+ return c === 1 ? "ವರ್ಷ" : "ವರ್ಷಗಳು";
662
+ },
663
+ mo: function(c) {
664
+ return c === 1 ? "ತಿಂಗಳು" : "ತಿಂಗಳುಗಳು";
665
+ },
666
+ w: function(c) {
667
+ return c === 1 ? "ವಾರ" : "ವಾರಗಳು";
668
+ },
669
+ d: function(c) {
670
+ return c === 1 ? "ದಿನ" : "ದಿನಗಳು";
671
+ },
672
+ h: function(c) {
673
+ return c === 1 ? "ಗಂಟೆ" : "ಗಂಟೆಗಳು";
674
+ },
675
+ m: function(c) {
676
+ return c === 1 ? "ನಿಮಿಷ" : "ನಿಮಿಷಗಳು";
677
+ },
678
+ s: function(c) {
679
+ return c === 1 ? "ಸೆಕೆಂಡ್" : "ಸೆಕೆಂಡುಗಳು";
680
+ },
681
+ ms: function(c) {
682
+ return c === 1 ? "ಮಿಲಿಸೆಕೆಂಡ್" : "ಮಿಲಿಸೆಕೆಂಡುಗಳು";
683
+ }
684
+ },
685
+ ko: {
686
+ y: "년",
687
+ mo: "개월",
688
+ w: "주일",
689
+ d: "일",
690
+ h: "시간",
691
+ m: "분",
692
+ s: "초",
693
+ ms: "밀리 초",
694
+ decimal: "."
695
+ },
696
+ ku: {
697
+ y: "sal",
698
+ mo: "meh",
699
+ w: "hefte",
700
+ d: "roj",
701
+ h: "seet",
702
+ m: "deqe",
703
+ s: "saniye",
704
+ ms: "mîlîçirk",
705
+ decimal: ","
706
+ },
707
+ lo: {
708
+ y: "ປີ",
709
+ mo: "ເດືອນ",
710
+ w: "ອາທິດ",
711
+ d: "ມື້",
712
+ h: "ຊົ່ວໂມງ",
713
+ m: "ນາທີ",
714
+ s: "ວິນາທີ",
715
+ ms: "ມິນລິວິນາທີ",
716
+ decimal: ","
717
+ },
718
+ lt: {
719
+ y: function(c) {
720
+ return c % 10 === 0 || c % 100 >= 10 && c % 100 <= 20 ? "metų" : "metai";
721
+ },
722
+ mo: function(c) {
723
+ return ["mėnuo", "mėnesiai", "mėnesių"][getLithuanianForm(c)];
724
+ },
725
+ w: function(c) {
726
+ return ["savaitė", "savaitės", "savaičių"][getLithuanianForm(c)];
727
+ },
728
+ d: function(c) {
729
+ return ["diena", "dienos", "dienų"][getLithuanianForm(c)];
730
+ },
731
+ h: function(c) {
732
+ return ["valanda", "valandos", "valandų"][getLithuanianForm(c)];
733
+ },
734
+ m: function(c) {
735
+ return ["minutė", "minutės", "minučių"][getLithuanianForm(c)];
736
+ },
737
+ s: function(c) {
738
+ return ["sekundė", "sekundės", "sekundžių"][getLithuanianForm(c)];
739
+ },
740
+ ms: function(c) {
741
+ return ["milisekundė", "milisekundės", "milisekundžių"][getLithuanianForm(c)];
742
+ },
743
+ decimal: ","
744
+ },
745
+ lv: {
746
+ y: function(c) {
747
+ return getLatvianForm(c) ? "gads" : "gadi";
748
+ },
749
+ mo: function(c) {
750
+ return getLatvianForm(c) ? "mēnesis" : "mēneši";
751
+ },
752
+ w: function(c) {
753
+ return getLatvianForm(c) ? "nedēļa" : "nedēļas";
754
+ },
755
+ d: function(c) {
756
+ return getLatvianForm(c) ? "diena" : "dienas";
757
+ },
758
+ h: function(c) {
759
+ return getLatvianForm(c) ? "stunda" : "stundas";
760
+ },
761
+ m: function(c) {
762
+ return getLatvianForm(c) ? "minūte" : "minūtes";
763
+ },
764
+ s: function(c) {
765
+ return getLatvianForm(c) ? "sekunde" : "sekundes";
766
+ },
767
+ ms: function(c) {
768
+ return getLatvianForm(c) ? "milisekunde" : "milisekundes";
769
+ },
770
+ decimal: ","
771
+ },
772
+ mk: {
773
+ y: function(c) {
774
+ return c === 1 ? "година" : "години";
775
+ },
776
+ mo: function(c) {
777
+ return c === 1 ? "месец" : "месеци";
778
+ },
779
+ w: function(c) {
780
+ return c === 1 ? "недела" : "недели";
781
+ },
782
+ d: function(c) {
783
+ return c === 1 ? "ден" : "дена";
784
+ },
785
+ h: function(c) {
786
+ return c === 1 ? "час" : "часа";
787
+ },
788
+ m: function(c) {
789
+ return c === 1 ? "минута" : "минути";
790
+ },
791
+ s: function(c) {
792
+ return c === 1 ? "секунда" : "секунди";
793
+ },
794
+ ms: function(c) {
795
+ return c === 1 ? "милисекунда" : "милисекунди";
796
+ },
797
+ decimal: ","
798
+ },
799
+ mr: {
800
+ y: function(c) {
801
+ return c === 1 ? "वर्ष" : "वर्षे";
802
+ },
803
+ mo: function(c) {
804
+ return c === 1 ? "महिना" : "महिने";
805
+ },
806
+ w: function(c) {
807
+ return c === 1 ? "आठवडा" : "आठवडे";
808
+ },
809
+ d: "दिवस",
810
+ h: "तास",
811
+ m: function(c) {
812
+ return c === 1 ? "मिनिट" : "मिनिटे";
813
+ },
814
+ s: "सेकंद",
815
+ ms: "मिलिसेकंद"
816
+ },
817
+ ms: {
818
+ y: "tahun",
819
+ mo: "bulan",
820
+ w: "minggu",
821
+ d: "hari",
822
+ h: "jam",
823
+ m: "minit",
824
+ s: "saat",
825
+ ms: "milisaat",
826
+ decimal: "."
827
+ },
828
+ nl: {
829
+ y: "jaar",
830
+ mo: function(c) {
831
+ return c === 1 ? "maand" : "maanden";
832
+ },
833
+ w: function(c) {
834
+ return c === 1 ? "week" : "weken";
835
+ },
836
+ d: function(c) {
837
+ return c === 1 ? "dag" : "dagen";
838
+ },
839
+ h: "uur",
840
+ m: function(c) {
841
+ return c === 1 ? "minuut" : "minuten";
842
+ },
843
+ s: function(c) {
844
+ return c === 1 ? "seconde" : "seconden";
845
+ },
846
+ ms: function(c) {
847
+ return c === 1 ? "milliseconde" : "milliseconden";
848
+ },
849
+ decimal: ","
850
+ },
851
+ no: {
852
+ y: "år",
853
+ mo: function(c) {
854
+ return "måned" + (c === 1 ? "" : "er");
855
+ },
856
+ w: function(c) {
857
+ return "uke" + (c === 1 ? "" : "r");
858
+ },
859
+ d: function(c) {
860
+ return "dag" + (c === 1 ? "" : "er");
861
+ },
862
+ h: function(c) {
863
+ return "time" + (c === 1 ? "" : "r");
864
+ },
865
+ m: function(c) {
866
+ return "minutt" + (c === 1 ? "" : "er");
867
+ },
868
+ s: function(c) {
869
+ return "sekund" + (c === 1 ? "" : "er");
870
+ },
871
+ ms: function(c) {
872
+ return "millisekund" + (c === 1 ? "" : "er");
873
+ },
874
+ decimal: ","
875
+ },
876
+ pl: {
877
+ y: function(c) {
878
+ return ["rok", "roku", "lata", "lat"][getPolishForm(c)];
879
+ },
880
+ mo: function(c) {
881
+ return ["miesiąc", "miesiąca", "miesiące", "miesięcy"][getPolishForm(c)];
882
+ },
883
+ w: function(c) {
884
+ return ["tydzień", "tygodnia", "tygodnie", "tygodni"][getPolishForm(c)];
885
+ },
886
+ d: function(c) {
887
+ return ["dzień", "dnia", "dni", "dni"][getPolishForm(c)];
888
+ },
889
+ h: function(c) {
890
+ return ["godzina", "godziny", "godziny", "godzin"][getPolishForm(c)];
891
+ },
892
+ m: function(c) {
893
+ return ["minuta", "minuty", "minuty", "minut"][getPolishForm(c)];
894
+ },
895
+ s: function(c) {
896
+ return ["sekunda", "sekundy", "sekundy", "sekund"][getPolishForm(c)];
897
+ },
898
+ ms: function(c) {
899
+ return ["milisekunda", "milisekundy", "milisekundy", "milisekund"][getPolishForm(c)];
900
+ },
901
+ decimal: ","
902
+ },
903
+ pt: {
904
+ y: function(c) {
905
+ return "ano" + (c === 1 ? "" : "s");
906
+ },
907
+ mo: function(c) {
908
+ return c === 1 ? "mês" : "meses";
909
+ },
910
+ w: function(c) {
911
+ return "semana" + (c === 1 ? "" : "s");
912
+ },
913
+ d: function(c) {
914
+ return "dia" + (c === 1 ? "" : "s");
915
+ },
916
+ h: function(c) {
917
+ return "hora" + (c === 1 ? "" : "s");
918
+ },
919
+ m: function(c) {
920
+ return "minuto" + (c === 1 ? "" : "s");
921
+ },
922
+ s: function(c) {
923
+ return "segundo" + (c === 1 ? "" : "s");
924
+ },
925
+ ms: function(c) {
926
+ return "milissegundo" + (c === 1 ? "" : "s");
927
+ },
928
+ decimal: ","
929
+ },
930
+ ro: {
931
+ y: function(c) {
932
+ return c === 1 ? "an" : "ani";
933
+ },
934
+ mo: function(c) {
935
+ return c === 1 ? "lună" : "luni";
936
+ },
937
+ w: function(c) {
938
+ return c === 1 ? "săptămână" : "săptămâni";
939
+ },
940
+ d: function(c) {
941
+ return c === 1 ? "zi" : "zile";
942
+ },
943
+ h: function(c) {
944
+ return c === 1 ? "oră" : "ore";
945
+ },
946
+ m: function(c) {
947
+ return c === 1 ? "minut" : "minute";
948
+ },
949
+ s: function(c) {
950
+ return c === 1 ? "secundă" : "secunde";
951
+ },
952
+ ms: function(c) {
953
+ return c === 1 ? "milisecundă" : "milisecunde";
954
+ },
955
+ decimal: ","
956
+ },
957
+ ru: {
958
+ y: function(c) {
959
+ return ["лет", "год", "года"][getSlavicForm(c)];
960
+ },
961
+ mo: function(c) {
962
+ return ["месяцев", "месяц", "месяца"][getSlavicForm(c)];
963
+ },
964
+ w: function(c) {
965
+ return ["недель", "неделя", "недели"][getSlavicForm(c)];
966
+ },
967
+ d: function(c) {
968
+ return ["дней", "день", "дня"][getSlavicForm(c)];
969
+ },
970
+ h: function(c) {
971
+ return ["часов", "час", "часа"][getSlavicForm(c)];
972
+ },
973
+ m: function(c) {
974
+ return ["минут", "минута", "минуты"][getSlavicForm(c)];
975
+ },
976
+ s: function(c) {
977
+ return ["секунд", "секунда", "секунды"][getSlavicForm(c)];
978
+ },
979
+ ms: function(c) {
980
+ return ["миллисекунд", "миллисекунда", "миллисекунды"][getSlavicForm(c)];
981
+ },
982
+ decimal: ","
983
+ },
984
+ sq: {
985
+ y: function(c) {
986
+ return c === 1 ? "vit" : "vjet";
987
+ },
988
+ mo: "muaj",
989
+ w: "javë",
990
+ d: "ditë",
991
+ h: "orë",
992
+ m: function(c) {
993
+ return "minut" + (c === 1 ? "ë" : "a");
994
+ },
995
+ s: function(c) {
996
+ return "sekond" + (c === 1 ? "ë" : "a");
997
+ },
998
+ ms: function(c) {
999
+ return "milisekond" + (c === 1 ? "ë" : "a");
1000
+ },
1001
+ decimal: ","
1002
+ },
1003
+ sr: {
1004
+ y: function(c) {
1005
+ return ["години", "година", "године"][getSlavicForm(c)];
1006
+ },
1007
+ mo: function(c) {
1008
+ return ["месеци", "месец", "месеца"][getSlavicForm(c)];
1009
+ },
1010
+ w: function(c) {
1011
+ return ["недељи", "недеља", "недеље"][getSlavicForm(c)];
1012
+ },
1013
+ d: function(c) {
1014
+ return ["дани", "дан", "дана"][getSlavicForm(c)];
1015
+ },
1016
+ h: function(c) {
1017
+ return ["сати", "сат", "сата"][getSlavicForm(c)];
1018
+ },
1019
+ m: function(c) {
1020
+ return ["минута", "минут", "минута"][getSlavicForm(c)];
1021
+ },
1022
+ s: function(c) {
1023
+ return ["секунди", "секунда", "секунде"][getSlavicForm(c)];
1024
+ },
1025
+ ms: function(c) {
1026
+ return ["милисекунди", "милисекунда", "милисекунде"][getSlavicForm(c)];
1027
+ },
1028
+ decimal: ","
1029
+ },
1030
+ ta: {
1031
+ y: function(c) {
1032
+ return c === 1 ? "வருடம்" : "ஆண்டுகள்";
1033
+ },
1034
+ mo: function(c) {
1035
+ return c === 1 ? "மாதம்" : "மாதங்கள்";
1036
+ },
1037
+ w: function(c) {
1038
+ return c === 1 ? "வாரம்" : "வாரங்கள்";
1039
+ },
1040
+ d: function(c) {
1041
+ return c === 1 ? "நாள்" : "நாட்கள்";
1042
+ },
1043
+ h: function(c) {
1044
+ return c === 1 ? "மணி" : "மணிநேரம்";
1045
+ },
1046
+ m: function(c) {
1047
+ return "நிமிட" + (c === 1 ? "ம்" : "ங்கள்");
1048
+ },
1049
+ s: function(c) {
1050
+ return "வினாடி" + (c === 1 ? "" : "கள்");
1051
+ },
1052
+ ms: function(c) {
1053
+ return "மில்லி விநாடி" + (c === 1 ? "" : "கள்");
1054
+ }
1055
+ },
1056
+ te: {
1057
+ y: function(c) {
1058
+ return "సంవత్స" + (c === 1 ? "రం" : "రాల");
1059
+ },
1060
+ mo: function(c) {
1061
+ return "నెల" + (c === 1 ? "" : "ల");
1062
+ },
1063
+ w: function(c) {
1064
+ return c === 1 ? "వారం" : "వారాలు";
1065
+ },
1066
+ d: function(c) {
1067
+ return "రోజు" + (c === 1 ? "" : "లు");
1068
+ },
1069
+ h: function(c) {
1070
+ return "గంట" + (c === 1 ? "" : "లు");
1071
+ },
1072
+ m: function(c) {
1073
+ return c === 1 ? "నిమిషం" : "నిమిషాలు";
1074
+ },
1075
+ s: function(c) {
1076
+ return c === 1 ? "సెకను" : "సెకన్లు";
1077
+ },
1078
+ ms: function(c) {
1079
+ return c === 1 ? "మిల్లీసెకన్" : "మిల్లీసెకన్లు";
1080
+ }
1081
+ },
1082
+ uk: {
1083
+ y: function(c) {
1084
+ return ["років", "рік", "роки"][getSlavicForm(c)];
1085
+ },
1086
+ mo: function(c) {
1087
+ return ["місяців", "місяць", "місяці"][getSlavicForm(c)];
1088
+ },
1089
+ w: function(c) {
1090
+ return ["тижнів", "тиждень", "тижні"][getSlavicForm(c)];
1091
+ },
1092
+ d: function(c) {
1093
+ return ["днів", "день", "дні"][getSlavicForm(c)];
1094
+ },
1095
+ h: function(c) {
1096
+ return ["годин", "година", "години"][getSlavicForm(c)];
1097
+ },
1098
+ m: function(c) {
1099
+ return ["хвилин", "хвилина", "хвилини"][getSlavicForm(c)];
1100
+ },
1101
+ s: function(c) {
1102
+ return ["секунд", "секунда", "секунди"][getSlavicForm(c)];
1103
+ },
1104
+ ms: function(c) {
1105
+ return ["мілісекунд", "мілісекунда", "мілісекунди"][getSlavicForm(c)];
1106
+ },
1107
+ decimal: ","
1108
+ },
1109
+ ur: {
1110
+ y: "سال",
1111
+ mo: function(c) {
1112
+ return c === 1 ? "مہینہ" : "مہینے";
1113
+ },
1114
+ w: function(c) {
1115
+ return c === 1 ? "ہفتہ" : "ہفتے";
1116
+ },
1117
+ d: "دن",
1118
+ h: function(c) {
1119
+ return c === 1 ? "گھنٹہ" : "گھنٹے";
1120
+ },
1121
+ m: "منٹ",
1122
+ s: "سیکنڈ",
1123
+ ms: "ملی سیکنڈ",
1124
+ decimal: "."
1125
+ },
1126
+ sk: {
1127
+ y: function(c) {
1128
+ return ["rok", "roky", "roky", "rokov"][getCzechOrSlovakForm(c)];
1129
+ },
1130
+ mo: function(c) {
1131
+ return ["mesiac", "mesiace", "mesiace", "mesiacov"][getCzechOrSlovakForm(c)];
1132
+ },
1133
+ w: function(c) {
1134
+ return ["týždeň", "týždne", "týždne", "týždňov"][getCzechOrSlovakForm(c)];
1135
+ },
1136
+ d: function(c) {
1137
+ return ["deň", "dni", "dni", "dní"][getCzechOrSlovakForm(c)];
1138
+ },
1139
+ h: function(c) {
1140
+ return ["hodina", "hodiny", "hodiny", "hodín"][getCzechOrSlovakForm(c)];
1141
+ },
1142
+ m: function(c) {
1143
+ return ["minúta", "minúty", "minúty", "minút"][getCzechOrSlovakForm(c)];
1144
+ },
1145
+ s: function(c) {
1146
+ return ["sekunda", "sekundy", "sekundy", "sekúnd"][getCzechOrSlovakForm(c)];
1147
+ },
1148
+ ms: function(c) {
1149
+ return ["milisekunda", "milisekundy", "milisekundy", "milisekúnd"][getCzechOrSlovakForm(c)];
1150
+ },
1151
+ decimal: ","
1152
+ },
1153
+ sl: {
1154
+ y: function(c) {
1155
+ if (c % 10 === 1) {
1156
+ return "leto";
1157
+ } else if (c % 100 === 2) {
1158
+ return "leti";
1159
+ } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c && c % 100 <= 5) {
1160
+ return "leta";
1161
+ } else {
1162
+ return "let";
1163
+ }
1164
+ },
1165
+ mo: function(c) {
1166
+ if (c % 10 === 1) {
1167
+ return "mesec";
1168
+ } else if (c % 100 === 2 || Math.floor(c) !== c && c % 100 <= 5) {
1169
+ return "meseca";
1170
+ } else if (c % 10 === 3 || c % 10 === 4) {
1171
+ return "mesece";
1172
+ } else {
1173
+ return "mesecev";
1174
+ }
1175
+ },
1176
+ w: function(c) {
1177
+ if (c % 10 === 1) {
1178
+ return "teden";
1179
+ } else if (c % 10 === 2 || Math.floor(c) !== c && c % 100 <= 4) {
1180
+ return "tedna";
1181
+ } else if (c % 10 === 3 || c % 10 === 4) {
1182
+ return "tedne";
1183
+ } else {
1184
+ return "tednov";
1185
+ }
1186
+ },
1187
+ d: function(c) {
1188
+ return c % 100 === 1 ? "dan" : "dni";
1189
+ },
1190
+ h: function(c) {
1191
+ if (c % 10 === 1) {
1192
+ return "ura";
1193
+ } else if (c % 100 === 2) {
1194
+ return "uri";
1195
+ } else if (c % 10 === 3 || c % 10 === 4 || Math.floor(c) !== c) {
1196
+ return "ure";
1197
+ } else {
1198
+ return "ur";
1199
+ }
1200
+ },
1201
+ m: function(c) {
1202
+ if (c % 10 === 1) {
1203
+ return "minuta";
1204
+ } else if (c % 10 === 2) {
1205
+ return "minuti";
1206
+ } else if (c % 10 === 3 || c % 10 === 4 || Math.floor(c) !== c && c % 100 <= 4) {
1207
+ return "minute";
1208
+ } else {
1209
+ return "minut";
1210
+ }
1211
+ },
1212
+ s: function(c) {
1213
+ if (c % 10 === 1) {
1214
+ return "sekunda";
1215
+ } else if (c % 100 === 2) {
1216
+ return "sekundi";
1217
+ } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {
1218
+ return "sekunde";
1219
+ } else {
1220
+ return "sekund";
1221
+ }
1222
+ },
1223
+ ms: function(c) {
1224
+ if (c % 10 === 1) {
1225
+ return "milisekunda";
1226
+ } else if (c % 100 === 2) {
1227
+ return "milisekundi";
1228
+ } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {
1229
+ return "milisekunde";
1230
+ } else {
1231
+ return "milisekund";
1232
+ }
1233
+ },
1234
+ decimal: ","
1235
+ },
1236
+ sv: {
1237
+ y: "år",
1238
+ mo: function(c) {
1239
+ return "månad" + (c === 1 ? "" : "er");
1240
+ },
1241
+ w: function(c) {
1242
+ return "veck" + (c === 1 ? "a" : "or");
1243
+ },
1244
+ d: function(c) {
1245
+ return "dag" + (c === 1 ? "" : "ar");
1246
+ },
1247
+ h: function(c) {
1248
+ return "timm" + (c === 1 ? "e" : "ar");
1249
+ },
1250
+ m: function(c) {
1251
+ return "minut" + (c === 1 ? "" : "er");
1252
+ },
1253
+ s: function(c) {
1254
+ return "sekund" + (c === 1 ? "" : "er");
1255
+ },
1256
+ ms: function(c) {
1257
+ return "millisekund" + (c === 1 ? "" : "er");
1258
+ },
1259
+ decimal: ","
1260
+ },
1261
+ sw: {
1262
+ y: function(c) {
1263
+ return c === 1 ? "mwaka" : "miaka";
1264
+ },
1265
+ mo: function(c) {
1266
+ return c === 1 ? "mwezi" : "miezi";
1267
+ },
1268
+ w: "wiki",
1269
+ d: function(c) {
1270
+ return c === 1 ? "siku" : "masiku";
1271
+ },
1272
+ h: function(c) {
1273
+ return c === 1 ? "saa" : "masaa";
1274
+ },
1275
+ m: "dakika",
1276
+ s: "sekunde",
1277
+ ms: "milisekunde",
1278
+ decimal: ".",
1279
+ _numberFirst: true
1280
+ },
1281
+ tr: {
1282
+ y: "yıl",
1283
+ mo: "ay",
1284
+ w: "hafta",
1285
+ d: "gün",
1286
+ h: "saat",
1287
+ m: "dakika",
1288
+ s: "saniye",
1289
+ ms: "milisaniye",
1290
+ decimal: ","
1291
+ },
1292
+ th: {
1293
+ y: "ปี",
1294
+ mo: "เดือน",
1295
+ w: "สัปดาห์",
1296
+ d: "วัน",
1297
+ h: "ชั่วโมง",
1298
+ m: "นาที",
1299
+ s: "วินาที",
1300
+ ms: "มิลลิวินาที",
1301
+ decimal: "."
1302
+ },
1303
+ vi: {
1304
+ y: "năm",
1305
+ mo: "tháng",
1306
+ w: "tuần",
1307
+ d: "ngày",
1308
+ h: "giờ",
1309
+ m: "phút",
1310
+ s: "giây",
1311
+ ms: "mili giây",
1312
+ decimal: ","
1313
+ },
1314
+ zh_CN: {
1315
+ y: "年",
1316
+ mo: "个月",
1317
+ w: "周",
1318
+ d: "天",
1319
+ h: "小时",
1320
+ m: "分钟",
1321
+ s: "秒",
1322
+ ms: "毫秒",
1323
+ decimal: "."
1324
+ },
1325
+ zh_TW: {
1326
+ y: "年",
1327
+ mo: "個月",
1328
+ w: "周",
1329
+ d: "天",
1330
+ h: "小時",
1331
+ m: "分鐘",
1332
+ s: "秒",
1333
+ ms: "毫秒",
1334
+ decimal: "."
1335
+ }
1336
+ };
1337
+ function humanizer(passedOptions) {
1338
+ var result = function humanizer2(ms, humanizerOptions) {
1339
+ var options = assign({}, result, humanizerOptions || {});
1340
+ return doHumanization(ms, options);
1341
+ };
1342
+ return assign(
1343
+ result,
1344
+ {
1345
+ language: "en",
1346
+ spacer: " ",
1347
+ conjunction: "",
1348
+ serialComma: true,
1349
+ units: ["y", "mo", "w", "d", "h", "m", "s"],
1350
+ languages: {},
1351
+ round: false,
1352
+ unitMeasures: {
1353
+ y: 315576e5,
1354
+ mo: 26298e5,
1355
+ w: 6048e5,
1356
+ d: 864e5,
1357
+ h: 36e5,
1358
+ m: 6e4,
1359
+ s: 1e3,
1360
+ ms: 1
1361
+ }
1362
+ },
1363
+ passedOptions
1364
+ );
1365
+ }
1366
+ var humanizeDuration2 = humanizer({});
1367
+ function getDictionary(options) {
1368
+ var languagesFromOptions = [options.language];
1369
+ if (has(options, "fallbacks")) {
1370
+ if (isArray(options.fallbacks) && options.fallbacks.length) {
1371
+ languagesFromOptions = languagesFromOptions.concat(options.fallbacks);
1372
+ } else {
1373
+ throw new Error("fallbacks must be an array with at least one element");
1374
+ }
1375
+ }
1376
+ for (var i = 0; i < languagesFromOptions.length; i++) {
1377
+ var languageToTry = languagesFromOptions[i];
1378
+ if (has(options.languages, languageToTry)) {
1379
+ return options.languages[languageToTry];
1380
+ } else if (has(LANGUAGES, languageToTry)) {
1381
+ return LANGUAGES[languageToTry];
1382
+ }
1383
+ }
1384
+ throw new Error("No language found.");
1385
+ }
1386
+ function doHumanization(ms, options) {
1387
+ var i, len, piece;
1388
+ ms = Math.abs(ms);
1389
+ var dictionary = getDictionary(options);
1390
+ var pieces = [];
1391
+ var unitName, unitMS, unitCount;
1392
+ for (i = 0, len = options.units.length; i < len; i++) {
1393
+ unitName = options.units[i];
1394
+ unitMS = options.unitMeasures[unitName];
1395
+ if (i + 1 === len) {
1396
+ if (has(options, "maxDecimalPoints")) {
1397
+ var expValue = Math.pow(10, options.maxDecimalPoints);
1398
+ var unitCountFloat = ms / unitMS;
1399
+ unitCount = parseFloat(
1400
+ (Math.floor(expValue * unitCountFloat) / expValue).toFixed(
1401
+ options.maxDecimalPoints
1402
+ )
1403
+ );
1404
+ } else {
1405
+ unitCount = ms / unitMS;
1406
+ }
1407
+ } else {
1408
+ unitCount = Math.floor(ms / unitMS);
1409
+ }
1410
+ pieces.push({
1411
+ unitCount,
1412
+ unitName
1413
+ });
1414
+ ms -= unitCount * unitMS;
1415
+ }
1416
+ var firstOccupiedUnitIndex = 0;
1417
+ for (i = 0; i < pieces.length; i++) {
1418
+ if (pieces[i].unitCount) {
1419
+ firstOccupiedUnitIndex = i;
1420
+ break;
1421
+ }
1422
+ }
1423
+ if (options.round) {
1424
+ var ratioToLargerUnit, previousPiece;
1425
+ for (i = pieces.length - 1; i >= 0; i--) {
1426
+ piece = pieces[i];
1427
+ piece.unitCount = Math.round(piece.unitCount);
1428
+ if (i === 0) {
1429
+ break;
1430
+ }
1431
+ previousPiece = pieces[i - 1];
1432
+ ratioToLargerUnit = options.unitMeasures[previousPiece.unitName] / options.unitMeasures[piece.unitName];
1433
+ if (piece.unitCount % ratioToLargerUnit === 0 || options.largest && options.largest - 1 < i - firstOccupiedUnitIndex) {
1434
+ previousPiece.unitCount += piece.unitCount / ratioToLargerUnit;
1435
+ piece.unitCount = 0;
1436
+ }
1437
+ }
1438
+ }
1439
+ var result = [];
1440
+ for (i = 0, pieces.length; i < len; i++) {
1441
+ piece = pieces[i];
1442
+ if (piece.unitCount) {
1443
+ result.push(
1444
+ render(piece.unitCount, piece.unitName, dictionary, options)
1445
+ );
1446
+ }
1447
+ if (result.length === options.largest) {
1448
+ break;
1449
+ }
1450
+ }
1451
+ if (result.length) {
1452
+ var delimiter;
1453
+ if (has(options, "delimiter")) {
1454
+ delimiter = options.delimiter;
1455
+ } else if (has(dictionary, "delimiter")) {
1456
+ delimiter = dictionary.delimiter;
1457
+ } else {
1458
+ delimiter = ", ";
1459
+ }
1460
+ if (!options.conjunction || result.length === 1) {
1461
+ return result.join(delimiter);
1462
+ } else if (result.length === 2) {
1463
+ return result.join(options.conjunction);
1464
+ } else if (result.length > 2) {
1465
+ return result.slice(0, -1).join(delimiter) + (options.serialComma ? "," : "") + options.conjunction + result.slice(-1);
1466
+ }
1467
+ } else {
1468
+ return render(
1469
+ 0,
1470
+ options.units[options.units.length - 1],
1471
+ dictionary,
1472
+ options
1473
+ );
1474
+ }
1475
+ }
1476
+ function render(count, type, dictionary, options) {
1477
+ var decimal;
1478
+ if (has(options, "decimal")) {
1479
+ decimal = options.decimal;
1480
+ } else if (has(dictionary, "decimal")) {
1481
+ decimal = dictionary.decimal;
1482
+ } else {
1483
+ decimal = ".";
1484
+ }
1485
+ var countStr;
1486
+ if (typeof dictionary._formatCount === "function") {
1487
+ countStr = dictionary._formatCount(count, decimal);
1488
+ } else {
1489
+ countStr = count.toString().replace(".", decimal);
1490
+ }
1491
+ var dictionaryValue = dictionary[type];
1492
+ var word;
1493
+ if (typeof dictionaryValue === "function") {
1494
+ word = dictionaryValue(count);
1495
+ } else {
1496
+ word = dictionaryValue;
1497
+ }
1498
+ if (dictionary._numberFirst) {
1499
+ return word + options.spacer + countStr;
1500
+ }
1501
+ return countStr + options.spacer + word;
1502
+ }
1503
+ function assign(destination) {
1504
+ var source;
1505
+ for (var i = 1; i < arguments.length; i++) {
1506
+ source = arguments[i];
1507
+ for (var prop in source) {
1508
+ if (has(source, prop)) {
1509
+ destination[prop] = source[prop];
1510
+ }
1511
+ }
1512
+ }
1513
+ return destination;
1514
+ }
1515
+ function getArabicForm(c) {
1516
+ if (c === 1) {
1517
+ return 0;
1518
+ }
1519
+ if (c === 2) {
1520
+ return 1;
1521
+ }
1522
+ if (c > 2 && c < 11) {
1523
+ return 2;
1524
+ }
1525
+ return 0;
1526
+ }
1527
+ function getPolishForm(c) {
1528
+ if (c === 1) {
1529
+ return 0;
1530
+ } else if (Math.floor(c) !== c) {
1531
+ return 1;
1532
+ } else if (c % 10 >= 2 && c % 10 <= 4 && !(c % 100 > 10 && c % 100 < 20)) {
1533
+ return 2;
1534
+ } else {
1535
+ return 3;
1536
+ }
1537
+ }
1538
+ function getSlavicForm(c) {
1539
+ if (Math.floor(c) !== c) {
1540
+ return 2;
1541
+ } else if (c % 100 >= 5 && c % 100 <= 20 || c % 10 >= 5 && c % 10 <= 9 || c % 10 === 0) {
1542
+ return 0;
1543
+ } else if (c % 10 === 1) {
1544
+ return 1;
1545
+ } else if (c > 1) {
1546
+ return 2;
1547
+ } else {
1548
+ return 0;
1549
+ }
1550
+ }
1551
+ function getCzechOrSlovakForm(c) {
1552
+ if (c === 1) {
1553
+ return 0;
1554
+ } else if (Math.floor(c) !== c) {
1555
+ return 1;
1556
+ } else if (c % 10 >= 2 && c % 10 <= 4 && c % 100 < 10) {
1557
+ return 2;
1558
+ } else {
1559
+ return 3;
1560
+ }
1561
+ }
1562
+ function getLithuanianForm(c) {
1563
+ if (c === 1 || c % 10 === 1 && c % 100 > 20) {
1564
+ return 0;
1565
+ } else if (Math.floor(c) !== c || c % 10 >= 2 && c % 100 > 20 || c % 10 >= 2 && c % 100 < 10) {
1566
+ return 1;
1567
+ } else {
1568
+ return 2;
1569
+ }
1570
+ }
1571
+ function getLatvianForm(c) {
1572
+ return c % 10 === 1 && c % 100 !== 11;
1573
+ }
1574
+ var isArray = Array.isArray || function(arg) {
1575
+ return Object.prototype.toString.call(arg) === "[object Array]";
1576
+ };
1577
+ function has(obj, key) {
1578
+ return Object.prototype.hasOwnProperty.call(obj, key);
1579
+ }
1580
+ humanizeDuration2.getSupportedLanguages = function getSupportedLanguages() {
1581
+ var result = [];
1582
+ for (var language in LANGUAGES) {
1583
+ if (has(LANGUAGES, language) && language !== "gr") {
1584
+ result.push(language);
1585
+ }
1586
+ }
1587
+ return result;
1588
+ };
1589
+ humanizeDuration2.humanizer = humanizer;
1590
+ if (module.exports) {
1591
+ module.exports = humanizeDuration2;
1592
+ } else {
1593
+ this.humanizeDuration = humanizeDuration2;
1594
+ }
1595
+ })();
1596
+ })(humanizeDuration$1);
1597
+ return humanizeDuration$1.exports;
1598
+ }
1599
+ var humanizeDurationExports = requireHumanizeDuration();
1600
+ const humanizeDuration = /* @__PURE__ */ getDefaultExportFromCjs(humanizeDurationExports);
1601
+ const E = (e, o) => {
1602
+ const t = e.__vccOpts || e;
1603
+ for (const [n, s] of o)
1604
+ t[n] = s;
1605
+ return t;
1606
+ }, C = {}, j = (e) => (pushScopeId("data-v-259be2b2"), e = e(), popScopeId(), e), M = { class: "container" }, T = /* @__PURE__ */ j(() => /* @__PURE__ */ createBaseVNode("div", { class: "spinner" }, null, -1)), V = [
1607
+ T
1608
+ ];
1609
+ function W(e, o) {
1610
+ return openBlock(), createElementBlock("div", M, V);
1611
+ }
1612
+ const D = /* @__PURE__ */ E(C, [["render", W], ["__scopeId", "data-v-259be2b2"], ["__file", "/home/oumoussa/side-projects/infinite/src/components/Spinner.vue"]]), U = (e) => ({
1613
+ loading() {
1614
+ e.value = "loading";
1615
+ },
1616
+ loaded() {
1617
+ e.value = "loaded";
1618
+ },
1619
+ complete() {
1620
+ e.value = "complete";
1621
+ },
1622
+ error() {
1623
+ e.value = "error";
1624
+ }
1625
+ }), z = (e, o, t) => () => {
1626
+ const n = t.parentEl || document.documentElement;
1627
+ t.prevHeight = n.scrollHeight, o.loading(), e("infinite", o);
1628
+ }, A = (e, o) => {
1629
+ const t = e.getBoundingClientRect();
1630
+ if (!o)
1631
+ return t.top >= 0 && t.bottom <= window.innerHeight;
1632
+ const n = o.getBoundingClientRect();
1633
+ return t.top >= n.top && t.bottom <= n.bottom;
1634
+ }, y = (e) => {
1635
+ e.parentEl = document.querySelector(e.target) || null;
1636
+ let o = `0px 0px ${e.distance}px 0px`;
1637
+ e.top && (o = `${e.distance}px 0px 0px 0px`);
1638
+ const t = new IntersectionObserver(
1639
+ (n) => {
1640
+ n[0].isIntersecting && (e.firstload && e.emit(), e.firstload = true);
1641
+ },
1642
+ { root: e.parentEl, rootMargin: o }
1643
+ );
1644
+ return t.observe(e.infiniteLoading.value), t;
1645
+ };
1646
+ const F = { class: "state-error" }, G = {
1647
+ __name: "InfiniteLoading",
1648
+ props: {
1649
+ top: { type: Boolean, required: false },
1650
+ target: { type: [String, Boolean], required: false },
1651
+ distance: { type: Number, required: false, default: 0 },
1652
+ identifier: { required: false },
1653
+ firstload: { type: Boolean, required: false, default: true },
1654
+ slots: { type: Object, required: false }
1655
+ },
1656
+ emits: ["infinite"],
1657
+ setup(e, { emit: o }) {
1658
+ const t = e;
1659
+ let n = null;
1660
+ const s = ref(null), l = ref("ready"), { top: f, firstload: x, target: I, distance: S } = t, { identifier: _ } = toRefs(t), i = {
1661
+ infiniteLoading: s,
1662
+ target: I,
1663
+ top: f,
1664
+ firstload: x,
1665
+ distance: S,
1666
+ prevHeight: 0,
1667
+ parentEl: null
1668
+ };
1669
+ i.emit = z(o, U(l), i);
1670
+ const k = () => watch(l, async (r) => {
1671
+ const c = i.parentEl || document.documentElement;
1672
+ await nextTick(), r == "loaded" && f && (c.scrollTop = c.scrollHeight - i.prevHeight), r == "loaded" && A(s.value, i.parentEl) && i.emit(), r == "complete" && n.disconnect();
1673
+ }), q = () => watch(_, () => {
1674
+ l.value = "ready", n.disconnect(), n = y(i);
1675
+ });
1676
+ return onMounted(() => {
1677
+ n = y(i), k(), _ && q();
1678
+ }), onUnmounted(() => {
1679
+ n.disconnect();
1680
+ }), (r, c) => (openBlock(), createElementBlock("div", {
1681
+ ref_key: "infiniteLoading",
1682
+ ref: s
1683
+ }, [
1684
+ l.value == "loading" ? renderSlot(r.$slots, "spinner", { key: 0 }, () => [
1685
+ createVNode(D)
1686
+ ], true) : createCommentVNode("v-if", true),
1687
+ l.value == "complete" ? renderSlot(r.$slots, "complete", { key: 1 }, () => {
1688
+ var d;
1689
+ return [
1690
+ createBaseVNode("span", null, toDisplayString(((d = e.slots) == null ? void 0 : d.complete) || "No more results!"), 1)
1691
+ ];
1692
+ }, true) : createCommentVNode("v-if", true),
1693
+ l.value == "error" ? renderSlot(r.$slots, "error", {
1694
+ key: 2,
1695
+ retry: i.emit
1696
+ }, () => {
1697
+ var d;
1698
+ return [
1699
+ createBaseVNode("span", F, [
1700
+ createBaseVNode("span", null, toDisplayString(((d = e.slots) == null ? void 0 : d.error) || "Oops something went wrong!"), 1),
1701
+ createBaseVNode("button", {
1702
+ class: "retry",
1703
+ onClick: c[0] || (c[0] = (...B) => i.emit && i.emit(...B))
1704
+ }, " retry ")
1705
+ ])
1706
+ ];
1707
+ }, true) : createCommentVNode("v-if", true)
1708
+ ], 512));
1709
+ }
1710
+ }, K = /* @__PURE__ */ E(G, [["__scopeId", "data-v-9d82030b"], ["__file", "/home/oumoussa/side-projects/infinite/src/components/InfiniteLoading.vue"]]);
1711
+ const _hoisted_1 = { key: 0 };
1712
+ const _hoisted_2 = { key: 1 };
1713
+ const _hoisted_3 = { key: 0 };
1714
+ const _hoisted_4 = { class: "pb-3xl" };
1715
+ const _sfc_main = /* @__PURE__ */ defineComponent({
1716
+ __name: "SettingsLdapView",
1717
+ setup(__props) {
1718
+ const toast = useToast();
1719
+ const i18n = useI18n();
1720
+ const message = useMessage();
1721
+ const documentTitle = useDocumentTitle();
1722
+ const pageRedirectionHelper = usePageRedirectionHelper();
1723
+ const settingsStore = useSettingsStore();
1724
+ const dataTable = ref([]);
1725
+ const tableKey = ref(0);
1726
+ const adConfig = ref();
1727
+ const loadingTestConnection = ref(false);
1728
+ const loadingDryRun = ref(false);
1729
+ const loadingLiveRun = ref(false);
1730
+ const loadingTable = ref(false);
1731
+ const hasAnyChanges = ref(false);
1732
+ const formInputs = ref(null);
1733
+ const formBus = createFormEventBus();
1734
+ const readyToSubmit = ref(false);
1735
+ const page = ref(0);
1736
+ const loginEnabled = ref(false);
1737
+ const syncEnabled = ref(false);
1738
+ const ldapConfigFormRef = ref();
1739
+ const isLDAPFeatureEnabled = computed(() => settingsStore.settings.enterprise.ldap);
1740
+ const goToUpgrade = async () => await pageRedirectionHelper.goToUpgrade("ldap", "upgrade-ldap");
1741
+ const cellClassStyle = ({ row, column }) => {
1742
+ if (column.property === "status") {
1743
+ if (row.status === "Success") {
1744
+ return { color: "green" };
1745
+ } else if (row.status === "Error") {
1746
+ return { color: "red" };
1747
+ }
1748
+ }
1749
+ if (column.property === "runMode") {
1750
+ if (row.runMode === "Dry") {
1751
+ return { color: "orange" };
1752
+ } else if (row.runMode === "Live") {
1753
+ return { color: "blue" };
1754
+ }
1755
+ }
1756
+ return {};
1757
+ };
1758
+ const onInput = (input) => {
1759
+ if (input.name === "loginEnabled" && typeof input.value === "boolean") {
1760
+ loginEnabled.value = input.value;
1761
+ }
1762
+ if (input.name === "synchronizationEnabled" && typeof input.value === "boolean") {
1763
+ syncEnabled.value = input.value;
1764
+ }
1765
+ hasAnyChanges.value = true;
1766
+ };
1767
+ const onReadyToSubmit = (ready) => {
1768
+ readyToSubmit.value = ready;
1769
+ };
1770
+ const syncDataMapper = (sync) => {
1771
+ const startedAt = new Date(sync.startedAt);
1772
+ const endedAt = new Date(sync.endedAt);
1773
+ const runTimeInMinutes = endedAt.getTime() - startedAt.getTime();
1774
+ return {
1775
+ runTime: humanizeDuration(runTimeInMinutes),
1776
+ runMode: capitalizeFirstLetter(sync.runMode),
1777
+ status: capitalizeFirstLetter(sync.status),
1778
+ endedAt: convertToDisplayDate(endedAt.getTime()),
1779
+ details: i18n.baseText("settings.ldap.usersScanned", {
1780
+ interpolate: {
1781
+ scanned: sync.scanned.toString()
1782
+ }
1783
+ })
1784
+ };
1785
+ };
1786
+ const onSubmit = async () => {
1787
+ if (!hasAnyChanges.value || !ldapConfigFormRef.value) {
1788
+ return;
1789
+ }
1790
+ const formValues = ldapConfigFormRef.value.getValues();
1791
+ const newConfiguration = {
1792
+ loginEnabled: formValues.loginEnabled,
1793
+ loginLabel: formValues.loginLabel,
1794
+ connectionUrl: formValues.serverAddress,
1795
+ allowUnauthorizedCerts: formValues.allowUnauthorizedCerts,
1796
+ connectionPort: +formValues.port,
1797
+ connectionSecurity: formValues.connectionSecurity,
1798
+ baseDn: formValues.baseDn,
1799
+ bindingAdminDn: formValues.bindingType === "admin" ? formValues.adminDn : "",
1800
+ bindingAdminPassword: formValues.bindingType === "admin" ? formValues.adminPassword : "",
1801
+ emailAttribute: formValues.email,
1802
+ firstNameAttribute: formValues.firstName,
1803
+ lastNameAttribute: formValues.lastName,
1804
+ loginIdAttribute: formValues.loginId,
1805
+ ldapIdAttribute: formValues.ldapId,
1806
+ userFilter: formValues.userFilter,
1807
+ synchronizationEnabled: formValues.synchronizationEnabled,
1808
+ synchronizationInterval: +formValues.synchronizationInterval,
1809
+ searchPageSize: +formValues.pageSize,
1810
+ searchTimeout: +formValues.searchTimeout
1811
+ };
1812
+ let saveForm = true;
1813
+ if (!adConfig.value) return;
1814
+ try {
1815
+ if (adConfig.value.loginEnabled && !newConfiguration.loginEnabled) {
1816
+ const confirmAction = await message.confirm(
1817
+ i18n.baseText("settings.ldap.confirmMessage.beforeSaveForm.message"),
1818
+ i18n.baseText("settings.ldap.confirmMessage.beforeSaveForm.headline"),
1819
+ {
1820
+ cancelButtonText: i18n.baseText(
1821
+ "settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText"
1822
+ ),
1823
+ confirmButtonText: i18n.baseText(
1824
+ "settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText"
1825
+ )
1826
+ }
1827
+ );
1828
+ saveForm = confirmAction === MODAL_CONFIRM;
1829
+ }
1830
+ if (!saveForm) {
1831
+ hasAnyChanges.value = true;
1832
+ }
1833
+ adConfig.value = await settingsStore.updateLdapConfig(newConfiguration);
1834
+ toast.showToast({
1835
+ title: i18n.baseText("settings.ldap.updateConfiguration"),
1836
+ message: "",
1837
+ type: "success"
1838
+ });
1839
+ } catch (error) {
1840
+ toast.showError(error, i18n.baseText("settings.ldap.configurationError"));
1841
+ } finally {
1842
+ if (saveForm) {
1843
+ hasAnyChanges.value = false;
1844
+ }
1845
+ }
1846
+ };
1847
+ const onSaveClick = () => {
1848
+ formBus.emit("submit");
1849
+ };
1850
+ const onTestConnectionClick = async () => {
1851
+ loadingTestConnection.value = true;
1852
+ try {
1853
+ await settingsStore.testLdapConnection();
1854
+ toast.showToast({
1855
+ title: i18n.baseText("settings.ldap.connectionTest"),
1856
+ message: i18n.baseText("settings.ldap.toast.connection.success"),
1857
+ type: "success"
1858
+ });
1859
+ } catch (error) {
1860
+ toast.showToast({
1861
+ title: i18n.baseText("settings.ldap.connectionTestError"),
1862
+ message: error.message,
1863
+ type: "error"
1864
+ });
1865
+ } finally {
1866
+ loadingTestConnection.value = false;
1867
+ }
1868
+ };
1869
+ const onDryRunClick = async () => {
1870
+ loadingDryRun.value = true;
1871
+ try {
1872
+ await settingsStore.runLdapSync({ type: "dry" });
1873
+ toast.showToast({
1874
+ title: i18n.baseText("settings.ldap.runSync.title"),
1875
+ message: i18n.baseText("settings.ldap.toast.sync.success"),
1876
+ type: "success"
1877
+ });
1878
+ } catch (error) {
1879
+ toast.showError(error, i18n.baseText("settings.ldap.synchronizationError"));
1880
+ } finally {
1881
+ loadingDryRun.value = false;
1882
+ await reloadLdapSynchronizations();
1883
+ }
1884
+ };
1885
+ const onLiveRunClick = async () => {
1886
+ loadingLiveRun.value = true;
1887
+ try {
1888
+ await settingsStore.runLdapSync({ type: "live" });
1889
+ toast.showToast({
1890
+ title: i18n.baseText("settings.ldap.runSync.title"),
1891
+ message: i18n.baseText("settings.ldap.toast.sync.success"),
1892
+ type: "success"
1893
+ });
1894
+ } catch (error) {
1895
+ toast.showError(error, i18n.baseText("settings.ldap.synchronizationError"));
1896
+ } finally {
1897
+ loadingLiveRun.value = false;
1898
+ await reloadLdapSynchronizations();
1899
+ }
1900
+ };
1901
+ const getLdapConfig = async () => {
1902
+ try {
1903
+ adConfig.value = await settingsStore.getLdapConfig();
1904
+ loginEnabled.value = adConfig.value.loginEnabled;
1905
+ syncEnabled.value = adConfig.value.synchronizationEnabled;
1906
+ const whenLoginEnabled = (values) => values.loginEnabled === true;
1907
+ const whenSyncAndLoginEnabled = (values) => values.synchronizationEnabled === true && values.loginEnabled === true;
1908
+ const whenAdminBindingAndLoginEnabled = (values) => values.bindingType === "admin" && values.loginEnabled === true;
1909
+ formInputs.value = [
1910
+ {
1911
+ name: "loginEnabled",
1912
+ initialValue: adConfig.value.loginEnabled,
1913
+ properties: {
1914
+ type: "toggle",
1915
+ label: i18n.baseText("settings.ldap.form.loginEnabled.label"),
1916
+ tooltipText: i18n.baseText("settings.ldap.form.loginEnabled.tooltip"),
1917
+ required: true
1918
+ }
1919
+ },
1920
+ {
1921
+ name: "loginLabel",
1922
+ initialValue: adConfig.value.loginLabel,
1923
+ properties: {
1924
+ label: i18n.baseText("settings.ldap.form.loginLabel.label"),
1925
+ required: true,
1926
+ placeholder: i18n.baseText("settings.ldap.form.loginLabel.placeholder"),
1927
+ infoText: i18n.baseText("settings.ldap.form.loginLabel.infoText")
1928
+ },
1929
+ shouldDisplay: whenLoginEnabled
1930
+ },
1931
+ {
1932
+ name: "serverAddress",
1933
+ initialValue: adConfig.value.connectionUrl,
1934
+ properties: {
1935
+ label: i18n.baseText("settings.ldap.form.serverAddress.label"),
1936
+ required: true,
1937
+ capitalize: true,
1938
+ placeholder: i18n.baseText("settings.ldap.form.serverAddress.placeholder"),
1939
+ infoText: i18n.baseText("settings.ldap.form.serverAddress.infoText")
1940
+ },
1941
+ shouldDisplay: whenLoginEnabled
1942
+ },
1943
+ {
1944
+ name: "port",
1945
+ initialValue: adConfig.value.connectionPort,
1946
+ properties: {
1947
+ type: "number",
1948
+ label: i18n.baseText("settings.ldap.form.port.label"),
1949
+ capitalize: true,
1950
+ infoText: i18n.baseText("settings.ldap.form.port.infoText")
1951
+ },
1952
+ shouldDisplay: whenLoginEnabled
1953
+ },
1954
+ {
1955
+ name: "connectionSecurity",
1956
+ initialValue: adConfig.value.connectionSecurity,
1957
+ properties: {
1958
+ type: "select",
1959
+ label: i18n.baseText("settings.ldap.form.connectionSecurity.label"),
1960
+ infoText: i18n.baseText("settings.ldap.form.connectionSecurity.infoText"),
1961
+ options: [
1962
+ {
1963
+ label: "None",
1964
+ value: "none"
1965
+ },
1966
+ {
1967
+ label: "TLS",
1968
+ value: "tls"
1969
+ },
1970
+ {
1971
+ label: "STARTTLS",
1972
+ value: "startTls"
1973
+ }
1974
+ ],
1975
+ required: true,
1976
+ capitalize: true
1977
+ },
1978
+ shouldDisplay: whenLoginEnabled
1979
+ },
1980
+ {
1981
+ name: "allowUnauthorizedCerts",
1982
+ initialValue: adConfig.value.allowUnauthorizedCerts,
1983
+ properties: {
1984
+ type: "toggle",
1985
+ label: i18n.baseText("settings.ldap.form.allowUnauthorizedCerts.label"),
1986
+ required: false
1987
+ },
1988
+ shouldDisplay(values) {
1989
+ return values.connectionSecurity !== "none" && values.loginEnabled === true;
1990
+ }
1991
+ },
1992
+ {
1993
+ name: "baseDn",
1994
+ initialValue: adConfig.value.baseDn,
1995
+ properties: {
1996
+ label: i18n.baseText("settings.ldap.form.baseDn.label"),
1997
+ required: true,
1998
+ capitalize: true,
1999
+ placeholder: i18n.baseText("settings.ldap.form.baseDn.placeholder"),
2000
+ infoText: i18n.baseText("settings.ldap.form.baseDn.infoText")
2001
+ },
2002
+ shouldDisplay: whenLoginEnabled
2003
+ },
2004
+ {
2005
+ name: "bindingType",
2006
+ initialValue: "admin",
2007
+ properties: {
2008
+ type: "select",
2009
+ label: i18n.baseText("settings.ldap.form.bindingType.label"),
2010
+ infoText: i18n.baseText("settings.ldap.form.bindingType.infoText"),
2011
+ options: [
2012
+ {
2013
+ value: "admin",
2014
+ label: "Admin"
2015
+ },
2016
+ {
2017
+ value: "anonymous",
2018
+ label: "Anonymous"
2019
+ }
2020
+ ]
2021
+ },
2022
+ shouldDisplay: whenLoginEnabled
2023
+ },
2024
+ {
2025
+ name: "adminDn",
2026
+ initialValue: adConfig.value.bindingAdminDn,
2027
+ properties: {
2028
+ label: i18n.baseText("settings.ldap.form.adminDn.label"),
2029
+ placeholder: i18n.baseText("settings.ldap.form.adminDn.placeholder"),
2030
+ infoText: i18n.baseText("settings.ldap.form.adminDn.infoText"),
2031
+ capitalize: true
2032
+ },
2033
+ shouldDisplay: whenAdminBindingAndLoginEnabled
2034
+ },
2035
+ {
2036
+ name: "adminPassword",
2037
+ initialValue: adConfig.value.bindingAdminPassword,
2038
+ properties: {
2039
+ label: i18n.baseText("settings.ldap.form.adminPassword.label"),
2040
+ type: "password",
2041
+ capitalize: true,
2042
+ infoText: i18n.baseText("settings.ldap.form.adminPassword.infoText")
2043
+ },
2044
+ shouldDisplay: whenAdminBindingAndLoginEnabled
2045
+ },
2046
+ {
2047
+ name: "userFilter",
2048
+ initialValue: adConfig.value.userFilter,
2049
+ properties: {
2050
+ label: i18n.baseText("settings.ldap.form.userFilter.label"),
2051
+ type: "text",
2052
+ required: false,
2053
+ capitalize: true,
2054
+ placeholder: i18n.baseText("settings.ldap.form.userFilter.placeholder"),
2055
+ infoText: i18n.baseText("settings.ldap.form.userFilter.infoText")
2056
+ },
2057
+ shouldDisplay: whenLoginEnabled
2058
+ },
2059
+ {
2060
+ name: "attributeMappingInfo",
2061
+ properties: {
2062
+ label: i18n.baseText("settings.ldap.form.attributeMappingInfo.label"),
2063
+ type: "info",
2064
+ labelSize: "large",
2065
+ labelAlignment: "left"
2066
+ },
2067
+ shouldDisplay: whenLoginEnabled
2068
+ },
2069
+ {
2070
+ name: "ldapId",
2071
+ initialValue: adConfig.value.ldapIdAttribute,
2072
+ properties: {
2073
+ label: i18n.baseText("settings.ldap.form.ldapId.label"),
2074
+ type: "text",
2075
+ required: true,
2076
+ capitalize: true,
2077
+ placeholder: i18n.baseText("settings.ldap.form.ldapId.placeholder"),
2078
+ infoText: i18n.baseText("settings.ldap.form.ldapId.infoText")
2079
+ },
2080
+ shouldDisplay: whenLoginEnabled
2081
+ },
2082
+ {
2083
+ name: "loginId",
2084
+ initialValue: adConfig.value.loginIdAttribute,
2085
+ properties: {
2086
+ label: i18n.baseText("settings.ldap.form.loginId.label"),
2087
+ type: "text",
2088
+ autocomplete: "email",
2089
+ required: true,
2090
+ capitalize: true,
2091
+ placeholder: i18n.baseText("settings.ldap.form.loginId.placeholder"),
2092
+ infoText: i18n.baseText("settings.ldap.form.loginId.infoText")
2093
+ },
2094
+ shouldDisplay: whenLoginEnabled
2095
+ },
2096
+ {
2097
+ name: "email",
2098
+ initialValue: adConfig.value.emailAttribute,
2099
+ properties: {
2100
+ label: i18n.baseText("settings.ldap.form.email.label"),
2101
+ type: "text",
2102
+ autocomplete: "email",
2103
+ required: true,
2104
+ capitalize: true,
2105
+ placeholder: i18n.baseText("settings.ldap.form.email.placeholder"),
2106
+ infoText: i18n.baseText("settings.ldap.form.email.infoText")
2107
+ },
2108
+ shouldDisplay: whenLoginEnabled
2109
+ },
2110
+ {
2111
+ name: "firstName",
2112
+ initialValue: adConfig.value.firstNameAttribute,
2113
+ properties: {
2114
+ label: i18n.baseText("settings.ldap.form.firstName.label"),
2115
+ type: "text",
2116
+ autocomplete: "email",
2117
+ required: true,
2118
+ capitalize: true,
2119
+ placeholder: i18n.baseText("settings.ldap.form.firstName.placeholder"),
2120
+ infoText: i18n.baseText("settings.ldap.form.firstName.infoText")
2121
+ },
2122
+ shouldDisplay: whenLoginEnabled
2123
+ },
2124
+ {
2125
+ name: "lastName",
2126
+ initialValue: adConfig.value.lastNameAttribute,
2127
+ properties: {
2128
+ label: i18n.baseText("settings.ldap.form.lastName.label"),
2129
+ type: "text",
2130
+ autocomplete: "email",
2131
+ required: true,
2132
+ capitalize: true,
2133
+ placeholder: i18n.baseText("settings.ldap.form.lastName.placeholder"),
2134
+ infoText: i18n.baseText("settings.ldap.form.lastName.infoText")
2135
+ },
2136
+ shouldDisplay: whenLoginEnabled
2137
+ },
2138
+ {
2139
+ name: "synchronizationEnabled",
2140
+ initialValue: adConfig.value.synchronizationEnabled,
2141
+ properties: {
2142
+ type: "toggle",
2143
+ label: i18n.baseText("settings.ldap.form.synchronizationEnabled.label"),
2144
+ tooltipText: i18n.baseText("settings.ldap.form.synchronizationEnabled.tooltip"),
2145
+ required: true
2146
+ },
2147
+ shouldDisplay: whenLoginEnabled
2148
+ },
2149
+ {
2150
+ name: "synchronizationInterval",
2151
+ initialValue: adConfig.value.synchronizationInterval,
2152
+ properties: {
2153
+ type: "number",
2154
+ label: i18n.baseText("settings.ldap.form.synchronizationInterval.label"),
2155
+ infoText: i18n.baseText("settings.ldap.form.synchronizationInterval.infoText")
2156
+ },
2157
+ shouldDisplay: whenSyncAndLoginEnabled
2158
+ },
2159
+ {
2160
+ name: "pageSize",
2161
+ initialValue: adConfig.value.searchPageSize,
2162
+ properties: {
2163
+ type: "number",
2164
+ label: i18n.baseText("settings.ldap.form.pageSize.label"),
2165
+ infoText: i18n.baseText("settings.ldap.form.pageSize.infoText")
2166
+ },
2167
+ shouldDisplay: whenSyncAndLoginEnabled
2168
+ },
2169
+ {
2170
+ name: "searchTimeout",
2171
+ initialValue: adConfig.value.searchTimeout,
2172
+ properties: {
2173
+ type: "number",
2174
+ label: i18n.baseText("settings.ldap.form.searchTimeout.label"),
2175
+ infoText: i18n.baseText("settings.ldap.form.searchTimeout.infoText")
2176
+ },
2177
+ shouldDisplay: whenSyncAndLoginEnabled
2178
+ }
2179
+ ];
2180
+ } catch (error) {
2181
+ toast.showError(error, i18n.baseText("settings.ldap.configurationError"));
2182
+ }
2183
+ };
2184
+ const getLdapSynchronizations = async (state) => {
2185
+ try {
2186
+ loadingTable.value = true;
2187
+ const data = await settingsStore.getLdapSynchronizations({
2188
+ page: page.value
2189
+ });
2190
+ if (data.length !== 0) {
2191
+ dataTable.value.push(...data.map(syncDataMapper));
2192
+ page.value += 1;
2193
+ state.loaded();
2194
+ } else {
2195
+ state.complete();
2196
+ }
2197
+ loadingTable.value = false;
2198
+ } catch (error) {
2199
+ toast.showError(error, i18n.baseText("settings.ldap.synchronizationError"));
2200
+ }
2201
+ };
2202
+ const reloadLdapSynchronizations = async () => {
2203
+ try {
2204
+ page.value = 0;
2205
+ tableKey.value += 1;
2206
+ dataTable.value = [];
2207
+ } catch (error) {
2208
+ toast.showError(error, i18n.baseText("settings.ldap.synchronizationError"));
2209
+ }
2210
+ };
2211
+ onMounted(async () => {
2212
+ documentTitle.set(i18n.baseText("settings.ldap"));
2213
+ if (!isLDAPFeatureEnabled.value) return;
2214
+ await getLdapConfig();
2215
+ });
2216
+ return (_ctx, _cache) => {
2217
+ const _component_n8n_heading = resolveComponent("n8n-heading");
2218
+ const _component_n8n_info_tip = resolveComponent("n8n-info-tip");
2219
+ const _component_n8n_action_box = resolveComponent("n8n-action-box");
2220
+ const _component_n8n_form_inputs = resolveComponent("n8n-form-inputs");
2221
+ const _component_n8n_button = resolveComponent("n8n-button");
2222
+ const _directive_n8n_html = resolveDirective("n8n-html");
2223
+ const _directive_loading = resolveDirective("loading");
2224
+ return !isLDAPFeatureEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
2225
+ createBaseVNode("div", {
2226
+ class: normalizeClass([_ctx.$style.header, "mb-2xl"])
2227
+ }, [
2228
+ createVNode(_component_n8n_heading, { size: "2xlarge" }, {
2229
+ default: withCtx(() => [
2230
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.ldap")), 1)
2231
+ ]),
2232
+ _: 1
2233
+ })
2234
+ ], 2),
2235
+ createVNode(_component_n8n_info_tip, {
2236
+ type: "note",
2237
+ theme: "info",
2238
+ "tooltip-placement": "right",
2239
+ class: "mb-l"
2240
+ }, {
2241
+ default: withCtx(() => [
2242
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.ldap.note")), 1)
2243
+ ]),
2244
+ _: 1
2245
+ }),
2246
+ createVNode(_component_n8n_action_box, {
2247
+ description: unref(i18n).baseText("settings.ldap.disabled.description"),
2248
+ "button-text": unref(i18n).baseText("settings.ldap.disabled.buttonText"),
2249
+ "onClick:button": goToUpgrade
2250
+ }, {
2251
+ heading: withCtx(() => [
2252
+ createBaseVNode("span", null, toDisplayString(unref(i18n).baseText("settings.ldap.disabled.title")), 1)
2253
+ ]),
2254
+ _: 1
2255
+ }, 8, ["description", "button-text"])
2256
+ ])) : (openBlock(), createElementBlock("div", _hoisted_2, [
2257
+ createBaseVNode("div", {
2258
+ class: normalizeClass(_ctx.$style.container)
2259
+ }, [
2260
+ createBaseVNode("div", {
2261
+ class: normalizeClass(_ctx.$style.header)
2262
+ }, [
2263
+ createVNode(_component_n8n_heading, { size: "2xlarge" }, {
2264
+ default: withCtx(() => [
2265
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.ldap")), 1)
2266
+ ]),
2267
+ _: 1
2268
+ })
2269
+ ], 2),
2270
+ createBaseVNode("div", {
2271
+ class: normalizeClass(_ctx.$style.docsInfoTip)
2272
+ }, [
2273
+ createVNode(_component_n8n_info_tip, {
2274
+ theme: "info",
2275
+ type: "note"
2276
+ }, {
2277
+ default: withCtx(() => [
2278
+ withDirectives(createBaseVNode("span", null, null, 512), [
2279
+ [_directive_n8n_html, unref(i18n).baseText("settings.ldap.infoTip")]
2280
+ ])
2281
+ ]),
2282
+ _: 1
2283
+ })
2284
+ ], 2),
2285
+ createBaseVNode("div", {
2286
+ class: normalizeClass(_ctx.$style.settingsForm)
2287
+ }, [
2288
+ formInputs.value ? (openBlock(), createBlock(_component_n8n_form_inputs, {
2289
+ key: 0,
2290
+ ref_key: "ldapConfigFormRef",
2291
+ ref: ldapConfigFormRef,
2292
+ inputs: formInputs.value,
2293
+ "event-bus": unref(formBus),
2294
+ "column-view": true,
2295
+ "vertical-spacing": "l",
2296
+ onUpdate: onInput,
2297
+ onReady: onReadyToSubmit,
2298
+ onSubmit
2299
+ }, null, 8, ["inputs", "event-bus"])) : createCommentVNode("", true)
2300
+ ], 2),
2301
+ createBaseVNode("div", null, [
2302
+ loginEnabled.value ? (openBlock(), createBlock(_component_n8n_button, {
2303
+ key: 0,
2304
+ label: loadingTestConnection.value ? unref(i18n).baseText("settings.ldap.testingConnection") : unref(i18n).baseText("settings.ldap.testConnection"),
2305
+ size: "large",
2306
+ class: "mr-s",
2307
+ disabled: hasAnyChanges.value || !readyToSubmit.value,
2308
+ loading: loadingTestConnection.value,
2309
+ onClick: onTestConnectionClick
2310
+ }, null, 8, ["label", "disabled", "loading"])) : createCommentVNode("", true),
2311
+ createVNode(_component_n8n_button, {
2312
+ label: unref(i18n).baseText("settings.ldap.save"),
2313
+ size: "large",
2314
+ disabled: !hasAnyChanges.value || !readyToSubmit.value,
2315
+ onClick: onSaveClick
2316
+ }, null, 8, ["label", "disabled"])
2317
+ ])
2318
+ ], 2),
2319
+ loginEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_3, [
2320
+ createVNode(_component_n8n_heading, {
2321
+ tag: "h1",
2322
+ class: "mb-xl mt-3xl",
2323
+ size: "medium"
2324
+ }, {
2325
+ default: withCtx(() => [
2326
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.ldap.section.synchronization.title")), 1)
2327
+ ]),
2328
+ _: 1
2329
+ }),
2330
+ createBaseVNode("div", {
2331
+ class: normalizeClass(_ctx.$style.syncTable)
2332
+ }, [
2333
+ withDirectives((openBlock(), createBlock(unref(ElTable), {
2334
+ key: tableKey.value,
2335
+ border: true,
2336
+ stripe: true,
2337
+ data: dataTable.value,
2338
+ "cell-style": cellClassStyle,
2339
+ style: { "width": "100%" },
2340
+ "max-height": "250"
2341
+ }, {
2342
+ empty: withCtx(() => [
2343
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.ldap.synchronizationTable.empty.message")), 1)
2344
+ ]),
2345
+ append: withCtx(() => [
2346
+ createVNode(unref(K), {
2347
+ target: ".el-table__body-wrapper",
2348
+ onInfinite: getLdapSynchronizations
2349
+ })
2350
+ ]),
2351
+ default: withCtx(() => [
2352
+ createVNode(unref(ElTableColumn), {
2353
+ prop: "status",
2354
+ label: unref(i18n).baseText("settings.ldap.synchronizationTable.column.status")
2355
+ }, null, 8, ["label"]),
2356
+ createVNode(unref(ElTableColumn), {
2357
+ prop: "endedAt",
2358
+ label: unref(i18n).baseText("settings.ldap.synchronizationTable.column.endedAt")
2359
+ }, null, 8, ["label"]),
2360
+ createVNode(unref(ElTableColumn), {
2361
+ prop: "runMode",
2362
+ label: unref(i18n).baseText("settings.ldap.synchronizationTable.column.runMode")
2363
+ }, null, 8, ["label"]),
2364
+ createVNode(unref(ElTableColumn), {
2365
+ prop: "runTime",
2366
+ label: unref(i18n).baseText("settings.ldap.synchronizationTable.column.runTime")
2367
+ }, null, 8, ["label"]),
2368
+ createVNode(unref(ElTableColumn), {
2369
+ prop: "details",
2370
+ label: unref(i18n).baseText("settings.ldap.synchronizationTable.column.details")
2371
+ }, null, 8, ["label"])
2372
+ ]),
2373
+ _: 1
2374
+ }, 8, ["data"])), [
2375
+ [_directive_loading, loadingTable.value]
2376
+ ])
2377
+ ], 2),
2378
+ createBaseVNode("div", _hoisted_4, [
2379
+ createVNode(_component_n8n_button, {
2380
+ label: unref(i18n).baseText("settings.ldap.dryRun"),
2381
+ type: "secondary",
2382
+ size: "large",
2383
+ class: "mr-s",
2384
+ disabled: hasAnyChanges.value || !readyToSubmit.value,
2385
+ loading: loadingDryRun.value,
2386
+ onClick: onDryRunClick
2387
+ }, null, 8, ["label", "disabled", "loading"]),
2388
+ createVNode(_component_n8n_button, {
2389
+ label: unref(i18n).baseText("settings.ldap.synchronizeNow"),
2390
+ size: "large",
2391
+ disabled: hasAnyChanges.value || !readyToSubmit.value,
2392
+ loading: loadingLiveRun.value,
2393
+ onClick: onLiveRunClick
2394
+ }, null, 8, ["label", "disabled", "loading"])
2395
+ ])
2396
+ ])) : createCommentVNode("", true)
2397
+ ]));
2398
+ };
2399
+ }
2400
+ });
2401
+ const container = "_container_17k3n_1";
2402
+ const syncTable = "_syncTable_17k3n_5";
2403
+ const header = "_header_17k3n_9";
2404
+ const enableFeatureContainer = "_enableFeatureContainer_17k3n_18";
2405
+ const sectionHeader = "_sectionHeader_17k3n_32";
2406
+ const settingsForm = "_settingsForm_17k3n_36";
2407
+ const docsInfoTip = "_docsInfoTip_17k3n_40";
2408
+ const style0 = {
2409
+ container,
2410
+ syncTable,
2411
+ header,
2412
+ enableFeatureContainer,
2413
+ sectionHeader,
2414
+ settingsForm,
2415
+ docsInfoTip
2416
+ };
2417
+ const cssModules = {
2418
+ "$style": style0
2419
+ };
2420
+ const SettingsLdapView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
2421
+ export {
2422
+ SettingsLdapView as default
2423
+ };