@@ -26,7 +26,7 @@ import Observer from '@cocreate/observer';
2626import Crud from '@cocreate/crud-client' ;
2727import Elements from '@cocreate/elements' ;
2828import Actions from '@cocreate/actions' ;
29- import render from '@cocreate/render' ;
29+ import { render } from '@cocreate/render' ;
3030import { queryElements } from '@cocreate/utils' ;
3131import '@cocreate/element-prototype' ;
3232
@@ -42,7 +42,7 @@ const Files = new Map();
4242 * - If a single element is provided, it initializes that element (assuming it is of type "file").
4343 * - If an array of elements is provided, each element in the array is initialized.
4444 */
45- function init ( elements ) {
45+ async function init ( elements ) {
4646 if ( ! elements )
4747 elements = document . querySelectorAll ( '[type="file"]' )
4848 else if ( ! Array . isArray ( elements ) )
@@ -56,6 +56,13 @@ function init(elements) {
5656 elements [ i ] . getValue = async ( ) => await getFiles ( [ elements [ i ] ] )
5757 elements [ i ] . getFiles = async ( ) => await getFiles ( [ elements [ i ] ] )
5858 elements [ i ] . setValue = ( files ) => setFiles ( elements [ i ] , files ) ;
59+ elements [ i ] . renderValue = ( files ) => setFiles ( elements [ i ] , files ) ;
60+
61+ // if (elements[i].renderValue) {
62+ // let data = await elements[i].getValue()
63+ // if (data)
64+ // elements[i].setValue(data)
65+ // }
5966
6067 if ( elements [ i ] . hasAttribute ( 'directory' ) ) {
6168 if ( ! isInput && window . showDirectoryPicker )
@@ -163,7 +170,7 @@ async function fileEvent(event) {
163170 console . log ( "Files selected:" , selected ) ;
164171
165172 if ( input . renderValue )
166- input . renderValue ( selected . values ( ) )
173+ input . renderValue ( Array . from ( selected . values ( ) ) )
167174
168175 const isImport = input . getAttribute ( 'import' )
169176 const isRealtime = input . getAttribute ( 'realtime' )
@@ -222,7 +229,7 @@ async function getFiles(fileInputs) {
222229 for ( let input of fileInputs ) {
223230 const selected = inputs . get ( input )
224231 if ( selected ) {
225- for ( let file of selected . values ( ) ) {
232+ for ( let file of Array . from ( selected . values ( ) ) ) {
226233 if ( ! file . src )
227234 await readFile ( file )
228235
@@ -292,8 +299,11 @@ function readFile(file) {
292299}
293300
294301function setFiles ( element , files ) {
302+ if ( ! files ) return
295303 if ( ! Array . isArray ( files ) )
296304 files = [ files ]
305+ else if ( ! files . length )
306+ return
297307
298308 let selected = inputs . get ( element ) || new Map ( )
299309 for ( let i = 0 ; i < files . length ; i ++ ) {
@@ -302,6 +312,8 @@ function setFiles(element, files) {
302312 Files . set ( files [ i ] . id , files [ i ] )
303313 }
304314 inputs . set ( element , selected ) ;
315+ if ( element . renderValue )
316+ render ( { source : element , data : Array . from ( selected . values ( ) ) } )
305317}
306318
307319async function save ( element , action , data ) {
0 commit comments