@watermarkinsights/ripple 3.5.1 → 3.6.0-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 (181) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/{functions-8fb310fe.js → functions-0cf2d639.js} +1128 -486
  3. package/dist/cjs/{global-d687de5e.js → global-0fb343e1.js} +65 -65
  4. package/dist/cjs/{http-service-9e8c4dd5.js → http-service-494d81de.js} +49 -49
  5. package/dist/cjs/{interfaces-30a74c1f.js → interfaces-a3338581.js} +29 -29
  6. package/dist/cjs/loader.cjs.js +2 -2
  7. package/dist/cjs/priv-chart-popover.cjs.entry.js +79 -79
  8. package/dist/cjs/priv-datepicker.cjs.entry.js +667 -667
  9. package/dist/cjs/priv-navigator-button.cjs.entry.js +18 -18
  10. package/dist/cjs/priv-navigator-item.cjs.entry.js +23 -23
  11. package/dist/cjs/ripple.cjs.js +2 -2
  12. package/dist/cjs/wm-action-menu_2.cjs.entry.js +341 -341
  13. package/dist/cjs/wm-button.cjs.entry.js +218 -218
  14. package/dist/cjs/wm-chart-slice.cjs.entry.js +13 -13
  15. package/dist/cjs/wm-chart.cjs.entry.js +475 -475
  16. package/dist/cjs/wm-datepicker.cjs.entry.js +256 -256
  17. package/dist/cjs/wm-input.cjs.entry.js +134 -133
  18. package/dist/cjs/wm-modal-footer.cjs.entry.js +31 -31
  19. package/dist/cjs/wm-modal-header.cjs.entry.js +34 -34
  20. package/dist/cjs/wm-modal.cjs.entry.js +161 -161
  21. package/dist/cjs/wm-navigator.cjs.entry.js +268 -268
  22. package/dist/cjs/wm-network-uploader.cjs.entry.js +420 -420
  23. package/dist/cjs/wm-option_2.cjs.entry.js +494 -492
  24. package/dist/cjs/wm-pagination.cjs.entry.js +167 -167
  25. package/dist/cjs/wm-search.cjs.entry.js +231 -231
  26. package/dist/cjs/wm-snackbar.cjs.entry.js +170 -170
  27. package/dist/cjs/wm-tab-item_3.cjs.entry.js +300 -300
  28. package/dist/cjs/wm-tag-input.cjs.entry.js +570 -556
  29. package/dist/cjs/wm-timepicker.cjs.entry.js +380 -379
  30. package/dist/cjs/wm-toggletip.cjs.entry.js +124 -124
  31. package/dist/cjs/wm-uploader.cjs.entry.js +359 -347
  32. package/dist/cjs/wm-wrapper.cjs.entry.js +12 -12
  33. package/dist/collection/components/wm-action-menu/wm-action-menu.js +460 -460
  34. package/dist/collection/components/wm-button/wm-button.js +485 -485
  35. package/dist/collection/components/wm-chart/priv-chart-popover/priv-chart-popover.css +1 -0
  36. package/dist/collection/components/wm-chart/priv-chart-popover/priv-chart-popover.js +232 -232
  37. package/dist/collection/components/wm-chart/wm-chart-slice.js +64 -64
  38. package/dist/collection/components/wm-chart/wm-chart.css +4 -0
  39. package/dist/collection/components/wm-chart/wm-chart.js +719 -719
  40. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +1015 -1015
  41. package/dist/collection/components/wm-datepicker/wm-datepicker.js +462 -462
  42. package/dist/collection/components/wm-input/wm-input.js +424 -423
  43. package/dist/collection/components/wm-menuitem/wm-menuitem.js +444 -444
  44. package/dist/collection/components/wm-modal/wm-modal-footer.js +141 -141
  45. package/dist/collection/components/wm-modal/wm-modal-header.js +92 -92
  46. package/dist/collection/components/wm-modal/wm-modal.js +459 -459
  47. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +97 -97
  48. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +114 -114
  49. package/dist/collection/components/wm-navigator/wm-navigator.js +468 -468
  50. package/dist/collection/components/wm-option/wm-option.js +422 -422
  51. package/dist/collection/components/wm-pagination/wm-pagination.js +368 -368
  52. package/dist/collection/components/wm-search/wm-search.js +479 -479
  53. package/dist/collection/components/wm-select/wm-select.js +720 -718
  54. package/dist/collection/components/wm-snackbar/wm-snackbar.js +297 -297
  55. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +219 -219
  56. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +331 -331
  57. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +104 -104
  58. package/dist/collection/components/wm-tag-input/wm-tag-input.js +801 -787
  59. package/dist/collection/components/wm-timepicker/wm-timepicker.js +580 -579
  60. package/dist/collection/components/wm-toggletip/wm-toggletip.js +241 -241
  61. package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js +753 -753
  62. package/dist/collection/components/wm-uploader/wm-uploader.css +18 -11
  63. package/dist/collection/components/wm-uploader/wm-uploader.js +793 -748
  64. package/dist/collection/components/wm-wrapper/wm-wrapper.js +27 -27
  65. package/dist/collection/dev/scripts.js +20 -20
  66. package/dist/collection/global/__mocks__/functions.js +6 -6
  67. package/dist/collection/global/functions.js +445 -445
  68. package/dist/collection/global/global.js +72 -72
  69. package/dist/collection/global/interfaces.js +49 -49
  70. package/dist/collection/global/services/__mocks__/http-service.js +130 -130
  71. package/dist/collection/global/services/http-service.js +50 -50
  72. package/dist/collection/lang/lang.js +5 -5
  73. package/dist/collection/lang/missing.js +39 -0
  74. package/dist/collection/lang/piglatin.js +93 -93
  75. package/dist/esm/{functions-c315390d.js → functions-223fb0dc.js} +1128 -486
  76. package/dist/esm/{global-3ff216e8.js → global-8a3e8079.js} +65 -65
  77. package/dist/esm/{http-service-5d037e16.js → http-service-3dc3b3e7.js} +49 -49
  78. package/dist/esm/{interfaces-61c6305b.js → interfaces-2b97fab2.js} +29 -29
  79. package/dist/esm/loader.js +2 -2
  80. package/dist/esm/polyfills/core-js.js +0 -0
  81. package/dist/esm/polyfills/dom.js +0 -0
  82. package/dist/esm/polyfills/es5-html-element.js +0 -0
  83. package/dist/esm/polyfills/index.js +0 -0
  84. package/dist/esm/polyfills/system.js +0 -0
  85. package/dist/esm/priv-chart-popover.entry.js +79 -79
  86. package/dist/esm/priv-datepicker.entry.js +667 -667
  87. package/dist/esm/priv-navigator-button.entry.js +18 -18
  88. package/dist/esm/priv-navigator-item.entry.js +23 -23
  89. package/dist/esm/ripple.js +2 -2
  90. package/dist/esm/wm-action-menu_2.entry.js +341 -341
  91. package/dist/esm/wm-button.entry.js +218 -218
  92. package/dist/esm/wm-chart-slice.entry.js +13 -13
  93. package/dist/esm/wm-chart.entry.js +475 -475
  94. package/dist/esm/wm-datepicker.entry.js +256 -256
  95. package/dist/esm/wm-input.entry.js +134 -133
  96. package/dist/esm/wm-modal-footer.entry.js +31 -31
  97. package/dist/esm/wm-modal-header.entry.js +34 -34
  98. package/dist/esm/wm-modal.entry.js +161 -161
  99. package/dist/esm/wm-navigator.entry.js +268 -268
  100. package/dist/esm/wm-network-uploader.entry.js +420 -420
  101. package/dist/esm/wm-option_2.entry.js +494 -492
  102. package/dist/esm/wm-pagination.entry.js +167 -167
  103. package/dist/esm/wm-search.entry.js +231 -231
  104. package/dist/esm/wm-snackbar.entry.js +170 -170
  105. package/dist/esm/wm-tab-item_3.entry.js +300 -300
  106. package/dist/esm/wm-tag-input.entry.js +570 -556
  107. package/dist/esm/wm-timepicker.entry.js +380 -379
  108. package/dist/esm/wm-toggletip.entry.js +124 -124
  109. package/dist/esm/wm-uploader.entry.js +360 -348
  110. package/dist/esm/wm-wrapper.entry.js +12 -12
  111. package/dist/ripple/{p-374b4fa6.entry.js → p-03f14a00.entry.js} +1 -1
  112. package/dist/ripple/{p-c724ce54.entry.js → p-0663e9fc.entry.js} +1 -1
  113. package/dist/ripple/{p-36da5d4a.entry.js → p-07f557b0.entry.js} +1 -1
  114. package/dist/ripple/{p-dea72d46.entry.js → p-0b1cdd4e.entry.js} +1 -1
  115. package/dist/ripple/p-0b412b16.entry.js +1 -0
  116. package/dist/ripple/p-1ed06170.js +1 -0
  117. package/dist/ripple/{p-ba9d3069.entry.js → p-1fdd85ea.entry.js} +1 -1
  118. package/dist/ripple/p-2d7891e9.entry.js +1 -0
  119. package/dist/ripple/{p-41f39509.entry.js → p-427c4723.entry.js} +1 -1
  120. package/dist/ripple/{p-888bec42.js → p-43f1298b.js} +0 -0
  121. package/dist/ripple/{p-5ffa983b.entry.js → p-6b28f3fe.entry.js} +1 -1
  122. package/dist/ripple/{p-e574fb73.entry.js → p-6d0b3f08.entry.js} +1 -1
  123. package/dist/ripple/{p-7bbd123c.entry.js → p-94f584c5.entry.js} +1 -1
  124. package/dist/ripple/{p-b03382ea.entry.js → p-a84de435.entry.js} +1 -1
  125. package/dist/ripple/{p-c5e44367.entry.js → p-addbfa91.entry.js} +1 -1
  126. package/dist/ripple/p-b14062a7.entry.js +1 -0
  127. package/dist/ripple/p-c5d718c7.entry.js +1 -0
  128. package/dist/ripple/p-c637686e.entry.js +1 -0
  129. package/dist/ripple/{p-042d6449.entry.js → p-c8655e6c.entry.js} +1 -1
  130. package/dist/ripple/p-cf075b3b.js +16 -0
  131. package/dist/ripple/{p-d69c1688.entry.js → p-d5938de0.entry.js} +1 -1
  132. package/dist/ripple/{p-b4a8c8d3.entry.js → p-e26c9858.entry.js} +1 -1
  133. package/dist/ripple/p-f23d6211.entry.js +1 -0
  134. package/dist/ripple/{p-a6d6eae7.js → p-fd8070fb.js} +0 -0
  135. package/dist/ripple/ripple.esm.js +1 -1
  136. package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +48 -48
  137. package/dist/types/components/wm-button/wm-button.d.ts +44 -44
  138. package/dist/types/components/wm-chart/priv-chart-popover/priv-chart-popover.d.ts +23 -23
  139. package/dist/types/components/wm-chart/wm-chart-slice.d.ts +8 -8
  140. package/dist/types/components/wm-chart/wm-chart.d.ts +82 -82
  141. package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +76 -76
  142. package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +41 -41
  143. package/dist/types/components/wm-input/wm-input.d.ts +46 -46
  144. package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +34 -34
  145. package/dist/types/components/wm-modal/wm-modal-footer.d.ts +15 -15
  146. package/dist/types/components/wm-modal/wm-modal-header.d.ts +12 -12
  147. package/dist/types/components/wm-modal/wm-modal.d.ts +41 -41
  148. package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +10 -10
  149. package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +13 -13
  150. package/dist/types/components/wm-navigator/wm-navigator.d.ts +61 -61
  151. package/dist/types/components/wm-option/wm-option.d.ts +32 -32
  152. package/dist/types/components/wm-pagination/wm-pagination.d.ts +32 -32
  153. package/dist/types/components/wm-search/wm-search.d.ts +86 -86
  154. package/dist/types/components/wm-select/wm-select.d.ts +66 -66
  155. package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +35 -35
  156. package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +38 -38
  157. package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +53 -53
  158. package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +20 -20
  159. package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +92 -91
  160. package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +61 -61
  161. package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +27 -27
  162. package/dist/types/components/wm-uploader/wm-network-uploader/wm-network-uploader.d.ts +85 -85
  163. package/dist/types/components/wm-uploader/wm-uploader.d.ts +84 -80
  164. package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +7 -7
  165. package/dist/types/components.d.ts +28 -24
  166. package/dist/types/global/__mocks__/functions.d.ts +6 -6
  167. package/dist/types/global/functions.d.ts +40 -40
  168. package/dist/types/global/global.d.ts +1 -1
  169. package/dist/types/global/interfaces.d.ts +34 -34
  170. package/dist/types/global/services/__mocks__/http-service.d.ts +6 -6
  171. package/dist/types/global/services/http-service.d.ts +4 -4
  172. package/dist/types/lang/lang.d.ts +5 -5
  173. package/package.json +47 -46
  174. package/dist/ripple/p-34694011.entry.js +0 -1
  175. package/dist/ripple/p-3eb955b4.entry.js +0 -1
  176. package/dist/ripple/p-75a9ba2f.entry.js +0 -1
  177. package/dist/ripple/p-a50439f1.entry.js +0 -1
  178. package/dist/ripple/p-d5fafa9c.entry.js +0 -1
  179. package/dist/ripple/p-ddf5bb8f.js +0 -1
  180. package/dist/ripple/p-e60fe2f5.js +0 -16
  181. package/dist/ripple/p-ec5db255.entry.js +0 -1
@@ -70,7 +70,7 @@ const en = {
70
70
  }
71
71
  ]
72
72
  },
73
- iso: {
73
+ other: {
74
74
  value: [
75
75
  {
76
76
  type: 0,
@@ -142,7 +142,7 @@ const en = {
142
142
  }
143
143
  ]
144
144
  },
145
- iso: {
145
+ other: {
146
146
  value: [
147
147
  {
148
148
  type: 0,
@@ -334,6 +334,43 @@ const en = {
334
334
  type: 0,
335
335
  value: "Wednesday"
336
336
  }
337
+ ],
338
+ "global.characterLimit": [
339
+ {
340
+ style: null,
341
+ type: 2,
342
+ value: "limit"
343
+ },
344
+ {
345
+ type: 0,
346
+ value: " characters allowed."
347
+ }
348
+ ],
349
+ "global.characterLimitReached": [
350
+ {
351
+ type: 0,
352
+ value: "No additional characters will be entered."
353
+ }
354
+ ],
355
+ "global.charactersEntered": [
356
+ {
357
+ style: null,
358
+ type: 2,
359
+ value: "x"
360
+ },
361
+ {
362
+ type: 0,
363
+ value: " of "
364
+ },
365
+ {
366
+ style: null,
367
+ type: 2,
368
+ value: "y"
369
+ },
370
+ {
371
+ type: 0,
372
+ value: " characters entered."
373
+ }
337
374
  ],
338
375
  "global.closeVerb": [
339
376
  {
@@ -346,6 +383,12 @@ const en = {
346
383
  type: 0,
347
384
  value: "An error occurred. Please try again."
348
385
  }
386
+ ],
387
+ "global.newWindowLink": [
388
+ {
389
+ type: 0,
390
+ value: "Opens in a new window."
391
+ }
349
392
  ],
350
393
  "global.next": [
351
394
  {
@@ -358,6 +401,24 @@ const en = {
358
401
  type: 0,
359
402
  value: "previous"
360
403
  }
404
+ ],
405
+ "global.requiredError": [
406
+ {
407
+ type: 0,
408
+ value: "This field is required."
409
+ }
410
+ ],
411
+ "global.requiredField": [
412
+ {
413
+ type: 0,
414
+ value: "required field"
415
+ }
416
+ ],
417
+ "input.numberError": [
418
+ {
419
+ type: 0,
420
+ value: "Please enter a valid number."
421
+ }
361
422
  ],
362
423
  "navigator.WatermarkAppNavigation": [
363
424
  {
@@ -521,6 +582,127 @@ const en = {
521
582
  type: 0,
522
583
  value: "Make a selection"
523
584
  }
585
+ ],
586
+ "tagInput.existingOptions": [
587
+ {
588
+ offset: 0,
589
+ options: {
590
+ one: {
591
+ value: [
592
+ {
593
+ type: 0,
594
+ value: "1 existing option."
595
+ }
596
+ ]
597
+ },
598
+ other: {
599
+ value: [
600
+ {
601
+ type: 7
602
+ },
603
+ {
604
+ type: 0,
605
+ value: " existing options."
606
+ }
607
+ ]
608
+ }
609
+ },
610
+ pluralType: "cardinal",
611
+ type: 6,
612
+ value: "num"
613
+ }
614
+ ],
615
+ "tagInput.helpTextCanSelect": [
616
+ {
617
+ type: 0,
618
+ value: "Search and select a tag."
619
+ }
620
+ ],
621
+ "tagInput.helpTextEditable": [
622
+ {
623
+ type: 0,
624
+ value: "Press the Enter or Comma key to add a new tag."
625
+ }
626
+ ],
627
+ "tagInput.maxTagsReached": [
628
+ {
629
+ type: 0,
630
+ value: "The maximum amount of tags has been reached, no additional tags can be added."
631
+ }
632
+ ],
633
+ "tagInput.placeholderAdd": [
634
+ {
635
+ type: 0,
636
+ value: "Add a new tag"
637
+ }
638
+ ],
639
+ "tagInput.placeholderAddAndSearch": [
640
+ {
641
+ type: 0,
642
+ value: "Add or search for a tag"
643
+ }
644
+ ],
645
+ "tagInput.placeholderSearch": [
646
+ {
647
+ type: 0,
648
+ value: "Search and select a tag"
649
+ }
650
+ ],
651
+ "tagInput.tagAdded": [
652
+ {
653
+ type: 1,
654
+ value: "tagName"
655
+ },
656
+ {
657
+ type: 0,
658
+ value: " added."
659
+ }
660
+ ],
661
+ "tagInput.tagAlreadyAdded": [
662
+ {
663
+ type: 1,
664
+ value: "tagName"
665
+ },
666
+ {
667
+ type: 0,
668
+ value: " has already been added."
669
+ }
670
+ ],
671
+ "tagInput.tagAreaInstructions": [
672
+ {
673
+ type: 0,
674
+ value: "tag selection. Press Backspace or Delete to remove a tag."
675
+ }
676
+ ],
677
+ "tagInput.tagRemoved": [
678
+ {
679
+ type: 1,
680
+ value: "tag"
681
+ },
682
+ {
683
+ type: 0,
684
+ value: " removed"
685
+ }
686
+ ],
687
+ "tagInput.tagsAddedCounter": [
688
+ {
689
+ type: 0,
690
+ value: "Tags added: "
691
+ },
692
+ {
693
+ style: null,
694
+ type: 2,
695
+ value: "x"
696
+ },
697
+ {
698
+ type: 0,
699
+ value: "/"
700
+ },
701
+ {
702
+ style: null,
703
+ type: 2,
704
+ value: "y"
705
+ }
524
706
  ],
525
707
  "time.invalidTime": [
526
708
  {
@@ -545,6 +727,12 @@ const en = {
545
727
  type: 0,
546
728
  value: "hh:mm"
547
729
  }
730
+ ],
731
+ "toggletip.moreInformation": [
732
+ {
733
+ type: 0,
734
+ value: "More information"
735
+ }
548
736
  ],
549
737
  "uploader.duplicateName": [
550
738
  {
@@ -760,7 +948,7 @@ const fr = {
760
948
  }
761
949
  ]
762
950
  },
763
- iso: {
951
+ other: {
764
952
  value: [
765
953
  {
766
954
  type: 0,
@@ -832,7 +1020,7 @@ const fr = {
832
1020
  }
833
1021
  ]
834
1022
  },
835
- iso: {
1023
+ other: {
836
1024
  value: [
837
1025
  {
838
1026
  type: 0,
@@ -910,6 +1098,12 @@ const fr = {
910
1098
  type: 0,
911
1099
  value: "Octobre"
912
1100
  }
1101
+ ],
1102
+ "date.requiredDateError": [
1103
+ {
1104
+ type: 0,
1105
+ value: "Vous devez renseigner une date."
1106
+ }
913
1107
  ],
914
1108
  "date.sa": [
915
1109
  {
@@ -1018,12 +1212,61 @@ const fr = {
1018
1212
  type: 0,
1019
1213
  value: "Mercredi"
1020
1214
  }
1215
+ ],
1216
+ "global.characterLimit": [
1217
+ {
1218
+ style: null,
1219
+ type: 2,
1220
+ value: "limit"
1221
+ },
1222
+ {
1223
+ type: 0,
1224
+ value: " caractères autorisés."
1225
+ }
1226
+ ],
1227
+ "global.characterLimitReached": [
1228
+ {
1229
+ type: 0,
1230
+ value: "Aucun autre caractère ne peut être ajouté."
1231
+ }
1232
+ ],
1233
+ "global.charactersEntered": [
1234
+ {
1235
+ style: null,
1236
+ type: 2,
1237
+ value: "x"
1238
+ },
1239
+ {
1240
+ type: 0,
1241
+ value: " caractères sur "
1242
+ },
1243
+ {
1244
+ style: null,
1245
+ type: 2,
1246
+ value: "y"
1247
+ },
1248
+ {
1249
+ type: 0,
1250
+ value: " ajoutés."
1251
+ }
1252
+ ],
1253
+ "global.closeVerb": [
1254
+ {
1255
+ type: 0,
1256
+ value: "Fermer"
1257
+ }
1021
1258
  ],
1022
1259
  "global.genericError": [
1023
1260
  {
1024
1261
  type: 0,
1025
1262
  value: "Une erreur s'est produite. Veuillez réessayer."
1026
1263
  }
1264
+ ],
1265
+ "global.newWindowLink": [
1266
+ {
1267
+ type: 0,
1268
+ value: "S'ouvre dans une nouvelle fenêtre."
1269
+ }
1027
1270
  ],
1028
1271
  "global.next": [
1029
1272
  {
@@ -1036,6 +1279,24 @@ const fr = {
1036
1279
  type: 0,
1037
1280
  value: "précédent"
1038
1281
  }
1282
+ ],
1283
+ "global.requiredError": [
1284
+ {
1285
+ type: 0,
1286
+ value: "Ce champ est requis."
1287
+ }
1288
+ ],
1289
+ "global.requiredField": [
1290
+ {
1291
+ type: 0,
1292
+ value: "champ requis"
1293
+ }
1294
+ ],
1295
+ "input.numberError": [
1296
+ {
1297
+ type: 0,
1298
+ value: "Entrez un nombre valide."
1299
+ }
1039
1300
  ],
1040
1301
  "navigator.WatermarkAppNavigation": [
1041
1302
  {
@@ -1048,6 +1309,36 @@ const fr = {
1048
1309
  type: 0,
1049
1310
  value: "Se déconnecter"
1050
1311
  }
1312
+ ],
1313
+ "navigator.userinfo": [
1314
+ {
1315
+ type: 0,
1316
+ value: "Informations utilisateur"
1317
+ }
1318
+ ],
1319
+ "navigator.userinfoAndProductNavigator": [
1320
+ {
1321
+ type: 0,
1322
+ value: "Informations utilisateur et navigateur de produits"
1323
+ }
1324
+ ],
1325
+ "navigator.userinfoLabel": [
1326
+ {
1327
+ type: 0,
1328
+ value: "pour "
1329
+ },
1330
+ {
1331
+ type: 1,
1332
+ value: "name"
1333
+ },
1334
+ {
1335
+ type: 0,
1336
+ value: ", email "
1337
+ },
1338
+ {
1339
+ type: 1,
1340
+ value: "email"
1341
+ }
1051
1342
  ],
1052
1343
  "navigator.watermarkApps": [
1053
1344
  {
@@ -1113,45 +1404,208 @@ const fr = {
1113
1404
  "search.typeToFilterResults": [
1114
1405
  {
1115
1406
  type: 0,
1116
- value: "Tapez pour filtrer les résultats"
1407
+ value: "Tapez pour filtrer les résultats"
1408
+ }
1409
+ ],
1410
+ "search.xOfYResults": [
1411
+ {
1412
+ offset: 0,
1413
+ options: {
1414
+ "=0": {
1415
+ value: [
1416
+ {
1417
+ type: 0,
1418
+ value: "Aucun résultat"
1419
+ }
1420
+ ]
1421
+ },
1422
+ other: {
1423
+ value: [
1424
+ {
1425
+ type: 0,
1426
+ value: "Résultat "
1427
+ },
1428
+ {
1429
+ type: 1,
1430
+ value: "current"
1431
+ },
1432
+ {
1433
+ type: 0,
1434
+ value: " de "
1435
+ },
1436
+ {
1437
+ type: 1,
1438
+ value: "numResults"
1439
+ }
1440
+ ]
1441
+ }
1442
+ },
1443
+ pluralType: "cardinal",
1444
+ type: 6,
1445
+ value: "numResults"
1446
+ }
1447
+ ],
1448
+ "select.allSelected": [
1449
+ {
1450
+ type: 0,
1451
+ value: "Tous sélectionnés"
1452
+ }
1453
+ ],
1454
+ "select.multiPlaceholder": [
1455
+ {
1456
+ type: 0,
1457
+ value: "Faites une sélection"
1458
+ }
1459
+ ],
1460
+ "tagInput.existingOptions": [
1461
+ {
1462
+ offset: 0,
1463
+ options: {
1464
+ one: {
1465
+ value: [
1466
+ {
1467
+ type: 0,
1468
+ value: "1 option existante."
1469
+ }
1470
+ ]
1471
+ },
1472
+ other: {
1473
+ value: [
1474
+ {
1475
+ type: 7
1476
+ },
1477
+ {
1478
+ type: 0,
1479
+ value: " options existantes."
1480
+ }
1481
+ ]
1482
+ }
1483
+ },
1484
+ pluralType: "cardinal",
1485
+ type: 6,
1486
+ value: "num"
1487
+ }
1488
+ ],
1489
+ "tagInput.helpTextCanSelect": [
1490
+ {
1491
+ type: 0,
1492
+ value: "Recherchez et sélectionnez une étiquette."
1493
+ }
1494
+ ],
1495
+ "tagInput.helpTextEditable": [
1496
+ {
1497
+ type: 0,
1498
+ value: "Appuyez sur Entrée ou insérez une virgule pour ajouter une nouvelle étiquette."
1499
+ }
1500
+ ],
1501
+ "tagInput.maxTagsReached": [
1502
+ {
1503
+ type: 0,
1504
+ value: "Le nombre maximal d'étiquettes est atteint, aucune autre ne peut être ajoutée."
1505
+ }
1506
+ ],
1507
+ "tagInput.placeholderAdd": [
1508
+ {
1509
+ type: 0,
1510
+ value: "Ajoutez une nouvelle étiquette"
1511
+ }
1512
+ ],
1513
+ "tagInput.placeholderAddAndSearch": [
1514
+ {
1515
+ type: 0,
1516
+ value: "Ajoutez ou recherchez une étiquette"
1517
+ }
1518
+ ],
1519
+ "tagInput.placeholderSearch": [
1520
+ {
1521
+ type: 0,
1522
+ value: "Recherchez et sélectionnez une étiquette"
1523
+ }
1524
+ ],
1525
+ "tagInput.tagAdded": [
1526
+ {
1527
+ type: 1,
1528
+ value: "tagName"
1529
+ },
1530
+ {
1531
+ type: 0,
1532
+ value: " ajoutée."
1533
+ }
1534
+ ],
1535
+ "tagInput.tagAlreadyAdded": [
1536
+ {
1537
+ type: 1,
1538
+ value: "tagName"
1539
+ },
1540
+ {
1541
+ type: 0,
1542
+ value: " a déjà été ajoutée."
1543
+ }
1544
+ ],
1545
+ "tagInput.tagAreaInstructions": [
1546
+ {
1547
+ type: 0,
1548
+ value: "selection d'étiquettes. Touche retour arrière ou supprimer pour enlever une étiquette."
1549
+ }
1550
+ ],
1551
+ "tagInput.tagRemoved": [
1552
+ {
1553
+ type: 1,
1554
+ value: "tag"
1555
+ },
1556
+ {
1557
+ type: 0,
1558
+ value: " enlevée"
1559
+ }
1560
+ ],
1561
+ "tagInput.tagsAddedCounter": [
1562
+ {
1563
+ type: 0,
1564
+ value: "Étiquette ajoutée : "
1565
+ },
1566
+ {
1567
+ style: null,
1568
+ type: 2,
1569
+ value: "x"
1570
+ },
1571
+ {
1572
+ type: 0,
1573
+ value: "/"
1574
+ },
1575
+ {
1576
+ style: null,
1577
+ type: 2,
1578
+ value: "y"
1579
+ }
1580
+ ],
1581
+ "time.invalidTime": [
1582
+ {
1583
+ type: 0,
1584
+ value: "Entrez une heure valide."
1585
+ }
1586
+ ],
1587
+ "time.requiredError": [
1588
+ {
1589
+ type: 0,
1590
+ value: "Vous devez renseigner une heure."
1591
+ }
1592
+ ],
1593
+ "time.selectTime": [
1594
+ {
1595
+ type: 0,
1596
+ value: "Choisissez une heure"
1597
+ }
1598
+ ],
1599
+ "time.timeFormat": [
1600
+ {
1601
+ type: 0,
1602
+ value: "hh:mm"
1117
1603
  }
1118
1604
  ],
1119
- "search.xOfYResults": [
1605
+ "toggletip.moreInformation": [
1120
1606
  {
1121
- offset: 0,
1122
- options: {
1123
- "=0": {
1124
- value: [
1125
- {
1126
- type: 0,
1127
- value: "Aucun résultat"
1128
- }
1129
- ]
1130
- },
1131
- other: {
1132
- value: [
1133
- {
1134
- type: 0,
1135
- value: "Résultat "
1136
- },
1137
- {
1138
- type: 1,
1139
- value: "current"
1140
- },
1141
- {
1142
- type: 0,
1143
- value: " de "
1144
- },
1145
- {
1146
- type: 1,
1147
- value: "numResults"
1148
- }
1149
- ]
1150
- }
1151
- },
1152
- pluralType: "cardinal",
1153
- type: 6,
1154
- value: "numResults"
1607
+ type: 0,
1608
+ value: "Plus d'information"
1155
1609
  }
1156
1610
  ],
1157
1611
  "uploader.duplicateName": [
@@ -1372,7 +1826,7 @@ const es = {
1372
1826
  }
1373
1827
  ]
1374
1828
  },
1375
- iso: {
1829
+ other: {
1376
1830
  value: [
1377
1831
  {
1378
1832
  type: 0,
@@ -1444,7 +1898,7 @@ const es = {
1444
1898
  }
1445
1899
  ]
1446
1900
  },
1447
- iso: {
1901
+ other: {
1448
1902
  value: [
1449
1903
  {
1450
1904
  type: 0,
@@ -1988,7 +2442,7 @@ const pig = {
1988
2442
  }
1989
2443
  ]
1990
2444
  },
1991
- iso: {
2445
+ other: {
1992
2446
  value: [
1993
2447
  {
1994
2448
  type: 0,
@@ -2060,7 +2514,7 @@ const pig = {
2060
2514
  }
2061
2515
  ]
2062
2516
  },
2063
- iso: {
2517
+ other: {
2064
2518
  value: [
2065
2519
  {
2066
2520
  type: 0,
@@ -2252,6 +2706,43 @@ const pig = {
2252
2706
  type: 0,
2253
2707
  value: "Ednesdayway"
2254
2708
  }
2709
+ ],
2710
+ "global.characterLimit": [
2711
+ {
2712
+ style: null,
2713
+ type: 2,
2714
+ value: "limit"
2715
+ },
2716
+ {
2717
+ type: 0,
2718
+ value: " aracterschay allowedyay."
2719
+ }
2720
+ ],
2721
+ "global.characterLimitReached": [
2722
+ {
2723
+ type: 0,
2724
+ value: "Onay additionalyay aracterschay illway ebay enteredyay."
2725
+ }
2726
+ ],
2727
+ "global.charactersEntered": [
2728
+ {
2729
+ style: null,
2730
+ type: 2,
2731
+ value: "x"
2732
+ },
2733
+ {
2734
+ type: 0,
2735
+ value: " ofyay "
2736
+ },
2737
+ {
2738
+ style: null,
2739
+ type: 2,
2740
+ value: "y"
2741
+ },
2742
+ {
2743
+ type: 0,
2744
+ value: " aracterschay enteredyay."
2745
+ }
2255
2746
  ],
2256
2747
  "global.closeVerb": [
2257
2748
  {
@@ -2264,6 +2755,12 @@ const pig = {
2264
2755
  type: 0,
2265
2756
  value: "Anyay erroryay occurredyay. Easeplay tryay againyay."
2266
2757
  }
2758
+ ],
2759
+ "global.newWindowLink": [
2760
+ {
2761
+ type: 0,
2762
+ value: "Opensyay inyay ayay ewnay indowway."
2763
+ }
2267
2764
  ],
2268
2765
  "global.next": [
2269
2766
  {
@@ -2276,6 +2773,24 @@ const pig = {
2276
2773
  type: 0,
2277
2774
  value: "eviouspray"
2278
2775
  }
2776
+ ],
2777
+ "global.requiredError": [
2778
+ {
2779
+ type: 0,
2780
+ value: "Isthay ieldfay isyay equiredray."
2781
+ }
2782
+ ],
2783
+ "global.requiredField": [
2784
+ {
2785
+ type: 0,
2786
+ value: "equiredray ieldfay"
2787
+ }
2788
+ ],
2789
+ "input.numberError": [
2790
+ {
2791
+ type: 0,
2792
+ value: "Easeplay enteryay ayay alidvay umbernay."
2793
+ }
2279
2794
  ],
2280
2795
  "navigator.WatermarkAppNavigation": [
2281
2796
  {
@@ -2439,6 +2954,127 @@ const pig = {
2439
2954
  type: 0,
2440
2955
  value: "Akemay ayay electionsay"
2441
2956
  }
2957
+ ],
2958
+ "tagInput.existingOptions": [
2959
+ {
2960
+ offset: 0,
2961
+ options: {
2962
+ one: {
2963
+ value: [
2964
+ {
2965
+ type: 0,
2966
+ value: "1 existingyay optionyay."
2967
+ }
2968
+ ]
2969
+ },
2970
+ other: {
2971
+ value: [
2972
+ {
2973
+ type: 7
2974
+ },
2975
+ {
2976
+ type: 0,
2977
+ value: " existingyay optionsyay."
2978
+ }
2979
+ ]
2980
+ }
2981
+ },
2982
+ pluralType: "cardinal",
2983
+ type: 6,
2984
+ value: "num"
2985
+ }
2986
+ ],
2987
+ "tagInput.helpTextCanSelect": [
2988
+ {
2989
+ type: 0,
2990
+ value: "Earchsay andyay electsay ayay agtay."
2991
+ }
2992
+ ],
2993
+ "tagInput.helpTextEditable": [
2994
+ {
2995
+ type: 0,
2996
+ value: "Esspray ethay Enteryay oryay Ommacay eykay otay addyay ayay ewnay agtay."
2997
+ }
2998
+ ],
2999
+ "tagInput.maxTagsReached": [
3000
+ {
3001
+ type: 0,
3002
+ value: "Ethay aximummay amountyay ofyay agstay ashay eenbay eachedray, onay additionalyay agstay ancay ebay addedyay."
3003
+ }
3004
+ ],
3005
+ "tagInput.placeholderAdd": [
3006
+ {
3007
+ type: 0,
3008
+ value: "Addyay ayay ewnay agtay"
3009
+ }
3010
+ ],
3011
+ "tagInput.placeholderAddAndSearch": [
3012
+ {
3013
+ type: 0,
3014
+ value: "Addyay oryay earchsay orfay ayay agtay"
3015
+ }
3016
+ ],
3017
+ "tagInput.placeholderSearch": [
3018
+ {
3019
+ type: 0,
3020
+ value: "Earchsay andyay electsay ayay agtay"
3021
+ }
3022
+ ],
3023
+ "tagInput.tagAdded": [
3024
+ {
3025
+ type: 1,
3026
+ value: "tagName"
3027
+ },
3028
+ {
3029
+ type: 0,
3030
+ value: " addedyay."
3031
+ }
3032
+ ],
3033
+ "tagInput.tagAlreadyAdded": [
3034
+ {
3035
+ type: 1,
3036
+ value: "tagName"
3037
+ },
3038
+ {
3039
+ type: 0,
3040
+ value: " ashay alreadyyay eenbay addedyay."
3041
+ }
3042
+ ],
3043
+ "tagInput.tagAreaInstructions": [
3044
+ {
3045
+ type: 0,
3046
+ value: "agtay electionsay. Esspray Ackspacebay oryay Eleteday otay emoveray ayay agtay."
3047
+ }
3048
+ ],
3049
+ "tagInput.tagRemoved": [
3050
+ {
3051
+ type: 1,
3052
+ value: "tag"
3053
+ },
3054
+ {
3055
+ type: 0,
3056
+ value: " emovedray"
3057
+ }
3058
+ ],
3059
+ "tagInput.tagsAddedCounter": [
3060
+ {
3061
+ type: 0,
3062
+ value: "Agstay addedyay: "
3063
+ },
3064
+ {
3065
+ style: null,
3066
+ type: 2,
3067
+ value: "x"
3068
+ },
3069
+ {
3070
+ type: 0,
3071
+ value: "/"
3072
+ },
3073
+ {
3074
+ style: null,
3075
+ type: 2,
3076
+ value: "y"
3077
+ }
2442
3078
  ],
2443
3079
  "time.invalidTime": [
2444
3080
  {
@@ -2463,6 +3099,12 @@ const pig = {
2463
3099
  type: 0,
2464
3100
  value: "hh:mmay"
2465
3101
  }
3102
+ ],
3103
+ "toggletip.moreInformation": [
3104
+ {
3105
+ type: 0,
3106
+ value: "Oremay informationyay"
3107
+ }
2466
3108
  ],
2467
3109
  "uploader.duplicateName": [
2468
3110
  {
@@ -5697,448 +6339,448 @@ function createIntl(config, cache) {
5697
6339
  return __assign(__assign({}, resolvedConfig), { formatters: formatters, formatNumber: formatNumber.bind(null, resolvedConfig, formatters.getNumberFormat), formatNumberToParts: formatNumberToParts.bind(null, resolvedConfig, formatters.getNumberFormat), formatRelativeTime: formatRelativeTime.bind(null, resolvedConfig, formatters.getRelativeTimeFormat), formatDate: formatDate.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateToParts: formatDateToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTime: formatTime.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateTimeRange: formatDateTimeRange.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTimeToParts: formatTimeToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatPlural: formatPlural.bind(null, resolvedConfig, formatters.getPluralRules), formatMessage: formatMessage.bind(null, resolvedConfig, formatters), formatList: formatList.bind(null, resolvedConfig, formatters.getListFormat), formatListToParts: formatListToParts.bind(null, resolvedConfig, formatters.getListFormat), formatDisplayName: formatDisplayName.bind(null, resolvedConfig, formatters.getDisplayNames) });
5698
6340
  }
5699
6341
 
5700
- const DEFAULT_LANGUAGE = "en";
5701
- function getBrowserLang() {
5702
- const langAttr = document.documentElement.getAttribute("lang");
5703
- if (!!langAttr) {
5704
- return langAttr;
5705
- }
5706
- else if (window.navigator && window.navigator.language) {
5707
- const lang = window.navigator.languages ? window.navigator.languages[0] : window.navigator.language;
5708
- return lang.slice(0, 2);
5709
- }
5710
- else {
5711
- return DEFAULT_LANGUAGE;
5712
- }
5713
- }
5714
- // prevents memory leak
5715
- const cache = createIntlCache();
5716
- const locale = getBrowserLang();
5717
- const intl = createIntl({
5718
- locale: locale,
5719
- defaultLocale: "en",
5720
- messages: lang[locale] || en,
5721
- }, cache);
5722
- function generateId() {
5723
- return "wmcl-" + Math.random().toString(36).substr(2, 10);
5724
- }
5725
- function debounce(fn, wait) {
5726
- let timeout;
5727
- return function () {
5728
- const context = this;
5729
- const functionCall = () => fn.apply(context, arguments);
5730
- clearTimeout(timeout);
5731
- timeout = setTimeout(functionCall, wait);
5732
- };
5733
- }
5734
- function getTextDir() {
5735
- const dir = document.querySelector("html").getAttribute("dir");
5736
- return dir ? dir.toLowerCase() : "";
5737
- }
5738
- function getPosition(el) {
5739
- const coords = el.getBoundingClientRect();
5740
- let x = coords.x;
5741
- let y = coords.y;
5742
- // Edge doesn't have x and y
5743
- if (!x) {
5744
- if (getTextDir() === "rtl") {
5745
- x = coords.right;
5746
- }
5747
- else {
5748
- x = coords.left;
5749
- }
5750
- y = coords.top;
5751
- }
5752
- return { x, y };
5753
- }
5754
- function findParentWithScrollbar(el) {
5755
- while (!!el) {
5756
- if (el.scrollHeight > el.clientHeight && ["scroll", "auto"].includes(window.getComputedStyle(el).overflowY)) {
5757
- return el;
5758
- }
5759
- el = el.parentElement;
5760
- }
5761
- }
5762
- function findParentWithHiddenOverflow(el) {
5763
- while (!!el) {
5764
- if (window.getComputedStyle(el).overflowY !== "visible") {
5765
- return el;
5766
- }
5767
- el = el.parentElement;
5768
- }
5769
- }
5770
- function getClosableElementMeasurements(fixedEl, closableEl) {
5771
- const parent = findParentWithHiddenOverflow(fixedEl);
5772
- // if parent is not found, measurements are checked against the viewport
5773
- return {
5774
- closableElHeight: closableEl.clientHeight,
5775
- closableElWidth: closableEl.clientWidth,
5776
- // NB boundingClientRect.bottom is space from top of viewport to bottom of el
5777
- // to get space below the el -> height of viewport minus boundingClientRect.bottom
5778
- spaceAbove: parent
5779
- ? fixedEl.getBoundingClientRect().top - parent.getBoundingClientRect().top
5780
- : fixedEl.getBoundingClientRect().top,
5781
- // NB boundingClientRect.bottom is space from top of viewport to bottom of el
5782
- // to get space below the el -> height of viewport minus boundingClientRect.bottom
5783
- spaceBelow: parent
5784
- ? parent.getBoundingClientRect().bottom - fixedEl.getBoundingClientRect().bottom
5785
- : document.documentElement.clientHeight - fixedEl.getBoundingClientRect().bottom,
5786
- spaceLeft: parent
5787
- ? fixedEl.getBoundingClientRect().left - parent.getBoundingClientRect().left
5788
- : fixedEl.getBoundingClientRect().left,
5789
- spaceRight: parent
5790
- ? parent.getBoundingClientRect().right - fixedEl.getBoundingClientRect().right
5791
- : document.documentElement.clientWidth - fixedEl.getBoundingClientRect().right,
5792
- };
5793
- }
5794
- function shouldOpenUp(fixedEl, //the element visible on the page when the component is closed
5795
- closableEl, //the dropdown/popup/etc that becomes visible when the component is open
5796
- offsetAbove = 0, // if closableEl covers a part of fixedEl, that part should be offset
5797
- offsetBelow = 0 // if closableEl covers a part of fixedEl, that part should be offset
5798
- ) {
5799
- const { closableElHeight, spaceAbove, spaceBelow } = getClosableElementMeasurements(fixedEl, closableEl);
5800
- //we want to open up only if there's not enough space below AND there is enough space above
5801
- const openUp = closableElHeight > spaceBelow + offsetBelow && closableElHeight <= spaceAbove + offsetAbove;
5802
- return openUp;
5803
- }
5804
- function shouldOpenDown(fixedEl, //the element visible on the page when the component is closed
5805
- closableEl, //the dropdown/popup/etc that becomes visible when the component is open
5806
- offsetAbove = 0, // if closableEl covers a part of fixedEl, that part should be offset
5807
- offsetBelow = 0 // if closableEl covers a part of fixedEl, that part should be offset
5808
- ) {
5809
- const { closableElHeight, spaceAbove, spaceBelow } = getClosableElementMeasurements(fixedEl, closableEl);
5810
- //we want to open up only if there's not enough space below AND there is enough space above
5811
- const openDown = closableElHeight > spaceAbove + offsetAbove && closableElHeight <= spaceBelow + offsetBelow;
5812
- return openDown;
5813
- }
5814
- function shouldShiftRight(fixedEl, closableEl) {
5815
- const { closableElWidth, spaceLeft, spaceRight } = getClosableElementMeasurements(fixedEl, closableEl);
5816
- const needsSpaceLeft = closableElWidth > spaceLeft && spaceRight > spaceLeft;
5817
- return needsSpaceLeft;
5818
- }
5819
- function shouldShiftLeft(fixedEl, closableEl) {
5820
- const { closableElWidth, spaceLeft, spaceRight } = getClosableElementMeasurements(fixedEl, closableEl);
5821
- const needsSpaceRight = closableElWidth > spaceRight && spaceLeft > spaceRight;
5822
- return needsSpaceRight;
5823
- }
5824
- function adjustTooltipPosition(tPos, el, tooltipEl) {
5825
- // position must be reset before measurements are taken in adjustTooltipPosition
5826
- // otherwise text-wrapping from previous position makes width measurement inconsistent
5827
- tooltipEl.style.top = "";
5828
- tooltipEl.style.left = "";
5829
- const { spaceLeft, spaceRight, spaceBelow, spaceAbove } = getClosableElementMeasurements(el, tooltipEl);
5830
- const tooltipWidth = tooltipEl.getBoundingClientRect().width;
5831
- const tooltipHeight = tooltipEl.getBoundingClientRect().height;
5832
- const enoughSpaceAbove = spaceAbove > tooltipHeight;
5833
- const enoughSpaceBelow = spaceBelow > tooltipHeight;
5834
- // a tooltip should never be closer than 24px to the edge of a screen
5835
- const enoughSpaceLeft = spaceLeft - 24 > tooltipWidth;
5836
- const enoughSpaceRight = spaceRight - 24 > tooltipWidth;
5837
- const swapAbove = (position) => {
5838
- return !enoughSpaceAbove ? position.replace("top", "bottom") : position;
5839
- };
5840
- const swapBelow = (position) => {
5841
- return !enoughSpaceBelow && enoughSpaceAbove ? position.replace("bottom", "top") : position;
5842
- };
5843
- const swapLeft = (position, centeredPosition) => {
5844
- if (!enoughSpaceLeft && enoughSpaceRight) {
5845
- position = position.replace("left", "right");
5846
- }
5847
- else if (!enoughSpaceLeft && !enoughSpaceRight) {
5848
- position = centeredPosition;
5849
- }
5850
- return position;
5851
- };
5852
- const swapRight = (position, centeredPosition) => {
5853
- if (!enoughSpaceRight && enoughSpaceLeft) {
5854
- position = position.replace("right", "left");
5855
- }
5856
- else if (!enoughSpaceRight && !enoughSpaceLeft) {
5857
- position = centeredPosition;
5858
- }
5859
- return position;
5860
- };
5861
- // horizontal checks must occur before vertical checks, because horizontal can affect vertical positioning but not vice versa
5862
- switch (tPos) {
5863
- case "left":
5864
- tPos = swapLeft(tPos, "bottom");
5865
- case "right":
5866
- tPos = swapRight(tPos, "bottom");
5867
- case "top-left":
5868
- tPos = swapLeft(tPos, "top");
5869
- tPos = swapAbove(tPos);
5870
- case "top-right":
5871
- tPos = swapRight(tPos, "top");
5872
- tPos = swapAbove(tPos);
5873
- case "bottom-left":
5874
- tPos = swapLeft(tPos, "bottom");
5875
- tPos = swapBelow(tPos);
5876
- case "bottom-right":
5877
- tPos = swapRight(tPos, "bottom");
5878
- tPos = swapBelow(tPos);
5879
- case "top":
5880
- tPos = swapAbove(tPos);
5881
- case "bottom":
5882
- tPos = swapBelow(tPos);
5883
- }
5884
- return tPos;
5885
- }
5886
- function hasRoomRight(x, spaceNeeded) {
5887
- let horizOffset = 0;
5888
- // if (getTextDir() === "ltr") {
5889
- if (x.type === "click") {
5890
- // if it's a mouse event, deal with mouse coords
5891
- horizOffset = x.clientX;
5892
- // if it's a focus event, the offset is 0
5893
- }
5894
- else if (x.type === "focus") {
5895
- horizOffset = 0;
5896
- }
5897
- else {
5898
- // otherwise an element was passed, calculate how far it is from the edge of the window
5899
- let el = x; // re-assignment is for clarity
5900
- while (el) {
5901
- if (el.tagName == "BODY") {
5902
- // deal with browser quirks with body/window/document and page scroll
5903
- var xScroll = el.scrollLeft || document.documentElement.scrollLeft;
5904
- horizOffset += el.offsetLeft - xScroll + el.clientLeft;
5905
- }
5906
- else {
5907
- // for all other non-BODY elements
5908
- horizOffset += el.offsetLeft - el.scrollLeft + el.clientLeft;
5909
- }
5910
- el = el.offsetParent;
5911
- }
5912
- // }
5913
- }
5914
- return window.innerWidth - horizOffset >= spaceNeeded;
5915
- }
5916
- function checkForActiveElInShadow(element) {
5917
- while (element && element.shadowRoot) {
5918
- element = element.shadowRoot.activeElement;
5919
- }
5920
- return element;
5921
- }
5922
- function checkForFocusableElInShadow(element) {
5923
- const selectors = [
5924
- "button",
5925
- "a",
5926
- "input",
5927
- "select",
5928
- "textarea",
5929
- "wm-button",
5930
- "wm-search",
5931
- "wm-select",
5932
- "wm-action-menu",
5933
- "wm-tab-item",
5934
- "wm-datepicker",
5935
- ];
5936
- let focusableEl = element;
5937
- selectors.forEach((selector) => {
5938
- if (focusableEl && focusableEl.shadowRoot) {
5939
- let elInShadow = focusableEl.shadowRoot.querySelector(selector);
5940
- if (elInShadow) {
5941
- if (selector.startsWith("wm-")) {
5942
- focusableEl = checkForFocusableElInShadow(elInShadow);
5943
- }
5944
- else {
5945
- focusableEl = elInShadow;
5946
- }
5947
- }
5948
- }
5949
- });
5950
- return focusableEl;
5951
- }
5952
- function isFocusable(element) {
5953
- if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute("tabIndex") !== null)) {
5954
- return true;
5955
- }
5956
- if (element.disabled) {
5957
- return false;
5958
- }
5959
- switch (element.nodeName) {
5960
- case "A":
5961
- return !!element.href && element.rel != "ignore";
5962
- case "INPUT":
5963
- return element.type != "hidden" && element.type != "file";
5964
- case "BUTTON":
5965
- case "SELECT":
5966
- case "TEXTAREA":
5967
- case "WM-BUTTON":
5968
- case "WM-SELECT":
5969
- case "WM-ACTION-MENU":
5970
- case "WM-DATEPICKER":
5971
- case "WM-TIMEPICKER":
5972
- case "WM-INPUT":
5973
- case "WM-TAG-INPUT":
5974
- case "WM-TAB-ITEM":
5975
- case "WM-SEARCH":
5976
- return true;
5977
- default:
5978
- return false;
5979
- }
5980
- }
5981
- function getFirstFocusableDescendant(element) {
5982
- if (isFocusable(element)) {
5983
- return checkForFocusableElInShadow(element);
5984
- }
5985
- else if (element.childNodes.length > 0) {
5986
- element.childNodes.forEach((i) => {
5987
- const childEl = getFirstFocusableDescendant(i);
5988
- return childEl && checkForFocusableElInShadow(childEl);
5989
- });
5990
- }
5991
- }
5992
- function hasValidType(file, types) {
5993
- const acceptedExtensions = types.split(" ");
5994
- const parts = file.name && file.name.split(".");
5995
- const ext = parts && parts.length > 1 && parts[parts.length - 1];
5996
- return ext
5997
- ? acceptedExtensions.includes(ext.toLowerCase())
5998
- : // fallback: if we couldn't obtain an extension,
5999
- // validate based on MIME type...
6000
- !!file.type
6001
- ? getAcceptedMimeTypesList(acceptedExtensions).includes(file.type)
6002
- : // ...and if that failed too, accept the file
6003
- // as it's preferable to accept an invalid file
6004
- // than refusing a valid one (back-end will take care of what slips through)
6005
- true;
6006
- }
6007
- // takes a string (space separated list of extensions), returns an array of strings (corresponding MIME types)
6008
- function getAcceptedMimeTypesList(acceptedExtensions) {
6009
- // this is just a list of common file types (regardless of whether they are/can be valid or not)
6010
- // front end checks are just a convenience to users, independent of security.
6011
- // it allows users to be notified of an invalid type as soon as they select the file, rather than when it gets uploaded
6012
- const lookupTable = {
6013
- aac: ["audio/aac"],
6014
- abw: ["application/x-abiword"],
6015
- arc: ["application/x-freearc"],
6016
- avi: ["video/x-msvideo"],
6017
- azw: ["application/vnd.amazon.ebook"],
6018
- bin: ["application/octet-stream"],
6019
- bmp: ["image/bmp"],
6020
- bz: ["application/x-bzip"],
6021
- bz2: ["application/x-bzip2"],
6022
- csh: ["application/x-csh"],
6023
- css: ["text/css"],
6024
- csv: ["text/csv"],
6025
- doc: ["application/msword"],
6026
- docx: ["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
6027
- eot: ["application/vnd.ms-fontobject"],
6028
- epub: ["application/epub+zip"],
6029
- gz: ["application/gzip"],
6030
- gif: ["image/gif"],
6031
- htm: ["text/html"],
6032
- html: ["text/html"],
6033
- ico: ["image/vnd.microsoft.icon"],
6034
- ics: ["text/calendar"],
6035
- jar: ["application/java-archive"],
6036
- jpeg: ["image/jpeg"],
6037
- jpg: ["image/jpeg"],
6038
- js: ["text/javascript"],
6039
- json: ["application/json"],
6040
- jsonld: ["application/ld+json"],
6041
- log: ["text/plain"],
6042
- mid: ["audio/x-midi"],
6043
- midi: ["audio/x-midi"],
6044
- mjs: ["text/javascript"],
6045
- mp3: ["audio/mpeg"],
6046
- mpeg: ["video/mpeg"],
6047
- mpkg: ["application/vnd.apple.installer+xml"],
6048
- odp: ["application/vnd.oasis.opendocument.presentation"],
6049
- ods: ["application/vnd.oasis.opendocument.spreadsheet"],
6050
- odt: ["application/vnd.oasis.opendocument.text"],
6051
- oga: ["audio/ogg"],
6052
- ogv: ["video/ogg"],
6053
- ogx: ["application/ogg"],
6054
- opus: ["audio/opus"],
6055
- otf: ["font/otf"],
6056
- png: ["image/png"],
6057
- pdf: ["application/pdf"],
6058
- php: ["application/php"],
6059
- ppt: ["application/vnd.ms-powerpoint"],
6060
- pptx: ["application/vnd.openxmlformats-officedocument.presentationml.presentation"],
6061
- rar: ["application/vnd.rar", "application/x-rar", "application/x-rar-compressed"],
6062
- rtf: ["application/rtf"],
6063
- sh: ["application/x-sh"],
6064
- svg: ["image/svg+xml"],
6065
- swf: ["application/x-shockwave-flash"],
6066
- tar: ["application/x-tar"],
6067
- tif: ["image/tiff"],
6068
- tiff: ["image/tiff"],
6069
- ts: ["video/mp2t"],
6070
- ttf: ["font/ttf"],
6071
- txt: ["text/plain"],
6072
- vsd: ["application/vnd.visio"],
6073
- wav: ["audio/wav"],
6074
- weba: ["audio/webm"],
6075
- webm: ["video/webm"],
6076
- webp: ["image/webp"],
6077
- woff: ["font/woff"],
6078
- woff2: ["font/woff2"],
6079
- xhtml: ["application/xhtml+xml"],
6080
- xls: ["application/vnd.ms-excel"],
6081
- xlsx: ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
6082
- xml: ["application/xml", "text/xml"],
6083
- xul: ["application/vnd.mozilla.xul+xml"],
6084
- zip: ["application/zip", "application/x-zip-compressed", "multipart/x-zip"],
6085
- "3gp": ["video/3gpp", "audio/3gpp"],
6086
- "3g2": ["video/3gpp2", "audio/3gpp2"],
6087
- "7z": ["application/x-7z-compressed"],
6088
- };
6089
- return acceptedExtensions.reduce((acc, ext) => acc.concat(lookupTable[ext]), []);
6090
- }
6091
- function snakeCaseToCamelCase(str) {
6092
- const snakeCaseRegexp = /^([a-z0-9]*)(_[a-z0-9]*)*$/g;
6093
- if (snakeCaseRegexp.test(str)) {
6094
- let camelCase = "";
6095
- let arr = str.split("_");
6096
- arr.forEach((word, idx) => {
6097
- camelCase += idx === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1);
6098
- });
6099
- return camelCase;
6100
- }
6101
- else {
6102
- return str;
6103
- }
6104
- }
6105
- function getNewIndexToFocus(currentIndex, direction, listLength) {
6106
- let newIndex = currentIndex;
6107
- if (direction === "ArrowDown") {
6108
- newIndex = (currentIndex + 1) % listLength;
6109
- }
6110
- if (direction === "ArrowUp") {
6111
- newIndex = currentIndex === 0 ? listLength - 1 : currentIndex - 1;
6112
- }
6113
- return newIndex;
6114
- }
6115
- function isRelatedTarget(ev, id) {
6116
- // used for onBlur events to check the element that has been clicked
6117
- const ids = id.split(" ");
6118
- return ev.relatedTarget && ids.includes(ev.relatedTarget.id);
6119
- }
6120
- /*
6121
- * this is going to be needed to solve the extra tabbing on navigator
6122
- * and for programmatic focus of tabs
6123
- * Here's a draft, not bug proof, see:
6124
- * https://stackoverflow.com/a/10730308/3741713
6125
-
6126
- function getKeyboardFocusableElements(element = document) {
6127
- const els = Array.from(element.querySelectorAll('a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"]), wm-search, wm-timepicker, wm-tab-list, wm-tab-item, wm-button, wm-action-menu'));
6128
- return els.filter((el: Element) => !el.hasAttribute("disabled")) as HTMLElement[];
6129
- }
6130
-
6131
- export function getPreviousKeyboardFocusableElement(element: HTMLElement) {
6132
- const els = getKeyboardFocusableElements();
6133
- const current = els.indexOf(element);
6134
- return els[current - 1] as HTMLElement;
6135
- }
6136
-
6137
- export function getNextKeyboardFocusableElement(element: HTMLElement) {
6138
- const els = getKeyboardFocusableElements();
6139
- const current = els.indexOf(element);
6140
- return els[current + 1] as HTMLElement;
6141
- }
6342
+ const DEFAULT_LANGUAGE = "en";
6343
+ function getBrowserLang() {
6344
+ const langAttr = document.documentElement.getAttribute("lang");
6345
+ if (!!langAttr) {
6346
+ return langAttr;
6347
+ }
6348
+ else if (window.navigator && window.navigator.language) {
6349
+ const lang = window.navigator.languages ? window.navigator.languages[0] : window.navigator.language;
6350
+ return lang.slice(0, 2);
6351
+ }
6352
+ else {
6353
+ return DEFAULT_LANGUAGE;
6354
+ }
6355
+ }
6356
+ // prevents memory leak
6357
+ const cache = createIntlCache();
6358
+ const locale = getBrowserLang();
6359
+ const intl = createIntl({
6360
+ locale: locale,
6361
+ defaultLocale: "en",
6362
+ messages: lang[locale] || en,
6363
+ }, cache);
6364
+ function generateId() {
6365
+ return "wmcl-" + Math.random().toString(36).substr(2, 10);
6366
+ }
6367
+ function debounce(fn, wait) {
6368
+ let timeout;
6369
+ return function () {
6370
+ const context = this;
6371
+ const functionCall = () => fn.apply(context, arguments);
6372
+ clearTimeout(timeout);
6373
+ timeout = setTimeout(functionCall, wait);
6374
+ };
6375
+ }
6376
+ function getTextDir() {
6377
+ const dir = document.querySelector("html").getAttribute("dir");
6378
+ return dir ? dir.toLowerCase() : "";
6379
+ }
6380
+ function getPosition(el) {
6381
+ const coords = el.getBoundingClientRect();
6382
+ let x = coords.x;
6383
+ let y = coords.y;
6384
+ // Edge doesn't have x and y
6385
+ if (!x) {
6386
+ if (getTextDir() === "rtl") {
6387
+ x = coords.right;
6388
+ }
6389
+ else {
6390
+ x = coords.left;
6391
+ }
6392
+ y = coords.top;
6393
+ }
6394
+ return { x, y };
6395
+ }
6396
+ function findParentWithScrollbar(el) {
6397
+ while (!!el) {
6398
+ if (el.scrollHeight > el.clientHeight && ["scroll", "auto"].includes(window.getComputedStyle(el).overflowY)) {
6399
+ return el;
6400
+ }
6401
+ el = el.parentElement;
6402
+ }
6403
+ }
6404
+ function findParentWithHiddenOverflow(el) {
6405
+ while (!!el) {
6406
+ if (window.getComputedStyle(el).overflowY !== "visible") {
6407
+ return el;
6408
+ }
6409
+ el = el.parentElement;
6410
+ }
6411
+ }
6412
+ function getClosableElementMeasurements(fixedEl, closableEl) {
6413
+ const parent = findParentWithHiddenOverflow(fixedEl);
6414
+ // if parent is not found, measurements are checked against the viewport
6415
+ return {
6416
+ closableElHeight: closableEl.clientHeight,
6417
+ closableElWidth: closableEl.clientWidth,
6418
+ // NB boundingClientRect.bottom is space from top of viewport to bottom of el
6419
+ // to get space below the el -> height of viewport minus boundingClientRect.bottom
6420
+ spaceAbove: parent
6421
+ ? fixedEl.getBoundingClientRect().top - parent.getBoundingClientRect().top
6422
+ : fixedEl.getBoundingClientRect().top,
6423
+ // NB boundingClientRect.bottom is space from top of viewport to bottom of el
6424
+ // to get space below the el -> height of viewport minus boundingClientRect.bottom
6425
+ spaceBelow: parent
6426
+ ? parent.getBoundingClientRect().bottom - fixedEl.getBoundingClientRect().bottom
6427
+ : document.documentElement.clientHeight - fixedEl.getBoundingClientRect().bottom,
6428
+ spaceLeft: parent
6429
+ ? fixedEl.getBoundingClientRect().left - parent.getBoundingClientRect().left
6430
+ : fixedEl.getBoundingClientRect().left,
6431
+ spaceRight: parent
6432
+ ? parent.getBoundingClientRect().right - fixedEl.getBoundingClientRect().right
6433
+ : document.documentElement.clientWidth - fixedEl.getBoundingClientRect().right,
6434
+ };
6435
+ }
6436
+ function shouldOpenUp(fixedEl, //the element visible on the page when the component is closed
6437
+ closableEl, //the dropdown/popup/etc that becomes visible when the component is open
6438
+ offsetAbove = 0, // if closableEl covers a part of fixedEl, that part should be offset
6439
+ offsetBelow = 0 // if closableEl covers a part of fixedEl, that part should be offset
6440
+ ) {
6441
+ const { closableElHeight, spaceAbove, spaceBelow } = getClosableElementMeasurements(fixedEl, closableEl);
6442
+ //we want to open up only if there's not enough space below AND there is enough space above
6443
+ const openUp = closableElHeight > spaceBelow + offsetBelow && closableElHeight <= spaceAbove + offsetAbove;
6444
+ return openUp;
6445
+ }
6446
+ function shouldOpenDown(fixedEl, //the element visible on the page when the component is closed
6447
+ closableEl, //the dropdown/popup/etc that becomes visible when the component is open
6448
+ offsetAbove = 0, // if closableEl covers a part of fixedEl, that part should be offset
6449
+ offsetBelow = 0 // if closableEl covers a part of fixedEl, that part should be offset
6450
+ ) {
6451
+ const { closableElHeight, spaceAbove, spaceBelow } = getClosableElementMeasurements(fixedEl, closableEl);
6452
+ //we want to open up only if there's not enough space below AND there is enough space above
6453
+ const openDown = closableElHeight > spaceAbove + offsetAbove && closableElHeight <= spaceBelow + offsetBelow;
6454
+ return openDown;
6455
+ }
6456
+ function shouldShiftRight(fixedEl, closableEl) {
6457
+ const { closableElWidth, spaceLeft, spaceRight } = getClosableElementMeasurements(fixedEl, closableEl);
6458
+ const needsSpaceLeft = closableElWidth > spaceLeft && spaceRight > spaceLeft;
6459
+ return needsSpaceLeft;
6460
+ }
6461
+ function shouldShiftLeft(fixedEl, closableEl) {
6462
+ const { closableElWidth, spaceLeft, spaceRight } = getClosableElementMeasurements(fixedEl, closableEl);
6463
+ const needsSpaceRight = closableElWidth > spaceRight && spaceLeft > spaceRight;
6464
+ return needsSpaceRight;
6465
+ }
6466
+ function adjustTooltipPosition(tPos, el, tooltipEl) {
6467
+ // position must be reset before measurements are taken in adjustTooltipPosition
6468
+ // otherwise text-wrapping from previous position makes width measurement inconsistent
6469
+ tooltipEl.style.top = "";
6470
+ tooltipEl.style.left = "";
6471
+ const { spaceLeft, spaceRight, spaceBelow, spaceAbove } = getClosableElementMeasurements(el, tooltipEl);
6472
+ const tooltipWidth = tooltipEl.getBoundingClientRect().width;
6473
+ const tooltipHeight = tooltipEl.getBoundingClientRect().height;
6474
+ const enoughSpaceAbove = spaceAbove > tooltipHeight;
6475
+ const enoughSpaceBelow = spaceBelow > tooltipHeight;
6476
+ // a tooltip should never be closer than 24px to the edge of a screen
6477
+ const enoughSpaceLeft = spaceLeft - 24 > tooltipWidth;
6478
+ const enoughSpaceRight = spaceRight - 24 > tooltipWidth;
6479
+ const swapAbove = (position) => {
6480
+ return !enoughSpaceAbove ? position.replace("top", "bottom") : position;
6481
+ };
6482
+ const swapBelow = (position) => {
6483
+ return !enoughSpaceBelow && enoughSpaceAbove ? position.replace("bottom", "top") : position;
6484
+ };
6485
+ const swapLeft = (position, centeredPosition) => {
6486
+ if (!enoughSpaceLeft && enoughSpaceRight) {
6487
+ position = position.replace("left", "right");
6488
+ }
6489
+ else if (!enoughSpaceLeft && !enoughSpaceRight) {
6490
+ position = centeredPosition;
6491
+ }
6492
+ return position;
6493
+ };
6494
+ const swapRight = (position, centeredPosition) => {
6495
+ if (!enoughSpaceRight && enoughSpaceLeft) {
6496
+ position = position.replace("right", "left");
6497
+ }
6498
+ else if (!enoughSpaceRight && !enoughSpaceLeft) {
6499
+ position = centeredPosition;
6500
+ }
6501
+ return position;
6502
+ };
6503
+ // horizontal checks must occur before vertical checks, because horizontal can affect vertical positioning but not vice versa
6504
+ switch (tPos) {
6505
+ case "left":
6506
+ tPos = swapLeft(tPos, "bottom");
6507
+ case "right":
6508
+ tPos = swapRight(tPos, "bottom");
6509
+ case "top-left":
6510
+ tPos = swapLeft(tPos, "top");
6511
+ tPos = swapAbove(tPos);
6512
+ case "top-right":
6513
+ tPos = swapRight(tPos, "top");
6514
+ tPos = swapAbove(tPos);
6515
+ case "bottom-left":
6516
+ tPos = swapLeft(tPos, "bottom");
6517
+ tPos = swapBelow(tPos);
6518
+ case "bottom-right":
6519
+ tPos = swapRight(tPos, "bottom");
6520
+ tPos = swapBelow(tPos);
6521
+ case "top":
6522
+ tPos = swapAbove(tPos);
6523
+ case "bottom":
6524
+ tPos = swapBelow(tPos);
6525
+ }
6526
+ return tPos;
6527
+ }
6528
+ function hasRoomRight(x, spaceNeeded) {
6529
+ let horizOffset = 0;
6530
+ // if (getTextDir() === "ltr") {
6531
+ if (x.type === "click") {
6532
+ // if it's a mouse event, deal with mouse coords
6533
+ horizOffset = x.clientX;
6534
+ // if it's a focus event, the offset is 0
6535
+ }
6536
+ else if (x.type === "focus") {
6537
+ horizOffset = 0;
6538
+ }
6539
+ else {
6540
+ // otherwise an element was passed, calculate how far it is from the edge of the window
6541
+ let el = x; // re-assignment is for clarity
6542
+ while (el) {
6543
+ if (el.tagName == "BODY") {
6544
+ // deal with browser quirks with body/window/document and page scroll
6545
+ var xScroll = el.scrollLeft || document.documentElement.scrollLeft;
6546
+ horizOffset += el.offsetLeft - xScroll + el.clientLeft;
6547
+ }
6548
+ else {
6549
+ // for all other non-BODY elements
6550
+ horizOffset += el.offsetLeft - el.scrollLeft + el.clientLeft;
6551
+ }
6552
+ el = el.offsetParent;
6553
+ }
6554
+ // }
6555
+ }
6556
+ return window.innerWidth - horizOffset >= spaceNeeded;
6557
+ }
6558
+ function checkForActiveElInShadow(element) {
6559
+ while (element && element.shadowRoot) {
6560
+ element = element.shadowRoot.activeElement;
6561
+ }
6562
+ return element;
6563
+ }
6564
+ function checkForFocusableElInShadow(element) {
6565
+ const selectors = [
6566
+ "button",
6567
+ "a",
6568
+ "input",
6569
+ "select",
6570
+ "textarea",
6571
+ "wm-button",
6572
+ "wm-search",
6573
+ "wm-select",
6574
+ "wm-action-menu",
6575
+ "wm-tab-item",
6576
+ "wm-datepicker",
6577
+ ];
6578
+ let focusableEl = element;
6579
+ selectors.forEach((selector) => {
6580
+ if (focusableEl && focusableEl.shadowRoot) {
6581
+ let elInShadow = focusableEl.shadowRoot.querySelector(selector);
6582
+ if (elInShadow) {
6583
+ if (selector.startsWith("wm-")) {
6584
+ focusableEl = checkForFocusableElInShadow(elInShadow);
6585
+ }
6586
+ else {
6587
+ focusableEl = elInShadow;
6588
+ }
6589
+ }
6590
+ }
6591
+ });
6592
+ return focusableEl;
6593
+ }
6594
+ function isFocusable(element) {
6595
+ if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute("tabIndex") !== null)) {
6596
+ return true;
6597
+ }
6598
+ if (element.disabled) {
6599
+ return false;
6600
+ }
6601
+ switch (element.nodeName) {
6602
+ case "A":
6603
+ return !!element.href && element.rel != "ignore";
6604
+ case "INPUT":
6605
+ return element.type != "hidden" && element.type != "file";
6606
+ case "BUTTON":
6607
+ case "SELECT":
6608
+ case "TEXTAREA":
6609
+ case "WM-BUTTON":
6610
+ case "WM-SELECT":
6611
+ case "WM-ACTION-MENU":
6612
+ case "WM-DATEPICKER":
6613
+ case "WM-TIMEPICKER":
6614
+ case "WM-INPUT":
6615
+ case "WM-TAG-INPUT":
6616
+ case "WM-TAB-ITEM":
6617
+ case "WM-SEARCH":
6618
+ return true;
6619
+ default:
6620
+ return false;
6621
+ }
6622
+ }
6623
+ function getFirstFocusableDescendant(element) {
6624
+ if (isFocusable(element)) {
6625
+ return checkForFocusableElInShadow(element);
6626
+ }
6627
+ else if (element.childNodes.length > 0) {
6628
+ element.childNodes.forEach((i) => {
6629
+ const childEl = getFirstFocusableDescendant(i);
6630
+ return childEl && checkForFocusableElInShadow(childEl);
6631
+ });
6632
+ }
6633
+ }
6634
+ function hasValidType(file, types) {
6635
+ const acceptedExtensions = types.split(" ");
6636
+ const parts = file.name && file.name.split(".");
6637
+ const ext = parts && parts.length > 1 && parts[parts.length - 1];
6638
+ return ext
6639
+ ? acceptedExtensions.includes(ext.toLowerCase())
6640
+ : // fallback: if we couldn't obtain an extension,
6641
+ // validate based on MIME type...
6642
+ !!file.type
6643
+ ? getAcceptedMimeTypesList(acceptedExtensions).includes(file.type)
6644
+ : // ...and if that failed too, accept the file
6645
+ // as it's preferable to accept an invalid file
6646
+ // than refusing a valid one (back-end will take care of what slips through)
6647
+ true;
6648
+ }
6649
+ // takes a string (space separated list of extensions), returns an array of strings (corresponding MIME types)
6650
+ function getAcceptedMimeTypesList(acceptedExtensions) {
6651
+ // this is just a list of common file types (regardless of whether they are/can be valid or not)
6652
+ // front end checks are just a convenience to users, independent of security.
6653
+ // it allows users to be notified of an invalid type as soon as they select the file, rather than when it gets uploaded
6654
+ const lookupTable = {
6655
+ aac: ["audio/aac"],
6656
+ abw: ["application/x-abiword"],
6657
+ arc: ["application/x-freearc"],
6658
+ avi: ["video/x-msvideo"],
6659
+ azw: ["application/vnd.amazon.ebook"],
6660
+ bin: ["application/octet-stream"],
6661
+ bmp: ["image/bmp"],
6662
+ bz: ["application/x-bzip"],
6663
+ bz2: ["application/x-bzip2"],
6664
+ csh: ["application/x-csh"],
6665
+ css: ["text/css"],
6666
+ csv: ["text/csv"],
6667
+ doc: ["application/msword"],
6668
+ docx: ["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
6669
+ eot: ["application/vnd.ms-fontobject"],
6670
+ epub: ["application/epub+zip"],
6671
+ gz: ["application/gzip"],
6672
+ gif: ["image/gif"],
6673
+ htm: ["text/html"],
6674
+ html: ["text/html"],
6675
+ ico: ["image/vnd.microsoft.icon"],
6676
+ ics: ["text/calendar"],
6677
+ jar: ["application/java-archive"],
6678
+ jpeg: ["image/jpeg"],
6679
+ jpg: ["image/jpeg"],
6680
+ js: ["text/javascript"],
6681
+ json: ["application/json"],
6682
+ jsonld: ["application/ld+json"],
6683
+ log: ["text/plain"],
6684
+ mid: ["audio/x-midi"],
6685
+ midi: ["audio/x-midi"],
6686
+ mjs: ["text/javascript"],
6687
+ mp3: ["audio/mpeg"],
6688
+ mpeg: ["video/mpeg"],
6689
+ mpkg: ["application/vnd.apple.installer+xml"],
6690
+ odp: ["application/vnd.oasis.opendocument.presentation"],
6691
+ ods: ["application/vnd.oasis.opendocument.spreadsheet"],
6692
+ odt: ["application/vnd.oasis.opendocument.text"],
6693
+ oga: ["audio/ogg"],
6694
+ ogv: ["video/ogg"],
6695
+ ogx: ["application/ogg"],
6696
+ opus: ["audio/opus"],
6697
+ otf: ["font/otf"],
6698
+ png: ["image/png"],
6699
+ pdf: ["application/pdf"],
6700
+ php: ["application/php"],
6701
+ ppt: ["application/vnd.ms-powerpoint"],
6702
+ pptx: ["application/vnd.openxmlformats-officedocument.presentationml.presentation"],
6703
+ rar: ["application/vnd.rar", "application/x-rar", "application/x-rar-compressed"],
6704
+ rtf: ["application/rtf"],
6705
+ sh: ["application/x-sh"],
6706
+ svg: ["image/svg+xml"],
6707
+ swf: ["application/x-shockwave-flash"],
6708
+ tar: ["application/x-tar"],
6709
+ tif: ["image/tiff"],
6710
+ tiff: ["image/tiff"],
6711
+ ts: ["video/mp2t"],
6712
+ ttf: ["font/ttf"],
6713
+ txt: ["text/plain"],
6714
+ vsd: ["application/vnd.visio"],
6715
+ wav: ["audio/wav"],
6716
+ weba: ["audio/webm"],
6717
+ webm: ["video/webm"],
6718
+ webp: ["image/webp"],
6719
+ woff: ["font/woff"],
6720
+ woff2: ["font/woff2"],
6721
+ xhtml: ["application/xhtml+xml"],
6722
+ xls: ["application/vnd.ms-excel"],
6723
+ xlsx: ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
6724
+ xml: ["application/xml", "text/xml"],
6725
+ xul: ["application/vnd.mozilla.xul+xml"],
6726
+ zip: ["application/zip", "application/x-zip-compressed", "multipart/x-zip"],
6727
+ "3gp": ["video/3gpp", "audio/3gpp"],
6728
+ "3g2": ["video/3gpp2", "audio/3gpp2"],
6729
+ "7z": ["application/x-7z-compressed"],
6730
+ };
6731
+ return acceptedExtensions.reduce((acc, ext) => acc.concat(lookupTable[ext]), []);
6732
+ }
6733
+ function snakeCaseToCamelCase(str) {
6734
+ const snakeCaseRegexp = /^([a-z0-9]*)(_[a-z0-9]*)*$/g;
6735
+ if (snakeCaseRegexp.test(str)) {
6736
+ let camelCase = "";
6737
+ let arr = str.split("_");
6738
+ arr.forEach((word, idx) => {
6739
+ camelCase += idx === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1);
6740
+ });
6741
+ return camelCase;
6742
+ }
6743
+ else {
6744
+ return str;
6745
+ }
6746
+ }
6747
+ function getNewIndexToFocus(currentIndex, direction, listLength) {
6748
+ let newIndex = currentIndex;
6749
+ if (direction === "ArrowDown") {
6750
+ newIndex = (currentIndex + 1) % listLength;
6751
+ }
6752
+ if (direction === "ArrowUp") {
6753
+ newIndex = currentIndex === 0 ? listLength - 1 : currentIndex - 1;
6754
+ }
6755
+ return newIndex;
6756
+ }
6757
+ function isRelatedTarget(ev, id) {
6758
+ // used for onBlur events to check the element that has been clicked
6759
+ const ids = id.split(" ");
6760
+ return ev.relatedTarget && ids.includes(ev.relatedTarget.id);
6761
+ }
6762
+ /*
6763
+ * this is going to be needed to solve the extra tabbing on navigator
6764
+ * and for programmatic focus of tabs
6765
+ * Here's a draft, not bug proof, see:
6766
+ * https://stackoverflow.com/a/10730308/3741713
6767
+
6768
+ function getKeyboardFocusableElements(element = document) {
6769
+ const els = Array.from(element.querySelectorAll('a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"]), wm-search, wm-timepicker, wm-tab-list, wm-tab-item, wm-button, wm-action-menu'));
6770
+ return els.filter((el: Element) => !el.hasAttribute("disabled")) as HTMLElement[];
6771
+ }
6772
+
6773
+ export function getPreviousKeyboardFocusableElement(element: HTMLElement) {
6774
+ const els = getKeyboardFocusableElements();
6775
+ const current = els.indexOf(element);
6776
+ return els[current - 1] as HTMLElement;
6777
+ }
6778
+
6779
+ export function getNextKeyboardFocusableElement(element: HTMLElement) {
6780
+ const els = getKeyboardFocusableElements();
6781
+ const current = els.indexOf(element);
6782
+ return els[current + 1] as HTMLElement;
6783
+ }
6142
6784
  */
6143
6785
 
6144
6786
  export { adjustTooltipPosition as a, getPosition as b, checkForActiveElInShadow as c, debounce as d, isRelatedTarget as e, findParentWithScrollbar as f, generateId as g, checkForFocusableElInShadow as h, intl as i, getFirstFocusableDescendant as j, getNewIndexToFocus as k, shouldOpenUp as l, shouldOpenDown as m, shouldShiftRight as n, shouldShiftLeft as o, hasValidType as p, getTextDir as q, hasRoomRight as r, snakeCaseToCamelCase as s };