@cocreate/file 1.19.2 → 1.19.4

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 CHANGED
@@ -1,3 +1,21 @@
1
+ ## [1.19.4](https://github.com/CoCreate-app/CoCreate-file/compare/v1.19.3...v1.19.4) (2025-04-30)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * added css-loader ([76ce0e7](https://github.com/CoCreate-app/CoCreate-file/commit/76ce0e743104f515419ef47dddc58c3d39cd8501))
7
+ * update query attributes ([52612c0](https://github.com/CoCreate-app/CoCreate-file/commit/52612c0e7ae552c0225cde2fe16118ef90338ae6))
8
+ * updated cocreate modules versions ([d27f8e8](https://github.com/CoCreate-app/CoCreate-file/commit/d27f8e8c6c82cc6cd0c4d7ef4baf186f81816a2a))
9
+ * webpack.config and devdependencies ([41c2a5a](https://github.com/CoCreate-app/CoCreate-file/commit/41c2a5a250ff4f00da8c0649ee4bae7fa4be56dc))
10
+
11
+ ## [1.19.3](https://github.com/CoCreate-app/CoCreate-file/compare/v1.19.2...v1.19.3) (2025-04-11)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * fire action end event on elememt instead of document ([3e78905](https://github.com/CoCreate-app/CoCreate-file/commit/3e789054e65e87c4f988d2041dfe8687684ebff5))
17
+ * update observer observe param to type and and attributeName to attributeFilter ([524a05e](https://github.com/CoCreate-app/CoCreate-file/commit/524a05e0080c4473f28fc9e5bd1414479e313eb7))
18
+
1
19
  ## [1.19.2](https://github.com/CoCreate-app/CoCreate-file/compare/v1.19.1...v1.19.2) (2025-01-18)
2
20
 
3
21
 
package/demo/index.html CHANGED
@@ -1,81 +1,81 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
- <head>
4
- <title>file | CoCreateJS</title>
3
+ <head>
4
+ <title>file | CoCreateJS</title>
5
5
 
6
- <!-- CoCreate Favicon -->
7
- <link
8
- rel="icon"
9
- type="image/png"
10
- sizes="32x32"
11
- href="../assets/favicon.ico" />
12
- <link rel="manifest" href="/manifest.webmanifest" />
13
- </head>
14
- <body>
15
- <form>
16
- <input type="file" import />
17
- <button actions="import">import</button>
18
- </form>
6
+ <!-- CoCreate Favicon -->
7
+ <link
8
+ rel="icon"
9
+ type="image/png"
10
+ sizes="32x32"
11
+ href="../assets/favicon.ico" />
12
+ <link rel="manifest" href="/manifest.webmanifest" />
13
+ </head>
14
+ <body>
15
+ <form>
16
+ <input type="file" import />
17
+ <button actions="import">import</button>
18
+ </form>
19
19
 
20
- <form>
21
- <input type="file" path="/assets/test" />
22
- <button actions="upload">upload</button>
23
- </form>
20
+ <form>
21
+ <input type="file" path="/assets/test" />
22
+ <button actions="upload">upload</button>
23
+ </form>
24
24
 
25
- <form>
26
- <input type="file" multiple />
27
- <button actions="upload">upload</button>
28
- </form>
25
+ <form>
26
+ <input type="file" multiple />
27
+ <button actions="upload">upload</button>
28
+ </form>
29
29
 
30
- <form>
31
- <input type="file" directory />
32
- <button actions="upload">upload</button>
33
- </form>
30
+ <form>
31
+ <input type="file" directory />
32
+ <button actions="upload">upload</button>
33
+ </form>
34
34
 
35
- <div
36
- type="file"
37
- array="test"
38
- object=""
39
- key="image"
40
- accept="image/*"
41
- placeholder="Upload Image or Video Thumbnail"
42
- class="floating-label min-height:40px active"
43
- render-selector="[template]"
44
- active>
45
- <div template>
46
- <img src="{{image.src}}" alt="image" width="100%" />
47
- </div>
48
- </div>
35
+ <div
36
+ type="file"
37
+ array="test"
38
+ object=""
39
+ key="image"
40
+ accept="image/*"
41
+ placeholder="Upload Image or Video Thumbnail"
42
+ class="floating-label min-height:40px active"
43
+ render-query="[template]"
44
+ active>
45
+ <div template>
46
+ <img src="{{image.src}}" alt="image" width="100%" />
47
+ </div>
48
+ </div>
49
49
 
50
- <form>
51
- <input
52
- type="file"
53
- directory
54
- realtime="false"
55
- render-selector="document; [template]" />
50
+ <form>
51
+ <input
52
+ type="file"
53
+ directory
54
+ realtime="false"
55
+ render-query="$document [template]" />
56
56
 
57
- <button actions="saveLocally">saveLocally</button>
58
- </form>
57
+ <button actions="saveLocally">saveLocally</button>
58
+ </form>
59
59
 
60
- <div template file_id="{{id}}">
61
- <button actions="createFile" value="tesing.js">createFile</button>
62
- <button actions="deleteFile">deleteFile</button>
63
- <button actions="createDirectory">createDirectory</button>
64
- <button actions="deleteDirectory">deleteDirectory</button>
60
+ <div template file_id="{{id}}">
61
+ <button actions="createFile" value="tesing.js">createFile</button>
62
+ <button actions="deleteFile">deleteFile</button>
63
+ <button actions="createDirectory">createDirectory</button>
64
+ <button actions="deleteDirectory">deleteDirectory</button>
65
65
 
66
- <input file="name" value="{{name}}" />
67
- <input file="directory" value="{{directory}}" />
68
- <input file="content-type" value="{{content-type}}" />
69
- <textarea file="src" value-type="string">{{src}}</textarea>
70
- <div>id: {{id}}</div>
71
- </div>
66
+ <input file="name" value="{{name}}" />
67
+ <input file="directory" value="{{directory}}" />
68
+ <input file="content-type" value="{{content-type}}" />
69
+ <textarea file="src" value-type="string">{{src}}</textarea>
70
+ <div>id: {{id}}</div>
71
+ </div>
72
72
 
73
- <form>
74
- <button actions="export" array="files">export</button>
75
- </form>
73
+ <form>
74
+ <button actions="export" array="files">export</button>
75
+ </form>
76
76
 
77
- <!-- <script src="../dist/CoCreate-file.js"></script> -->
78
- <script src="../../../CoCreateJS/dist/CoCreate.js"></script>
79
- <!-- <script src="https://CoCreate.app/dist/CoCreate.js"></script> -->
80
- </body>
77
+ <!-- <script src="../dist/CoCreate-file.js"></script> -->
78
+ <script src="../../../CoCreateJS/dist/CoCreate.js"></script>
79
+ <!-- <script src="https://CoCreate.app/dist/CoCreate.js"></script> -->
80
+ </body>
81
81
  </html>
package/docs/index.html CHANGED
@@ -1,345 +1,351 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1" />
7
- <title>CoCreate-file Documentation | CoCreateJS</title>
8
- <link
9
- rel="icon"
10
- type="image/png"
11
- sizes="32x32"
12
- href="https://cocreate.app/images/favicon.ico"
13
- />
14
- <meta
15
- name="description"
16
- content="A convenient chain handler allows user to chain multiple components together. When one file is complete next one will start untill all file completed."
17
- />
18
- <meta
19
- name="keywords"
20
- content="helper classes, utility classes, css framework, css library, inline style classes"
21
- />
22
- <meta name="robots" content="index,follow" />
23
- <meta
24
- property="og:image"
25
- content="https://cdn.cocreate.app/docs/file.png"
26
- />
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ <title>CoCreate-file Documentation | CoCreateJS</title>
8
+ <link
9
+ rel="icon"
10
+ type="image/png"
11
+ sizes="32x32"
12
+ href="https://cocreate.app/images/favicon.ico" />
13
+ <meta
14
+ name="description"
15
+ content="A convenient chain handler allows user to chain multiple components together. When one file is complete next one will start untill all file completed." />
16
+ <meta
17
+ name="keywords"
18
+ content="helper classes, utility classes, css framework, css library, inline style classes" />
19
+ <meta name="robots" content="index,follow" />
20
+ <meta
21
+ property="og:image"
22
+ content="https://cdn.cocreate.app/docs/file.png" />
27
23
 
28
- <link
29
- rel="stylesheet"
30
- href="../index.css"
31
- array="files"
32
- object="60888216117c640e7596303f"
33
- key="src"
34
- type="text/css"
35
- save="true"
36
- />
37
- <link rel="manifest" href="/manifest.webmanifest" />
38
- </head>
24
+ <link
25
+ rel="stylesheet"
26
+ href="../index.css"
27
+ array="files"
28
+ object="60888216117c640e7596303f"
29
+ key="src"
30
+ type="text/css"
31
+ save="true" />
32
+ <link rel="manifest" href="/manifest.webmanifest" />
33
+ </head>
39
34
 
40
- <body>
41
- <!-- Navbar -->
42
- <nav
43
- class="width:100% display:flex align-items:center background:transparent padding-top:10px padding-bottom:10px"
44
- content_id="content"
45
- scroll="sticky-nav,"
46
- scroll-up="5"
47
- scroll-down="5"
48
- path="../"
49
- src="../components/navbar.html"
50
- ></nav>
51
- <sidenav
52
- id="menuL"
53
- class="position:fixed top:0px left:0px overflow:hidden background:whitesmoke height:100vh width:0px width:300px@xl"
54
- resizable
55
- resize-selector="[content_id='content']"
56
- resize-property="margin-left"
57
- resize-value="width"
58
- >
59
- <menu array="files" object="603717b07de7fb350ae9fec8" key="src"></menu>
60
- <div resize="right"></div>
61
- </sidenav>
62
- <main
63
- class="padding-top:15px padding:15px@lg@xl"
64
- content_id="content"
65
- id="cocreate-file"
66
- >
67
- <div
68
- class="display:flex flex-wrap:wrap justify-content:space-between position:relative margin:10px"
69
- >
70
- <div class="display:flex align-items:center">
71
- <h2>CoCreate-file</h2>
72
- </div>
73
- <div
74
- class="display:flex align-items:center font-size:20px position:absolute right:0 padding:5px background:white"
75
- >
76
- <div
77
- class="display:flex align-items:center transition:0.3s padding-left:10px"
78
- share-network="true"
79
- share-text="A convenient chain handler allows user to chain multiple components together. When one file is complete next one will start untill all file completed."
80
- share-title="CoCreate file"
81
- share-height="600"
82
- share-width="700"
83
- share-media="https://cdn.cocreate.app/docs/file.png"
84
- hover="display:block!important"
85
- hover-selector=".social-networks"
86
- >
87
- <div class="display:none social-networks">
88
- <a
89
- class="margin-right:15px"
90
- share-network="twitter"
91
- title="Share on twitter"
92
- ><i src="/assets/svg/twitter.svg"></i
93
- ></a>
94
- <a
95
- class="margin-right:15px"
96
- share-network="facebook"
97
- title="Share on Facebook"
98
- ><i src="/assets/svg/facebook.svg"></i
99
- ></a>
100
- <a
101
- class="margin-right:15px"
102
- share-network="instagram"
103
- title="Share on instagram"
104
- ><i src="/assets/svg/instagram.svg"></i
105
- ></a>
106
- </div>
107
- <a
108
- class="margin-right:15px"
109
- share-network="share"
110
- title="Share on share"
111
- ><i src="/assets/svg/share-alt.svg"></i
112
- ></a>
113
- </div>
114
- <a
115
- class="margin-right:15px"
116
- share-network="share"
117
- title="Share on share"
118
- ><i src="/assets/svg/share-alt.svg"></i
119
- ></a>
120
- </div>
121
- <a
122
- href="https://github.com/CoCreate-app/CoCreate-file"
123
- target="_blank"
124
- class=""
125
- ><i src="/assets/svg/github.svg"></i
126
- ></a>
127
- </div>
35
+ <body>
36
+ <!-- Navbar -->
37
+ <nav
38
+ class="width:100% display:flex align-items:center background:transparent padding-top:10px padding-bottom:10px"
39
+ content_id="content"
40
+ scroll="sticky-nav,"
41
+ scroll-up="5"
42
+ scroll-down="5"
43
+ path="../"
44
+ src="../components/navbar.html"></nav>
45
+ <sidenav
46
+ id="menuL"
47
+ class="position:fixed top:0px left:0px overflow:hidden background:whitesmoke height:100vh width:0px width:300px@xl"
48
+ resizable
49
+ resize-query="[content_id='content']"
50
+ resize-property="margin-left"
51
+ resize-value="width">
52
+ <menu
53
+ array="files"
54
+ object="603717b07de7fb350ae9fec8"
55
+ key="src"></menu>
56
+ <div resize="right"></div>
57
+ </sidenav>
58
+ <main
59
+ class="padding-top:15px padding:15px@lg@xl"
60
+ content_id="content"
61
+ id="cocreate-file">
62
+ <div
63
+ class="display:flex flex-wrap:wrap justify-content:space-between position:relative margin:10px">
64
+ <div class="display:flex align-items:center">
65
+ <h2>CoCreate-file</h2>
66
+ </div>
67
+ <div
68
+ class="display:flex align-items:center font-size:20px position:absolute right:0 padding:5px background:white">
69
+ <div
70
+ class="display:flex align-items:center transition:0.3s padding-left:10px"
71
+ share-network="true"
72
+ share-text="A convenient chain handler allows user to chain multiple components together. When one file is complete next one will start untill all file completed."
73
+ share-title="CoCreate file"
74
+ share-height="600"
75
+ share-width="700"
76
+ share-media="https://cdn.cocreate.app/docs/file.png"
77
+ hover="display:block!important"
78
+ hover-query=".social-networks">
79
+ <div class="display:none social-networks">
80
+ <a
81
+ class="margin-right:15px"
82
+ share-network="twitter"
83
+ title="Share on twitter"
84
+ ><i src="/assets/svg/twitter.svg"></i
85
+ ></a>
86
+ <a
87
+ class="margin-right:15px"
88
+ share-network="facebook"
89
+ title="Share on Facebook"
90
+ ><i src="/assets/svg/facebook.svg"></i
91
+ ></a>
92
+ <a
93
+ class="margin-right:15px"
94
+ share-network="instagram"
95
+ title="Share on instagram"
96
+ ><i src="/assets/svg/instagram.svg"></i
97
+ ></a>
98
+ </div>
99
+ <a
100
+ class="margin-right:15px"
101
+ share-network="share"
102
+ title="Share on share"
103
+ ><i src="/assets/svg/share-alt.svg"></i
104
+ ></a>
105
+ </div>
106
+ <a
107
+ class="margin-right:15px"
108
+ share-network="share"
109
+ title="Share on share"
110
+ ><i src="/assets/svg/share-alt.svg"></i
111
+ ></a>
112
+ </div>
113
+ <a
114
+ href="https://github.com/CoCreate-app/CoCreate-file"
115
+ target="_blank"
116
+ class=""
117
+ ><i src="/assets/svg/github.svg"></i
118
+ ></a>
119
+ </div>
128
120
 
129
- <h1
130
- class="max-width:500px margin:20px_10px line-height:1.5 font-size:16px font-weight:100"
131
- >
132
- A convenient chain handler allows user to chain multiple CoCreate
133
- components together. When one file is complete next one will start. The
134
- sequence goes untill all file completed. Grounded on Vanilla javascript,
135
- easily configured using HTML5 attributes and/or JavaScript API.
136
- </h1>
137
- <div id="file-section" class="display:flex flex-wrap:wrap">
138
- <div
139
- class="flex-grow:1 width:400px width:300px@xs padding:0px_10px margin-top:60px"
140
- >
141
- <div
142
- id="file-install"
143
- class="border-bottom:1px_solid_lightgrey"
144
- scroll
145
- scroll-intersect="color:dodgerblue"
146
- scroll-selector="#file-install-section"
147
- >
148
- <span
149
- class="display:flex align-items:center width:fit-content"
150
- hover="display:block!important"
151
- hover-selector="[href='#file-install']"
152
- >
153
- <h2 class="padding:5px_0px">Install</h2>
154
- <a class="margin-left:10px display:none" href="#file-install"
155
- ><i src="/assets/svg/link.svg"></i
156
- ></a>
157
- </span>
158
- </div>
121
+ <h1
122
+ class="max-width:500px margin:20px_10px line-height:1.5 font-size:16px font-weight:100">
123
+ A convenient chain handler allows user to chain multiple
124
+ CoCreate components together. When one file is complete next one
125
+ will start. The sequence goes untill all file completed.
126
+ Grounded on Vanilla javascript, easily configured using HTML5
127
+ attributes and/or JavaScript API.
128
+ </h1>
129
+ <div id="file-section" class="display:flex flex-wrap:wrap">
130
+ <div
131
+ class="flex-grow:1 width:400px width:300px@xs padding:0px_10px margin-top:60px">
132
+ <div
133
+ id="file-install"
134
+ class="border-bottom:1px_solid_lightgrey"
135
+ scroll
136
+ scroll-intersect="color:dodgerblue"
137
+ scroll-query="#file-install-section">
138
+ <span
139
+ class="display:flex align-items:center width:fit-content"
140
+ hover="display:block!important"
141
+ hover-query="[href='#file-install']">
142
+ <h2 class="padding:5px_0px">Install</h2>
143
+ <a
144
+ class="margin-left:10px display:none"
145
+ href="#file-install"
146
+ ><i src="/assets/svg/link.svg"></i
147
+ ></a>
148
+ </span>
149
+ </div>
159
150
 
160
- <pre><code class="language-bash">npm i @cocreate/file</code></pre>
161
- <p class="padding:10px_0px line-height:1.5">
162
- Or you can use cdn link:
163
- </p>
164
- <pre><code class="language-html">&lt;script&gt;https://cdn.cocreate.app/file/latest/CoCreate-file.min.js&lt;/script&gt;</code></pre>
151
+ <pre><code class="language-bash">npm i @cocreate/file</code></pre>
152
+ <p class="padding:10px_0px line-height:1.5">
153
+ Or you can use cdn link:
154
+ </p>
155
+ <pre><code class="language-html">&lt;script&gt;https://cdn.cocreate.app/file/latest/CoCreate-file.min.js&lt;/script&gt;</code></pre>
165
156
 
166
- <div
167
- id="file-usage"
168
- class="margin-top:80px border-bottom:1px_solid_lightgrey"
169
- scroll
170
- scroll-intersect="color:dodgerblue"
171
- scroll-selector="#file-usage-section"
172
- >
173
- <span
174
- class="display:flex align-items:center width:fit-content"
175
- hover="display:block!important"
176
- hover-selector="[href='#file-usage']"
177
- >
178
- <h2 class="padding:5px_0px">Usage</h2>
179
- <a class="margin-left:10px display:none" href="#file-usage"
180
- ><i src="/assets/svg/link.svg"></i
181
- ></a>
182
- </span>
183
- </div>
184
- <div class="">
185
- <p class="padding:10px_0px line-height:1.5">This is file usage</p>
157
+ <div
158
+ id="file-usage"
159
+ class="margin-top:80px border-bottom:1px_solid_lightgrey"
160
+ scroll
161
+ scroll-intersect="color:dodgerblue"
162
+ scroll-query="#file-usage-section">
163
+ <span
164
+ class="display:flex align-items:center width:fit-content"
165
+ hover="display:block!important"
166
+ hover-query="[href='#file-usage']">
167
+ <h2 class="padding:5px_0px">Usage</h2>
168
+ <a
169
+ class="margin-left:10px display:none"
170
+ href="#file-usage"
171
+ ><i src="/assets/svg/link.svg"></i
172
+ ></a>
173
+ </span>
174
+ </div>
175
+ <div class="">
176
+ <p class="padding:10px_0px line-height:1.5">
177
+ This is file usage
178
+ </p>
186
179
 
187
- <div class="flex-grow:1 min-width:300px width:100%">
188
- <pre><code class="language-html">&lt;div&gt;&lt;/div&gt;</code></pre>
189
- </div>
190
- <p class="padding:10px_0px line-height:1.5">This is file usage</p>
191
- <p class="padding:10px_0px line-height:1.5">This is file usage</p>
192
- </div>
180
+ <div class="flex-grow:1 min-width:300px width:100%">
181
+ <pre><code class="language-html">&lt;div&gt;&lt;/div&gt;</code></pre>
182
+ </div>
183
+ <p class="padding:10px_0px line-height:1.5">
184
+ This is file usage
185
+ </p>
186
+ <p class="padding:10px_0px line-height:1.5">
187
+ This is file usage
188
+ </p>
189
+ </div>
193
190
 
194
- <div
195
- id="file-attributes"
196
- class="margin-top:80px border-bottom:1px_solid_lightgrey"
197
- scroll
198
- scroll-intersect="color:dodgerblue"
199
- scroll-selector="#file-attributes-section"
200
- >
201
- <span
202
- class="display:flex align-items:center width:fit-content"
203
- hover="display:block!important"
204
- hover-selector="[href='#file-attributes']"
205
- >
206
- <h2 class="padding:5px_0px">Attributes</h2>
207
- <a class="margin-left:10px display:none" href="#file-attributes"
208
- ><i src="/assets/svg/link.svg"></i
209
- ></a>
210
- </span>
211
- </div>
191
+ <div
192
+ id="file-attributes"
193
+ class="margin-top:80px border-bottom:1px_solid_lightgrey"
194
+ scroll
195
+ scroll-intersect="color:dodgerblue"
196
+ scroll-query="#file-attributes-section">
197
+ <span
198
+ class="display:flex align-items:center width:fit-content"
199
+ hover="display:block!important"
200
+ hover-query="[href='#file-attributes']">
201
+ <h2 class="padding:5px_0px">Attributes</h2>
202
+ <a
203
+ class="margin-left:10px display:none"
204
+ href="#file-attributes"
205
+ ><i src="/assets/svg/link.svg"></i
206
+ ></a>
207
+ </span>
208
+ </div>
212
209
 
213
- <ul class="list-style-type:none">
214
- <li class="padding:15px_0px border-bottom:1px_solid_lightgrey">
215
- <h4>
216
- <span>file</span>
217
- <span class="cocreate-badge success">string</span>
218
- <span class="cocreate-badge warning">optional</span>
219
- </h4>
220
- <p>file-attribute</p>
221
- </li>
222
- <li class="padding:15px_0px border-bottom:1px_solid_lightgrey">
223
- <h4>
224
- <span>file</span>
225
- <span class="cocreate-badge success">string</span>
226
- <span class="cocreate-badge warning">optional</span>
227
- </h4>
228
- <p>file-attribute</p>
229
- </li>
230
- </ul>
231
- </div>
210
+ <ul class="list-style-type:none">
211
+ <li
212
+ class="padding:15px_0px border-bottom:1px_solid_lightgrey">
213
+ <h4>
214
+ <span>file</span>
215
+ <span class="cocreate-badge success"
216
+ >string</span
217
+ >
218
+ <span class="cocreate-badge warning"
219
+ >optional</span
220
+ >
221
+ </h4>
222
+ <p>file-attribute</p>
223
+ </li>
224
+ <li
225
+ class="padding:15px_0px border-bottom:1px_solid_lightgrey">
226
+ <h4>
227
+ <span>file</span>
228
+ <span class="cocreate-badge success"
229
+ >string</span
230
+ >
231
+ <span class="cocreate-badge warning"
232
+ >optional</span
233
+ >
234
+ </h4>
235
+ <p>file-attribute</p>
236
+ </li>
237
+ </ul>
238
+ </div>
232
239
 
233
- <div
234
- class="flex-grow:1 width:300px padding:0px_10px margin-top:60px border-bottom:1px_solid_lightgrey"
235
- >
236
- <!-- SandBox -->
237
- <div
238
- id="file-demo"
239
- class="border-bottom:1px_solid_lightgrey"
240
- scroll
241
- scroll-intersect="color:dodgerblue"
242
- scroll-selector="#file-demo-section"
243
- >
244
- <span
245
- class="display:flex align-items:center width:fit-content"
246
- hover="display:block!important"
247
- hover-selector="[href='#file-demo']"
248
- >
249
- <h2 class="padding:5px_0px">Demo</h2>
250
- <a class="margin-left:10px display:none" href="#file-demo"
251
- ><i src="/assets/svg/link.svg"></i
252
- ></a>
253
- </span>
254
- </div>
240
+ <div
241
+ class="flex-grow:1 width:300px padding:0px_10px margin-top:60px border-bottom:1px_solid_lightgrey">
242
+ <!-- SandBox -->
243
+ <div
244
+ id="file-demo"
245
+ class="border-bottom:1px_solid_lightgrey"
246
+ scroll
247
+ scroll-intersect="color:dodgerblue"
248
+ scroll-query="#file-demo-section">
249
+ <span
250
+ class="display:flex align-items:center width:fit-content"
251
+ hover="display:block!important"
252
+ hover-query="[href='#file-demo']">
253
+ <h2 class="padding:5px_0px">Demo</h2>
254
+ <a
255
+ class="margin-left:10px display:none"
256
+ href="#file-demo"
257
+ ><i src="/assets/svg/link.svg"></i
258
+ ></a>
259
+ </span>
260
+ </div>
255
261
 
256
- <div class="position:sticky top:0 padding:15px_0px height:100vh">
257
- <!-- SandBox -->
258
- <div
259
- class="display:flex flex-direction:column position:relative overflow:hidden card border-radius:2px width:auto height:600px margin-top:20px"
260
- id="playground"
261
- >
262
- <div
263
- id="demo-code"
264
- resizable
265
- class="position:relative height:50%"
266
- >
267
- <textarea
268
- type="code"
269
- lang="html"
270
- array="demos"
271
- object=""
272
- key="demo"
273
- save="false"
274
- id="demo"
275
- class="height:100% width:100% outline:none border:none resize:none padding:5px"
276
- ></textarea>
277
- <div resize="bottom" class="background:lightgrey"></div>
278
- </div>
262
+ <div
263
+ class="position:sticky top:0 padding:15px_0px height:100vh">
264
+ <!-- SandBox -->
265
+ <div
266
+ class="display:flex flex-direction:column position:relative overflow:hidden card border-radius:2px width:auto height:600px margin-top:20px"
267
+ id="playground">
268
+ <div
269
+ id="demo-code"
270
+ resizable
271
+ class="position:relative height:50%">
272
+ <textarea
273
+ type="code"
274
+ lang="html"
275
+ array="demos"
276
+ object=""
277
+ key="demo"
278
+ save="false"
279
+ id="demo"
280
+ class="height:100% width:100% outline:none border:none resize:none padding:5px"></textarea>
281
+ <div
282
+ resize="bottom"
283
+ class="background:lightgrey"></div>
284
+ </div>
279
285
 
280
- <div
281
- id="demo-preview"
282
- class="position:relative overflow:auto background-color:white"
283
- >
284
- <div class="demopreview padding:20px"></div>
285
- </div>
286
+ <div
287
+ id="demo-preview"
288
+ class="position:relative overflow:auto background-color:white">
289
+ <div class="demopreview padding:20px"></div>
290
+ </div>
286
291
 
287
- <div
288
- class="font-size:20px position:absolute top:10px right:10px opacity:0.6"
289
- >
290
- <a
291
- class="margin-right:10px"
292
- id="eye"
293
- show="#eye-slash"
294
- hide="#eye, #demo-preview"
295
- toggle="code-height"
296
- toggle-selector="#demo-code"
297
- ><i class="height:18px" src="/assets/svg/eye.svg"></i
298
- ></a>
299
- <a
300
- class="margin-right:10px"
301
- hidden
302
- id="eye-slash"
303
- show="#eye, #demo-preview"
304
- hide="#eye-slash"
305
- toggle="code-height"
306
- toggle-selector="#demo-code"
307
- ><i src="/assets/svg/eye-slash.svg"></i
308
- ></a>
309
- <a
310
- class="margin-right:10px"
311
- id="code"
312
- show="#code-slash"
313
- hide="#code, #demo-code"
314
- ><i src="/assets/svg/code.svg"></i
315
- ></a>
316
- <a
317
- class="margin-right:10px"
318
- hidden
319
- id="code-slash"
320
- show="#code, #demo-code"
321
- hide="#code-slash"
322
- ><i class="height:18px" src="/assets/svg/code.svg"></i
323
- ></a>
324
- <a
325
- class="margin-right:5px"
326
- fullscreen
327
- fullscreen-selector="#playground"
328
- ></a>
329
- </div>
330
- </div>
331
- <!-- End SandBox -->
332
- </div>
333
- </div>
334
- </div>
335
- <button
336
- href="https://github.com/CoCreate-app/CoCreate-file/tree/master/docs/index.html?message=docs%3A%20describe%20your%20change..."
337
- target="_blank"
338
- class="display:flex justify-content:center align-items:center position:fixed bottom:15px right:15px height:50px width:50px border-radius:50% box-shadow:0px_2px_10px_0px_rgba(0,_0,_0,_0.4)"
339
- >
340
- <i src="../assets/svg/pencil-alt.svg"></i>
341
- </button>
342
- </main>
343
- <script src="https://CoCreate.app/dist/CoCreate.js"></script>
344
- </body>
292
+ <div
293
+ class="font-size:20px position:absolute top:10px right:10px opacity:0.6">
294
+ <a
295
+ class="margin-right:10px"
296
+ id="eye"
297
+ show="#eye-slash"
298
+ hide="#eye, #demo-preview"
299
+ toggle="code-height"
300
+ toggle-query="#demo-code"
301
+ ><i
302
+ class="height:18px"
303
+ src="/assets/svg/eye.svg"></i
304
+ ></a>
305
+ <a
306
+ class="margin-right:10px"
307
+ hidden
308
+ id="eye-slash"
309
+ show="#eye, #demo-preview"
310
+ hide="#eye-slash"
311
+ toggle="code-height"
312
+ toggle-query="#demo-code"
313
+ ><i src="/assets/svg/eye-slash.svg"></i
314
+ ></a>
315
+ <a
316
+ class="margin-right:10px"
317
+ id="code"
318
+ show="#code-slash"
319
+ hide="#code, #demo-code"
320
+ ><i src="/assets/svg/code.svg"></i
321
+ ></a>
322
+ <a
323
+ class="margin-right:10px"
324
+ hidden
325
+ id="code-slash"
326
+ show="#code, #demo-code"
327
+ hide="#code-slash"
328
+ ><i
329
+ class="height:18px"
330
+ src="/assets/svg/code.svg"></i
331
+ ></a>
332
+ <a
333
+ class="margin-right:5px"
334
+ fullscreen
335
+ fullscreen-query="#playground"></a>
336
+ </div>
337
+ </div>
338
+ <!-- End SandBox -->
339
+ </div>
340
+ </div>
341
+ </div>
342
+ <button
343
+ href="https://github.com/CoCreate-app/CoCreate-file/tree/master/docs/index.html?message=docs%3A%20describe%20your%20change..."
344
+ target="_blank"
345
+ class="display:flex justify-content:center align-items:center position:fixed bottom:15px right:15px height:50px width:50px border-radius:50% box-shadow:0px_2px_10px_0px_rgba(0,_0,_0,_0.4)">
346
+ <i src="../assets/svg/pencil-alt.svg"></i>
347
+ </button>
348
+ </main>
349
+ <script src="https://CoCreate.app/dist/CoCreate.js"></script>
350
+ </body>
345
351
  </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocreate/file",
3
- "version": "1.19.2",
3
+ "version": "1.19.4",
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",
@@ -50,22 +50,18 @@
50
50
  },
51
51
  "main": "./src/index.js",
52
52
  "devDependencies": {
53
- "@babel/core": "^7.9.6",
54
- "@babel/preset-env": "^7.9.6",
55
- "babel-loader": "^8.1.0",
56
- "clean-webpack-plugin": "^3.0.0",
57
- "file-loader": "^6.2.0",
53
+ "css-loader": "^5.1.3",
54
+ "esbuild": "^0.25.2",
55
+ "esbuild-loader": "^4.3.0",
58
56
  "mini-css-extract-plugin": "^1.5.0",
59
- "style-loader": "^3.3.1",
60
- "terser-webpack-plugin": "^5.1.1",
61
57
  "webpack": "^5.24.4",
62
58
  "webpack-cli": "^4.5.0",
63
59
  "webpack-log": "^3.0.1"
64
60
  },
65
61
  "dependencies": {
66
- "@cocreate/actions": "^1.18.2",
67
- "@cocreate/config": "^1.12.3",
68
- "@cocreate/render": "^1.41.0",
69
- "@cocreate/utils": "^1.33.7"
62
+ "@cocreate/actions": "^1.21.0",
63
+ "@cocreate/config": "^1.13.0",
64
+ "@cocreate/render": "^1.45.1",
65
+ "@cocreate/utils": "^1.38.0"
70
66
  }
71
67
  }
package/src/client.js CHANGED
@@ -443,7 +443,7 @@ async function save(element, action, data) {
443
443
  element: element[i],
444
444
  prefix: action
445
445
  });
446
- if (queryElements) {
446
+ if (queryElements.length) {
447
447
  save(queryElements, action, data);
448
448
  }
449
449
  }
@@ -682,7 +682,7 @@ async function upload(element, data) {
682
682
  element: element[i],
683
683
  prefix: "upload"
684
684
  });
685
- if (queriedElements) {
685
+ if (queriedElements.length) {
686
686
  upload(queriedElements, data);
687
687
  }
688
688
  }
@@ -744,7 +744,7 @@ async function Import(element, data) {
744
744
  element: element[i],
745
745
  prefix: "import"
746
746
  });
747
- if (queriedElements) {
747
+ if (queriedElements.length) {
748
748
  Import(queriedElements, data);
749
749
  }
750
750
  }
@@ -786,7 +786,7 @@ async function Export(element, data) {
786
786
  element: element[i],
787
787
  prefix: "export"
788
788
  });
789
- if (queriedElements) {
789
+ if (queriedElements.length) {
790
790
  Export(queriedElements, data);
791
791
  }
792
792
  }
@@ -854,12 +854,12 @@ async function importURL(action) {
854
854
  });
855
855
 
856
856
  let queriedElements = queryElements({ element, prefix: "import-url" });
857
- if (queriedElements) {
857
+ if (queriedElements.length) {
858
858
  for (let queriedElement of queriedElements)
859
859
  queriedElement.setValue(data.file);
860
860
  }
861
861
 
862
- document.dispatchEvent(
862
+ action.element.dispatchEvent(
863
863
  new CustomEvent(action.name, {
864
864
  detail: {}
865
865
  })
@@ -895,7 +895,7 @@ async function fileRenderAction(action) {
895
895
  create(file, "directory", name);
896
896
  } else if (action.name === "deleteDirectory") Delete(file);
897
897
 
898
- document.dispatchEvent(
898
+ action.element.dispatchEvent(
899
899
  new CustomEvent(action.name, {
900
900
  detail: {}
901
901
  })
@@ -968,15 +968,15 @@ async function Delete(file) {
968
968
 
969
969
  Observer.init({
970
970
  name: "CoCreateFileAddedNodes",
971
- observe: ["addedNodes"],
971
+ types: ["addedNodes"],
972
972
  selector: '[type="file"]',
973
973
  callback: (mutation) => init(mutation.target)
974
974
  });
975
975
 
976
976
  Observer.init({
977
977
  name: "CoCreateFileAttributes",
978
- observe: ["attributes"],
979
- attributeName: ["type"],
978
+ types: ["attributes"],
979
+ attributeFilter: ["type"],
980
980
  selector: '[type="file"]',
981
981
  callback: (mutation) => init(mutation.target)
982
982
  });
@@ -1009,7 +1009,7 @@ Actions.init([
1009
1009
  // Something...
1010
1010
  }
1011
1011
 
1012
- document.dispatchEvent(
1012
+ action.element.dispatchEvent(
1013
1013
  new CustomEvent(action.name, {
1014
1014
  detail: {}
1015
1015
  })
package/webpack.config.js CHANGED
@@ -1,84 +1,65 @@
1
- const path = require("path")
2
- const TerserPlugin = require("terser-webpack-plugin")
3
- const MiniCssExtractPlugin = require("mini-css-extract-plugin")
4
- let isProduction = process.env.NODE_ENV === "production"
5
- const { CleanWebpackPlugin } = require("clean-webpack-plugin")
1
+ const path = require("path");
2
+ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
3
+ const { EsbuildPlugin } = require("esbuild-loader");
4
+ const { FileUploader } = require("@cocreate/webpack");
6
5
 
7
- module.exports = {
8
- entry: {
9
- "CoCreate-file": "./src/index.js",
10
- },
11
- output: {
12
- path: path.resolve(__dirname, "dist"),
13
- filename: isProduction ? "[name].min.js" : "[name].js",
14
- libraryTarget: "umd",
15
- libraryExport: "default",
16
- library: ["CoCreate", "file"],
17
- globalObject: "this",
18
- },
19
-
20
- plugins: [
21
- new CleanWebpackPlugin(),
22
- new MiniCssExtractPlugin({
23
- filename: "[name].css",
24
- }),
25
- ],
26
- // Default mode for Webpack is production.
27
- // Depending on mode Webpack will apply different things
28
- // on final bundle. For now we don't need production's JavaScript
29
- // minifying and other thing so let's set mode to development
30
- mode: isProduction ? "production" : "development",
31
- module: {
32
- rules: [
33
- {
34
- test: /.js$/,
35
- exclude: /(node_modules)/,
36
- use: {
37
- loader: "babel-loader",
38
- options: {
39
- plugins: ["@babel/plugin-transform-modules-commonjs"],
40
- },
41
- },
42
- },
43
- {
44
- test: /.css$/i,
45
- use: [
46
- { loader: "style-loader", options: { injectType: "linkTag" } },
47
- "file-loader",
48
- ],
49
- },
50
- ],
51
- },
52
-
53
- // add source map
54
- ...(isProduction ? {} : { devtool: "eval-source-map" }),
55
-
56
- optimization: {
57
- minimize: true,
58
- minimizer: [
59
- new TerserPlugin({
60
- extractComments: true,
61
- // cache: true,
62
- parallel: true,
63
- // sourceMap: true, // Must be set to true if using source-maps in production
64
- terserOptions: {
65
- // https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
66
- // extractComments: 'all',
67
- compress: {
68
- drop_console: true,
69
- },
70
- },
71
- }),
72
- ],
73
- splitChunks: {
74
- chunks: "all",
75
- minSize: 200,
76
- // maxSize: 99999,
77
- //minChunks: 1,
78
-
79
- cacheGroups: {
80
- defaultVendors: false,
81
- },
82
- },
83
- },
84
- }
6
+ module.exports = async (env, argv) => {
7
+ const isProduction = argv && argv.mode === "production";
8
+ const config = {
9
+ entry: {
10
+ "CoCreate-file": "./src/index.js"
11
+ },
12
+ output: {
13
+ path: path.resolve(__dirname, "dist"),
14
+ filename: isProduction ? "[name].min.js" : "[name].js",
15
+ libraryExport: "default",
16
+ library: ["CoCreate", "file"],
17
+ clean: true
18
+ },
19
+ plugins: [
20
+ new MiniCssExtractPlugin({
21
+ filename: isProduction ? "[name].min.css" : "[name].css"
22
+ }),
23
+ new FileUploader(env, argv)
24
+ ],
25
+ mode: isProduction ? "production" : "development",
26
+ devtool: isProduction ? "source-map" : "eval-source-map",
27
+ module: {
28
+ rules: [
29
+ {
30
+ test: /.js$/,
31
+ exclude: /node_modules/,
32
+ use: {
33
+ loader: "esbuild-loader",
34
+ options: {
35
+ loader: "js",
36
+ target: "es2017"
37
+ }
38
+ }
39
+ },
40
+ {
41
+ test: /.css$/i,
42
+ use: [MiniCssExtractPlugin.loader, "css-loader"]
43
+ }
44
+ ]
45
+ },
46
+ optimization: {
47
+ minimize: isProduction,
48
+ minimizer: [
49
+ new EsbuildPlugin({
50
+ target: "es2017",
51
+ css: true
52
+ })
53
+ ],
54
+ splitChunks: {
55
+ cacheGroups: {
56
+ defaultVendors: false
57
+ }
58
+ }
59
+ },
60
+ performance: {
61
+ hints: isProduction ? "warning" : false
62
+ }
63
+ };
64
+ return config;
65
+ };