@itcase/ui 1.9.52 → 1.9.53
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.
- package/dist/{Avatar_cjs_CvbURI0f.js → Avatar_cjs_BIHJrAbQ.js} +1 -1
- package/dist/{Avatar_es_CV-ffIJu.js → Avatar_es_CtP68jPM.js} +1 -1
- package/dist/{Button_cjs_BSfL-20W.js → Button_cjs_B8cIJYbm.js} +6 -6
- package/dist/{Button_es_Dk6_9N-r.js → Button_es_DQGp8Ipn.js} +6 -6
- package/dist/{ChipsGroup_cjs_CE-nNENH.js → ChipsGroup_cjs_C27x9x9O.js} +1 -1
- package/dist/{ChipsGroup_es_CxqwFgoo.js → ChipsGroup_es_BTe1MYhV.js} +1 -1
- package/dist/{DatePicker_cjs_BJzVpk0o.js → DatePicker_cjs_CY5UAP1l.js} +3 -3
- package/dist/{DatePicker_es_BP0iWHMt.js → DatePicker_es_Cze2Bv6w.js} +3 -3
- package/dist/{DropdownItem_cjs_pJblsTmA.js → DropdownItem_cjs_k28TIoDU.js} +1 -1
- package/dist/{DropdownItem_es_Xq7G5-UI.js → DropdownItem_es_DjPgbwtU.js} +1 -1
- package/dist/{Icon_cjs_CuqEv1jm.js → Icon_cjs_DTvdhr8B.js} +33 -4
- package/dist/{Icon_es_BYViOa6l.js → Icon_es_kewxGRUB.js} +33 -4
- package/dist/{Label_cjs_DsuCRIyo.js → Label_cjs_RI5tFcPt.js} +1 -1
- package/dist/{Label_es_BPQhW13g.js → Label_es_CNRTIAWo.js} +1 -1
- package/dist/{Loader_cjs_DMIUN6_q.js → Loader_cjs_CJpdLndn.js} +19 -4
- package/dist/{Loader_es_DLb2P-Sk.js → Loader_es_CqlLujBJ.js} +19 -4
- package/dist/{SelectContainer_cjs_qWAMLIkz.js → SelectContainer_cjs_DXYUcpco.js} +2 -2
- package/dist/{SelectContainer_es_kRH4DsEh.js → SelectContainer_es_De_XL0im.js} +2 -2
- package/dist/cjs/components/Accordion.js +2 -2
- package/dist/cjs/components/Avatar.js +6 -5
- package/dist/cjs/components/AvatarStack.js +3 -3
- package/dist/cjs/components/Badge.js +6 -5
- package/dist/cjs/components/Breadcrumbs.js +2 -1
- package/dist/cjs/components/Button.js +8 -8
- package/dist/cjs/components/Cell.js +3 -3
- package/dist/cjs/components/Checkmark.js +4 -3
- package/dist/cjs/components/Chips.js +5 -4
- package/dist/cjs/components/Choice.js +4 -3
- package/dist/cjs/components/CookiesWarning.js +7 -7
- package/dist/cjs/components/DatePeriod.js +8 -8
- package/dist/cjs/components/DatePicker.js +10 -10
- package/dist/cjs/components/Drawer.js +3 -2
- package/dist/cjs/components/Dropdown.js +5 -4
- package/dist/cjs/components/Dropzone.js +1751 -0
- package/dist/cjs/components/HeroTitle.js +4 -3
- package/dist/cjs/components/Icon.js +6 -5
- package/dist/cjs/components/InputNumber.js +8 -8
- package/dist/cjs/components/InputPassword.js +5 -4
- package/dist/cjs/components/Label.js +5 -4
- package/dist/cjs/components/Loader.js +2 -2
- package/dist/cjs/components/MenuItem.js +2 -1
- package/dist/cjs/components/Modal.js +4 -4
- package/dist/cjs/components/ModalSheetBottom.js +4 -3
- package/dist/cjs/components/Notification.js +12 -12
- package/dist/cjs/components/Pagination.js +4 -3
- package/dist/cjs/components/Response.js +5 -5
- package/dist/cjs/components/Search.js +3 -2
- package/dist/cjs/components/Segmented.js +5 -4
- package/dist/cjs/components/Select.js +4 -4
- package/dist/cjs/components/Swiper.js +3 -2
- package/dist/cjs/components/Tab.js +1 -1
- package/dist/cjs/components/Tile.js +2 -2
- package/dist/cjs/components/Title.js +6 -5
- package/dist/cjs/components/Tooltip.js +6 -5
- package/dist/cjs/components/Warning.js +3 -2
- package/dist/cjs/hooks/useDropzoneFieldFiles.js +20769 -0
- package/dist/components/Accordion.js +2 -2
- package/dist/components/Avatar.js +6 -5
- package/dist/components/AvatarStack.js +3 -3
- package/dist/components/Badge.js +6 -5
- package/dist/components/Breadcrumbs.js +2 -1
- package/dist/components/Button.js +8 -8
- package/dist/components/Cell.js +3 -3
- package/dist/components/Checkmark.js +4 -3
- package/dist/components/Chips.js +5 -4
- package/dist/components/Choice.js +4 -3
- package/dist/components/CookiesWarning.js +7 -7
- package/dist/components/DatePeriod.js +8 -8
- package/dist/components/DatePicker.js +10 -10
- package/dist/components/Drawer.js +3 -2
- package/dist/components/Dropdown.js +5 -4
- package/dist/components/Dropzone.js +1749 -0
- package/dist/components/HeroTitle.js +4 -3
- package/dist/components/Icon.js +6 -5
- package/dist/components/InputNumber.js +8 -8
- package/dist/components/InputPassword.js +5 -4
- package/dist/components/Label.js +5 -4
- package/dist/components/Loader.js +2 -2
- package/dist/components/MenuItem.js +2 -1
- package/dist/components/Modal.js +4 -4
- package/dist/components/ModalSheetBottom.js +4 -3
- package/dist/components/Notification.js +12 -12
- package/dist/components/Pagination.js +4 -3
- package/dist/components/Response.js +5 -5
- package/dist/components/Search.js +3 -2
- package/dist/components/Segmented.js +5 -4
- package/dist/components/Select.js +4 -4
- package/dist/components/Swiper.js +3 -2
- package/dist/components/Tab.js +1 -1
- package/dist/components/Tile.js +2 -2
- package/dist/components/Title.js +6 -5
- package/dist/components/Tooltip.js +6 -5
- package/dist/components/Warning.js +3 -2
- package/dist/css/styles/bundles.css +338 -110
- package/dist/hooks/useDropzoneFieldFiles.js +20767 -0
- package/dist/stories/DropzoneOverview.mdx +11 -0
- package/dist/stories/DropzonePlayground.mdx +10 -0
- package/dist/types/components/Button/Button.d.ts +3 -2
- package/dist/types/components/Button/Button.interface.d.ts +4 -4
- package/dist/types/components/Button/stories/ButtonDefault.stories.d.ts +3 -2
- package/dist/types/components/Button/stories/ButtonDemo.stories.d.ts +3 -2
- package/dist/types/components/Button/stories/ButtonIcon.stories.d.ts +3 -2
- package/dist/types/components/Button/stories/ButtonLabel.stories.d.ts +3 -2
- package/dist/types/components/Button/stories/ButtonLoading.stories.d.ts +3 -2
- package/dist/types/components/Button/stories/ButtonMuted.stories.d.ts +3 -2
- package/dist/types/components/Button/stories/ButtonMutedIcon.stories.d.ts +3 -2
- package/dist/types/components/Button/stories/ButtonShape.stories.d.ts +3 -2
- package/dist/types/components/Button/stories/ButtonSize.stories.d.ts +3 -2
- package/dist/types/components/Dropzone/Dropzone.appearance.d.ts +3 -0
- package/dist/types/components/Dropzone/Dropzone.d.ts +4 -0
- package/dist/types/components/Dropzone/Dropzone.interface.d.ts +82 -0
- package/dist/types/components/Dropzone/appearance/dropzoneDefault.d.ts +3 -0
- package/dist/types/components/Dropzone/appearance/dropzoneDisabled.d.ts +3 -0
- package/dist/types/components/Dropzone/appearance/dropzoneError.d.ts +3 -0
- package/dist/types/components/Dropzone/appearance/dropzoneRequire.d.ts +3 -0
- package/dist/types/components/Dropzone/appearance/dropzoneShape.d.ts +3 -0
- package/dist/types/components/Dropzone/appearance/dropzoneSuccess.d.ts +3 -0
- package/dist/types/components/Dropzone/index.d.ts +1 -0
- package/dist/types/components/Dropzone/stories/DropzoneDefault.stories.d.ts +42 -0
- package/dist/types/components/Dropzone/stories/DropzoneDemo.stories.d.ts +19 -0
- package/dist/types/components/Icon/Icon.interface.d.ts +3 -2
- package/dist/types/components/Loader/Loader.interface.d.ts +1 -1
- package/dist/types/components/Loader/stories/LoaderAppearance.stories.d.ts +3 -0
- package/dist/types/components/Loader/stories/LoaderText.stories.d.ts +25 -0
- package/dist/types/components/Loader/stories/LoaderType.stories.d.ts +25 -0
- package/dist/types/hooks/useDropzoneFieldFiles.d.ts +14 -0
- package/package.json +7 -6
|
@@ -0,0 +1,1751 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var clsx = require('clsx');
|
|
6
|
+
var reactDropzone = require('react-dropzone');
|
|
7
|
+
var Button = require('../../Button_cjs_B8cIJYbm.js');
|
|
8
|
+
var Loader = require('../../Loader_cjs_CJpdLndn.js');
|
|
9
|
+
var Text = require('../../Text_cjs_erTy2pUN.js');
|
|
10
|
+
var useAppearanceConfig = require('../hooks/useAppearanceConfig/useAppearanceConfig.js');
|
|
11
|
+
var useDevicePropsGenerator = require('../hooks/useDevicePropsGenerator/useDevicePropsGenerator.js');
|
|
12
|
+
var useDropzoneFieldFiles = require('../hooks/useDropzoneFieldFiles.js');
|
|
13
|
+
require('../../Icon_cjs_DTvdhr8B.js');
|
|
14
|
+
require('react-inlinesvg');
|
|
15
|
+
require('../../Link_cjs_Dn7UhCYe.js');
|
|
16
|
+
require('../hooks/useStyles/useStyles.js');
|
|
17
|
+
require('lodash/camelCase');
|
|
18
|
+
require('lodash/maxBy');
|
|
19
|
+
require('lodash/upperFirst');
|
|
20
|
+
require('../context/Notifications.js');
|
|
21
|
+
require('uuid');
|
|
22
|
+
require('@itcase/common');
|
|
23
|
+
require('../context/UIContext.js');
|
|
24
|
+
require('../hooks/useMediaQueries/useMediaQueries.js');
|
|
25
|
+
require('react-responsive');
|
|
26
|
+
require('../utils/setViewportProperty.js');
|
|
27
|
+
require('../hooks.js');
|
|
28
|
+
require('../hooks/useStyles/styleAttributes.js');
|
|
29
|
+
require('../hoc/urlWithAssetPrefix.js');
|
|
30
|
+
require('../context/UrlAssetPrefix.js');
|
|
31
|
+
require('../utils/mergeAppearanceKeys.js');
|
|
32
|
+
require('../hooks/useHoldProgress.js');
|
|
33
|
+
require('lodash/castArray');
|
|
34
|
+
require('util');
|
|
35
|
+
require('stream');
|
|
36
|
+
require('path');
|
|
37
|
+
require('http');
|
|
38
|
+
require('https');
|
|
39
|
+
require('url');
|
|
40
|
+
require('fs');
|
|
41
|
+
require('crypto');
|
|
42
|
+
require('http2');
|
|
43
|
+
require('assert');
|
|
44
|
+
require('tty');
|
|
45
|
+
require('os');
|
|
46
|
+
require('zlib');
|
|
47
|
+
require('events');
|
|
48
|
+
|
|
49
|
+
/******************************************************************************
|
|
50
|
+
Copyright (c) Microsoft Corporation.
|
|
51
|
+
|
|
52
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
53
|
+
purpose with or without fee is hereby granted.
|
|
54
|
+
|
|
55
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
56
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
57
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
58
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
59
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
60
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
61
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
62
|
+
***************************************************************************** */
|
|
63
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
67
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
68
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
69
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
70
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
71
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
72
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
77
|
+
var e = new Error(message);
|
|
78
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const COMMON_MIME_TYPES = new Map([
|
|
82
|
+
// https://github.com/guzzle/psr7/blob/2d9260799e713f1c475d3c5fdc3d6561ff7441b2/src/MimeType.php
|
|
83
|
+
['1km', 'application/vnd.1000minds.decision-model+xml'],
|
|
84
|
+
['3dml', 'text/vnd.in3d.3dml'],
|
|
85
|
+
['3ds', 'image/x-3ds'],
|
|
86
|
+
['3g2', 'video/3gpp2'],
|
|
87
|
+
['3gp', 'video/3gp'],
|
|
88
|
+
['3gpp', 'video/3gpp'],
|
|
89
|
+
['3mf', 'model/3mf'],
|
|
90
|
+
['7z', 'application/x-7z-compressed'],
|
|
91
|
+
['7zip', 'application/x-7z-compressed'],
|
|
92
|
+
['123', 'application/vnd.lotus-1-2-3'],
|
|
93
|
+
['aab', 'application/x-authorware-bin'],
|
|
94
|
+
['aac', 'audio/x-acc'],
|
|
95
|
+
['aam', 'application/x-authorware-map'],
|
|
96
|
+
['aas', 'application/x-authorware-seg'],
|
|
97
|
+
['abw', 'application/x-abiword'],
|
|
98
|
+
['ac', 'application/vnd.nokia.n-gage.ac+xml'],
|
|
99
|
+
['ac3', 'audio/ac3'],
|
|
100
|
+
['acc', 'application/vnd.americandynamics.acc'],
|
|
101
|
+
['ace', 'application/x-ace-compressed'],
|
|
102
|
+
['acu', 'application/vnd.acucobol'],
|
|
103
|
+
['acutc', 'application/vnd.acucorp'],
|
|
104
|
+
['adp', 'audio/adpcm'],
|
|
105
|
+
['aep', 'application/vnd.audiograph'],
|
|
106
|
+
['afm', 'application/x-font-type1'],
|
|
107
|
+
['afp', 'application/vnd.ibm.modcap'],
|
|
108
|
+
['ahead', 'application/vnd.ahead.space'],
|
|
109
|
+
['ai', 'application/pdf'],
|
|
110
|
+
['aif', 'audio/x-aiff'],
|
|
111
|
+
['aifc', 'audio/x-aiff'],
|
|
112
|
+
['aiff', 'audio/x-aiff'],
|
|
113
|
+
['air', 'application/vnd.adobe.air-application-installer-package+zip'],
|
|
114
|
+
['ait', 'application/vnd.dvb.ait'],
|
|
115
|
+
['ami', 'application/vnd.amiga.ami'],
|
|
116
|
+
['amr', 'audio/amr'],
|
|
117
|
+
['apk', 'application/vnd.android.package-archive'],
|
|
118
|
+
['apng', 'image/apng'],
|
|
119
|
+
['appcache', 'text/cache-manifest'],
|
|
120
|
+
['application', 'application/x-ms-application'],
|
|
121
|
+
['apr', 'application/vnd.lotus-approach'],
|
|
122
|
+
['arc', 'application/x-freearc'],
|
|
123
|
+
['arj', 'application/x-arj'],
|
|
124
|
+
['asc', 'application/pgp-signature'],
|
|
125
|
+
['asf', 'video/x-ms-asf'],
|
|
126
|
+
['asm', 'text/x-asm'],
|
|
127
|
+
['aso', 'application/vnd.accpac.simply.aso'],
|
|
128
|
+
['asx', 'video/x-ms-asf'],
|
|
129
|
+
['atc', 'application/vnd.acucorp'],
|
|
130
|
+
['atom', 'application/atom+xml'],
|
|
131
|
+
['atomcat', 'application/atomcat+xml'],
|
|
132
|
+
['atomdeleted', 'application/atomdeleted+xml'],
|
|
133
|
+
['atomsvc', 'application/atomsvc+xml'],
|
|
134
|
+
['atx', 'application/vnd.antix.game-component'],
|
|
135
|
+
['au', 'audio/x-au'],
|
|
136
|
+
['avi', 'video/x-msvideo'],
|
|
137
|
+
['avif', 'image/avif'],
|
|
138
|
+
['aw', 'application/applixware'],
|
|
139
|
+
['azf', 'application/vnd.airzip.filesecure.azf'],
|
|
140
|
+
['azs', 'application/vnd.airzip.filesecure.azs'],
|
|
141
|
+
['azv', 'image/vnd.airzip.accelerator.azv'],
|
|
142
|
+
['azw', 'application/vnd.amazon.ebook'],
|
|
143
|
+
['b16', 'image/vnd.pco.b16'],
|
|
144
|
+
['bat', 'application/x-msdownload'],
|
|
145
|
+
['bcpio', 'application/x-bcpio'],
|
|
146
|
+
['bdf', 'application/x-font-bdf'],
|
|
147
|
+
['bdm', 'application/vnd.syncml.dm+wbxml'],
|
|
148
|
+
['bdoc', 'application/x-bdoc'],
|
|
149
|
+
['bed', 'application/vnd.realvnc.bed'],
|
|
150
|
+
['bh2', 'application/vnd.fujitsu.oasysprs'],
|
|
151
|
+
['bin', 'application/octet-stream'],
|
|
152
|
+
['blb', 'application/x-blorb'],
|
|
153
|
+
['blorb', 'application/x-blorb'],
|
|
154
|
+
['bmi', 'application/vnd.bmi'],
|
|
155
|
+
['bmml', 'application/vnd.balsamiq.bmml+xml'],
|
|
156
|
+
['bmp', 'image/bmp'],
|
|
157
|
+
['book', 'application/vnd.framemaker'],
|
|
158
|
+
['box', 'application/vnd.previewsystems.box'],
|
|
159
|
+
['boz', 'application/x-bzip2'],
|
|
160
|
+
['bpk', 'application/octet-stream'],
|
|
161
|
+
['bpmn', 'application/octet-stream'],
|
|
162
|
+
['bsp', 'model/vnd.valve.source.compiled-map'],
|
|
163
|
+
['btif', 'image/prs.btif'],
|
|
164
|
+
['buffer', 'application/octet-stream'],
|
|
165
|
+
['bz', 'application/x-bzip'],
|
|
166
|
+
['bz2', 'application/x-bzip2'],
|
|
167
|
+
['c', 'text/x-c'],
|
|
168
|
+
['c4d', 'application/vnd.clonk.c4group'],
|
|
169
|
+
['c4f', 'application/vnd.clonk.c4group'],
|
|
170
|
+
['c4g', 'application/vnd.clonk.c4group'],
|
|
171
|
+
['c4p', 'application/vnd.clonk.c4group'],
|
|
172
|
+
['c4u', 'application/vnd.clonk.c4group'],
|
|
173
|
+
['c11amc', 'application/vnd.cluetrust.cartomobile-config'],
|
|
174
|
+
['c11amz', 'application/vnd.cluetrust.cartomobile-config-pkg'],
|
|
175
|
+
['cab', 'application/vnd.ms-cab-compressed'],
|
|
176
|
+
['caf', 'audio/x-caf'],
|
|
177
|
+
['cap', 'application/vnd.tcpdump.pcap'],
|
|
178
|
+
['car', 'application/vnd.curl.car'],
|
|
179
|
+
['cat', 'application/vnd.ms-pki.seccat'],
|
|
180
|
+
['cb7', 'application/x-cbr'],
|
|
181
|
+
['cba', 'application/x-cbr'],
|
|
182
|
+
['cbr', 'application/x-cbr'],
|
|
183
|
+
['cbt', 'application/x-cbr'],
|
|
184
|
+
['cbz', 'application/x-cbr'],
|
|
185
|
+
['cc', 'text/x-c'],
|
|
186
|
+
['cco', 'application/x-cocoa'],
|
|
187
|
+
['cct', 'application/x-director'],
|
|
188
|
+
['ccxml', 'application/ccxml+xml'],
|
|
189
|
+
['cdbcmsg', 'application/vnd.contact.cmsg'],
|
|
190
|
+
['cda', 'application/x-cdf'],
|
|
191
|
+
['cdf', 'application/x-netcdf'],
|
|
192
|
+
['cdfx', 'application/cdfx+xml'],
|
|
193
|
+
['cdkey', 'application/vnd.mediastation.cdkey'],
|
|
194
|
+
['cdmia', 'application/cdmi-capability'],
|
|
195
|
+
['cdmic', 'application/cdmi-container'],
|
|
196
|
+
['cdmid', 'application/cdmi-domain'],
|
|
197
|
+
['cdmio', 'application/cdmi-object'],
|
|
198
|
+
['cdmiq', 'application/cdmi-queue'],
|
|
199
|
+
['cdr', 'application/cdr'],
|
|
200
|
+
['cdx', 'chemical/x-cdx'],
|
|
201
|
+
['cdxml', 'application/vnd.chemdraw+xml'],
|
|
202
|
+
['cdy', 'application/vnd.cinderella'],
|
|
203
|
+
['cer', 'application/pkix-cert'],
|
|
204
|
+
['cfs', 'application/x-cfs-compressed'],
|
|
205
|
+
['cgm', 'image/cgm'],
|
|
206
|
+
['chat', 'application/x-chat'],
|
|
207
|
+
['chm', 'application/vnd.ms-htmlhelp'],
|
|
208
|
+
['chrt', 'application/vnd.kde.kchart'],
|
|
209
|
+
['cif', 'chemical/x-cif'],
|
|
210
|
+
['cii', 'application/vnd.anser-web-certificate-issue-initiation'],
|
|
211
|
+
['cil', 'application/vnd.ms-artgalry'],
|
|
212
|
+
['cjs', 'application/node'],
|
|
213
|
+
['cla', 'application/vnd.claymore'],
|
|
214
|
+
['class', 'application/octet-stream'],
|
|
215
|
+
['clkk', 'application/vnd.crick.clicker.keyboard'],
|
|
216
|
+
['clkp', 'application/vnd.crick.clicker.palette'],
|
|
217
|
+
['clkt', 'application/vnd.crick.clicker.template'],
|
|
218
|
+
['clkw', 'application/vnd.crick.clicker.wordbank'],
|
|
219
|
+
['clkx', 'application/vnd.crick.clicker'],
|
|
220
|
+
['clp', 'application/x-msclip'],
|
|
221
|
+
['cmc', 'application/vnd.cosmocaller'],
|
|
222
|
+
['cmdf', 'chemical/x-cmdf'],
|
|
223
|
+
['cml', 'chemical/x-cml'],
|
|
224
|
+
['cmp', 'application/vnd.yellowriver-custom-menu'],
|
|
225
|
+
['cmx', 'image/x-cmx'],
|
|
226
|
+
['cod', 'application/vnd.rim.cod'],
|
|
227
|
+
['coffee', 'text/coffeescript'],
|
|
228
|
+
['com', 'application/x-msdownload'],
|
|
229
|
+
['conf', 'text/plain'],
|
|
230
|
+
['cpio', 'application/x-cpio'],
|
|
231
|
+
['cpp', 'text/x-c'],
|
|
232
|
+
['cpt', 'application/mac-compactpro'],
|
|
233
|
+
['crd', 'application/x-mscardfile'],
|
|
234
|
+
['crl', 'application/pkix-crl'],
|
|
235
|
+
['crt', 'application/x-x509-ca-cert'],
|
|
236
|
+
['crx', 'application/x-chrome-extension'],
|
|
237
|
+
['cryptonote', 'application/vnd.rig.cryptonote'],
|
|
238
|
+
['csh', 'application/x-csh'],
|
|
239
|
+
['csl', 'application/vnd.citationstyles.style+xml'],
|
|
240
|
+
['csml', 'chemical/x-csml'],
|
|
241
|
+
['csp', 'application/vnd.commonspace'],
|
|
242
|
+
['csr', 'application/octet-stream'],
|
|
243
|
+
['css', 'text/css'],
|
|
244
|
+
['cst', 'application/x-director'],
|
|
245
|
+
['csv', 'text/csv'],
|
|
246
|
+
['cu', 'application/cu-seeme'],
|
|
247
|
+
['curl', 'text/vnd.curl'],
|
|
248
|
+
['cww', 'application/prs.cww'],
|
|
249
|
+
['cxt', 'application/x-director'],
|
|
250
|
+
['cxx', 'text/x-c'],
|
|
251
|
+
['dae', 'model/vnd.collada+xml'],
|
|
252
|
+
['daf', 'application/vnd.mobius.daf'],
|
|
253
|
+
['dart', 'application/vnd.dart'],
|
|
254
|
+
['dataless', 'application/vnd.fdsn.seed'],
|
|
255
|
+
['davmount', 'application/davmount+xml'],
|
|
256
|
+
['dbf', 'application/vnd.dbf'],
|
|
257
|
+
['dbk', 'application/docbook+xml'],
|
|
258
|
+
['dcr', 'application/x-director'],
|
|
259
|
+
['dcurl', 'text/vnd.curl.dcurl'],
|
|
260
|
+
['dd2', 'application/vnd.oma.dd2+xml'],
|
|
261
|
+
['ddd', 'application/vnd.fujixerox.ddd'],
|
|
262
|
+
['ddf', 'application/vnd.syncml.dmddf+xml'],
|
|
263
|
+
['dds', 'image/vnd.ms-dds'],
|
|
264
|
+
['deb', 'application/x-debian-package'],
|
|
265
|
+
['def', 'text/plain'],
|
|
266
|
+
['deploy', 'application/octet-stream'],
|
|
267
|
+
['der', 'application/x-x509-ca-cert'],
|
|
268
|
+
['dfac', 'application/vnd.dreamfactory'],
|
|
269
|
+
['dgc', 'application/x-dgc-compressed'],
|
|
270
|
+
['dic', 'text/x-c'],
|
|
271
|
+
['dir', 'application/x-director'],
|
|
272
|
+
['dis', 'application/vnd.mobius.dis'],
|
|
273
|
+
['disposition-notification', 'message/disposition-notification'],
|
|
274
|
+
['dist', 'application/octet-stream'],
|
|
275
|
+
['distz', 'application/octet-stream'],
|
|
276
|
+
['djv', 'image/vnd.djvu'],
|
|
277
|
+
['djvu', 'image/vnd.djvu'],
|
|
278
|
+
['dll', 'application/octet-stream'],
|
|
279
|
+
['dmg', 'application/x-apple-diskimage'],
|
|
280
|
+
['dmn', 'application/octet-stream'],
|
|
281
|
+
['dmp', 'application/vnd.tcpdump.pcap'],
|
|
282
|
+
['dms', 'application/octet-stream'],
|
|
283
|
+
['dna', 'application/vnd.dna'],
|
|
284
|
+
['doc', 'application/msword'],
|
|
285
|
+
['docm', 'application/vnd.ms-word.template.macroEnabled.12'],
|
|
286
|
+
['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],
|
|
287
|
+
['dot', 'application/msword'],
|
|
288
|
+
['dotm', 'application/vnd.ms-word.template.macroEnabled.12'],
|
|
289
|
+
['dotx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template'],
|
|
290
|
+
['dp', 'application/vnd.osgi.dp'],
|
|
291
|
+
['dpg', 'application/vnd.dpgraph'],
|
|
292
|
+
['dra', 'audio/vnd.dra'],
|
|
293
|
+
['drle', 'image/dicom-rle'],
|
|
294
|
+
['dsc', 'text/prs.lines.tag'],
|
|
295
|
+
['dssc', 'application/dssc+der'],
|
|
296
|
+
['dtb', 'application/x-dtbook+xml'],
|
|
297
|
+
['dtd', 'application/xml-dtd'],
|
|
298
|
+
['dts', 'audio/vnd.dts'],
|
|
299
|
+
['dtshd', 'audio/vnd.dts.hd'],
|
|
300
|
+
['dump', 'application/octet-stream'],
|
|
301
|
+
['dvb', 'video/vnd.dvb.file'],
|
|
302
|
+
['dvi', 'application/x-dvi'],
|
|
303
|
+
['dwd', 'application/atsc-dwd+xml'],
|
|
304
|
+
['dwf', 'model/vnd.dwf'],
|
|
305
|
+
['dwg', 'image/vnd.dwg'],
|
|
306
|
+
['dxf', 'image/vnd.dxf'],
|
|
307
|
+
['dxp', 'application/vnd.spotfire.dxp'],
|
|
308
|
+
['dxr', 'application/x-director'],
|
|
309
|
+
['ear', 'application/java-archive'],
|
|
310
|
+
['ecelp4800', 'audio/vnd.nuera.ecelp4800'],
|
|
311
|
+
['ecelp7470', 'audio/vnd.nuera.ecelp7470'],
|
|
312
|
+
['ecelp9600', 'audio/vnd.nuera.ecelp9600'],
|
|
313
|
+
['ecma', 'application/ecmascript'],
|
|
314
|
+
['edm', 'application/vnd.novadigm.edm'],
|
|
315
|
+
['edx', 'application/vnd.novadigm.edx'],
|
|
316
|
+
['efif', 'application/vnd.picsel'],
|
|
317
|
+
['ei6', 'application/vnd.pg.osasli'],
|
|
318
|
+
['elc', 'application/octet-stream'],
|
|
319
|
+
['emf', 'image/emf'],
|
|
320
|
+
['eml', 'message/rfc822'],
|
|
321
|
+
['emma', 'application/emma+xml'],
|
|
322
|
+
['emotionml', 'application/emotionml+xml'],
|
|
323
|
+
['emz', 'application/x-msmetafile'],
|
|
324
|
+
['eol', 'audio/vnd.digital-winds'],
|
|
325
|
+
['eot', 'application/vnd.ms-fontobject'],
|
|
326
|
+
['eps', 'application/postscript'],
|
|
327
|
+
['epub', 'application/epub+zip'],
|
|
328
|
+
['es', 'application/ecmascript'],
|
|
329
|
+
['es3', 'application/vnd.eszigno3+xml'],
|
|
330
|
+
['esa', 'application/vnd.osgi.subsystem'],
|
|
331
|
+
['esf', 'application/vnd.epson.esf'],
|
|
332
|
+
['et3', 'application/vnd.eszigno3+xml'],
|
|
333
|
+
['etx', 'text/x-setext'],
|
|
334
|
+
['eva', 'application/x-eva'],
|
|
335
|
+
['evy', 'application/x-envoy'],
|
|
336
|
+
['exe', 'application/octet-stream'],
|
|
337
|
+
['exi', 'application/exi'],
|
|
338
|
+
['exp', 'application/express'],
|
|
339
|
+
['exr', 'image/aces'],
|
|
340
|
+
['ext', 'application/vnd.novadigm.ext'],
|
|
341
|
+
['ez', 'application/andrew-inset'],
|
|
342
|
+
['ez2', 'application/vnd.ezpix-album'],
|
|
343
|
+
['ez3', 'application/vnd.ezpix-package'],
|
|
344
|
+
['f', 'text/x-fortran'],
|
|
345
|
+
['f4v', 'video/mp4'],
|
|
346
|
+
['f77', 'text/x-fortran'],
|
|
347
|
+
['f90', 'text/x-fortran'],
|
|
348
|
+
['fbs', 'image/vnd.fastbidsheet'],
|
|
349
|
+
['fcdt', 'application/vnd.adobe.formscentral.fcdt'],
|
|
350
|
+
['fcs', 'application/vnd.isac.fcs'],
|
|
351
|
+
['fdf', 'application/vnd.fdf'],
|
|
352
|
+
['fdt', 'application/fdt+xml'],
|
|
353
|
+
['fe_launch', 'application/vnd.denovo.fcselayout-link'],
|
|
354
|
+
['fg5', 'application/vnd.fujitsu.oasysgp'],
|
|
355
|
+
['fgd', 'application/x-director'],
|
|
356
|
+
['fh', 'image/x-freehand'],
|
|
357
|
+
['fh4', 'image/x-freehand'],
|
|
358
|
+
['fh5', 'image/x-freehand'],
|
|
359
|
+
['fh7', 'image/x-freehand'],
|
|
360
|
+
['fhc', 'image/x-freehand'],
|
|
361
|
+
['fig', 'application/x-xfig'],
|
|
362
|
+
['fits', 'image/fits'],
|
|
363
|
+
['flac', 'audio/x-flac'],
|
|
364
|
+
['fli', 'video/x-fli'],
|
|
365
|
+
['flo', 'application/vnd.micrografx.flo'],
|
|
366
|
+
['flv', 'video/x-flv'],
|
|
367
|
+
['flw', 'application/vnd.kde.kivio'],
|
|
368
|
+
['flx', 'text/vnd.fmi.flexstor'],
|
|
369
|
+
['fly', 'text/vnd.fly'],
|
|
370
|
+
['fm', 'application/vnd.framemaker'],
|
|
371
|
+
['fnc', 'application/vnd.frogans.fnc'],
|
|
372
|
+
['fo', 'application/vnd.software602.filler.form+xml'],
|
|
373
|
+
['for', 'text/x-fortran'],
|
|
374
|
+
['fpx', 'image/vnd.fpx'],
|
|
375
|
+
['frame', 'application/vnd.framemaker'],
|
|
376
|
+
['fsc', 'application/vnd.fsc.weblaunch'],
|
|
377
|
+
['fst', 'image/vnd.fst'],
|
|
378
|
+
['ftc', 'application/vnd.fluxtime.clip'],
|
|
379
|
+
['fti', 'application/vnd.anser-web-funds-transfer-initiation'],
|
|
380
|
+
['fvt', 'video/vnd.fvt'],
|
|
381
|
+
['fxp', 'application/vnd.adobe.fxp'],
|
|
382
|
+
['fxpl', 'application/vnd.adobe.fxp'],
|
|
383
|
+
['fzs', 'application/vnd.fuzzysheet'],
|
|
384
|
+
['g2w', 'application/vnd.geoplan'],
|
|
385
|
+
['g3', 'image/g3fax'],
|
|
386
|
+
['g3w', 'application/vnd.geospace'],
|
|
387
|
+
['gac', 'application/vnd.groove-account'],
|
|
388
|
+
['gam', 'application/x-tads'],
|
|
389
|
+
['gbr', 'application/rpki-ghostbusters'],
|
|
390
|
+
['gca', 'application/x-gca-compressed'],
|
|
391
|
+
['gdl', 'model/vnd.gdl'],
|
|
392
|
+
['gdoc', 'application/vnd.google-apps.document'],
|
|
393
|
+
['geo', 'application/vnd.dynageo'],
|
|
394
|
+
['geojson', 'application/geo+json'],
|
|
395
|
+
['gex', 'application/vnd.geometry-explorer'],
|
|
396
|
+
['ggb', 'application/vnd.geogebra.file'],
|
|
397
|
+
['ggt', 'application/vnd.geogebra.tool'],
|
|
398
|
+
['ghf', 'application/vnd.groove-help'],
|
|
399
|
+
['gif', 'image/gif'],
|
|
400
|
+
['gim', 'application/vnd.groove-identity-message'],
|
|
401
|
+
['glb', 'model/gltf-binary'],
|
|
402
|
+
['gltf', 'model/gltf+json'],
|
|
403
|
+
['gml', 'application/gml+xml'],
|
|
404
|
+
['gmx', 'application/vnd.gmx'],
|
|
405
|
+
['gnumeric', 'application/x-gnumeric'],
|
|
406
|
+
['gpg', 'application/gpg-keys'],
|
|
407
|
+
['gph', 'application/vnd.flographit'],
|
|
408
|
+
['gpx', 'application/gpx+xml'],
|
|
409
|
+
['gqf', 'application/vnd.grafeq'],
|
|
410
|
+
['gqs', 'application/vnd.grafeq'],
|
|
411
|
+
['gram', 'application/srgs'],
|
|
412
|
+
['gramps', 'application/x-gramps-xml'],
|
|
413
|
+
['gre', 'application/vnd.geometry-explorer'],
|
|
414
|
+
['grv', 'application/vnd.groove-injector'],
|
|
415
|
+
['grxml', 'application/srgs+xml'],
|
|
416
|
+
['gsf', 'application/x-font-ghostscript'],
|
|
417
|
+
['gsheet', 'application/vnd.google-apps.spreadsheet'],
|
|
418
|
+
['gslides', 'application/vnd.google-apps.presentation'],
|
|
419
|
+
['gtar', 'application/x-gtar'],
|
|
420
|
+
['gtm', 'application/vnd.groove-tool-message'],
|
|
421
|
+
['gtw', 'model/vnd.gtw'],
|
|
422
|
+
['gv', 'text/vnd.graphviz'],
|
|
423
|
+
['gxf', 'application/gxf'],
|
|
424
|
+
['gxt', 'application/vnd.geonext'],
|
|
425
|
+
['gz', 'application/gzip'],
|
|
426
|
+
['gzip', 'application/gzip'],
|
|
427
|
+
['h', 'text/x-c'],
|
|
428
|
+
['h261', 'video/h261'],
|
|
429
|
+
['h263', 'video/h263'],
|
|
430
|
+
['h264', 'video/h264'],
|
|
431
|
+
['hal', 'application/vnd.hal+xml'],
|
|
432
|
+
['hbci', 'application/vnd.hbci'],
|
|
433
|
+
['hbs', 'text/x-handlebars-template'],
|
|
434
|
+
['hdd', 'application/x-virtualbox-hdd'],
|
|
435
|
+
['hdf', 'application/x-hdf'],
|
|
436
|
+
['heic', 'image/heic'],
|
|
437
|
+
['heics', 'image/heic-sequence'],
|
|
438
|
+
['heif', 'image/heif'],
|
|
439
|
+
['heifs', 'image/heif-sequence'],
|
|
440
|
+
['hej2', 'image/hej2k'],
|
|
441
|
+
['held', 'application/atsc-held+xml'],
|
|
442
|
+
['hh', 'text/x-c'],
|
|
443
|
+
['hjson', 'application/hjson'],
|
|
444
|
+
['hlp', 'application/winhlp'],
|
|
445
|
+
['hpgl', 'application/vnd.hp-hpgl'],
|
|
446
|
+
['hpid', 'application/vnd.hp-hpid'],
|
|
447
|
+
['hps', 'application/vnd.hp-hps'],
|
|
448
|
+
['hqx', 'application/mac-binhex40'],
|
|
449
|
+
['hsj2', 'image/hsj2'],
|
|
450
|
+
['htc', 'text/x-component'],
|
|
451
|
+
['htke', 'application/vnd.kenameaapp'],
|
|
452
|
+
['htm', 'text/html'],
|
|
453
|
+
['html', 'text/html'],
|
|
454
|
+
['hvd', 'application/vnd.yamaha.hv-dic'],
|
|
455
|
+
['hvp', 'application/vnd.yamaha.hv-voice'],
|
|
456
|
+
['hvs', 'application/vnd.yamaha.hv-script'],
|
|
457
|
+
['i2g', 'application/vnd.intergeo'],
|
|
458
|
+
['icc', 'application/vnd.iccprofile'],
|
|
459
|
+
['ice', 'x-conference/x-cooltalk'],
|
|
460
|
+
['icm', 'application/vnd.iccprofile'],
|
|
461
|
+
['ico', 'image/x-icon'],
|
|
462
|
+
['ics', 'text/calendar'],
|
|
463
|
+
['ief', 'image/ief'],
|
|
464
|
+
['ifb', 'text/calendar'],
|
|
465
|
+
['ifm', 'application/vnd.shana.informed.formdata'],
|
|
466
|
+
['iges', 'model/iges'],
|
|
467
|
+
['igl', 'application/vnd.igloader'],
|
|
468
|
+
['igm', 'application/vnd.insors.igm'],
|
|
469
|
+
['igs', 'model/iges'],
|
|
470
|
+
['igx', 'application/vnd.micrografx.igx'],
|
|
471
|
+
['iif', 'application/vnd.shana.informed.interchange'],
|
|
472
|
+
['img', 'application/octet-stream'],
|
|
473
|
+
['imp', 'application/vnd.accpac.simply.imp'],
|
|
474
|
+
['ims', 'application/vnd.ms-ims'],
|
|
475
|
+
['in', 'text/plain'],
|
|
476
|
+
['ini', 'text/plain'],
|
|
477
|
+
['ink', 'application/inkml+xml'],
|
|
478
|
+
['inkml', 'application/inkml+xml'],
|
|
479
|
+
['install', 'application/x-install-instructions'],
|
|
480
|
+
['iota', 'application/vnd.astraea-software.iota'],
|
|
481
|
+
['ipfix', 'application/ipfix'],
|
|
482
|
+
['ipk', 'application/vnd.shana.informed.package'],
|
|
483
|
+
['irm', 'application/vnd.ibm.rights-management'],
|
|
484
|
+
['irp', 'application/vnd.irepository.package+xml'],
|
|
485
|
+
['iso', 'application/x-iso9660-image'],
|
|
486
|
+
['itp', 'application/vnd.shana.informed.formtemplate'],
|
|
487
|
+
['its', 'application/its+xml'],
|
|
488
|
+
['ivp', 'application/vnd.immervision-ivp'],
|
|
489
|
+
['ivu', 'application/vnd.immervision-ivu'],
|
|
490
|
+
['jad', 'text/vnd.sun.j2me.app-descriptor'],
|
|
491
|
+
['jade', 'text/jade'],
|
|
492
|
+
['jam', 'application/vnd.jam'],
|
|
493
|
+
['jar', 'application/java-archive'],
|
|
494
|
+
['jardiff', 'application/x-java-archive-diff'],
|
|
495
|
+
['java', 'text/x-java-source'],
|
|
496
|
+
['jhc', 'image/jphc'],
|
|
497
|
+
['jisp', 'application/vnd.jisp'],
|
|
498
|
+
['jls', 'image/jls'],
|
|
499
|
+
['jlt', 'application/vnd.hp-jlyt'],
|
|
500
|
+
['jng', 'image/x-jng'],
|
|
501
|
+
['jnlp', 'application/x-java-jnlp-file'],
|
|
502
|
+
['joda', 'application/vnd.joost.joda-archive'],
|
|
503
|
+
['jp2', 'image/jp2'],
|
|
504
|
+
['jpe', 'image/jpeg'],
|
|
505
|
+
['jpeg', 'image/jpeg'],
|
|
506
|
+
['jpf', 'image/jpx'],
|
|
507
|
+
['jpg', 'image/jpeg'],
|
|
508
|
+
['jpg2', 'image/jp2'],
|
|
509
|
+
['jpgm', 'video/jpm'],
|
|
510
|
+
['jpgv', 'video/jpeg'],
|
|
511
|
+
['jph', 'image/jph'],
|
|
512
|
+
['jpm', 'video/jpm'],
|
|
513
|
+
['jpx', 'image/jpx'],
|
|
514
|
+
['js', 'application/javascript'],
|
|
515
|
+
['json', 'application/json'],
|
|
516
|
+
['json5', 'application/json5'],
|
|
517
|
+
['jsonld', 'application/ld+json'],
|
|
518
|
+
// https://jsonlines.org/
|
|
519
|
+
['jsonl', 'application/jsonl'],
|
|
520
|
+
['jsonml', 'application/jsonml+json'],
|
|
521
|
+
['jsx', 'text/jsx'],
|
|
522
|
+
['jxr', 'image/jxr'],
|
|
523
|
+
['jxra', 'image/jxra'],
|
|
524
|
+
['jxrs', 'image/jxrs'],
|
|
525
|
+
['jxs', 'image/jxs'],
|
|
526
|
+
['jxsc', 'image/jxsc'],
|
|
527
|
+
['jxsi', 'image/jxsi'],
|
|
528
|
+
['jxss', 'image/jxss'],
|
|
529
|
+
['kar', 'audio/midi'],
|
|
530
|
+
['karbon', 'application/vnd.kde.karbon'],
|
|
531
|
+
['kdb', 'application/octet-stream'],
|
|
532
|
+
['kdbx', 'application/x-keepass2'],
|
|
533
|
+
['key', 'application/x-iwork-keynote-sffkey'],
|
|
534
|
+
['kfo', 'application/vnd.kde.kformula'],
|
|
535
|
+
['kia', 'application/vnd.kidspiration'],
|
|
536
|
+
['kml', 'application/vnd.google-earth.kml+xml'],
|
|
537
|
+
['kmz', 'application/vnd.google-earth.kmz'],
|
|
538
|
+
['kne', 'application/vnd.kinar'],
|
|
539
|
+
['knp', 'application/vnd.kinar'],
|
|
540
|
+
['kon', 'application/vnd.kde.kontour'],
|
|
541
|
+
['kpr', 'application/vnd.kde.kpresenter'],
|
|
542
|
+
['kpt', 'application/vnd.kde.kpresenter'],
|
|
543
|
+
['kpxx', 'application/vnd.ds-keypoint'],
|
|
544
|
+
['ksp', 'application/vnd.kde.kspread'],
|
|
545
|
+
['ktr', 'application/vnd.kahootz'],
|
|
546
|
+
['ktx', 'image/ktx'],
|
|
547
|
+
['ktx2', 'image/ktx2'],
|
|
548
|
+
['ktz', 'application/vnd.kahootz'],
|
|
549
|
+
['kwd', 'application/vnd.kde.kword'],
|
|
550
|
+
['kwt', 'application/vnd.kde.kword'],
|
|
551
|
+
['lasxml', 'application/vnd.las.las+xml'],
|
|
552
|
+
['latex', 'application/x-latex'],
|
|
553
|
+
['lbd', 'application/vnd.llamagraphics.life-balance.desktop'],
|
|
554
|
+
['lbe', 'application/vnd.llamagraphics.life-balance.exchange+xml'],
|
|
555
|
+
['les', 'application/vnd.hhe.lesson-player'],
|
|
556
|
+
['less', 'text/less'],
|
|
557
|
+
['lgr', 'application/lgr+xml'],
|
|
558
|
+
['lha', 'application/octet-stream'],
|
|
559
|
+
['link66', 'application/vnd.route66.link66+xml'],
|
|
560
|
+
['list', 'text/plain'],
|
|
561
|
+
['list3820', 'application/vnd.ibm.modcap'],
|
|
562
|
+
['listafp', 'application/vnd.ibm.modcap'],
|
|
563
|
+
['litcoffee', 'text/coffeescript'],
|
|
564
|
+
['lnk', 'application/x-ms-shortcut'],
|
|
565
|
+
['log', 'text/plain'],
|
|
566
|
+
['lostxml', 'application/lost+xml'],
|
|
567
|
+
['lrf', 'application/octet-stream'],
|
|
568
|
+
['lrm', 'application/vnd.ms-lrm'],
|
|
569
|
+
['ltf', 'application/vnd.frogans.ltf'],
|
|
570
|
+
['lua', 'text/x-lua'],
|
|
571
|
+
['luac', 'application/x-lua-bytecode'],
|
|
572
|
+
['lvp', 'audio/vnd.lucent.voice'],
|
|
573
|
+
['lwp', 'application/vnd.lotus-wordpro'],
|
|
574
|
+
['lzh', 'application/octet-stream'],
|
|
575
|
+
['m1v', 'video/mpeg'],
|
|
576
|
+
['m2a', 'audio/mpeg'],
|
|
577
|
+
['m2v', 'video/mpeg'],
|
|
578
|
+
['m3a', 'audio/mpeg'],
|
|
579
|
+
['m3u', 'text/plain'],
|
|
580
|
+
['m3u8', 'application/vnd.apple.mpegurl'],
|
|
581
|
+
['m4a', 'audio/x-m4a'],
|
|
582
|
+
['m4p', 'application/mp4'],
|
|
583
|
+
['m4s', 'video/iso.segment'],
|
|
584
|
+
['m4u', 'application/vnd.mpegurl'],
|
|
585
|
+
['m4v', 'video/x-m4v'],
|
|
586
|
+
['m13', 'application/x-msmediaview'],
|
|
587
|
+
['m14', 'application/x-msmediaview'],
|
|
588
|
+
['m21', 'application/mp21'],
|
|
589
|
+
['ma', 'application/mathematica'],
|
|
590
|
+
['mads', 'application/mads+xml'],
|
|
591
|
+
['maei', 'application/mmt-aei+xml'],
|
|
592
|
+
['mag', 'application/vnd.ecowin.chart'],
|
|
593
|
+
['maker', 'application/vnd.framemaker'],
|
|
594
|
+
['man', 'text/troff'],
|
|
595
|
+
['manifest', 'text/cache-manifest'],
|
|
596
|
+
['map', 'application/json'],
|
|
597
|
+
['mar', 'application/octet-stream'],
|
|
598
|
+
['markdown', 'text/markdown'],
|
|
599
|
+
['mathml', 'application/mathml+xml'],
|
|
600
|
+
['mb', 'application/mathematica'],
|
|
601
|
+
['mbk', 'application/vnd.mobius.mbk'],
|
|
602
|
+
['mbox', 'application/mbox'],
|
|
603
|
+
['mc1', 'application/vnd.medcalcdata'],
|
|
604
|
+
['mcd', 'application/vnd.mcd'],
|
|
605
|
+
['mcurl', 'text/vnd.curl.mcurl'],
|
|
606
|
+
['md', 'text/markdown'],
|
|
607
|
+
['mdb', 'application/x-msaccess'],
|
|
608
|
+
['mdi', 'image/vnd.ms-modi'],
|
|
609
|
+
['mdx', 'text/mdx'],
|
|
610
|
+
['me', 'text/troff'],
|
|
611
|
+
['mesh', 'model/mesh'],
|
|
612
|
+
['meta4', 'application/metalink4+xml'],
|
|
613
|
+
['metalink', 'application/metalink+xml'],
|
|
614
|
+
['mets', 'application/mets+xml'],
|
|
615
|
+
['mfm', 'application/vnd.mfmp'],
|
|
616
|
+
['mft', 'application/rpki-manifest'],
|
|
617
|
+
['mgp', 'application/vnd.osgeo.mapguide.package'],
|
|
618
|
+
['mgz', 'application/vnd.proteus.magazine'],
|
|
619
|
+
['mid', 'audio/midi'],
|
|
620
|
+
['midi', 'audio/midi'],
|
|
621
|
+
['mie', 'application/x-mie'],
|
|
622
|
+
['mif', 'application/vnd.mif'],
|
|
623
|
+
['mime', 'message/rfc822'],
|
|
624
|
+
['mj2', 'video/mj2'],
|
|
625
|
+
['mjp2', 'video/mj2'],
|
|
626
|
+
['mjs', 'application/javascript'],
|
|
627
|
+
['mk3d', 'video/x-matroska'],
|
|
628
|
+
['mka', 'audio/x-matroska'],
|
|
629
|
+
['mkd', 'text/x-markdown'],
|
|
630
|
+
['mks', 'video/x-matroska'],
|
|
631
|
+
['mkv', 'video/x-matroska'],
|
|
632
|
+
['mlp', 'application/vnd.dolby.mlp'],
|
|
633
|
+
['mmd', 'application/vnd.chipnuts.karaoke-mmd'],
|
|
634
|
+
['mmf', 'application/vnd.smaf'],
|
|
635
|
+
['mml', 'text/mathml'],
|
|
636
|
+
['mmr', 'image/vnd.fujixerox.edmics-mmr'],
|
|
637
|
+
['mng', 'video/x-mng'],
|
|
638
|
+
['mny', 'application/x-msmoney'],
|
|
639
|
+
['mobi', 'application/x-mobipocket-ebook'],
|
|
640
|
+
['mods', 'application/mods+xml'],
|
|
641
|
+
['mov', 'video/quicktime'],
|
|
642
|
+
['movie', 'video/x-sgi-movie'],
|
|
643
|
+
['mp2', 'audio/mpeg'],
|
|
644
|
+
['mp2a', 'audio/mpeg'],
|
|
645
|
+
['mp3', 'audio/mpeg'],
|
|
646
|
+
['mp4', 'video/mp4'],
|
|
647
|
+
['mp4a', 'audio/mp4'],
|
|
648
|
+
['mp4s', 'application/mp4'],
|
|
649
|
+
['mp4v', 'video/mp4'],
|
|
650
|
+
['mp21', 'application/mp21'],
|
|
651
|
+
['mpc', 'application/vnd.mophun.certificate'],
|
|
652
|
+
['mpd', 'application/dash+xml'],
|
|
653
|
+
['mpe', 'video/mpeg'],
|
|
654
|
+
['mpeg', 'video/mpeg'],
|
|
655
|
+
['mpg', 'video/mpeg'],
|
|
656
|
+
['mpg4', 'video/mp4'],
|
|
657
|
+
['mpga', 'audio/mpeg'],
|
|
658
|
+
['mpkg', 'application/vnd.apple.installer+xml'],
|
|
659
|
+
['mpm', 'application/vnd.blueice.multipass'],
|
|
660
|
+
['mpn', 'application/vnd.mophun.application'],
|
|
661
|
+
['mpp', 'application/vnd.ms-project'],
|
|
662
|
+
['mpt', 'application/vnd.ms-project'],
|
|
663
|
+
['mpy', 'application/vnd.ibm.minipay'],
|
|
664
|
+
['mqy', 'application/vnd.mobius.mqy'],
|
|
665
|
+
['mrc', 'application/marc'],
|
|
666
|
+
['mrcx', 'application/marcxml+xml'],
|
|
667
|
+
['ms', 'text/troff'],
|
|
668
|
+
['mscml', 'application/mediaservercontrol+xml'],
|
|
669
|
+
['mseed', 'application/vnd.fdsn.mseed'],
|
|
670
|
+
['mseq', 'application/vnd.mseq'],
|
|
671
|
+
['msf', 'application/vnd.epson.msf'],
|
|
672
|
+
['msg', 'application/vnd.ms-outlook'],
|
|
673
|
+
['msh', 'model/mesh'],
|
|
674
|
+
['msi', 'application/x-msdownload'],
|
|
675
|
+
['msl', 'application/vnd.mobius.msl'],
|
|
676
|
+
['msm', 'application/octet-stream'],
|
|
677
|
+
['msp', 'application/octet-stream'],
|
|
678
|
+
['msty', 'application/vnd.muvee.style'],
|
|
679
|
+
['mtl', 'model/mtl'],
|
|
680
|
+
['mts', 'model/vnd.mts'],
|
|
681
|
+
['mus', 'application/vnd.musician'],
|
|
682
|
+
['musd', 'application/mmt-usd+xml'],
|
|
683
|
+
['musicxml', 'application/vnd.recordare.musicxml+xml'],
|
|
684
|
+
['mvb', 'application/x-msmediaview'],
|
|
685
|
+
['mvt', 'application/vnd.mapbox-vector-tile'],
|
|
686
|
+
['mwf', 'application/vnd.mfer'],
|
|
687
|
+
['mxf', 'application/mxf'],
|
|
688
|
+
['mxl', 'application/vnd.recordare.musicxml'],
|
|
689
|
+
['mxmf', 'audio/mobile-xmf'],
|
|
690
|
+
['mxml', 'application/xv+xml'],
|
|
691
|
+
['mxs', 'application/vnd.triscape.mxs'],
|
|
692
|
+
['mxu', 'video/vnd.mpegurl'],
|
|
693
|
+
['n-gage', 'application/vnd.nokia.n-gage.symbian.install'],
|
|
694
|
+
['n3', 'text/n3'],
|
|
695
|
+
['nb', 'application/mathematica'],
|
|
696
|
+
['nbp', 'application/vnd.wolfram.player'],
|
|
697
|
+
['nc', 'application/x-netcdf'],
|
|
698
|
+
['ncx', 'application/x-dtbncx+xml'],
|
|
699
|
+
['nfo', 'text/x-nfo'],
|
|
700
|
+
['ngdat', 'application/vnd.nokia.n-gage.data'],
|
|
701
|
+
['nitf', 'application/vnd.nitf'],
|
|
702
|
+
['nlu', 'application/vnd.neurolanguage.nlu'],
|
|
703
|
+
['nml', 'application/vnd.enliven'],
|
|
704
|
+
['nnd', 'application/vnd.noblenet-directory'],
|
|
705
|
+
['nns', 'application/vnd.noblenet-sealer'],
|
|
706
|
+
['nnw', 'application/vnd.noblenet-web'],
|
|
707
|
+
['npx', 'image/vnd.net-fpx'],
|
|
708
|
+
['nq', 'application/n-quads'],
|
|
709
|
+
['nsc', 'application/x-conference'],
|
|
710
|
+
['nsf', 'application/vnd.lotus-notes'],
|
|
711
|
+
['nt', 'application/n-triples'],
|
|
712
|
+
['ntf', 'application/vnd.nitf'],
|
|
713
|
+
['numbers', 'application/x-iwork-numbers-sffnumbers'],
|
|
714
|
+
['nzb', 'application/x-nzb'],
|
|
715
|
+
['oa2', 'application/vnd.fujitsu.oasys2'],
|
|
716
|
+
['oa3', 'application/vnd.fujitsu.oasys3'],
|
|
717
|
+
['oas', 'application/vnd.fujitsu.oasys'],
|
|
718
|
+
['obd', 'application/x-msbinder'],
|
|
719
|
+
['obgx', 'application/vnd.openblox.game+xml'],
|
|
720
|
+
['obj', 'model/obj'],
|
|
721
|
+
['oda', 'application/oda'],
|
|
722
|
+
['odb', 'application/vnd.oasis.opendocument.database'],
|
|
723
|
+
['odc', 'application/vnd.oasis.opendocument.chart'],
|
|
724
|
+
['odf', 'application/vnd.oasis.opendocument.formula'],
|
|
725
|
+
['odft', 'application/vnd.oasis.opendocument.formula-template'],
|
|
726
|
+
['odg', 'application/vnd.oasis.opendocument.graphics'],
|
|
727
|
+
['odi', 'application/vnd.oasis.opendocument.image'],
|
|
728
|
+
['odm', 'application/vnd.oasis.opendocument.text-master'],
|
|
729
|
+
['odp', 'application/vnd.oasis.opendocument.presentation'],
|
|
730
|
+
['ods', 'application/vnd.oasis.opendocument.spreadsheet'],
|
|
731
|
+
['odt', 'application/vnd.oasis.opendocument.text'],
|
|
732
|
+
['oga', 'audio/ogg'],
|
|
733
|
+
['ogex', 'model/vnd.opengex'],
|
|
734
|
+
['ogg', 'audio/ogg'],
|
|
735
|
+
['ogv', 'video/ogg'],
|
|
736
|
+
['ogx', 'application/ogg'],
|
|
737
|
+
['omdoc', 'application/omdoc+xml'],
|
|
738
|
+
['onepkg', 'application/onenote'],
|
|
739
|
+
['onetmp', 'application/onenote'],
|
|
740
|
+
['onetoc', 'application/onenote'],
|
|
741
|
+
['onetoc2', 'application/onenote'],
|
|
742
|
+
['opf', 'application/oebps-package+xml'],
|
|
743
|
+
['opml', 'text/x-opml'],
|
|
744
|
+
['oprc', 'application/vnd.palm'],
|
|
745
|
+
['opus', 'audio/ogg'],
|
|
746
|
+
['org', 'text/x-org'],
|
|
747
|
+
['osf', 'application/vnd.yamaha.openscoreformat'],
|
|
748
|
+
['osfpvg', 'application/vnd.yamaha.openscoreformat.osfpvg+xml'],
|
|
749
|
+
['osm', 'application/vnd.openstreetmap.data+xml'],
|
|
750
|
+
['otc', 'application/vnd.oasis.opendocument.chart-template'],
|
|
751
|
+
['otf', 'font/otf'],
|
|
752
|
+
['otg', 'application/vnd.oasis.opendocument.graphics-template'],
|
|
753
|
+
['oth', 'application/vnd.oasis.opendocument.text-web'],
|
|
754
|
+
['oti', 'application/vnd.oasis.opendocument.image-template'],
|
|
755
|
+
['otp', 'application/vnd.oasis.opendocument.presentation-template'],
|
|
756
|
+
['ots', 'application/vnd.oasis.opendocument.spreadsheet-template'],
|
|
757
|
+
['ott', 'application/vnd.oasis.opendocument.text-template'],
|
|
758
|
+
['ova', 'application/x-virtualbox-ova'],
|
|
759
|
+
['ovf', 'application/x-virtualbox-ovf'],
|
|
760
|
+
['owl', 'application/rdf+xml'],
|
|
761
|
+
['oxps', 'application/oxps'],
|
|
762
|
+
['oxt', 'application/vnd.openofficeorg.extension'],
|
|
763
|
+
['p', 'text/x-pascal'],
|
|
764
|
+
['p7a', 'application/x-pkcs7-signature'],
|
|
765
|
+
['p7b', 'application/x-pkcs7-certificates'],
|
|
766
|
+
['p7c', 'application/pkcs7-mime'],
|
|
767
|
+
['p7m', 'application/pkcs7-mime'],
|
|
768
|
+
['p7r', 'application/x-pkcs7-certreqresp'],
|
|
769
|
+
['p7s', 'application/pkcs7-signature'],
|
|
770
|
+
['p8', 'application/pkcs8'],
|
|
771
|
+
['p10', 'application/x-pkcs10'],
|
|
772
|
+
['p12', 'application/x-pkcs12'],
|
|
773
|
+
['pac', 'application/x-ns-proxy-autoconfig'],
|
|
774
|
+
['pages', 'application/x-iwork-pages-sffpages'],
|
|
775
|
+
['pas', 'text/x-pascal'],
|
|
776
|
+
['paw', 'application/vnd.pawaafile'],
|
|
777
|
+
['pbd', 'application/vnd.powerbuilder6'],
|
|
778
|
+
['pbm', 'image/x-portable-bitmap'],
|
|
779
|
+
['pcap', 'application/vnd.tcpdump.pcap'],
|
|
780
|
+
['pcf', 'application/x-font-pcf'],
|
|
781
|
+
['pcl', 'application/vnd.hp-pcl'],
|
|
782
|
+
['pclxl', 'application/vnd.hp-pclxl'],
|
|
783
|
+
['pct', 'image/x-pict'],
|
|
784
|
+
['pcurl', 'application/vnd.curl.pcurl'],
|
|
785
|
+
['pcx', 'image/x-pcx'],
|
|
786
|
+
['pdb', 'application/x-pilot'],
|
|
787
|
+
['pde', 'text/x-processing'],
|
|
788
|
+
['pdf', 'application/pdf'],
|
|
789
|
+
['pem', 'application/x-x509-user-cert'],
|
|
790
|
+
['pfa', 'application/x-font-type1'],
|
|
791
|
+
['pfb', 'application/x-font-type1'],
|
|
792
|
+
['pfm', 'application/x-font-type1'],
|
|
793
|
+
['pfr', 'application/font-tdpfr'],
|
|
794
|
+
['pfx', 'application/x-pkcs12'],
|
|
795
|
+
['pgm', 'image/x-portable-graymap'],
|
|
796
|
+
['pgn', 'application/x-chess-pgn'],
|
|
797
|
+
['pgp', 'application/pgp'],
|
|
798
|
+
['php', 'application/x-httpd-php'],
|
|
799
|
+
['php3', 'application/x-httpd-php'],
|
|
800
|
+
['php4', 'application/x-httpd-php'],
|
|
801
|
+
['phps', 'application/x-httpd-php-source'],
|
|
802
|
+
['phtml', 'application/x-httpd-php'],
|
|
803
|
+
['pic', 'image/x-pict'],
|
|
804
|
+
['pkg', 'application/octet-stream'],
|
|
805
|
+
['pki', 'application/pkixcmp'],
|
|
806
|
+
['pkipath', 'application/pkix-pkipath'],
|
|
807
|
+
['pkpass', 'application/vnd.apple.pkpass'],
|
|
808
|
+
['pl', 'application/x-perl'],
|
|
809
|
+
['plb', 'application/vnd.3gpp.pic-bw-large'],
|
|
810
|
+
['plc', 'application/vnd.mobius.plc'],
|
|
811
|
+
['plf', 'application/vnd.pocketlearn'],
|
|
812
|
+
['pls', 'application/pls+xml'],
|
|
813
|
+
['pm', 'application/x-perl'],
|
|
814
|
+
['pml', 'application/vnd.ctc-posml'],
|
|
815
|
+
['png', 'image/png'],
|
|
816
|
+
['pnm', 'image/x-portable-anymap'],
|
|
817
|
+
['portpkg', 'application/vnd.macports.portpkg'],
|
|
818
|
+
['pot', 'application/vnd.ms-powerpoint'],
|
|
819
|
+
['potm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'],
|
|
820
|
+
['potx', 'application/vnd.openxmlformats-officedocument.presentationml.template'],
|
|
821
|
+
['ppa', 'application/vnd.ms-powerpoint'],
|
|
822
|
+
['ppam', 'application/vnd.ms-powerpoint.addin.macroEnabled.12'],
|
|
823
|
+
['ppd', 'application/vnd.cups-ppd'],
|
|
824
|
+
['ppm', 'image/x-portable-pixmap'],
|
|
825
|
+
['pps', 'application/vnd.ms-powerpoint'],
|
|
826
|
+
['ppsm', 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'],
|
|
827
|
+
['ppsx', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'],
|
|
828
|
+
['ppt', 'application/powerpoint'],
|
|
829
|
+
['pptm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'],
|
|
830
|
+
['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],
|
|
831
|
+
['pqa', 'application/vnd.palm'],
|
|
832
|
+
['prc', 'application/x-pilot'],
|
|
833
|
+
['pre', 'application/vnd.lotus-freelance'],
|
|
834
|
+
['prf', 'application/pics-rules'],
|
|
835
|
+
['provx', 'application/provenance+xml'],
|
|
836
|
+
['ps', 'application/postscript'],
|
|
837
|
+
['psb', 'application/vnd.3gpp.pic-bw-small'],
|
|
838
|
+
['psd', 'application/x-photoshop'],
|
|
839
|
+
['psf', 'application/x-font-linux-psf'],
|
|
840
|
+
['pskcxml', 'application/pskc+xml'],
|
|
841
|
+
['pti', 'image/prs.pti'],
|
|
842
|
+
['ptid', 'application/vnd.pvi.ptid1'],
|
|
843
|
+
['pub', 'application/x-mspublisher'],
|
|
844
|
+
['pvb', 'application/vnd.3gpp.pic-bw-var'],
|
|
845
|
+
['pwn', 'application/vnd.3m.post-it-notes'],
|
|
846
|
+
['pya', 'audio/vnd.ms-playready.media.pya'],
|
|
847
|
+
['pyv', 'video/vnd.ms-playready.media.pyv'],
|
|
848
|
+
['qam', 'application/vnd.epson.quickanime'],
|
|
849
|
+
['qbo', 'application/vnd.intu.qbo'],
|
|
850
|
+
['qfx', 'application/vnd.intu.qfx'],
|
|
851
|
+
['qps', 'application/vnd.publishare-delta-tree'],
|
|
852
|
+
['qt', 'video/quicktime'],
|
|
853
|
+
['qwd', 'application/vnd.quark.quarkxpress'],
|
|
854
|
+
['qwt', 'application/vnd.quark.quarkxpress'],
|
|
855
|
+
['qxb', 'application/vnd.quark.quarkxpress'],
|
|
856
|
+
['qxd', 'application/vnd.quark.quarkxpress'],
|
|
857
|
+
['qxl', 'application/vnd.quark.quarkxpress'],
|
|
858
|
+
['qxt', 'application/vnd.quark.quarkxpress'],
|
|
859
|
+
['ra', 'audio/x-realaudio'],
|
|
860
|
+
['ram', 'audio/x-pn-realaudio'],
|
|
861
|
+
['raml', 'application/raml+yaml'],
|
|
862
|
+
['rapd', 'application/route-apd+xml'],
|
|
863
|
+
['rar', 'application/x-rar'],
|
|
864
|
+
['ras', 'image/x-cmu-raster'],
|
|
865
|
+
['rcprofile', 'application/vnd.ipunplugged.rcprofile'],
|
|
866
|
+
['rdf', 'application/rdf+xml'],
|
|
867
|
+
['rdz', 'application/vnd.data-vision.rdz'],
|
|
868
|
+
['relo', 'application/p2p-overlay+xml'],
|
|
869
|
+
['rep', 'application/vnd.businessobjects'],
|
|
870
|
+
['res', 'application/x-dtbresource+xml'],
|
|
871
|
+
['rgb', 'image/x-rgb'],
|
|
872
|
+
['rif', 'application/reginfo+xml'],
|
|
873
|
+
['rip', 'audio/vnd.rip'],
|
|
874
|
+
['ris', 'application/x-research-info-systems'],
|
|
875
|
+
['rl', 'application/resource-lists+xml'],
|
|
876
|
+
['rlc', 'image/vnd.fujixerox.edmics-rlc'],
|
|
877
|
+
['rld', 'application/resource-lists-diff+xml'],
|
|
878
|
+
['rm', 'audio/x-pn-realaudio'],
|
|
879
|
+
['rmi', 'audio/midi'],
|
|
880
|
+
['rmp', 'audio/x-pn-realaudio-plugin'],
|
|
881
|
+
['rms', 'application/vnd.jcp.javame.midlet-rms'],
|
|
882
|
+
['rmvb', 'application/vnd.rn-realmedia-vbr'],
|
|
883
|
+
['rnc', 'application/relax-ng-compact-syntax'],
|
|
884
|
+
['rng', 'application/xml'],
|
|
885
|
+
['roa', 'application/rpki-roa'],
|
|
886
|
+
['roff', 'text/troff'],
|
|
887
|
+
['rp9', 'application/vnd.cloanto.rp9'],
|
|
888
|
+
['rpm', 'audio/x-pn-realaudio-plugin'],
|
|
889
|
+
['rpss', 'application/vnd.nokia.radio-presets'],
|
|
890
|
+
['rpst', 'application/vnd.nokia.radio-preset'],
|
|
891
|
+
['rq', 'application/sparql-query'],
|
|
892
|
+
['rs', 'application/rls-services+xml'],
|
|
893
|
+
['rsa', 'application/x-pkcs7'],
|
|
894
|
+
['rsat', 'application/atsc-rsat+xml'],
|
|
895
|
+
['rsd', 'application/rsd+xml'],
|
|
896
|
+
['rsheet', 'application/urc-ressheet+xml'],
|
|
897
|
+
['rss', 'application/rss+xml'],
|
|
898
|
+
['rtf', 'text/rtf'],
|
|
899
|
+
['rtx', 'text/richtext'],
|
|
900
|
+
['run', 'application/x-makeself'],
|
|
901
|
+
['rusd', 'application/route-usd+xml'],
|
|
902
|
+
['rv', 'video/vnd.rn-realvideo'],
|
|
903
|
+
['s', 'text/x-asm'],
|
|
904
|
+
['s3m', 'audio/s3m'],
|
|
905
|
+
['saf', 'application/vnd.yamaha.smaf-audio'],
|
|
906
|
+
['sass', 'text/x-sass'],
|
|
907
|
+
['sbml', 'application/sbml+xml'],
|
|
908
|
+
['sc', 'application/vnd.ibm.secure-container'],
|
|
909
|
+
['scd', 'application/x-msschedule'],
|
|
910
|
+
['scm', 'application/vnd.lotus-screencam'],
|
|
911
|
+
['scq', 'application/scvp-cv-request'],
|
|
912
|
+
['scs', 'application/scvp-cv-response'],
|
|
913
|
+
['scss', 'text/x-scss'],
|
|
914
|
+
['scurl', 'text/vnd.curl.scurl'],
|
|
915
|
+
['sda', 'application/vnd.stardivision.draw'],
|
|
916
|
+
['sdc', 'application/vnd.stardivision.calc'],
|
|
917
|
+
['sdd', 'application/vnd.stardivision.impress'],
|
|
918
|
+
['sdkd', 'application/vnd.solent.sdkm+xml'],
|
|
919
|
+
['sdkm', 'application/vnd.solent.sdkm+xml'],
|
|
920
|
+
['sdp', 'application/sdp'],
|
|
921
|
+
['sdw', 'application/vnd.stardivision.writer'],
|
|
922
|
+
['sea', 'application/octet-stream'],
|
|
923
|
+
['see', 'application/vnd.seemail'],
|
|
924
|
+
['seed', 'application/vnd.fdsn.seed'],
|
|
925
|
+
['sema', 'application/vnd.sema'],
|
|
926
|
+
['semd', 'application/vnd.semd'],
|
|
927
|
+
['semf', 'application/vnd.semf'],
|
|
928
|
+
['senmlx', 'application/senml+xml'],
|
|
929
|
+
['sensmlx', 'application/sensml+xml'],
|
|
930
|
+
['ser', 'application/java-serialized-object'],
|
|
931
|
+
['setpay', 'application/set-payment-initiation'],
|
|
932
|
+
['setreg', 'application/set-registration-initiation'],
|
|
933
|
+
['sfd-hdstx', 'application/vnd.hydrostatix.sof-data'],
|
|
934
|
+
['sfs', 'application/vnd.spotfire.sfs'],
|
|
935
|
+
['sfv', 'text/x-sfv'],
|
|
936
|
+
['sgi', 'image/sgi'],
|
|
937
|
+
['sgl', 'application/vnd.stardivision.writer-global'],
|
|
938
|
+
['sgm', 'text/sgml'],
|
|
939
|
+
['sgml', 'text/sgml'],
|
|
940
|
+
['sh', 'application/x-sh'],
|
|
941
|
+
['shar', 'application/x-shar'],
|
|
942
|
+
['shex', 'text/shex'],
|
|
943
|
+
['shf', 'application/shf+xml'],
|
|
944
|
+
['shtml', 'text/html'],
|
|
945
|
+
['sid', 'image/x-mrsid-image'],
|
|
946
|
+
['sieve', 'application/sieve'],
|
|
947
|
+
['sig', 'application/pgp-signature'],
|
|
948
|
+
['sil', 'audio/silk'],
|
|
949
|
+
['silo', 'model/mesh'],
|
|
950
|
+
['sis', 'application/vnd.symbian.install'],
|
|
951
|
+
['sisx', 'application/vnd.symbian.install'],
|
|
952
|
+
['sit', 'application/x-stuffit'],
|
|
953
|
+
['sitx', 'application/x-stuffitx'],
|
|
954
|
+
['siv', 'application/sieve'],
|
|
955
|
+
['skd', 'application/vnd.koan'],
|
|
956
|
+
['skm', 'application/vnd.koan'],
|
|
957
|
+
['skp', 'application/vnd.koan'],
|
|
958
|
+
['skt', 'application/vnd.koan'],
|
|
959
|
+
['sldm', 'application/vnd.ms-powerpoint.slide.macroenabled.12'],
|
|
960
|
+
['sldx', 'application/vnd.openxmlformats-officedocument.presentationml.slide'],
|
|
961
|
+
['slim', 'text/slim'],
|
|
962
|
+
['slm', 'text/slim'],
|
|
963
|
+
['sls', 'application/route-s-tsid+xml'],
|
|
964
|
+
['slt', 'application/vnd.epson.salt'],
|
|
965
|
+
['sm', 'application/vnd.stepmania.stepchart'],
|
|
966
|
+
['smf', 'application/vnd.stardivision.math'],
|
|
967
|
+
['smi', 'application/smil'],
|
|
968
|
+
['smil', 'application/smil'],
|
|
969
|
+
['smv', 'video/x-smv'],
|
|
970
|
+
['smzip', 'application/vnd.stepmania.package'],
|
|
971
|
+
['snd', 'audio/basic'],
|
|
972
|
+
['snf', 'application/x-font-snf'],
|
|
973
|
+
['so', 'application/octet-stream'],
|
|
974
|
+
['spc', 'application/x-pkcs7-certificates'],
|
|
975
|
+
['spdx', 'text/spdx'],
|
|
976
|
+
['spf', 'application/vnd.yamaha.smaf-phrase'],
|
|
977
|
+
['spl', 'application/x-futuresplash'],
|
|
978
|
+
['spot', 'text/vnd.in3d.spot'],
|
|
979
|
+
['spp', 'application/scvp-vp-response'],
|
|
980
|
+
['spq', 'application/scvp-vp-request'],
|
|
981
|
+
['spx', 'audio/ogg'],
|
|
982
|
+
['sql', 'application/x-sql'],
|
|
983
|
+
['src', 'application/x-wais-source'],
|
|
984
|
+
['srt', 'application/x-subrip'],
|
|
985
|
+
['sru', 'application/sru+xml'],
|
|
986
|
+
['srx', 'application/sparql-results+xml'],
|
|
987
|
+
['ssdl', 'application/ssdl+xml'],
|
|
988
|
+
['sse', 'application/vnd.kodak-descriptor'],
|
|
989
|
+
['ssf', 'application/vnd.epson.ssf'],
|
|
990
|
+
['ssml', 'application/ssml+xml'],
|
|
991
|
+
['sst', 'application/octet-stream'],
|
|
992
|
+
['st', 'application/vnd.sailingtracker.track'],
|
|
993
|
+
['stc', 'application/vnd.sun.xml.calc.template'],
|
|
994
|
+
['std', 'application/vnd.sun.xml.draw.template'],
|
|
995
|
+
['stf', 'application/vnd.wt.stf'],
|
|
996
|
+
['sti', 'application/vnd.sun.xml.impress.template'],
|
|
997
|
+
['stk', 'application/hyperstudio'],
|
|
998
|
+
['stl', 'model/stl'],
|
|
999
|
+
['stpx', 'model/step+xml'],
|
|
1000
|
+
['stpxz', 'model/step-xml+zip'],
|
|
1001
|
+
['stpz', 'model/step+zip'],
|
|
1002
|
+
['str', 'application/vnd.pg.format'],
|
|
1003
|
+
['stw', 'application/vnd.sun.xml.writer.template'],
|
|
1004
|
+
['styl', 'text/stylus'],
|
|
1005
|
+
['stylus', 'text/stylus'],
|
|
1006
|
+
['sub', 'text/vnd.dvb.subtitle'],
|
|
1007
|
+
['sus', 'application/vnd.sus-calendar'],
|
|
1008
|
+
['susp', 'application/vnd.sus-calendar'],
|
|
1009
|
+
['sv4cpio', 'application/x-sv4cpio'],
|
|
1010
|
+
['sv4crc', 'application/x-sv4crc'],
|
|
1011
|
+
['svc', 'application/vnd.dvb.service'],
|
|
1012
|
+
['svd', 'application/vnd.svd'],
|
|
1013
|
+
['svg', 'image/svg+xml'],
|
|
1014
|
+
['svgz', 'image/svg+xml'],
|
|
1015
|
+
['swa', 'application/x-director'],
|
|
1016
|
+
['swf', 'application/x-shockwave-flash'],
|
|
1017
|
+
['swi', 'application/vnd.aristanetworks.swi'],
|
|
1018
|
+
['swidtag', 'application/swid+xml'],
|
|
1019
|
+
['sxc', 'application/vnd.sun.xml.calc'],
|
|
1020
|
+
['sxd', 'application/vnd.sun.xml.draw'],
|
|
1021
|
+
['sxg', 'application/vnd.sun.xml.writer.global'],
|
|
1022
|
+
['sxi', 'application/vnd.sun.xml.impress'],
|
|
1023
|
+
['sxm', 'application/vnd.sun.xml.math'],
|
|
1024
|
+
['sxw', 'application/vnd.sun.xml.writer'],
|
|
1025
|
+
['t', 'text/troff'],
|
|
1026
|
+
['t3', 'application/x-t3vm-image'],
|
|
1027
|
+
['t38', 'image/t38'],
|
|
1028
|
+
['taglet', 'application/vnd.mynfc'],
|
|
1029
|
+
['tao', 'application/vnd.tao.intent-module-archive'],
|
|
1030
|
+
['tap', 'image/vnd.tencent.tap'],
|
|
1031
|
+
['tar', 'application/x-tar'],
|
|
1032
|
+
['tcap', 'application/vnd.3gpp2.tcap'],
|
|
1033
|
+
['tcl', 'application/x-tcl'],
|
|
1034
|
+
['td', 'application/urc-targetdesc+xml'],
|
|
1035
|
+
['teacher', 'application/vnd.smart.teacher'],
|
|
1036
|
+
['tei', 'application/tei+xml'],
|
|
1037
|
+
['teicorpus', 'application/tei+xml'],
|
|
1038
|
+
['tex', 'application/x-tex'],
|
|
1039
|
+
['texi', 'application/x-texinfo'],
|
|
1040
|
+
['texinfo', 'application/x-texinfo'],
|
|
1041
|
+
['text', 'text/plain'],
|
|
1042
|
+
['tfi', 'application/thraud+xml'],
|
|
1043
|
+
['tfm', 'application/x-tex-tfm'],
|
|
1044
|
+
['tfx', 'image/tiff-fx'],
|
|
1045
|
+
['tga', 'image/x-tga'],
|
|
1046
|
+
['tgz', 'application/x-tar'],
|
|
1047
|
+
['thmx', 'application/vnd.ms-officetheme'],
|
|
1048
|
+
['tif', 'image/tiff'],
|
|
1049
|
+
['tiff', 'image/tiff'],
|
|
1050
|
+
['tk', 'application/x-tcl'],
|
|
1051
|
+
['tmo', 'application/vnd.tmobile-livetv'],
|
|
1052
|
+
['toml', 'application/toml'],
|
|
1053
|
+
['torrent', 'application/x-bittorrent'],
|
|
1054
|
+
['tpl', 'application/vnd.groove-tool-template'],
|
|
1055
|
+
['tpt', 'application/vnd.trid.tpt'],
|
|
1056
|
+
['tr', 'text/troff'],
|
|
1057
|
+
['tra', 'application/vnd.trueapp'],
|
|
1058
|
+
['trig', 'application/trig'],
|
|
1059
|
+
['trm', 'application/x-msterminal'],
|
|
1060
|
+
['ts', 'video/mp2t'],
|
|
1061
|
+
['tsd', 'application/timestamped-data'],
|
|
1062
|
+
['tsv', 'text/tab-separated-values'],
|
|
1063
|
+
['ttc', 'font/collection'],
|
|
1064
|
+
['ttf', 'font/ttf'],
|
|
1065
|
+
['ttl', 'text/turtle'],
|
|
1066
|
+
['ttml', 'application/ttml+xml'],
|
|
1067
|
+
['twd', 'application/vnd.simtech-mindmapper'],
|
|
1068
|
+
['twds', 'application/vnd.simtech-mindmapper'],
|
|
1069
|
+
['txd', 'application/vnd.genomatix.tuxedo'],
|
|
1070
|
+
['txf', 'application/vnd.mobius.txf'],
|
|
1071
|
+
['txt', 'text/plain'],
|
|
1072
|
+
['u8dsn', 'message/global-delivery-status'],
|
|
1073
|
+
['u8hdr', 'message/global-headers'],
|
|
1074
|
+
['u8mdn', 'message/global-disposition-notification'],
|
|
1075
|
+
['u8msg', 'message/global'],
|
|
1076
|
+
['u32', 'application/x-authorware-bin'],
|
|
1077
|
+
['ubj', 'application/ubjson'],
|
|
1078
|
+
['udeb', 'application/x-debian-package'],
|
|
1079
|
+
['ufd', 'application/vnd.ufdl'],
|
|
1080
|
+
['ufdl', 'application/vnd.ufdl'],
|
|
1081
|
+
['ulx', 'application/x-glulx'],
|
|
1082
|
+
['umj', 'application/vnd.umajin'],
|
|
1083
|
+
['unityweb', 'application/vnd.unity'],
|
|
1084
|
+
['uoml', 'application/vnd.uoml+xml'],
|
|
1085
|
+
['uri', 'text/uri-list'],
|
|
1086
|
+
['uris', 'text/uri-list'],
|
|
1087
|
+
['urls', 'text/uri-list'],
|
|
1088
|
+
['usdz', 'model/vnd.usdz+zip'],
|
|
1089
|
+
['ustar', 'application/x-ustar'],
|
|
1090
|
+
['utz', 'application/vnd.uiq.theme'],
|
|
1091
|
+
['uu', 'text/x-uuencode'],
|
|
1092
|
+
['uva', 'audio/vnd.dece.audio'],
|
|
1093
|
+
['uvd', 'application/vnd.dece.data'],
|
|
1094
|
+
['uvf', 'application/vnd.dece.data'],
|
|
1095
|
+
['uvg', 'image/vnd.dece.graphic'],
|
|
1096
|
+
['uvh', 'video/vnd.dece.hd'],
|
|
1097
|
+
['uvi', 'image/vnd.dece.graphic'],
|
|
1098
|
+
['uvm', 'video/vnd.dece.mobile'],
|
|
1099
|
+
['uvp', 'video/vnd.dece.pd'],
|
|
1100
|
+
['uvs', 'video/vnd.dece.sd'],
|
|
1101
|
+
['uvt', 'application/vnd.dece.ttml+xml'],
|
|
1102
|
+
['uvu', 'video/vnd.uvvu.mp4'],
|
|
1103
|
+
['uvv', 'video/vnd.dece.video'],
|
|
1104
|
+
['uvva', 'audio/vnd.dece.audio'],
|
|
1105
|
+
['uvvd', 'application/vnd.dece.data'],
|
|
1106
|
+
['uvvf', 'application/vnd.dece.data'],
|
|
1107
|
+
['uvvg', 'image/vnd.dece.graphic'],
|
|
1108
|
+
['uvvh', 'video/vnd.dece.hd'],
|
|
1109
|
+
['uvvi', 'image/vnd.dece.graphic'],
|
|
1110
|
+
['uvvm', 'video/vnd.dece.mobile'],
|
|
1111
|
+
['uvvp', 'video/vnd.dece.pd'],
|
|
1112
|
+
['uvvs', 'video/vnd.dece.sd'],
|
|
1113
|
+
['uvvt', 'application/vnd.dece.ttml+xml'],
|
|
1114
|
+
['uvvu', 'video/vnd.uvvu.mp4'],
|
|
1115
|
+
['uvvv', 'video/vnd.dece.video'],
|
|
1116
|
+
['uvvx', 'application/vnd.dece.unspecified'],
|
|
1117
|
+
['uvvz', 'application/vnd.dece.zip'],
|
|
1118
|
+
['uvx', 'application/vnd.dece.unspecified'],
|
|
1119
|
+
['uvz', 'application/vnd.dece.zip'],
|
|
1120
|
+
['vbox', 'application/x-virtualbox-vbox'],
|
|
1121
|
+
['vbox-extpack', 'application/x-virtualbox-vbox-extpack'],
|
|
1122
|
+
['vcard', 'text/vcard'],
|
|
1123
|
+
['vcd', 'application/x-cdlink'],
|
|
1124
|
+
['vcf', 'text/x-vcard'],
|
|
1125
|
+
['vcg', 'application/vnd.groove-vcard'],
|
|
1126
|
+
['vcs', 'text/x-vcalendar'],
|
|
1127
|
+
['vcx', 'application/vnd.vcx'],
|
|
1128
|
+
['vdi', 'application/x-virtualbox-vdi'],
|
|
1129
|
+
['vds', 'model/vnd.sap.vds'],
|
|
1130
|
+
['vhd', 'application/x-virtualbox-vhd'],
|
|
1131
|
+
['vis', 'application/vnd.visionary'],
|
|
1132
|
+
['viv', 'video/vnd.vivo'],
|
|
1133
|
+
['vlc', 'application/videolan'],
|
|
1134
|
+
['vmdk', 'application/x-virtualbox-vmdk'],
|
|
1135
|
+
['vob', 'video/x-ms-vob'],
|
|
1136
|
+
['vor', 'application/vnd.stardivision.writer'],
|
|
1137
|
+
['vox', 'application/x-authorware-bin'],
|
|
1138
|
+
['vrml', 'model/vrml'],
|
|
1139
|
+
['vsd', 'application/vnd.visio'],
|
|
1140
|
+
['vsf', 'application/vnd.vsf'],
|
|
1141
|
+
['vss', 'application/vnd.visio'],
|
|
1142
|
+
['vst', 'application/vnd.visio'],
|
|
1143
|
+
['vsw', 'application/vnd.visio'],
|
|
1144
|
+
['vtf', 'image/vnd.valve.source.texture'],
|
|
1145
|
+
['vtt', 'text/vtt'],
|
|
1146
|
+
['vtu', 'model/vnd.vtu'],
|
|
1147
|
+
['vxml', 'application/voicexml+xml'],
|
|
1148
|
+
['w3d', 'application/x-director'],
|
|
1149
|
+
['wad', 'application/x-doom'],
|
|
1150
|
+
['wadl', 'application/vnd.sun.wadl+xml'],
|
|
1151
|
+
['war', 'application/java-archive'],
|
|
1152
|
+
['wasm', 'application/wasm'],
|
|
1153
|
+
['wav', 'audio/x-wav'],
|
|
1154
|
+
['wax', 'audio/x-ms-wax'],
|
|
1155
|
+
['wbmp', 'image/vnd.wap.wbmp'],
|
|
1156
|
+
['wbs', 'application/vnd.criticaltools.wbs+xml'],
|
|
1157
|
+
['wbxml', 'application/wbxml'],
|
|
1158
|
+
['wcm', 'application/vnd.ms-works'],
|
|
1159
|
+
['wdb', 'application/vnd.ms-works'],
|
|
1160
|
+
['wdp', 'image/vnd.ms-photo'],
|
|
1161
|
+
['weba', 'audio/webm'],
|
|
1162
|
+
['webapp', 'application/x-web-app-manifest+json'],
|
|
1163
|
+
['webm', 'video/webm'],
|
|
1164
|
+
['webmanifest', 'application/manifest+json'],
|
|
1165
|
+
['webp', 'image/webp'],
|
|
1166
|
+
['wg', 'application/vnd.pmi.widget'],
|
|
1167
|
+
['wgt', 'application/widget'],
|
|
1168
|
+
['wks', 'application/vnd.ms-works'],
|
|
1169
|
+
['wm', 'video/x-ms-wm'],
|
|
1170
|
+
['wma', 'audio/x-ms-wma'],
|
|
1171
|
+
['wmd', 'application/x-ms-wmd'],
|
|
1172
|
+
['wmf', 'image/wmf'],
|
|
1173
|
+
['wml', 'text/vnd.wap.wml'],
|
|
1174
|
+
['wmlc', 'application/wmlc'],
|
|
1175
|
+
['wmls', 'text/vnd.wap.wmlscript'],
|
|
1176
|
+
['wmlsc', 'application/vnd.wap.wmlscriptc'],
|
|
1177
|
+
['wmv', 'video/x-ms-wmv'],
|
|
1178
|
+
['wmx', 'video/x-ms-wmx'],
|
|
1179
|
+
['wmz', 'application/x-msmetafile'],
|
|
1180
|
+
['woff', 'font/woff'],
|
|
1181
|
+
['woff2', 'font/woff2'],
|
|
1182
|
+
['word', 'application/msword'],
|
|
1183
|
+
['wpd', 'application/vnd.wordperfect'],
|
|
1184
|
+
['wpl', 'application/vnd.ms-wpl'],
|
|
1185
|
+
['wps', 'application/vnd.ms-works'],
|
|
1186
|
+
['wqd', 'application/vnd.wqd'],
|
|
1187
|
+
['wri', 'application/x-mswrite'],
|
|
1188
|
+
['wrl', 'model/vrml'],
|
|
1189
|
+
['wsc', 'message/vnd.wfa.wsc'],
|
|
1190
|
+
['wsdl', 'application/wsdl+xml'],
|
|
1191
|
+
['wspolicy', 'application/wspolicy+xml'],
|
|
1192
|
+
['wtb', 'application/vnd.webturbo'],
|
|
1193
|
+
['wvx', 'video/x-ms-wvx'],
|
|
1194
|
+
['x3d', 'model/x3d+xml'],
|
|
1195
|
+
['x3db', 'model/x3d+fastinfoset'],
|
|
1196
|
+
['x3dbz', 'model/x3d+binary'],
|
|
1197
|
+
['x3dv', 'model/x3d-vrml'],
|
|
1198
|
+
['x3dvz', 'model/x3d+vrml'],
|
|
1199
|
+
['x3dz', 'model/x3d+xml'],
|
|
1200
|
+
['x32', 'application/x-authorware-bin'],
|
|
1201
|
+
['x_b', 'model/vnd.parasolid.transmit.binary'],
|
|
1202
|
+
['x_t', 'model/vnd.parasolid.transmit.text'],
|
|
1203
|
+
['xaml', 'application/xaml+xml'],
|
|
1204
|
+
['xap', 'application/x-silverlight-app'],
|
|
1205
|
+
['xar', 'application/vnd.xara'],
|
|
1206
|
+
['xav', 'application/xcap-att+xml'],
|
|
1207
|
+
['xbap', 'application/x-ms-xbap'],
|
|
1208
|
+
['xbd', 'application/vnd.fujixerox.docuworks.binder'],
|
|
1209
|
+
['xbm', 'image/x-xbitmap'],
|
|
1210
|
+
['xca', 'application/xcap-caps+xml'],
|
|
1211
|
+
['xcs', 'application/calendar+xml'],
|
|
1212
|
+
['xdf', 'application/xcap-diff+xml'],
|
|
1213
|
+
['xdm', 'application/vnd.syncml.dm+xml'],
|
|
1214
|
+
['xdp', 'application/vnd.adobe.xdp+xml'],
|
|
1215
|
+
['xdssc', 'application/dssc+xml'],
|
|
1216
|
+
['xdw', 'application/vnd.fujixerox.docuworks'],
|
|
1217
|
+
['xel', 'application/xcap-el+xml'],
|
|
1218
|
+
['xenc', 'application/xenc+xml'],
|
|
1219
|
+
['xer', 'application/patch-ops-error+xml'],
|
|
1220
|
+
['xfdf', 'application/vnd.adobe.xfdf'],
|
|
1221
|
+
['xfdl', 'application/vnd.xfdl'],
|
|
1222
|
+
['xht', 'application/xhtml+xml'],
|
|
1223
|
+
['xhtml', 'application/xhtml+xml'],
|
|
1224
|
+
['xhvml', 'application/xv+xml'],
|
|
1225
|
+
['xif', 'image/vnd.xiff'],
|
|
1226
|
+
['xl', 'application/excel'],
|
|
1227
|
+
['xla', 'application/vnd.ms-excel'],
|
|
1228
|
+
['xlam', 'application/vnd.ms-excel.addin.macroEnabled.12'],
|
|
1229
|
+
['xlc', 'application/vnd.ms-excel'],
|
|
1230
|
+
['xlf', 'application/xliff+xml'],
|
|
1231
|
+
['xlm', 'application/vnd.ms-excel'],
|
|
1232
|
+
['xls', 'application/vnd.ms-excel'],
|
|
1233
|
+
['xlsb', 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'],
|
|
1234
|
+
['xlsm', 'application/vnd.ms-excel.sheet.macroEnabled.12'],
|
|
1235
|
+
['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
|
|
1236
|
+
['xlt', 'application/vnd.ms-excel'],
|
|
1237
|
+
['xltm', 'application/vnd.ms-excel.template.macroEnabled.12'],
|
|
1238
|
+
['xltx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'],
|
|
1239
|
+
['xlw', 'application/vnd.ms-excel'],
|
|
1240
|
+
['xm', 'audio/xm'],
|
|
1241
|
+
['xml', 'application/xml'],
|
|
1242
|
+
['xns', 'application/xcap-ns+xml'],
|
|
1243
|
+
['xo', 'application/vnd.olpc-sugar'],
|
|
1244
|
+
['xop', 'application/xop+xml'],
|
|
1245
|
+
['xpi', 'application/x-xpinstall'],
|
|
1246
|
+
['xpl', 'application/xproc+xml'],
|
|
1247
|
+
['xpm', 'image/x-xpixmap'],
|
|
1248
|
+
['xpr', 'application/vnd.is-xpr'],
|
|
1249
|
+
['xps', 'application/vnd.ms-xpsdocument'],
|
|
1250
|
+
['xpw', 'application/vnd.intercon.formnet'],
|
|
1251
|
+
['xpx', 'application/vnd.intercon.formnet'],
|
|
1252
|
+
['xsd', 'application/xml'],
|
|
1253
|
+
['xsl', 'application/xml'],
|
|
1254
|
+
['xslt', 'application/xslt+xml'],
|
|
1255
|
+
['xsm', 'application/vnd.syncml+xml'],
|
|
1256
|
+
['xspf', 'application/xspf+xml'],
|
|
1257
|
+
['xul', 'application/vnd.mozilla.xul+xml'],
|
|
1258
|
+
['xvm', 'application/xv+xml'],
|
|
1259
|
+
['xvml', 'application/xv+xml'],
|
|
1260
|
+
['xwd', 'image/x-xwindowdump'],
|
|
1261
|
+
['xyz', 'chemical/x-xyz'],
|
|
1262
|
+
['xz', 'application/x-xz'],
|
|
1263
|
+
['yaml', 'text/yaml'],
|
|
1264
|
+
['yang', 'application/yang'],
|
|
1265
|
+
['yin', 'application/yin+xml'],
|
|
1266
|
+
['yml', 'text/yaml'],
|
|
1267
|
+
['ymp', 'text/x-suse-ymp'],
|
|
1268
|
+
['z', 'application/x-compress'],
|
|
1269
|
+
['z1', 'application/x-zmachine'],
|
|
1270
|
+
['z2', 'application/x-zmachine'],
|
|
1271
|
+
['z3', 'application/x-zmachine'],
|
|
1272
|
+
['z4', 'application/x-zmachine'],
|
|
1273
|
+
['z5', 'application/x-zmachine'],
|
|
1274
|
+
['z6', 'application/x-zmachine'],
|
|
1275
|
+
['z7', 'application/x-zmachine'],
|
|
1276
|
+
['z8', 'application/x-zmachine'],
|
|
1277
|
+
['zaz', 'application/vnd.zzazz.deck+xml'],
|
|
1278
|
+
['zip', 'application/zip'],
|
|
1279
|
+
['zir', 'application/vnd.zul'],
|
|
1280
|
+
['zirz', 'application/vnd.zul'],
|
|
1281
|
+
['zmm', 'application/vnd.handheld-entertainment+xml'],
|
|
1282
|
+
['zsh', 'text/x-scriptzsh']
|
|
1283
|
+
]);
|
|
1284
|
+
function toFileWithPath(file, path, h) {
|
|
1285
|
+
const f = withMimeType(file);
|
|
1286
|
+
const { webkitRelativePath } = file;
|
|
1287
|
+
const p = typeof path === 'string'
|
|
1288
|
+
? path
|
|
1289
|
+
// If <input webkitdirectory> is set,
|
|
1290
|
+
// the File will have a {webkitRelativePath} property
|
|
1291
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory
|
|
1292
|
+
: typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0
|
|
1293
|
+
? webkitRelativePath
|
|
1294
|
+
: `./${file.name}`;
|
|
1295
|
+
if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path
|
|
1296
|
+
setObjProp(f, 'path', p);
|
|
1297
|
+
}
|
|
1298
|
+
// Always populate a relative path so that even electron apps have access to a relativePath value
|
|
1299
|
+
setObjProp(f, 'relativePath', p);
|
|
1300
|
+
return f;
|
|
1301
|
+
}
|
|
1302
|
+
function withMimeType(file) {
|
|
1303
|
+
const { name } = file;
|
|
1304
|
+
const hasExtension = name && name.lastIndexOf('.') !== -1;
|
|
1305
|
+
if (hasExtension && !file.type) {
|
|
1306
|
+
const ext = name.split('.')
|
|
1307
|
+
.pop().toLowerCase();
|
|
1308
|
+
const type = COMMON_MIME_TYPES.get(ext);
|
|
1309
|
+
if (type) {
|
|
1310
|
+
Object.defineProperty(file, 'type', {
|
|
1311
|
+
value: type,
|
|
1312
|
+
writable: false,
|
|
1313
|
+
configurable: false,
|
|
1314
|
+
enumerable: true
|
|
1315
|
+
});
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
1318
|
+
return file;
|
|
1319
|
+
}
|
|
1320
|
+
function setObjProp(f, key, value) {
|
|
1321
|
+
Object.defineProperty(f, key, {
|
|
1322
|
+
value,
|
|
1323
|
+
writable: false,
|
|
1324
|
+
configurable: false,
|
|
1325
|
+
enumerable: true
|
|
1326
|
+
});
|
|
1327
|
+
}
|
|
1328
|
+
|
|
1329
|
+
const FILES_TO_IGNORE = [
|
|
1330
|
+
// Thumbnail cache files for macOS and Windows
|
|
1331
|
+
'.DS_Store', // macOs
|
|
1332
|
+
'Thumbs.db' // Windows
|
|
1333
|
+
];
|
|
1334
|
+
/**
|
|
1335
|
+
* Convert a DragEvent's DataTrasfer object to a list of File objects
|
|
1336
|
+
* NOTE: If some of the items are folders,
|
|
1337
|
+
* everything will be flattened and placed in the same list but the paths will be kept as a {path} property.
|
|
1338
|
+
*
|
|
1339
|
+
* EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg
|
|
1340
|
+
* and a list of File objects will be returned.
|
|
1341
|
+
*
|
|
1342
|
+
* @param evt
|
|
1343
|
+
*/
|
|
1344
|
+
function fromEvent(evt) {
|
|
1345
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1346
|
+
if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {
|
|
1347
|
+
return getDataTransferFiles(evt.dataTransfer, evt.type);
|
|
1348
|
+
}
|
|
1349
|
+
else if (isChangeEvt(evt)) {
|
|
1350
|
+
return getInputFiles(evt);
|
|
1351
|
+
}
|
|
1352
|
+
else if (Array.isArray(evt) && evt.every(item => 'getFile' in item && typeof item.getFile === 'function')) {
|
|
1353
|
+
return getFsHandleFiles(evt);
|
|
1354
|
+
}
|
|
1355
|
+
return [];
|
|
1356
|
+
});
|
|
1357
|
+
}
|
|
1358
|
+
function isDataTransfer(value) {
|
|
1359
|
+
return isObject(value);
|
|
1360
|
+
}
|
|
1361
|
+
function isChangeEvt(value) {
|
|
1362
|
+
return isObject(value) && isObject(value.target);
|
|
1363
|
+
}
|
|
1364
|
+
function isObject(v) {
|
|
1365
|
+
return typeof v === 'object' && v !== null;
|
|
1366
|
+
}
|
|
1367
|
+
function getInputFiles(evt) {
|
|
1368
|
+
return fromList(evt.target.files).map(file => toFileWithPath(file));
|
|
1369
|
+
}
|
|
1370
|
+
// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle
|
|
1371
|
+
function getFsHandleFiles(handles) {
|
|
1372
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1373
|
+
const files = yield Promise.all(handles.map(h => h.getFile()));
|
|
1374
|
+
return files.map(file => toFileWithPath(file));
|
|
1375
|
+
});
|
|
1376
|
+
}
|
|
1377
|
+
function getDataTransferFiles(dt, type) {
|
|
1378
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1379
|
+
// IE11 does not support dataTransfer.items
|
|
1380
|
+
// See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility
|
|
1381
|
+
if (dt.items) {
|
|
1382
|
+
const items = fromList(dt.items)
|
|
1383
|
+
.filter(item => item.kind === 'file');
|
|
1384
|
+
// According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,
|
|
1385
|
+
// only 'dragstart' and 'drop' has access to the data (source node)
|
|
1386
|
+
if (type !== 'drop') {
|
|
1387
|
+
return items;
|
|
1388
|
+
}
|
|
1389
|
+
const files = yield Promise.all(items.map(toFilePromises));
|
|
1390
|
+
return noIgnoredFiles(flatten(files));
|
|
1391
|
+
}
|
|
1392
|
+
return noIgnoredFiles(fromList(dt.files)
|
|
1393
|
+
.map(file => toFileWithPath(file)));
|
|
1394
|
+
});
|
|
1395
|
+
}
|
|
1396
|
+
function noIgnoredFiles(files) {
|
|
1397
|
+
return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);
|
|
1398
|
+
}
|
|
1399
|
+
// IE11 does not support Array.from()
|
|
1400
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility
|
|
1401
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/FileList
|
|
1402
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList
|
|
1403
|
+
function fromList(items) {
|
|
1404
|
+
if (items === null) {
|
|
1405
|
+
return [];
|
|
1406
|
+
}
|
|
1407
|
+
const files = [];
|
|
1408
|
+
// tslint:disable: prefer-for-of
|
|
1409
|
+
for (let i = 0; i < items.length; i++) {
|
|
1410
|
+
const file = items[i];
|
|
1411
|
+
files.push(file);
|
|
1412
|
+
}
|
|
1413
|
+
return files;
|
|
1414
|
+
}
|
|
1415
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem
|
|
1416
|
+
function toFilePromises(item) {
|
|
1417
|
+
if (typeof item.webkitGetAsEntry !== 'function') {
|
|
1418
|
+
return fromDataTransferItem(item);
|
|
1419
|
+
}
|
|
1420
|
+
const entry = item.webkitGetAsEntry();
|
|
1421
|
+
// Safari supports dropping an image node from a different window and can be retrieved using
|
|
1422
|
+
// the DataTransferItem.getAsFile() API
|
|
1423
|
+
// NOTE: FileSystemEntry.file() throws if trying to get the file
|
|
1424
|
+
if (entry && entry.isDirectory) {
|
|
1425
|
+
return fromDirEntry(entry);
|
|
1426
|
+
}
|
|
1427
|
+
return fromDataTransferItem(item, entry);
|
|
1428
|
+
}
|
|
1429
|
+
function flatten(items) {
|
|
1430
|
+
return items.reduce((acc, files) => [
|
|
1431
|
+
...acc,
|
|
1432
|
+
...(Array.isArray(files) ? flatten(files) : [files])
|
|
1433
|
+
], []);
|
|
1434
|
+
}
|
|
1435
|
+
function fromDataTransferItem(item, entry) {
|
|
1436
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1437
|
+
var _a;
|
|
1438
|
+
// Check if we're in a secure context; due to a bug in Chrome (as far as we know)
|
|
1439
|
+
// the browser crashes when calling this API (yet to be confirmed as a consistent behaviour).
|
|
1440
|
+
//
|
|
1441
|
+
// See:
|
|
1442
|
+
// - https://issues.chromium.org/issues/40186242
|
|
1443
|
+
// - https://github.com/react-dropzone/react-dropzone/issues/1397
|
|
1444
|
+
if (globalThis.isSecureContext && typeof item.getAsFileSystemHandle === 'function') {
|
|
1445
|
+
const h = yield item.getAsFileSystemHandle();
|
|
1446
|
+
if (h === null) {
|
|
1447
|
+
throw new Error(`${item} is not a File`);
|
|
1448
|
+
}
|
|
1449
|
+
// It seems that the handle can be `undefined` (see https://github.com/react-dropzone/file-selector/issues/120),
|
|
1450
|
+
// so we check if it isn't; if it is, the code path continues to the next API (`getAsFile`).
|
|
1451
|
+
if (h !== undefined) {
|
|
1452
|
+
const file = yield h.getFile();
|
|
1453
|
+
file.handle = h;
|
|
1454
|
+
return toFileWithPath(file);
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
const file = item.getAsFile();
|
|
1458
|
+
if (!file) {
|
|
1459
|
+
throw new Error(`${item} is not a File`);
|
|
1460
|
+
}
|
|
1461
|
+
const fwp = toFileWithPath(file, (_a = entry === null || entry === void 0 ? void 0 : entry.fullPath) !== null && _a !== void 0 ? _a : undefined);
|
|
1462
|
+
return fwp;
|
|
1463
|
+
});
|
|
1464
|
+
}
|
|
1465
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry
|
|
1466
|
+
function fromEntry(entry) {
|
|
1467
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1468
|
+
return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);
|
|
1469
|
+
});
|
|
1470
|
+
}
|
|
1471
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry
|
|
1472
|
+
function fromDirEntry(entry) {
|
|
1473
|
+
const reader = entry.createReader();
|
|
1474
|
+
return new Promise((resolve, reject) => {
|
|
1475
|
+
const entries = [];
|
|
1476
|
+
function readEntries() {
|
|
1477
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader
|
|
1478
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries
|
|
1479
|
+
reader.readEntries((batch) => __awaiter(this, void 0, void 0, function* () {
|
|
1480
|
+
if (!batch.length) {
|
|
1481
|
+
// Done reading directory
|
|
1482
|
+
try {
|
|
1483
|
+
const files = yield Promise.all(entries);
|
|
1484
|
+
resolve(files);
|
|
1485
|
+
}
|
|
1486
|
+
catch (err) {
|
|
1487
|
+
reject(err);
|
|
1488
|
+
}
|
|
1489
|
+
}
|
|
1490
|
+
else {
|
|
1491
|
+
const items = Promise.all(batch.map(fromEntry));
|
|
1492
|
+
entries.push(items);
|
|
1493
|
+
// Continue reading
|
|
1494
|
+
readEntries();
|
|
1495
|
+
}
|
|
1496
|
+
}), (err) => {
|
|
1497
|
+
reject(err);
|
|
1498
|
+
});
|
|
1499
|
+
}
|
|
1500
|
+
readEntries();
|
|
1501
|
+
});
|
|
1502
|
+
}
|
|
1503
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry
|
|
1504
|
+
function fromFileEntry(entry) {
|
|
1505
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1506
|
+
return new Promise((resolve, reject) => {
|
|
1507
|
+
entry.file((file) => {
|
|
1508
|
+
const fwp = toFileWithPath(file, entry.fullPath);
|
|
1509
|
+
resolve(fwp);
|
|
1510
|
+
}, (err) => {
|
|
1511
|
+
reject(err);
|
|
1512
|
+
});
|
|
1513
|
+
});
|
|
1514
|
+
});
|
|
1515
|
+
}
|
|
1516
|
+
|
|
1517
|
+
const dropzoneAppearanceDefault = {
|
|
1518
|
+
defaultSecondary: {
|
|
1519
|
+
fill: 'surfaceSecondary',
|
|
1520
|
+
fillHover: 'surfaceTertiary',
|
|
1521
|
+
hintTitle: 'Перетащите изображение или выберите файл с компьютера',
|
|
1522
|
+
hintTitleTextColor: 'surfaceTextPrimary',
|
|
1523
|
+
hintTitleTextSize: 'm',
|
|
1524
|
+
removeThumbText: 'удалить',
|
|
1525
|
+
removeThumbTextColor: 'errorTextPrimary',
|
|
1526
|
+
thumbBorderColor: 'surfaceBorderTertiary',
|
|
1527
|
+
thumbBorderColorHover: 'surfaceBorderQuaternary',
|
|
1528
|
+
thumbBorderWidth: '1',
|
|
1529
|
+
thumbNameTextColor: 'surfaceTextPrimary',
|
|
1530
|
+
thumbNameTextSize: 's',
|
|
1531
|
+
},
|
|
1532
|
+
};
|
|
1533
|
+
|
|
1534
|
+
const dropzoneAppearanceDisabled = {
|
|
1535
|
+
disabledTertiary: {
|
|
1536
|
+
fill: 'disabledTertiary',
|
|
1537
|
+
fillHover: 'disabledQuaternary',
|
|
1538
|
+
hintTitle: 'Перетащите изображение или выберите файл с компьютера',
|
|
1539
|
+
hintTitleTextColor: 'disabledTextSecondary',
|
|
1540
|
+
hintTitleTextSize: 'm',
|
|
1541
|
+
removeThumbText: 'удалить',
|
|
1542
|
+
removeThumbTextColor: 'errorTextPrimary',
|
|
1543
|
+
thumbBorderColor: 'surfaceBorderTertiary',
|
|
1544
|
+
thumbBorderColorHover: 'surfaceBorderQuaternary',
|
|
1545
|
+
thumbBorderWidth: '1',
|
|
1546
|
+
thumbNameTextColor: 'surfaceTextPrimary',
|
|
1547
|
+
thumbNameTextSize: 's',
|
|
1548
|
+
},
|
|
1549
|
+
};
|
|
1550
|
+
|
|
1551
|
+
const dropzoneAppearanceError = {
|
|
1552
|
+
errorTertiary: {
|
|
1553
|
+
fill: 'errorTertiary',
|
|
1554
|
+
fillHover: 'errorTertiary',
|
|
1555
|
+
hintTitle: 'Перетащите изображение или выберите файл с компьютера',
|
|
1556
|
+
hintTitleTextColor: 'errorTextQuaternary',
|
|
1557
|
+
hintTitleTextSize: 'm',
|
|
1558
|
+
removeThumbText: 'удалить',
|
|
1559
|
+
removeThumbTextColor: 'errorTextPrimary',
|
|
1560
|
+
thumbBorderColor: 'surfaceBorderTertiary',
|
|
1561
|
+
thumbBorderColorHover: 'surfaceBorderQuaternary',
|
|
1562
|
+
thumbBorderWidth: '1',
|
|
1563
|
+
thumbNameTextColor: 'surfaceTextPrimary',
|
|
1564
|
+
thumbNameTextSize: 's',
|
|
1565
|
+
},
|
|
1566
|
+
};
|
|
1567
|
+
|
|
1568
|
+
const dropzoneAppearanceRequire = {
|
|
1569
|
+
requireTertiary: {
|
|
1570
|
+
fill: 'warningTertiary',
|
|
1571
|
+
fillHover: 'warningTertiary',
|
|
1572
|
+
hintTitle: 'Перетащите изображение или выберите файл с компьютера',
|
|
1573
|
+
hintTitleTextColor: 'specialTextSecondary',
|
|
1574
|
+
hintTitleTextSize: 'm',
|
|
1575
|
+
removeThumbText: 'удалить',
|
|
1576
|
+
removeThumbTextColor: 'errorTextPrimary',
|
|
1577
|
+
thumbBorderColor: 'surfaceBorderTertiary',
|
|
1578
|
+
thumbBorderColorHover: 'surfaceBorderQuaternary',
|
|
1579
|
+
thumbBorderWidth: '1',
|
|
1580
|
+
thumbNameTextColor: 'surfaceTextPrimary',
|
|
1581
|
+
thumbNameTextSize: 's',
|
|
1582
|
+
},
|
|
1583
|
+
};
|
|
1584
|
+
|
|
1585
|
+
const dropzoneAppearanceShape = {
|
|
1586
|
+
circular: {
|
|
1587
|
+
shape: 'circular',
|
|
1588
|
+
},
|
|
1589
|
+
rounded: {
|
|
1590
|
+
shape: 'rounded',
|
|
1591
|
+
},
|
|
1592
|
+
roundedXL: {
|
|
1593
|
+
shape: 'rounded',
|
|
1594
|
+
shapeStrength: '2m',
|
|
1595
|
+
},
|
|
1596
|
+
roundedL: {
|
|
1597
|
+
shape: 'rounded',
|
|
1598
|
+
shapeStrength: '1_5m',
|
|
1599
|
+
},
|
|
1600
|
+
roundedM: {
|
|
1601
|
+
shape: 'rounded',
|
|
1602
|
+
shapeStrength: '1m',
|
|
1603
|
+
},
|
|
1604
|
+
roundedS: {
|
|
1605
|
+
shape: 'rounded',
|
|
1606
|
+
shapeStrength: '0_5m',
|
|
1607
|
+
},
|
|
1608
|
+
};
|
|
1609
|
+
|
|
1610
|
+
const dropzoneAppearanceSuccess = {
|
|
1611
|
+
successTertiary: {
|
|
1612
|
+
fill: 'successTertiary',
|
|
1613
|
+
fillHover: 'successTertiary',
|
|
1614
|
+
hintTitle: 'Перетащите изображение или выберите файл с компьютера',
|
|
1615
|
+
hintTitleTextColor: 'successTextQuaternary',
|
|
1616
|
+
hintTitleTextSize: 'm',
|
|
1617
|
+
removeThumbText: 'удалить',
|
|
1618
|
+
removeThumbTextColor: 'errorTextPrimary',
|
|
1619
|
+
thumbBorderColor: 'surfaceBorderTertiary',
|
|
1620
|
+
thumbBorderColorHover: 'surfaceBorderQuaternary',
|
|
1621
|
+
thumbBorderWidth: '1',
|
|
1622
|
+
thumbNameTextColor: 'surfaceTextPrimary',
|
|
1623
|
+
thumbNameTextSize: 's',
|
|
1624
|
+
},
|
|
1625
|
+
};
|
|
1626
|
+
|
|
1627
|
+
const dropzoneAppearance = {
|
|
1628
|
+
...dropzoneAppearanceDefault,
|
|
1629
|
+
...dropzoneAppearanceRequire,
|
|
1630
|
+
...dropzoneAppearanceError,
|
|
1631
|
+
...dropzoneAppearanceShape,
|
|
1632
|
+
...dropzoneAppearanceSuccess,
|
|
1633
|
+
...dropzoneAppearanceDisabled,
|
|
1634
|
+
};
|
|
1635
|
+
|
|
1636
|
+
const dropzoneConfig = {
|
|
1637
|
+
appearance: dropzoneAppearance};
|
|
1638
|
+
const Dropzone = React.memo(function Dropzone(props) {
|
|
1639
|
+
const { appearance, maxFiles = 5, maxSize = 10485760, // 10mb
|
|
1640
|
+
dropzoneProps = {}, fieldValuesList: maybeFieldValuesList, fileErrorText, hintDescription, inputName, showFilename = true, thumbColumn, isSkeleton, isPreviews = true, onClickPreview, onAddFiles, onChangeFiles, onDeleteFile,
|
|
1641
|
+
// className, unused
|
|
1642
|
+
// size, unused
|
|
1643
|
+
} = props;
|
|
1644
|
+
const appearanceConfig = useAppearanceConfig.useAppearanceConfig(appearance, dropzoneConfig);
|
|
1645
|
+
const propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props, appearanceConfig);
|
|
1646
|
+
const { fillClass, fillHoverClass, borderColorClass, borderColorHoverClass, borderTypeClass, borderWidthClass, errorMessageTextColor, errorMessageTextSize, errorMessageTextWeight, hintDescriptionTextColor, hintDescriptionTextSize, hintDescriptionTextWeight, hintDescriptionTextWrap, hintTitle, hintTitleTextColor, hintTitleTextSize, hintTitleTextWeight, hintTitleTextWrap, removeThumbAppearance, removeThumbShape, removeThumbText, removeThumbTextWeight, shapeClass, sizeClass, thumbBorderColorClass, thumbBorderColorHoverClass, thumbBorderTypeClass, thumbBorderWidthClass, thumbDirectionClass, thumbNameTextColor, thumbNameTextSize, thumbNameTextWeight, thumbNameTextWrap, } = propsGenerator;
|
|
1647
|
+
const fieldValuesList = React.useMemo(() => {
|
|
1648
|
+
return Array.isArray(maybeFieldValuesList) ? maybeFieldValuesList : [];
|
|
1649
|
+
}, [maybeFieldValuesList]);
|
|
1650
|
+
// Using a hook to manage files
|
|
1651
|
+
const { convertValueFilesToDropzoneItems, fileIsLoading, fileRejectedMessage, setFileRejectedMessage, } = useDropzoneFieldFiles.useDropzoneFieldFiles(fieldValuesList, isPreviews);
|
|
1652
|
+
// Create dropzone options
|
|
1653
|
+
const { getInputProps, getRootProps } = reactDropzone.useDropzone({
|
|
1654
|
+
// accept: { 'image/*': [] },
|
|
1655
|
+
// validator: (file) => {},
|
|
1656
|
+
maxFiles: maxFiles,
|
|
1657
|
+
maxSize: maxSize,
|
|
1658
|
+
...dropzoneProps,
|
|
1659
|
+
getFilesFromEvent: async (event) => {
|
|
1660
|
+
const result = await fromEvent(event);
|
|
1661
|
+
const newFiles = result.filter((item) => item instanceof File);
|
|
1662
|
+
/** NOTE:
|
|
1663
|
+
* By default, "react-dropzone" works by replacing the field's files
|
|
1664
|
+
* when adding a new file. For example, if you drag and drop files
|
|
1665
|
+
* one at a time, the previous ones will be replaced by
|
|
1666
|
+
* the newly added ones. We're overriding this default behavior
|
|
1667
|
+
* to allow multiple files to be added one by one(step by step).
|
|
1668
|
+
*
|
|
1669
|
+
* "react-dropzone" checks maximum number of available files(maxFiles)
|
|
1670
|
+
* at the time of addition, not the total number of files in field.
|
|
1671
|
+
* Thats why, we're forced to pass the existing + new files
|
|
1672
|
+
* as the field value to the react-dropzone,
|
|
1673
|
+
* so that the internal checks work as if all the existing files
|
|
1674
|
+
* were added at once.
|
|
1675
|
+
*
|
|
1676
|
+
* That's behavior actual for accepted and rejected files.
|
|
1677
|
+
*/
|
|
1678
|
+
return [...fieldValuesList, ...newFiles];
|
|
1679
|
+
},
|
|
1680
|
+
onDropAccepted: async (acceptedFiles) => {
|
|
1681
|
+
const newDzFileItemsList = await convertValueFilesToDropzoneItems(acceptedFiles, true);
|
|
1682
|
+
setFileRejectedMessage('');
|
|
1683
|
+
// Callback just for add new files
|
|
1684
|
+
onAddFiles && onAddFiles(newDzFileItemsList, inputName);
|
|
1685
|
+
// Callback for save to form data (including empty when files are not valid)
|
|
1686
|
+
onChangeFiles && onChangeFiles(newDzFileItemsList);
|
|
1687
|
+
},
|
|
1688
|
+
onDropRejected: (rejectedFiles) => {
|
|
1689
|
+
// Clean error by default
|
|
1690
|
+
let fileErrorMessage = '';
|
|
1691
|
+
// If dropped files has rejected - show error message
|
|
1692
|
+
if (rejectedFiles.length > 0) {
|
|
1693
|
+
fileErrorMessage = 'Ошибка при добавлении файла';
|
|
1694
|
+
const firstFileErrorItem = rejectedFiles[0].errors[0];
|
|
1695
|
+
if (firstFileErrorItem) {
|
|
1696
|
+
if (firstFileErrorItem.code === reactDropzone.ErrorCode.TooManyFiles) {
|
|
1697
|
+
fileErrorMessage = `Максимальное количество файлов: ${maxFiles}`;
|
|
1698
|
+
}
|
|
1699
|
+
else {
|
|
1700
|
+
fileErrorMessage = firstFileErrorItem.message;
|
|
1701
|
+
}
|
|
1702
|
+
}
|
|
1703
|
+
}
|
|
1704
|
+
setFileRejectedMessage(fileErrorMessage);
|
|
1705
|
+
},
|
|
1706
|
+
});
|
|
1707
|
+
// Delete file from dropzone
|
|
1708
|
+
const onClickRemoveFile = React.useCallback((event, indexDeleted) => {
|
|
1709
|
+
event.stopPropagation();
|
|
1710
|
+
event.preventDefault();
|
|
1711
|
+
const dzFileItemDeleted = fieldValuesList[indexDeleted];
|
|
1712
|
+
const newFiles = fieldValuesList.filter((dzFileItem) => dzFileItem.id !== dzFileItemDeleted.id);
|
|
1713
|
+
onDeleteFile && onDeleteFile(dzFileItemDeleted, inputName);
|
|
1714
|
+
onChangeFiles && onChangeFiles(newFiles);
|
|
1715
|
+
},
|
|
1716
|
+
// If "inputName" will be changes, then it should be a different field
|
|
1717
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1718
|
+
[fieldValuesList, onChangeFiles, onDeleteFile]);
|
|
1719
|
+
React.useEffect(() => {
|
|
1720
|
+
// Check if we need to convert form state value to field format
|
|
1721
|
+
const isNeedToConvert = fieldValuesList.some((fieldValue) => {
|
|
1722
|
+
const isMaybeUrl = typeof fieldValue === 'string';
|
|
1723
|
+
const isJsFile = fieldValue instanceof File;
|
|
1724
|
+
const isImageData = typeof fieldValue === 'object' && !fieldValue.file;
|
|
1725
|
+
return isMaybeUrl || isJsFile || isImageData;
|
|
1726
|
+
});
|
|
1727
|
+
if (isNeedToConvert) {
|
|
1728
|
+
const convertFiledValueAndSaveAsFiles = async () => {
|
|
1729
|
+
const dzFileItemsList = await convertValueFilesToDropzoneItems(fieldValuesList);
|
|
1730
|
+
// Save to form state as right objects
|
|
1731
|
+
onChangeFiles && onChangeFiles(dzFileItemsList);
|
|
1732
|
+
};
|
|
1733
|
+
// First time convert value to dropzoneFileItem and save to form state
|
|
1734
|
+
convertFiledValueAndSaveAsFiles();
|
|
1735
|
+
}
|
|
1736
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1737
|
+
}, [fieldValuesList]);
|
|
1738
|
+
return (jsxRuntime.jsxs(React.Fragment, { children: [jsxRuntime.jsxs("div", { ...getRootProps({ className: `dropzone__dropzone dropzone` }), children: [jsxRuntime.jsx("input", { ...getInputProps(), name: inputName }), jsxRuntime.jsxs("div", { className: clsx('dropzone dropzone__dropzone-wrapper', thumbColumn && `dropzone__dropzone-wrapper_column_${thumbColumn}`, fillClass && `fill_${fillClass}`, fillHoverClass && `fill_hover_${fillHoverClass}`, borderWidthClass && `border-width_${borderWidthClass}`, borderColorClass && `border-color_${borderColorClass}`, borderColorHoverClass &&
|
|
1739
|
+
`border-color_hover_${borderColorHoverClass}`, borderTypeClass && `border_type_${borderTypeClass}`, shapeClass && `shape_${shapeClass}`, isSkeleton && 'dropzone_skeleton', sizeClass && `dropzone_size_${sizeClass}`), children: [fieldValuesList.map((fileItem, index) => {
|
|
1740
|
+
const { id, name, error, file, preview } = fileItem;
|
|
1741
|
+
const fileErrorMessage = error || file?.error;
|
|
1742
|
+
const fileName = name || file?.name;
|
|
1743
|
+
return (jsxRuntime.jsxs("aside", { className: clsx('dropzone__thumb', fillClass, thumbDirectionClass, thumbBorderWidthClass, thumbBorderColorClass, thumbBorderColorHoverClass, thumbBorderTypeClass), children: [isPreviews && !error && preview && (jsxRuntime.jsx("div", { className: "dropzone__thumb-image", children: jsxRuntime.jsx("img", { className: "dropzone__thumb-image-inner", src: preview, onClick: (event) => {
|
|
1744
|
+
onClickPreview && onClickPreview(fileItem, event);
|
|
1745
|
+
} }) })), (fileErrorText || fileErrorMessage) && (jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Text.Text, { size: thumbNameTextSize, textColor: thumbNameTextColor, textWeight: thumbNameTextWeight, textWrap: thumbNameTextWrap, children: fileErrorText || fileErrorMessage }) })), showFilename && fileName && (jsxRuntime.jsx("div", { className: "dropzone__thumb-name", children: jsxRuntime.jsx(Text.Text, { className: "dropzone__thumb-name-inner", size: thumbNameTextSize, textColor: thumbNameTextColor, textWeight: thumbNameTextWeight, textWrap: thumbNameTextWrap, children: fileName }) })), fileIsLoading && (jsxRuntime.jsx("div", { className: "dropzone__thumb-loader", children: jsxRuntime.jsx(Loader.Loader, { width: "fill", height: "fill" }) })), jsxRuntime.jsx("div", { className: clsx('dropzone__thumb-remove'), children: jsxRuntime.jsx(Button.Button, { appearance: removeThumbAppearance, className: "dropzone__thumb-remove-text", label: removeThumbText || 'Удалить', labelTextWeight: removeThumbTextWeight, shape: removeThumbShape,
|
|
1746
|
+
// TODO: Use id of dropzone special object
|
|
1747
|
+
onClick: (event) => onClickRemoveFile(event, index) }) })] }, id || index));
|
|
1748
|
+
}), fieldValuesList.length === 0 ? (jsxRuntime.jsxs("div", { className: "dropzone__hint", children: [jsxRuntime.jsx(Text.Text, { className: "dropzone__hint-title", size: hintTitleTextSize, textColor: hintTitleTextColor, textWeight: hintTitleTextWeight, textWrap: hintTitleTextWrap, children: hintTitle || 'Select a file or drag in form' }), hintDescription && (jsxRuntime.jsx(Text.Text, { className: "dropzone__hint-text", size: hintDescriptionTextSize, textColor: hintDescriptionTextColor, textWeight: hintDescriptionTextWeight, textWrap: hintDescriptionTextWrap, children: hintDescription }))] })) : (jsxRuntime.jsxs("div", { className: "dropzone__hint dropzone__hint_type_add-more", children: [jsxRuntime.jsx(Text.Text, { className: "dropzone__hint-title", size: hintTitleTextSize, textColor: hintTitleTextColor, textWeight: hintTitleTextWeight, textWrap: hintTitleTextWrap, children: hintTitle || 'Select a file or drag in form' }), hintDescription && (jsxRuntime.jsx(Text.Text, { className: "dropzone__hint-text", size: hintDescriptionTextSize, textColor: hintDescriptionTextColor, textWeight: hintDescriptionTextWeight, textWrap: hintDescriptionTextWrap, children: hintDescription }))] }))] })] }), fileRejectedMessage && (jsxRuntime.jsx("div", { className: "form-field__message", children: jsxRuntime.jsx(Text.Text, { className: "form-field__message-item form-field__message-item_type_message", size: errorMessageTextSize, textColor: errorMessageTextColor, textWeight: errorMessageTextWeight, children: fileRejectedMessage }) }))] }));
|
|
1749
|
+
});
|
|
1750
|
+
|
|
1751
|
+
exports.Dropzone = Dropzone;
|