@cocreate/file 1.17.3 → 1.17.5
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/CHANGELOG.md +17 -0
- package/docs/index.html +14 -38
- package/package.json +5 -5
- package/src/client.js +33 -12
- package/src/server.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
## [1.17.5](https://github.com/CoCreate-app/CoCreate-file/compare/v1.17.4...v1.17.5) (2024-06-19)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* getFileId uses pathname as id ([be330a5](https://github.com/CoCreate-app/CoCreate-file/commit/be330a54324ae878a8afadc68bdae1684e944b45))
|
|
7
|
+
* observer target selector ([50dc031](https://github.com/CoCreate-app/CoCreate-file/commit/50dc0318b7c9c02c2d610fe86158d47e6277e667))
|
|
8
|
+
* replace selected file if multiple false ([d419dc3](https://github.com/CoCreate-app/CoCreate-file/commit/d419dc38f223d1d809bcf014dd2fadb0a629fae7))
|
|
9
|
+
|
|
10
|
+
## [1.17.4](https://github.com/CoCreate-app/CoCreate-file/compare/v1.17.3...v1.17.4) (2024-06-12)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* bump cocreate dependencies ([327849b](https://github.com/CoCreate-app/CoCreate-file/commit/327849b7e69bb1527bc9b29e95648bb0e53535a9))
|
|
16
|
+
* svg icon class ([71c132d](https://github.com/CoCreate-app/CoCreate-file/commit/71c132dcf9ed77c53e017f1f79498e48d443c0cb))
|
|
17
|
+
|
|
1
18
|
## [1.17.3](https://github.com/CoCreate-app/CoCreate-file/compare/v1.17.2...v1.17.3) (2024-05-08)
|
|
2
19
|
|
|
3
20
|
|
package/docs/index.html
CHANGED
|
@@ -81,52 +81,40 @@
|
|
|
81
81
|
class="margin-right:15px"
|
|
82
82
|
share-network="twitter"
|
|
83
83
|
title="Share on twitter"
|
|
84
|
-
><i
|
|
85
|
-
class="height:20px fill:#505050"
|
|
86
|
-
src="/assets/svg/twitter.svg"></i
|
|
84
|
+
><i src="/assets/svg/twitter.svg"></i
|
|
87
85
|
></a>
|
|
88
86
|
<a
|
|
89
87
|
class="margin-right:15px"
|
|
90
88
|
share-network="facebook"
|
|
91
89
|
title="Share on Facebook"
|
|
92
|
-
><i
|
|
93
|
-
class="height:20px fill:#505050"
|
|
94
|
-
src="/assets/svg/facebook.svg"></i
|
|
90
|
+
><i src="/assets/svg/facebook.svg"></i
|
|
95
91
|
></a>
|
|
96
92
|
<a
|
|
97
93
|
class="margin-right:15px"
|
|
98
94
|
share-network="instagram"
|
|
99
95
|
title="Share on instagram"
|
|
100
|
-
><i
|
|
101
|
-
class="height:20px fill:#505050"
|
|
102
|
-
src="/assets/svg/instagram.svg"></i
|
|
96
|
+
><i src="/assets/svg/instagram.svg"></i
|
|
103
97
|
></a>
|
|
104
98
|
</div>
|
|
105
99
|
<a
|
|
106
100
|
class="margin-right:15px"
|
|
107
101
|
share-network="share"
|
|
108
102
|
title="Share on share"
|
|
109
|
-
><i
|
|
110
|
-
class="height:20px fill:#505050"
|
|
111
|
-
src="/assets/svg/share-alt.svg"></i
|
|
103
|
+
><i src="/assets/svg/share-alt.svg"></i
|
|
112
104
|
></a>
|
|
113
105
|
</div>
|
|
114
106
|
<a
|
|
115
107
|
class="margin-right:15px"
|
|
116
108
|
share-network="share"
|
|
117
109
|
title="Share on share"
|
|
118
|
-
><i
|
|
119
|
-
class="height:20px fill:#505050"
|
|
120
|
-
src="/assets/svg/share-alt.svg"></i
|
|
110
|
+
><i src="/assets/svg/share-alt.svg"></i
|
|
121
111
|
></a>
|
|
122
112
|
</div>
|
|
123
113
|
<a
|
|
124
114
|
href="https://github.com/CoCreate-app/CoCreate-file"
|
|
125
115
|
target="_blank"
|
|
126
116
|
class=""
|
|
127
|
-
><i
|
|
128
|
-
class="height:20px fill:#505050"
|
|
129
|
-
src="/assets/svg/github.svg"></i
|
|
117
|
+
><i src="/assets/svg/github.svg"></i
|
|
130
118
|
></a>
|
|
131
119
|
</div>
|
|
132
120
|
|
|
@@ -155,9 +143,7 @@
|
|
|
155
143
|
<a
|
|
156
144
|
class="margin-left:10px display:none"
|
|
157
145
|
href="#file-install"
|
|
158
|
-
><i
|
|
159
|
-
class="height:20px fill:#505050"
|
|
160
|
-
src="/assets/svg/link.svg"></i
|
|
146
|
+
><i src="/assets/svg/link.svg"></i
|
|
161
147
|
></a>
|
|
162
148
|
</span>
|
|
163
149
|
</div>
|
|
@@ -182,9 +168,7 @@
|
|
|
182
168
|
<a
|
|
183
169
|
class="margin-left:10px display:none"
|
|
184
170
|
href="#file-usage"
|
|
185
|
-
><i
|
|
186
|
-
class="height:20px fill:#505050"
|
|
187
|
-
src="/assets/svg/link.svg"></i
|
|
171
|
+
><i src="/assets/svg/link.svg"></i
|
|
188
172
|
></a>
|
|
189
173
|
</span>
|
|
190
174
|
</div>
|
|
@@ -218,9 +202,7 @@
|
|
|
218
202
|
<a
|
|
219
203
|
class="margin-left:10px display:none"
|
|
220
204
|
href="#file-attributes"
|
|
221
|
-
><i
|
|
222
|
-
class="height:20px fill:#505050"
|
|
223
|
-
src="/assets/svg/link.svg"></i
|
|
205
|
+
><i src="/assets/svg/link.svg"></i
|
|
224
206
|
></a>
|
|
225
207
|
</span>
|
|
226
208
|
</div>
|
|
@@ -272,9 +254,7 @@
|
|
|
272
254
|
<a
|
|
273
255
|
class="margin-left:10px display:none"
|
|
274
256
|
href="#file-demo"
|
|
275
|
-
><i
|
|
276
|
-
class="height:20px fill:#505050"
|
|
277
|
-
src="/assets/svg/link.svg"></i
|
|
257
|
+
><i src="/assets/svg/link.svg"></i
|
|
278
258
|
></a>
|
|
279
259
|
</span>
|
|
280
260
|
</div>
|
|
@@ -319,7 +299,7 @@
|
|
|
319
299
|
toggle="code-height"
|
|
320
300
|
toggle-selector="#demo-code"
|
|
321
301
|
><i
|
|
322
|
-
class="height:18px
|
|
302
|
+
class="height:18px"
|
|
323
303
|
src="/assets/svg/eye.svg"></i
|
|
324
304
|
></a>
|
|
325
305
|
<a
|
|
@@ -330,18 +310,14 @@
|
|
|
330
310
|
hide="#eye-slash"
|
|
331
311
|
toggle="code-height"
|
|
332
312
|
toggle-selector="#demo-code"
|
|
333
|
-
><i
|
|
334
|
-
class="height:20px fill:#505050"
|
|
335
|
-
src="/assets/svg/eye-slash.svg"></i
|
|
313
|
+
><i src="/assets/svg/eye-slash.svg"></i
|
|
336
314
|
></a>
|
|
337
315
|
<a
|
|
338
316
|
class="margin-right:10px"
|
|
339
317
|
id="code"
|
|
340
318
|
show="#code-slash"
|
|
341
319
|
hide="#code, #demo-code"
|
|
342
|
-
><i
|
|
343
|
-
class="height:20px fill:#505050"
|
|
344
|
-
src="/assets/svg/code.svg"></i
|
|
320
|
+
><i src="/assets/svg/code.svg"></i
|
|
345
321
|
></a>
|
|
346
322
|
<a
|
|
347
323
|
class="margin-right:10px"
|
|
@@ -350,7 +326,7 @@
|
|
|
350
326
|
show="#code, #demo-code"
|
|
351
327
|
hide="#code-slash"
|
|
352
328
|
><i
|
|
353
|
-
class="
|
|
329
|
+
class="height:18px"
|
|
354
330
|
src="/assets/svg/code.svg"></i
|
|
355
331
|
></a>
|
|
356
332
|
<a
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cocreate/file",
|
|
3
|
-
"version": "1.17.
|
|
3
|
+
"version": "1.17.5",
|
|
4
4
|
"description": "A versatile, configurable headless file uploader supporting local and server operations. Accessible via a JavaScript API and HTML5 attributes, it provides seamless file reading, writing, and uploading with fallbacks to the standard HTML5 file input API. Ideal for developers needing robust file management in headless environments.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"file-uploader",
|
|
@@ -63,9 +63,9 @@
|
|
|
63
63
|
"webpack-log": "^3.0.1"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@cocreate/actions": "^1.18.
|
|
67
|
-
"@cocreate/config": "^1.12.
|
|
68
|
-
"@cocreate/render": "^1.
|
|
69
|
-
"@cocreate/utils": "^1.33.
|
|
66
|
+
"@cocreate/actions": "^1.18.2",
|
|
67
|
+
"@cocreate/config": "^1.12.3",
|
|
68
|
+
"@cocreate/render": "^1.41.0",
|
|
69
|
+
"@cocreate/utils": "^1.33.7"
|
|
70
70
|
}
|
|
71
71
|
}
|
package/src/client.js
CHANGED
|
@@ -108,12 +108,21 @@ async function init(elements) {
|
|
|
108
108
|
|
|
109
109
|
async function fileEvent(event) {
|
|
110
110
|
try {
|
|
111
|
-
const input = event.
|
|
111
|
+
const input = event.currentTarget;
|
|
112
|
+
let multiple = input.multiple
|
|
113
|
+
if (!multiple) {
|
|
114
|
+
multiple = input.getAttribute('multiple');
|
|
115
|
+
if (multiple !== null && multiple !== "false") {
|
|
116
|
+
multiple = true;
|
|
117
|
+
} else {
|
|
118
|
+
multiple = false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
112
122
|
let selected = inputs.get(input) || new Map()
|
|
113
123
|
let files = input.files;
|
|
114
124
|
if (!files || !files.length) {
|
|
115
125
|
event.preventDefault()
|
|
116
|
-
const multiple = input.multiple
|
|
117
126
|
if (input.hasAttribute('directory')) {
|
|
118
127
|
let handle = await window.showDirectoryPicker();
|
|
119
128
|
let file = {
|
|
@@ -130,6 +139,14 @@ async function fileEvent(event) {
|
|
|
130
139
|
}
|
|
131
140
|
|
|
132
141
|
file.handle = handle
|
|
142
|
+
|
|
143
|
+
if (!multiple) {
|
|
144
|
+
for (let [id] of selected) {
|
|
145
|
+
Files.delete(id);
|
|
146
|
+
}
|
|
147
|
+
selected.clear();
|
|
148
|
+
}
|
|
149
|
+
|
|
133
150
|
selected.set(file.id, file)
|
|
134
151
|
Files.set(file.id, file)
|
|
135
152
|
|
|
@@ -169,6 +186,13 @@ async function fileEvent(event) {
|
|
|
169
186
|
console.log('Duplicate file has been selected. This could be in error as the browser does not provide a clear way of checking duplictaes')
|
|
170
187
|
}
|
|
171
188
|
|
|
189
|
+
if (!multiple) {
|
|
190
|
+
for (let [id] of selected) {
|
|
191
|
+
Files.delete(id);
|
|
192
|
+
}
|
|
193
|
+
selected.clear();
|
|
194
|
+
}
|
|
195
|
+
|
|
172
196
|
selected.set(files[i].id, files[i])
|
|
173
197
|
Files.set(files[i].id, files[i])
|
|
174
198
|
}
|
|
@@ -220,14 +244,11 @@ async function getDirectoryHandles(handle, name) {
|
|
|
220
244
|
|
|
221
245
|
async function getFileId(file) {
|
|
222
246
|
|
|
223
|
-
if (file.id = file.
|
|
247
|
+
if (file.id = file.pathname) {
|
|
224
248
|
return file.id;
|
|
225
249
|
} else {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
file.id = key
|
|
230
|
-
return key;
|
|
250
|
+
file.id = `${file.name}${file.size}${file.type}${file.lastModified}`;
|
|
251
|
+
return file.id;
|
|
231
252
|
}
|
|
232
253
|
}
|
|
233
254
|
|
|
@@ -534,7 +555,7 @@ async function upload(element, data) {
|
|
|
534
555
|
}
|
|
535
556
|
|
|
536
557
|
// Append the first segment to start
|
|
537
|
-
|
|
558
|
+
appendSegment(0);
|
|
538
559
|
});
|
|
539
560
|
|
|
540
561
|
|
|
@@ -877,7 +898,7 @@ async function Delete(file) {
|
|
|
877
898
|
Observer.init({
|
|
878
899
|
name: 'CoCreateFileAddedNodes',
|
|
879
900
|
observe: ['addedNodes'],
|
|
880
|
-
target: '
|
|
901
|
+
target: '[type="file"]',
|
|
881
902
|
callback: mutation => init(mutation.target)
|
|
882
903
|
|
|
883
904
|
});
|
|
@@ -886,13 +907,13 @@ Observer.init({
|
|
|
886
907
|
name: 'CoCreateFileAttributes',
|
|
887
908
|
observe: ['attributes'],
|
|
888
909
|
attributeName: ['type'],
|
|
889
|
-
target: '
|
|
910
|
+
target: '[type="file"]',
|
|
890
911
|
callback: mutation => init(mutation.target)
|
|
891
912
|
});
|
|
892
913
|
|
|
893
914
|
Actions.init([
|
|
894
915
|
{
|
|
895
|
-
name: ["upload", "download", "saveLocally", "import", "export"],
|
|
916
|
+
name: ["upload", "download", "saveLocally", "asveAs", "import", "export"],
|
|
896
917
|
callback: (action) => {
|
|
897
918
|
if (action.name === 'upload')
|
|
898
919
|
upload(action.element)
|
package/src/server.js
CHANGED