@eui/components 14.0.28 → 14.0.29

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.
@@ -169,6 +169,9 @@
169
169
  <li>
170
170
  <a href="#FromEntriesWithReadOnly" title="packages/eui/packages/components/layout/eui-breadcrumb/item/breadcrumb-item.model.ts" ><b>FromEntriesWithReadOnly</b>&nbsp;&nbsp;&nbsp;(packages/.../breadcrumb-item.model.ts)</a>
171
171
  </li>
172
+ <li>
173
+ <a href="#MimeType" title="packages/eui/packages/components/eui-file-upload/utils/mime-types.ts" ><b>MimeType</b>&nbsp;&nbsp;&nbsp;(packages/.../mime-types.ts)</a>
174
+ </li>
172
175
  <li>
173
176
  <a href="#QuillFormat" title="packages/eui/packages/components/externals/quill/quill-editor.interfaces.ts" ><b>QuillFormat</b>&nbsp;&nbsp;&nbsp;(packages/.../quill-editor.interfaces.ts)</a>
174
177
  </li>
@@ -893,6 +896,24 @@ See <a href="https://apexcharts.com/docs/options/series/">https://apexcharts.com
893
896
  </tr>
894
897
  </tbody>
895
898
  </table>
899
+ </section> <h3>packages/eui/packages/components/eui-file-upload/utils/mime-types.ts</h3>
900
+ <section>
901
+ <table class="table table-sm table-bordered">
902
+ <tbody>
903
+ <tr>
904
+ <td class="col-md-4">
905
+ <a name="MimeType"></a>
906
+ <span class="name "><b>MimeType</b><a href="#MimeType"><span class="icon ion-ios-link"></span></a></span>
907
+ </td>
908
+ </tr>
909
+ <tr>
910
+ <td class="col-md-4">
911
+ <code> <code>&quot;image/jpeg&quot; | &quot;image/png&quot; | &quot;image/gif&quot; | &quot;image/webp&quot; | &quot;image/flif&quot; | &quot;image/x-xcf&quot; | &quot;image/x-canon-cr2&quot; | &quot;image/x-canon-cr3&quot; | &quot;image/tiff&quot; | &quot;image/bmp&quot; | &quot;image/icns&quot; | &quot;image/vnd.ms-photo&quot; | &quot;image/vnd.adobe.photoshop&quot; | &quot;application/x-indesign&quot; | &quot;application/epub+zip&quot; | &quot;application/x-xpinstall&quot; | &quot;application/vnd.oasis.opendocument.text&quot; | &quot;application/vnd.oasis.opendocument.spreadsheet&quot; | &quot;application/vnd.oasis.opendocument.presentation&quot; | &quot;application/vnd.openxmlformats-officedocument.wordprocessingml.document&quot; | &quot;application/vnd.openxmlformats-officedocument.presentationml.presentation&quot; | &quot;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet&quot; | &quot;application/zip&quot; | &quot;application/json&quot; | &quot;application/x-tar&quot; | &quot;application/x-rar-compressed&quot; | &quot;application/gzip&quot; | &quot;application/x-bzip2&quot; | &quot;application/x-7z-compressed&quot; | &quot;application/x-apple-diskimage&quot; | &quot;video/mp4&quot; | &quot;audio/midi&quot; | &quot;video/x-matroska&quot; | &quot;video/webm&quot; | &quot;video/quicktime&quot; | &quot;video/vnd.avi&quot; | &quot;audio/vnd.wave&quot; | &quot;audio/qcelp&quot; | &quot;audio/x-ms-asf&quot; | &quot;video/x-ms-asf&quot; | &quot;application/vnd.ms-asf&quot; | &quot;video/mpeg&quot; | &quot;video/3gpp&quot; | &quot;audio/mpeg&quot; | &quot;audio/mp4&quot; | &quot;audio/opus&quot; | &quot;video/ogg&quot; | &quot;audio/ogg&quot; | &quot;application/ogg&quot; | &quot;audio/x-flac&quot; | &quot;audio/ape&quot; | &quot;audio/wavpack&quot; | &quot;audio/amr&quot; | &quot;application/pdf&quot; | &quot;application/x-elf&quot; | &quot;application/x-msdownload&quot; | &quot;application/x-shockwave-flash&quot; | &quot;application/rtf&quot; | &quot;application/wasm&quot; | &quot;font/woff&quot; | &quot;font/woff2&quot; | &quot;application/vnd.ms-fontobject&quot; | &quot;font/ttf&quot; | &quot;font/otf&quot; | &quot;image/x-icon&quot; | &quot;video/x-flv&quot; | &quot;application/postscript&quot; | &quot;application/eps&quot; | &quot;application/x-xz&quot; | &quot;application/x-sqlite3&quot; | &quot;application/x-nintendo-nes-rom&quot; | &quot;application/x-google-chrome-extension&quot; | &quot;application/vnd.ms-cab-compressed&quot; | &quot;application/x-deb&quot; | &quot;application/x-unix-archive&quot; | &quot;application/x-rpm&quot; | &quot;application/x-compress&quot; | &quot;application/x-lzip&quot; | &quot;application/x-cfb&quot; | &quot;application/x-mie&quot; | &quot;application/x-apache-arrow&quot; | &quot;application/mxf&quot; | &quot;video/mp2t&quot; | &quot;application/x-blender&quot; | &quot;image/bpg&quot; | &quot;image/j2c&quot; | &quot;image/jp2&quot; | &quot;image/jpx&quot; | &quot;image/jpm&quot; | &quot;image/mj2&quot; | &quot;audio/aiff&quot; | &quot;application/xml&quot; | &quot;application/x-mobipocket-ebook&quot; | &quot;image/heif&quot; | &quot;image/heif-sequence&quot; | &quot;image/heic&quot; | &quot;image/heic-sequence&quot; | &quot;image/ktx&quot; | &quot;application/dicom&quot; | &quot;audio/x-musepack&quot; | &quot;text/calendar&quot; | &quot;text/vcard&quot; | &quot;model/gltf-binary&quot; | &quot;application/vnd.tcpdump.pcap&quot; | &quot;audio/x-voc&quot; | &quot;audio/vnd.dolby.dd-raw&quot; | &quot;audio/x-m4a&quot; | &quot;image/apng&quot; | &quot;image/x-olympus-orf&quot; | &quot;image/x-sony-arw&quot; | &quot;image/x-adobe-dng&quot; | &quot;image/x-nikon-nef&quot; | &quot;image/x-panasonic-rw2&quot; | &quot;image/x-fujifilm-raf&quot; | &quot;video/x-m4v&quot; | &quot;video/3gpp2&quot; | &quot;application/x-esri-shape&quot; | &quot;audio/aac&quot; | &quot;audio/x-it&quot; | &quot;audio/x-s3m&quot; | &quot;audio/x-xm&quot; | &quot;video/MP1S&quot; | &quot;video/MP2P&quot; | &quot;application/vnd.sketchup.skp&quot; | &quot;image/avif&quot; | &quot;application/x-lzh-compressed&quot; | &quot;application/pgp-encrypted&quot; | &quot;application/x-asar&quot; | &quot;model/stl&quot; | &quot;application/vnd.ms-htmlhelp&quot; | &quot;model/3mf&quot; | &quot;image/jxl&quot; | &quot;application/zstd&quot; | &quot;image/jls&quot; | &quot;application/vnd.ms-outlook&quot; | &quot;image/vnd.dwg&quot; | &quot;application/x-parquet&quot; | &quot;application/java-vm&quot; | &quot;application/x-arj&quot; | &quot;application/x-cpio&quot; | &quot;application/x-ace-compressed&quot; | &quot;application/avro&quot; | &quot;application/vnd.iccprofile&quot;</code>
912
+ </code>
913
+ </td>
914
+ </tr>
915
+ </tbody>
916
+ </table>
896
917
  </section> <h3>packages/eui/packages/components/externals/quill/quill-editor.interfaces.ts</h3>
897
918
  <section>
898
919
  <table class="table table-sm table-bordered">
@@ -83,10 +83,10 @@
83
83
  <a href="#COMPONENTS" title="packages/eui/packages/components/layout/eui-sidebar-menu/eui-sidebar-menu.module.ts" ><b>COMPONENTS</b>&nbsp;&nbsp;&nbsp;(packages/.../eui-sidebar-menu.module.ts)</a>
84
84
  </li>
85
85
  <li>
86
- <a href="#COMPONENTS" title="packages/eui/packages/components/layout/eui-user-profile/user-profile.module.ts" ><b>COMPONENTS</b>&nbsp;&nbsp;&nbsp;(packages/.../user-profile.module.ts)</a>
86
+ <a href="#COMPONENTS" title="packages/eui/packages/components/layout/eui-toolbar/toolbar.module.ts" ><b>COMPONENTS</b>&nbsp;&nbsp;&nbsp;(packages/.../toolbar.module.ts)</a>
87
87
  </li>
88
88
  <li>
89
- <a href="#COMPONENTS" title="packages/eui/packages/components/layout/eui-toolbar/toolbar.module.ts" ><b>COMPONENTS</b>&nbsp;&nbsp;&nbsp;(packages/.../toolbar.module.ts)</a>
89
+ <a href="#COMPONENTS" title="packages/eui/packages/components/layout/eui-user-profile/user-profile.module.ts" ><b>COMPONENTS</b>&nbsp;&nbsp;&nbsp;(packages/.../user-profile.module.ts)</a>
90
90
  </li>
91
91
  <li>
92
92
  <a href="#COMPONENTS" title="packages/eui/packages/components/layout/eui-app/eui-app-sidebar/sidebar.module.ts" ><b>COMPONENTS</b>&nbsp;&nbsp;&nbsp;(packages/.../sidebar.module.ts)</a>
@@ -157,6 +157,9 @@
157
157
  <li>
158
158
  <a href="#getFormat" title="packages/eui/packages/components/legacy/ux-editor/ux-editor-view.component.ts" ><b>getFormat</b>&nbsp;&nbsp;&nbsp;(packages/.../ux-editor-view.component.ts)</a>
159
159
  </li>
160
+ <li>
161
+ <a href="#getMimeType" title="packages/eui/packages/components/eui-file-upload/utils/mime-types.ts" ><b>getMimeType</b>&nbsp;&nbsp;&nbsp;(packages/.../mime-types.ts)</a>
162
+ </li>
160
163
  <li>
161
164
  <a href="#getViewElement" title="packages/eui/packages/components/externals/helpers/get-view-element.helper.ts" ><b>getViewElement</b>&nbsp;&nbsp;&nbsp;(packages/.../get-view-element.helper.ts)</a>
162
165
  </li>
@@ -253,6 +256,9 @@
253
256
  <li>
254
257
  <a href="#TRANSLATED_STRING" title="packages/eui/packages/components/testing/mocks/translate.module.mock.ts" ><b>TRANSLATED_STRING</b>&nbsp;&nbsp;&nbsp;(packages/.../translate.module.mock.ts)</a>
255
258
  </li>
259
+ <li>
260
+ <a href="#uint8ArrayToHexString" title="packages/eui/packages/components/eui-file-upload/utils/mime-types.ts" ><b>uint8ArrayToHexString</b>&nbsp;&nbsp;&nbsp;(packages/.../mime-types.ts)</a>
261
+ </li>
256
262
  <li>
257
263
  <a href="#urlValidator" title="packages/eui/packages/components/externals/eui-editor/image-url-dialog/image-url-dialog.component.ts" ><b>urlValidator</b>&nbsp;&nbsp;&nbsp;(packages/.../image-url-dialog.component.ts)</a>
258
264
  </li>
@@ -280,6 +286,9 @@
280
286
  <li>
281
287
  <a href="#UX_SWITCH_VALUE_ACCESSOR" title="packages/eui/packages/components/legacy/ux-switch/ux-switch.component.ts" ><b>UX_SWITCH_VALUE_ACCESSOR</b>&nbsp;&nbsp;&nbsp;(packages/.../ux-switch.component.ts)</a>
282
288
  </li>
289
+ <li>
290
+ <a href="#validateFileMimeType" title="packages/eui/packages/components/eui-file-upload/utils/eui-file-upload.validators.ts" ><b>validateFileMimeType</b>&nbsp;&nbsp;&nbsp;(packages/.../eui-file-upload.validators.ts)</a>
291
+ </li>
283
292
  <li>
284
293
  <a href="#YEAR_FORMAT" title="packages/eui/packages/components/eui-datepicker/eui-datepicker.component.ts" ><b>YEAR_FORMAT</b>&nbsp;&nbsp;&nbsp;(packages/.../eui-datepicker.component.ts)</a>
285
294
  </li>
@@ -803,7 +812,7 @@
803
812
  </tbody>
804
813
  </table>
805
814
  </section>
806
- <h3>packages/eui/packages/components/layout/eui-user-profile/user-profile.module.ts</h3>
815
+ <h3>packages/eui/packages/components/layout/eui-toolbar/toolbar.module.ts</h3>
807
816
  <section>
808
817
  <h3></h3> <table class="table table-sm table-bordered">
809
818
  <tbody>
@@ -825,9 +834,16 @@
825
834
  <tr>
826
835
  <td class="col-md-4">
827
836
  <i>Default value : </i><code>[
828
- EuiUserProfileComponent,
829
- EuiUserProfileMenuComponent,
830
- EuiUserProfileMenuItemComponent,
837
+ EuiToolbarComponent,
838
+ EuiToolbarItemComponent,
839
+ EuiToolbarItemsComponent,
840
+ EuiToolbarItemUserProfileComponent,
841
+ EuiToolbarItemSearchComponent,
842
+ EuiToolbarItemNotificationsComponent,
843
+ EuiToolbarLogoComponent,
844
+ EuiToolbarAppComponent,
845
+ EuiToolbarEnvironmentComponent,
846
+ EuiToolbarMenuComponent,
831
847
  ]</code>
832
848
  </td>
833
849
  </tr>
@@ -836,7 +852,7 @@
836
852
  </tbody>
837
853
  </table>
838
854
  </section>
839
- <h3>packages/eui/packages/components/layout/eui-toolbar/toolbar.module.ts</h3>
855
+ <h3>packages/eui/packages/components/layout/eui-user-profile/user-profile.module.ts</h3>
840
856
  <section>
841
857
  <h3></h3> <table class="table table-sm table-bordered">
842
858
  <tbody>
@@ -858,16 +874,9 @@
858
874
  <tr>
859
875
  <td class="col-md-4">
860
876
  <i>Default value : </i><code>[
861
- EuiToolbarComponent,
862
- EuiToolbarItemComponent,
863
- EuiToolbarItemsComponent,
864
- EuiToolbarItemUserProfileComponent,
865
- EuiToolbarItemSearchComponent,
866
- EuiToolbarItemNotificationsComponent,
867
- EuiToolbarLogoComponent,
868
- EuiToolbarAppComponent,
869
- EuiToolbarEnvironmentComponent,
870
- EuiToolbarMenuComponent,
877
+ EuiUserProfileComponent,
878
+ EuiUserProfileMenuComponent,
879
+ EuiUserProfileMenuItemComponent,
871
880
  ]</code>
872
881
  </td>
873
882
  </tr>
@@ -1532,6 +1541,159 @@
1532
1541
  </tr>
1533
1542
 
1534
1543
 
1544
+ </tbody>
1545
+ </table>
1546
+ </section>
1547
+ <h3>packages/eui/packages/components/eui-file-upload/utils/mime-types.ts</h3>
1548
+ <section>
1549
+ <h3></h3> <table class="table table-sm table-bordered">
1550
+ <tbody>
1551
+ <tr>
1552
+ <td class="col-md-4">
1553
+ <a name="getMimeType"></a>
1554
+ <span class="name">
1555
+ <span ><b>getMimeType</b></span>
1556
+ <a href="#getMimeType"><span class="icon ion-ios-link"></span></a>
1557
+ </span>
1558
+ </td>
1559
+ </tr>
1560
+ <tr>
1561
+ <td class="col-md-4">
1562
+ <i>Default value : </i><code>(header: Uint8Array): MimeType &#x3D;&gt; {
1563
+ // convert Uint8Array to hex string
1564
+ const hex &#x3D; uint8ArrayToHexString(header);
1565
+
1566
+ // map hex string to mime type
1567
+ if (hex.startsWith(&#x27;89504e47&#x27;)) {return &#x27;image/png&#x27;;}
1568
+ if (hex.startsWith(&#x27;464c4946&#x27;)) {return &#x27;image/flif&#x27;;}
1569
+ if (hex.startsWith(&#x27;67696d7020786366&#x27;)) {return &#x27;image/x-xcf&#x27;;}
1570
+ if (hex.startsWith(&#x27;49492a00&#x27;)) {return &#x27;image/x-canon-cr2&#x27;;}
1571
+ if (hex.startsWith(&#x27;49492a00&#x27;)) {return &#x27;image/x-canon-cr3&#x27;;}
1572
+ if (hex.startsWith(&#x27;49492a00&#x27;)) {return &#x27;image/tiff&#x27;;}
1573
+ if (hex.startsWith(&#x27;424d&#x27;)) {return &#x27;image/bmp&#x27;;}
1574
+ if (hex.startsWith(&#x27;69636e73&#x27;)) {return &#x27;image/icns&#x27;;}
1575
+ if (hex.startsWith(&#x27;49491a0000004845415050&#x27;)) {return &#x27;image/vnd.ms-photo&#x27;;}
1576
+ if (hex.startsWith(&#x27;38425053&#x27;)) {return &#x27;image/vnd.adobe.photoshop&#x27;;}
1577
+ if (hex.startsWith(&#x27;06054b50&#x27;)) {return &#x27;application/x-indesign&#x27;;}
1578
+ if (hex.startsWith(&#x27;504b0304&#x27;)) {return &#x27;application/epub+zip&#x27;;}
1579
+ if (hex.startsWith(&#x27;504b0304&#x27;)) {return &#x27;application/x-xpinstall&#x27;;}
1580
+ if (hex.startsWith(&#x27;504b0304&#x27;)) {return &#x27;application/vnd.oasis.opendocument.text&#x27;;}
1581
+ if (hex.startsWith(&#x27;504b0304&#x27;)) {return &#x27;application/vnd.oasis.opendocument.spreadsheet&#x27;;}
1582
+ if (hex.startsWith(&#x27;504b0304&#x27;)) {return &#x27;application/vnd.oasis.opendocument.presentation&#x27;;}
1583
+ if (hex.startsWith(&#x27;504b0304&#x27;)) {return &#x27;application/vnd.openxmlformats-officedocument.wordprocessingml.document&#x27;;}
1584
+ if (hex.startsWith(&#x27;504b0304&#x27;)) {return &#x27;application/vnd.openxmlformats-officedocument.presentationml.presentation&#x27;;}
1585
+ if (hex.startsWith(&#x27;504b0304&#x27;)) {return &#x27;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet&#x27;;}
1586
+ if (hex.startsWith(&#x27;504b0304&#x27;)) {return &#x27;application/zip&#x27;;}
1587
+ if (hex.startsWith(&#x27;7b2274797065223a226a736f6e227d&#x27;)) {return &#x27;application/json&#x27;;}
1588
+ if (hex.startsWith(&#x27;7573746172&#x27;)) {return &#x27;application/x-tar&#x27;;}
1589
+ if (hex.startsWith(&#x27;526172211a0700&#x27;)) {return &#x27;application/x-rar-compressed&#x27;;}
1590
+ if (hex.startsWith(&#x27;1f8b08&#x27;)) {return &#x27;application/gzip&#x27;;}
1591
+ if (hex.startsWith(&#x27;425a68&#x27;)) {return &#x27;application/x-bzip2&#x27;;}
1592
+ if (hex.startsWith(&#x27;377abcaf271c&#x27;)) {return &#x27;application/x-7z-compressed&#x27;;}
1593
+ if (hex.startsWith(&#x27;78da&#x27;)) {return &#x27;application/x-apple-diskimage&#x27;;}
1594
+ if (hex.startsWith(&#x27;00000020667479706d70&#x27;)) {return &#x27;video/mp4&#x27;;}
1595
+ if (hex.startsWith(&#x27;4d546864&#x27;)) {return &#x27;audio/midi&#x27;;}
1596
+ if (hex.startsWith(&#x27;1a45dfa393428288&#x27;)) {return &#x27;video/x-matroska&#x27;;}
1597
+ if (hex.startsWith(&#x27;1a45dfa3&#x27;)) {return &#x27;video/webm&#x27;;}
1598
+ if (hex.startsWith(&#x27;00000014667479707174&#x27;)) {return &#x27;video/quicktime&#x27;;}
1599
+ if (hex.startsWith(&#x27;52494646&#x27;)) {return &#x27;video/vnd.avi&#x27;;}
1600
+ if (hex.startsWith(&#x27;52494646&#x27;)) {return &#x27;audio/vnd.wave&#x27;;}
1601
+ if (hex.startsWith(&#x27;0a010301&#x27;)) {return &#x27;audio/qcelp&#x27;;}
1602
+ if (hex.startsWith(&#x27;3026b2758e66cf11&#x27;)) {return &#x27;audio/x-ms-asf&#x27;;}
1603
+ if (hex.startsWith(&#x27;3026b2758e66cf11&#x27;)) {return &#x27;video/x-ms-asf&#x27;;}
1604
+ if (hex.startsWith(&#x27;3026b2758e66cf11&#x27;)) {return &#x27;application/vnd.ms-asf&#x27;;}
1605
+ if (hex.startsWith(&#x27;000001ba&#x27;)) {return &#x27;video/mpeg&#x27;;}
1606
+ if (hex.startsWith(&#x27;00000020667479703367&#x27;)) {return &#x27;video/3gpp&#x27;;}
1607
+ if (hex.startsWith(&#x27;494433&#x27;)) {return &#x27;audio/mpeg&#x27;;}
1608
+ if (hex.startsWith(&#x27;00000020667479704d344120&#x27;)) {return &#x27;audio/mp4&#x27;;}
1609
+ if (hex.startsWith(&#x27;4f707573&#x27;)) {return &#x27;audio/opus&#x27;;}
1610
+ if (hex.startsWith(&#x27;4f676753&#x27;)) {return &#x27;video/ogg&#x27;;}
1611
+ if (hex.startsWith(&#x27;4f676753&#x27;)) {return &#x27;audio/ogg&#x27;;}
1612
+ if (hex.startsWith(&#x27;4f676753&#x27;)) {return &#x27;application/ogg&#x27;;}
1613
+ if (hex.startsWith(&#x27;664c6143&#x27;)) {return &#x27;audio/x-flac&#x27;;}
1614
+ if (hex.startsWith(&#x27;4d414320&#x27;)) {return &#x27;audio/ape&#x27;;}
1615
+ if (hex.startsWith(&#x27;7776706b&#x27;)) {return &#x27;audio/wavpack&#x27;;}
1616
+ if (hex.startsWith(&#x27;2321414d520a&#x27;)) {return &#x27;audio/amr&#x27;;}
1617
+ if (hex.startsWith(&#x27;255044462d312e&#x27;)) {return &#x27;application/pdf&#x27;;}
1618
+ if (hex.startsWith(&#x27;7f454c46&#x27;)) {return &#x27;application/x-elf&#x27;;}
1619
+ if (hex.startsWith(&#x27;4d5a&#x27;)) {return &#x27;application/x-msdownload&#x27;;}
1620
+ if (hex.startsWith(&#x27;435753&#x27;)) {return &#x27;application/x-shockwave-flash&#x27;;}
1621
+ if (hex.startsWith(&#x27;7b5c72746631&#x27;)) {return &#x27;application/rtf&#x27;;}
1622
+ if (hex.startsWith(&#x27;0061736d&#x27;)) {return &#x27;application/wasm&#x27;;}
1623
+ if (hex.startsWith(&#x27;774f4646&#x27;)) {return &#x27;font/woff&#x27;;}
1624
+ if (hex.startsWith(&#x27;774f4632&#x27;)) {return &#x27;font/woff2&#x27;;}
1625
+ if (hex.startsWith(&#x27;000100000008&#x27;)) {return &#x27;application/vnd.ms-fontobject&#x27;;}
1626
+ if (hex.startsWith(&#x27;0001000000&#x27;)) {return &#x27;font/ttf&#x27;;}
1627
+ if (hex.startsWith(&#x27;4f54544f00&#x27;)) {return &#x27;font/otf&#x27;;}
1628
+ if (hex.startsWith(&#x27;000001000100&#x27;)) {return &#x27;image/x-icon&#x27;;}
1629
+ if (hex.startsWith(&#x27;464c560105&#x27;)) {return &#x27;video/x-flv&#x27;;}
1630
+ if (hex.startsWith(&#x27;25215053&#x27;)) {return &#x27;application/postscript&#x27;;}
1631
+ if (hex.startsWith(&#x27;25215053&#x27;)) {return &#x27;application/eps&#x27;;}
1632
+ if (hex.startsWith(&#x27;fd377a585a00&#x27;)) {return &#x27;application/x-xz&#x27;;}
1633
+ if (hex.startsWith(&#x27;53514c69746520666f726d6174203300&#x27;)) {return &#x27;application/x-sqlite3&#x27;;}
1634
+ if (hex.startsWith(&#x27;4e45531a00000001&#x27;)) {return &#x27;application/x-nintendo-nes-rom&#x27;;}
1635
+ if (hex.startsWith(&#x27;504b0304&#x27;)) {return &#x27;application/x-google-chrome-extension&#x27;;}
1636
+ if (hex.startsWith(&#x27;4d534346&#x27;)) {return &#x27;application/vnd.ms-cab-compressed&#x27;;}
1637
+ if (hex.startsWith(&#x27;213c617263683e0a&#x27;)) {return &#x27;application/x-deb&#x27;;}
1638
+ if (hex.startsWith(&#x27;1f8b08&#x27;)) {return &#x27;application/x-unix-archive&#x27;;}
1639
+ if (hex.startsWith(&#x27;edabeedb&#x27;)) {return &#x27;application/x-rpm&#x27;;}
1640
+ if (hex.startsWith(&#x27;1f9d90&#x27;)) {return &#x27;application/x-compress&#x27;;}
1641
+ if (hex.startsWith(&#x27;4c5a4950&#x27;)) {return &#x27;application/x-lzip&#x27;;}
1642
+ if (hex.startsWith(&#x27;d0cf11e0a1b11ae1&#x27;)) {return &#x27;application/x-cfb&#x27;;}
1643
+ if (hex.startsWith(&#x27;4d49455f&#x27;)) {return &#x27;application/x-mie&#x27;;}
1644
+ if (hex.startsWith(&#x27;4141523146&#x27;)) {return &#x27;application/x-apache-arrow&#x27;;}
1645
+ if (hex.startsWith(&#x27;060e2b3402050101&#x27;)) {return &#x27;application/mxf&#x27;;}
1646
+ if (hex.startsWith(&#x27;47&#x27;)) {return &#x27;video/mp2t&#x27;;}
1647
+ if (hex.startsWith(&#x27;4250e4&#x27;)) {return &#x27;application/x-blender&#x27;;}
1648
+ if (hex.startsWith(&#x27;425047fb&#x27;)) {return &#x27;image/bpg&#x27;;}
1649
+ if (hex.startsWith(&#x27;ff4fff51&#x27;)) {return &#x27;image/j2c&#x27;;}
1650
+ if (hex.startsWith(&#x27;0000000c6a5020200d0a&#x27;)) {return &#x27;image/jp2&#x27;;}
1651
+ if (hex.startsWith(&#x27;6a5020200d0a870a&#x27;)) {return &#x27;image/jpx&#x27;;}
1652
+ if (hex.startsWith(&#x27;6a5020200d0a870a&#x27;)) {return &#x27;image/jpm&#x27;;}
1653
+ if (hex.startsWith(&#x27;0000000c6a5020200d0a&#x27;)) {return &#x27;image/mj2&#x27;;}
1654
+ if (hex.startsWith(&#x27;464f524d&#x27;)) {return &#x27;audio/aiff&#x27;;}
1655
+ if (hex.startsWith(&#x27;3c3f786d6c20&#x27;)) {return &#x27;application/xml&#x27;;}
1656
+ if (hex.startsWith(&#x27;424f4f4b4d4f4249&#x27;)) {return &#x27;application/x-mobipocket-ebook&#x27;;}
1657
+ if (hex.startsWith(&#x27;667479706174&#x27;)) {return &#x27;image/heif&#x27;;}
1658
+ if (hex.startsWith(&#x27;667479706174&#x27;)) {return &#x27;image/heif-sequence&#x27;;}
1659
+ if (hex.startsWith(&#x27;667479706174&#x27;)) {return &#x27;image/heic&#x27;;}
1660
+ if (hex.startsWith(&#x27;667479706174&#x27;)) {return &#x27;image/heic-sequence&#x27;;}
1661
+ if (hex.startsWith(&#x27;4b545820&#x27;)) {return &#x27;image/ktx&#x27;;}
1662
+ if (hex.startsWith(&#x27;4449434d&#x27;)) {return &#x27;application/dicom&#x27;;}
1663
+ if (hex.startsWith(&#x27;4d50434b&#x27;)) {return &#x27;audio/x-musepack&#x27;;}
1664
+ if (hex.startsWith(&#x27;56656e64&#x27;)) {return &#x27;text/calendar&#x27;;}
1665
+ if (hex.startsWith(&#x27;424547494e3a5643415244&#x27;)) {return &#x27;text/vcard&#x27;;}
1666
+ if (hex.startsWith(&#x27;676c5458&#x27;)) {return &#x27;model/gltf-binary&#x27;;}
1667
+ if (hex.startsWith(&#x27;d4c3b2a1&#x27;)) {return &#x27;application/vnd.tcpdump.pcap&#x27;;}
1668
+ if (hex.startsWith(&#x27;464f524d&#x27;)) {return &#x27;audio/x-voc&#x27;;}
1669
+ if (hex.startsWith(&#x27;64646f6c&#x27;)) {return &#x27;audio/vnd.dolby.dd-raw&#x27;;}
1670
+
1671
+ return null;
1672
+ }</code>
1673
+ </td>
1674
+ </tr>
1675
+
1676
+
1677
+ </tbody>
1678
+ </table>
1679
+ <table class="table table-sm table-bordered">
1680
+ <tbody>
1681
+ <tr>
1682
+ <td class="col-md-4">
1683
+ <a name="uint8ArrayToHexString"></a>
1684
+ <span class="name">
1685
+ <span ><b>uint8ArrayToHexString</b></span>
1686
+ <a href="#uint8ArrayToHexString"><span class="icon ion-ios-link"></span></a>
1687
+ </span>
1688
+ </td>
1689
+ </tr>
1690
+ <tr>
1691
+ <td class="col-md-4">
1692
+ <i>Default value : </i><code>(uint8Array): string &#x3D;&gt; Array.prototype.map.call(uint8Array, (byte) &#x3D;&gt; (&#x27;00&#x27; + byte.toString(16)).slice(-2)).join(&#x27;&#x27;)</code>
1693
+ </td>
1694
+ </tr>
1695
+
1696
+
1535
1697
  </tbody>
1536
1698
  </table>
1537
1699
  </section>
@@ -1860,8 +2022,9 @@
1860
2022
  </tr>
1861
2023
  <tr>
1862
2024
  <td class="col-md-4">
1863
- <i>Default value : </i><code>(maxFiles: number): ValidatorFn &#x3D;&gt; (control: AbstractControl): { &#x27;maxFiles&#x27;: number } | null &#x3D;&gt;
1864
- control.value &amp;&amp; control.value.length &gt; maxFiles ? { maxFiles } : null</code>
2025
+ <i>Default value : </i><code>(maxFiles: number): ValidatorFn &#x3D;&gt;
2026
+ (control: AbstractControl): { maxFiles: number } | null &#x3D;&gt;
2027
+ control.value &amp;&amp; control.value.length &gt; maxFiles ? { maxFiles } : null</code>
1865
2028
  </td>
1866
2029
  </tr>
1867
2030
 
@@ -1881,17 +2044,17 @@
1881
2044
  </tr>
1882
2045
  <tr>
1883
2046
  <td class="col-md-4">
1884
- <i>Default value : </i><code>(maxSize: number): ValidatorFn &#x3D;&gt; (control: AbstractControl): { &#x27;maxSize&#x27;: number } | null &#x3D;&gt; {
1885
-
1886
- let totalSize &#x3D; 0;
1887
- if (control.value) {
1888
- control.value.forEach((file: File) &#x3D;&gt; {
1889
- totalSize +&#x3D; file.size;
1890
- });
1891
- }
2047
+ <i>Default value : </i><code>(maxSize: number): ValidatorFn &#x3D;&gt;
2048
+ (control: AbstractControl): { maxSize: number } | null &#x3D;&gt; {
2049
+ let totalSize &#x3D; 0;
2050
+ if (control.value) {
2051
+ control.value.forEach((file: File) &#x3D;&gt; {
2052
+ totalSize +&#x3D; file.size;
2053
+ });
2054
+ }
1892
2055
 
1893
- return control.value &amp;&amp; totalSize &gt; (maxSize * 1.024) ? { maxSize } : null;
1894
- }</code>
2056
+ return control.value &amp;&amp; totalSize &gt; maxSize * 1.024 ? { maxSize } : null;
2057
+ }</code>
1895
2058
  </td>
1896
2059
  </tr>
1897
2060
 
@@ -1911,18 +2074,58 @@
1911
2074
  </tr>
1912
2075
  <tr>
1913
2076
  <td class="col-md-4">
1914
- <i>Default value : </i><code>(mimeTypes: string[]): ValidatorFn &#x3D;&gt; (control: AbstractControl): { &#x27;invalidFileExtension&#x27;: string[] } | null &#x3D;&gt; {
1915
-
1916
- const invalidFileExtension: string[] &#x3D; [];
1917
- if (control.value) {
1918
- control.value.forEach((file: File) &#x3D;&gt; {
1919
- if (mimeTypes.indexOf(file.type) &#x3D;&#x3D;&#x3D; -1) {
1920
- invalidFileExtension.push(file.name);
2077
+ <i>Default value : </i><code>(mimeTypes: MimeType[]): AsyncValidatorFn &#x3D;&gt;
2078
+ (control: AbstractControl): Promise&lt;ValidationErrors | null&gt; | Observable&lt;ValidationErrors | null&gt; &#x3D;&gt; {
2079
+ if (control.value) {
2080
+ const fileErrorObservables: Observable&lt;ValidationErrors | null&gt;[] &#x3D; [];
2081
+ // iterate over files
2082
+ control.value.forEach((file: File) &#x3D;&gt; {
2083
+ // push observable which will check the mime validation type
2084
+ fileErrorObservables.push(validateFileMimeType(file, mimeTypes));
2085
+ });
2086
+ return zip(...fileErrorObservables).pipe(
2087
+ map((fileErrors) &#x3D;&gt; {
2088
+ const errors &#x3D; fileErrors.filter((fileError) &#x3D;&gt; fileError !&#x3D;&#x3D; null);
2089
+ // Error should be { fileName: FileType }
2090
+ return { invalidMimeFileType: errors };
2091
+ })
2092
+ );
1921
2093
  }
1922
- });
1923
- }
2094
+ return of(null);
2095
+ }</code>
2096
+ </td>
2097
+ </tr>
1924
2098
 
1925
- return control.value &amp;&amp; invalidFileExtension.length &gt; 0 ? { invalidFileExtension } : null;
2099
+
2100
+ </tbody>
2101
+ </table>
2102
+ <table class="table table-sm table-bordered">
2103
+ <tbody>
2104
+ <tr>
2105
+ <td class="col-md-4">
2106
+ <a name="validateFileMimeType"></a>
2107
+ <span class="name">
2108
+ <span ><b>validateFileMimeType</b></span>
2109
+ <a href="#validateFileMimeType"><span class="icon ion-ios-link"></span></a>
2110
+ </span>
2111
+ </td>
2112
+ </tr>
2113
+ <tr>
2114
+ <td class="col-md-4">
2115
+ <i>Default value : </i><code>(file: File, mimeTypes: MimeType[]): Observable&lt;{ [key: string]: any }&gt; &#x3D;&gt; {
2116
+ return new Observable&lt;{ [p: string]: any }&gt;((subscriber) &#x3D;&gt; {
2117
+ const reader &#x3D; new FileReader();
2118
+ reader.onloadend &#x3D; (): void &#x3D;&gt; {
2119
+ const buffer &#x3D; reader.result as ArrayBuffer;
2120
+ const headerBytes &#x3D; new Uint8Array(buffer).slice(0, 8);
2121
+ const mime &#x3D; getMimeType(headerBytes);
2122
+ if (mimeTypes.indexOf(mime) &#x3D;&#x3D;&#x3D; -1) {
2123
+ subscriber.next({ [file.name]: mime });
2124
+ }
2125
+ subscriber.complete();
2126
+ };
2127
+ reader.readAsArrayBuffer(file);
2128
+ });
1926
2129
  }</code>
1927
2130
  </td>
1928
2131
  </tr>
@@ -1,3 +1,6 @@
1
+ import { Observable, of, zip } from 'rxjs';
2
+ import { map } from 'rxjs/operators';
3
+ import { getMimeType } from './mime-types';
1
4
  /**
2
5
  * @description
3
6
  * Validator that requires the maximum length of files that can be uploaded.
@@ -36,7 +39,7 @@ export const maxSizeValidator = (maxSize) => (control) => {
36
39
  totalSize += file.size;
37
40
  });
38
41
  }
39
- return control.value && totalSize > (maxSize * 1.024) ? { maxSize } : null;
42
+ return control.value && totalSize > maxSize * 1.024 ? { maxSize } : null;
40
43
  };
41
44
  /**
42
45
  * @description
@@ -47,21 +50,41 @@ export const maxSizeValidator = (maxSize) => (control) => {
47
50
  *
48
51
  * ```typescript
49
52
  * const fileUpload = new FormControl(null, mimeTypeExtensionValidator(['image/jpeg'])),
50
- * console.log(fileUpload.errors); // { invalidFileExtension: ['image/jpeg'] }
53
+ * console.log(fileUpload.errors); // { invalidMimeFileType: ['image/jpeg'] }
51
54
  * ```
52
55
  *
53
- * @returns A validator function that returns an error map with the
54
- * `invalidFileExtension` if the validation check fails, otherwise `null`.
56
+ * @returns An Async validator function that returns an error map with the
57
+ * `invalidMimeFileType` if the validation check fails, otherwise `null`.
55
58
  */
56
59
  export const mimeTypeExtensionValidator = (mimeTypes) => (control) => {
57
- const invalidFileExtension = [];
58
60
  if (control.value) {
61
+ const fileErrorObservables = [];
62
+ // iterate over files
59
63
  control.value.forEach((file) => {
60
- if (mimeTypes.indexOf(file.type) === -1) {
61
- invalidFileExtension.push(file.name);
62
- }
64
+ // push observable which will check the mime validation type
65
+ fileErrorObservables.push(validateFileMimeType(file, mimeTypes));
63
66
  });
67
+ return zip(...fileErrorObservables).pipe(map((fileErrors) => {
68
+ const errors = fileErrors.filter((fileError) => fileError !== null);
69
+ // Error should be { fileName: FileType }
70
+ return { invalidMimeFileType: errors };
71
+ }));
64
72
  }
65
- return control.value && invalidFileExtension.length > 0 ? { invalidFileExtension } : null;
73
+ return of(null);
74
+ };
75
+ const validateFileMimeType = (file, mimeTypes) => {
76
+ return new Observable((subscriber) => {
77
+ const reader = new FileReader();
78
+ reader.onloadend = () => {
79
+ const buffer = reader.result;
80
+ const headerBytes = new Uint8Array(buffer).slice(0, 8);
81
+ const mime = getMimeType(headerBytes);
82
+ if (mimeTypes.indexOf(mime) === -1) {
83
+ subscriber.next({ [file.name]: mime });
84
+ }
85
+ subscriber.complete();
86
+ };
87
+ reader.readAsArrayBuffer(file);
88
+ });
66
89
  };
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9ldWktZmlsZS11cGxvYWQvdXRpbHMvZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQWdCLEVBQWUsRUFBRSxDQUFDLENBQUMsT0FBd0IsRUFBaUMsRUFBRSxDQUM1SCxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRTNFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFlLEVBQWUsRUFBRSxDQUFDLENBQUMsT0FBd0IsRUFBZ0MsRUFBRTtJQUV6SCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDbEIsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtZQUNqQyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztLQUNOO0lBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxJQUFJLFNBQVMsR0FBRyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQy9FLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxTQUFtQixFQUFlLEVBQUUsQ0FBQyxDQUFDLE9BQXdCLEVBQStDLEVBQUU7SUFFdEosTUFBTSxvQkFBb0IsR0FBYSxFQUFFLENBQUM7SUFDMUMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtZQUNqQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNyQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7S0FDTjtJQUVELE9BQU8sT0FBTyxDQUFDLEtBQUssSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM5RixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGZpbGVzIHRoYXQgY2FuIGJlIHVwbG9hZGVkLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKiBWYWxpZGF0ZSB0aGF0IHRoZSB1c2VyIHNlbGVjdGVkIG1heGltdW0gMyBmaWxlczpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaWxlVXBsb2FkID0gbmV3IEZvcm1Db250cm9sKG51bGwsIG1heEZpbGVzVmFsaWRhdG9yKDMpKTtcbiAqIGNvbnNvbGUubG9nKGZpbGVVcGxvYWQuZXJyb3JzKTsgLy8geyBtYXhGaWxlczogMyB9XG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBBIHZhbGlkYXRvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZXJyb3IgbWFwIHdpdGggdGhlXG4gKiBgbWF4RmlsZXNgIGlmIHRoZSB2YWxpZGF0aW9uIGNoZWNrIGZhaWxzLCBvdGhlcndpc2UgYG51bGxgLlxuICovXG5leHBvcnQgY29uc3QgbWF4RmlsZXNWYWxpZGF0b3IgPSAobWF4RmlsZXM6IG51bWJlcik6IFZhbGlkYXRvckZuID0+IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7ICdtYXhGaWxlcyc6IG51bWJlciB9IHwgbnVsbCA9PlxuICAgIGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZS5sZW5ndGggPiBtYXhGaWxlcyA/IHsgbWF4RmlsZXMgfSA6IG51bGw7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgbWF4aW11bSBzaXplIChpbiBieXRlcykgb2YgZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWQuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqIFZhbGlkYXRlIHRoYXQgdGhlIHVzZXIgZG9lc24ndCBzZWxlY3QgYSBmaWxlIGhhdmUgYSBzaXplIHVwIHRvIDMwMEtiOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpbGVVcGxvYWQgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgbWF4U2l6ZVZhbGlkYXRvcigzMDAwMDApKTtcbiAqIGNvbnNvbGUubG9nKGZpbGVVcGxvYWQuZXJyb3JzKTsgLy8geyBtYXhTaXplOiAzMDAwMDAgfVxuICogYGBgXG4gKlxuICogQHJldHVybnMgQSB2YWxpZGF0b3IgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGVycm9yIG1hcCB3aXRoIHRoZVxuICogYG1heFNpemVgIGlmIHRoZSB2YWxpZGF0aW9uIGNoZWNrIGZhaWxzLCBvdGhlcndpc2UgYG51bGxgLlxuICovXG5leHBvcnQgY29uc3QgbWF4U2l6ZVZhbGlkYXRvciA9IChtYXhTaXplOiBudW1iZXIpOiBWYWxpZGF0b3JGbiA9PiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyAnbWF4U2l6ZSc6IG51bWJlciB9IHwgbnVsbCA9PiB7XG5cbiAgICBsZXQgdG90YWxTaXplID0gMDtcbiAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgICBjb250cm9sLnZhbHVlLmZvckVhY2goKGZpbGU6IEZpbGUpID0+IHtcbiAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBmaWxlLnNpemU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb250cm9sLnZhbHVlICYmIHRvdGFsU2l6ZSA+IChtYXhTaXplICogMS4wMjQpID8geyBtYXhTaXplIH0gOiBudWxsO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIGFuIGFycmF5IG9mIG1pbWUgdHlwZSB0aGF0IGNhbiBiZSB1cGxvYWRlZC5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICogVmFsaWRhdGUgdGhhdCB0aGUgdXNlciBkb2Vzbid0IHNlbGVjdCBhIGZpbGUgaGF2aW5nIGFub3RoZXIgZXh0ZW5zaW9uIHRoYW4gLmpwZyBvciAuanBlZzpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaWxlVXBsb2FkID0gbmV3IEZvcm1Db250cm9sKG51bGwsIG1pbWVUeXBlRXh0ZW5zaW9uVmFsaWRhdG9yKFsnaW1hZ2UvanBlZyddKSksXG4gKiBjb25zb2xlLmxvZyhmaWxlVXBsb2FkLmVycm9ycyk7IC8vIHsgaW52YWxpZEZpbGVFeHRlbnNpb246IFsnaW1hZ2UvanBlZyddIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlcnJvciBtYXAgd2l0aCB0aGVcbiAqIGBpbnZhbGlkRmlsZUV4dGVuc2lvbmAgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW1lVHlwZUV4dGVuc2lvblZhbGlkYXRvciA9IChtaW1lVHlwZXM6IHN0cmluZ1tdKTogVmFsaWRhdG9yRm4gPT4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgJ2ludmFsaWRGaWxlRXh0ZW5zaW9uJzogc3RyaW5nW10gfSB8IG51bGwgPT4ge1xuXG4gICAgY29uc3QgaW52YWxpZEZpbGVFeHRlbnNpb246IHN0cmluZ1tdID0gW107XG4gICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgY29udHJvbC52YWx1ZS5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiB7XG4gICAgICAgICAgICBpZiAobWltZVR5cGVzLmluZGV4T2YoZmlsZS50eXBlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpbnZhbGlkRmlsZUV4dGVuc2lvbi5wdXNoKGZpbGUubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb250cm9sLnZhbHVlICYmIGludmFsaWRGaWxlRXh0ZW5zaW9uLmxlbmd0aCA+IDAgPyB7IGludmFsaWRGaWxlRXh0ZW5zaW9uIH0gOiBudWxsO1xufTtcbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9ldWktZmlsZS11cGxvYWQvdXRpbHMvZXVpLWZpbGUtdXBsb2FkLnZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sY0FBYyxDQUFDO0FBRXJEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQzFCLENBQUMsUUFBZ0IsRUFBZSxFQUFFLENBQzlCLENBQUMsT0FBd0IsRUFBK0IsRUFBRSxDQUN0RCxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRW5GOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQ3pCLENBQUMsT0FBZSxFQUFlLEVBQUUsQ0FDN0IsQ0FBQyxPQUF3QixFQUE4QixFQUFFO0lBQ3JELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNsQixJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFO1lBQ2pDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0tBQ047SUFFRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksU0FBUyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM3RSxDQUFDLENBQUM7QUFFVjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUNuQyxDQUFDLFNBQXFCLEVBQW9CLEVBQUUsQ0FDeEMsQ0FBQyxPQUF3QixFQUEwRSxFQUFFO0lBQ2pHLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtRQUNmLE1BQU0sb0JBQW9CLEdBQTBDLEVBQUUsQ0FBQztRQUN2RSxxQkFBcUI7UUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtZQUNqQyw0REFBNEQ7WUFDNUQsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FDcEMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDZixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDcEUseUNBQXlDO1lBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0tBQ0w7SUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFVixNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBVSxFQUFFLFNBQXFCLEVBQXNDLEVBQUU7SUFDbkcsT0FBTyxJQUFJLFVBQVUsQ0FBdUIsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBUyxFQUFFO1lBQzFCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFxQixDQUFDO1lBQzVDLE1BQU0sV0FBVyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDaEMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDMUM7WUFDRCxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldE1pbWVUeXBlLCBNaW1lVHlwZSB9IGZyb20gJy4vbWltZS10eXBlcyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWQuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqIFZhbGlkYXRlIHRoYXQgdGhlIHVzZXIgc2VsZWN0ZWQgbWF4aW11bSAzIGZpbGVzOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpbGVVcGxvYWQgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgbWF4RmlsZXNWYWxpZGF0b3IoMykpO1xuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IG1heEZpbGVzOiAzIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlcnJvciBtYXAgd2l0aCB0aGVcbiAqIGBtYXhGaWxlc2AgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhGaWxlc1ZhbGlkYXRvciA9XG4gICAgKG1heEZpbGVzOiBudW1iZXIpOiBWYWxpZGF0b3JGbiA9PlxuICAgICAgICAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBtYXhGaWxlczogbnVtYmVyIH0gfCBudWxsID0+XG4gICAgICAgICAgICBjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gbWF4RmlsZXMgPyB7IG1heEZpbGVzIH0gOiBudWxsO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgdGhlIG1heGltdW0gc2l6ZSAoaW4gYnl0ZXMpIG9mIGZpbGVzIHRoYXQgY2FuIGJlIHVwbG9hZGVkLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKiBWYWxpZGF0ZSB0aGF0IHRoZSB1c2VyIGRvZXNuJ3Qgc2VsZWN0IGEgZmlsZSBoYXZlIGEgc2l6ZSB1cCB0byAzMDBLYjpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaWxlVXBsb2FkID0gbmV3IEZvcm1Db250cm9sKG51bGwsIG1heFNpemVWYWxpZGF0b3IoMzAwMDAwKSk7XG4gKiBjb25zb2xlLmxvZyhmaWxlVXBsb2FkLmVycm9ycyk7IC8vIHsgbWF4U2l6ZTogMzAwMDAwIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlcnJvciBtYXAgd2l0aCB0aGVcbiAqIGBtYXhTaXplYCBpZiB0aGUgdmFsaWRhdGlvbiBjaGVjayBmYWlscywgb3RoZXJ3aXNlIGBudWxsYC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1heFNpemVWYWxpZGF0b3IgPVxuICAgIChtYXhTaXplOiBudW1iZXIpOiBWYWxpZGF0b3JGbiA9PlxuICAgICAgICAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBtYXhTaXplOiBudW1iZXIgfSB8IG51bGwgPT4ge1xuICAgICAgICAgICAgbGV0IHRvdGFsU2l6ZSA9IDA7XG4gICAgICAgICAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0b3RhbFNpemUgKz0gZmlsZS5zaXplO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udHJvbC52YWx1ZSAmJiB0b3RhbFNpemUgPiBtYXhTaXplICogMS4wMjQgPyB7IG1heFNpemUgfSA6IG51bGw7XG4gICAgICAgIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBhbiBhcnJheSBvZiBtaW1lIHR5cGUgdGhhdCBjYW4gYmUgdXBsb2FkZWQuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqIFZhbGlkYXRlIHRoYXQgdGhlIHVzZXIgZG9lc24ndCBzZWxlY3QgYSBmaWxlIGhhdmluZyBhbm90aGVyIGV4dGVuc2lvbiB0aGFuIC5qcGcgb3IgLmpwZWc6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZmlsZVVwbG9hZCA9IG5ldyBGb3JtQ29udHJvbChudWxsLCBtaW1lVHlwZUV4dGVuc2lvblZhbGlkYXRvcihbJ2ltYWdlL2pwZWcnXSkpLFxuICogY29uc29sZS5sb2coZmlsZVVwbG9hZC5lcnJvcnMpOyAvLyB7IGludmFsaWRNaW1lRmlsZVR5cGU6IFsnaW1hZ2UvanBlZyddIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEFuIEFzeW5jIHZhbGlkYXRvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZXJyb3IgbWFwIHdpdGggdGhlXG4gKiBgaW52YWxpZE1pbWVGaWxlVHlwZWAgaWYgdGhlIHZhbGlkYXRpb24gY2hlY2sgZmFpbHMsIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW1lVHlwZUV4dGVuc2lvblZhbGlkYXRvciA9XG4gICAgKG1pbWVUeXBlczogTWltZVR5cGVbXSk6IEFzeW5jVmFsaWRhdG9yRm4gPT5cbiAgICAgICAgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT4ge1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlRXJyb3JPYnNlcnZhYmxlczogT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD5bXSA9IFtdO1xuICAgICAgICAgICAgICAgIC8vIGl0ZXJhdGUgb3ZlciBmaWxlc1xuICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBwdXNoIG9ic2VydmFibGUgd2hpY2ggd2lsbCBjaGVjayB0aGUgbWltZSB2YWxpZGF0aW9uIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgZmlsZUVycm9yT2JzZXJ2YWJsZXMucHVzaCh2YWxpZGF0ZUZpbGVNaW1lVHlwZShmaWxlLCBtaW1lVHlwZXMpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gemlwKC4uLmZpbGVFcnJvck9ic2VydmFibGVzKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGZpbGVFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IGZpbGVFcnJvcnMuZmlsdGVyKChmaWxlRXJyb3IpID0+IGZpbGVFcnJvciAhPT0gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFcnJvciBzaG91bGQgYmUgeyBmaWxlTmFtZTogRmlsZVR5cGUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZE1pbWVGaWxlVHlwZTogZXJyb3JzIH07XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfTtcblxuY29uc3QgdmFsaWRhdGVGaWxlTWltZVR5cGUgPSAoZmlsZTogRmlsZSwgbWltZVR5cGVzOiBNaW1lVHlwZVtdKTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IGFueSB9PiA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHsgW3A6IHN0cmluZ106IGFueSB9Pigoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gcmVhZGVyLnJlc3VsdCBhcyBBcnJheUJ1ZmZlcjtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlckJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKS5zbGljZSgwLCA4KTtcbiAgICAgICAgICAgIGNvbnN0IG1pbWUgPSBnZXRNaW1lVHlwZShoZWFkZXJCeXRlcyk7XG4gICAgICAgICAgICBpZiAobWltZVR5cGVzLmluZGV4T2YobWltZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHsgW2ZpbGUubmFtZV06IG1pbWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH07XG4gICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcbiAgICB9KTtcbn07XG4iXX0=