{"version":3,"file":"iplab-ngx-file-upload.mjs","sources":["../../../projects/iplab/ngx-file-upload/src/lib/helpers/file-types.class.ts","../../../projects/iplab/ngx-file-upload/src/lib/helpers/helpers.class.ts","../../../projects/iplab/ngx-file-upload/src/lib/services/file-upload.service.ts","../../../projects/iplab/ngx-file-upload/src/lib/helpers/control.class.ts","../../../projects/iplab/ngx-file-upload/src/lib/components/file-upload-abstract.component.ts","../../../projects/iplab/ngx-file-upload/src/lib/components/drop-zone/file-upload-drop-zone.component.ts","../../../projects/iplab/ngx-file-upload/src/lib/components/drop-zone/file-upload-drop-zone.component.html","../../../projects/iplab/ngx-file-upload/src/lib/components/file-list/file-upload-icon.component.ts","../../../projects/iplab/ngx-file-upload/src/lib/components/file-list/file-upload-icon.component.html","../../../projects/iplab/ngx-file-upload/src/lib/components/file-list/file-upload-list-item.component.ts","../../../projects/iplab/ngx-file-upload/src/lib/components/multiple-file-upload/file-upload.component.ts","../../../projects/iplab/ngx-file-upload/src/lib/components/multiple-file-upload/file-upload.component.html","../../../projects/iplab/ngx-file-upload/src/lib/components/attribute/file-upload-attr.component.ts","../../../projects/iplab/ngx-file-upload/src/lib/components/simple-file-upload/simple-file-upload.component.ts","../../../projects/iplab/ngx-file-upload/src/lib/components/simple-file-upload/simple-file-upload.component.html","../../../projects/iplab/ngx-file-upload/src/lib/helpers/validators.class.ts","../../../projects/iplab/ngx-file-upload/src/lib/directives/validators.directive.ts","../../../projects/iplab/ngx-file-upload/src/lib/directives/attribute.directive.ts","../../../projects/iplab/ngx-file-upload/src/lib/directives/discard.directive.ts","../../../projects/iplab/ngx-file-upload/src/lib/directives/native.directive.ts","../../../projects/iplab/ngx-file-upload/src/lib/file-upload.module.ts","../../../projects/iplab/ngx-file-upload/src/public_api.ts","../../../projects/iplab/ngx-file-upload/src/iplab-ngx-file-upload.ts"],"sourcesContent":["\r\n// -owner-group-others-\r\n// -rwxrwxrwx = 0777\r\nenum FileAccess {\r\n    None,\r\n    Read = 1 << 2,\r\n    Write = 1 << 1,\r\n    ReadWrite  = Read | Write,\r\n    Execute = 1 << 0,\r\n    ReadWriteExecute = ReadWrite | Execute,\r\n    ExecuteRead = Execute | Read,\r\n    r = Read,\r\n    w = Write,\r\n    x = Execute,\r\n    rw = ReadWrite,\r\n    rwx = ReadWriteExecute,\r\n    xr = ExecuteRead\r\n}\r\n\r\n/**\r\n * This table lists some important MIME types for the Web copied from\r\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\r\n * http://www.iana.org/assignments/media-types/media-types.xhtml\r\n */\r\nexport enum FileUploadTypes {\r\n    arc = 'application/octet-stream',\r\n    midi = 'audio/midi',\r\n    ts = 'application/typescript',\r\n    woff2 = 'font/woff2',\r\n    evy = 'application/envoy',\r\n    fif = 'application/fractals',\r\n    hta = 'application/hta',\r\n    acx = 'application/internet-property-stream',\r\n    dot = 'application/msword',\r\n    dms = 'application/octet-stream',\r\n    eps = 'application/postscript',\r\n    ps = 'application/postscript',\r\n    xla = 'application/vnd.ms-excel',\r\n    xlc = 'application/vnd.ms-excel',\r\n    xlm = 'application/vnd.ms-excel',\r\n    xlt = 'application/vnd.ms-excel',\r\n    xlw = 'application/vnd.ms-excel',\r\n    msg = 'application/vnd.ms-outlook',\r\n    sst = 'application/vnd.ms-pkicertstore',\r\n    pot = 'application/vnd.ms-powerpoint',\r\n    pps = 'application/vnd.ms-powerpoint',\r\n    wcm = 'application/vnd.ms-works',\r\n    wdb = 'application/vnd.ms-works',\r\n    wks = 'application/vnd.ms-works',\r\n    cdf = 'application/x-cdf',\r\n    tgz = 'application/x-compressed',\r\n    dcr = 'application/x-director',\r\n    dxr = 'application/x-director',\r\n    gz = 'application/x-gzip',\r\n    ins = 'application/x-internet-signup',\r\n    isp = 'application/x-internet-signup',\r\n    iii = 'application/x-iphone',\r\n    dll = 'application/x-msdownload',\r\n    m13 = 'application/x-msmediaview',\r\n    m14 = 'application/x-msmediaview',\r\n    pma = 'application/x-perfmon',\r\n    pmc = 'application/x-perfmon',\r\n    pmr = 'application/x-perfmon',\r\n    pmw = 'application/x-perfmon',\r\n    pfx = 'application/x-pkcs12',\r\n    spc = 'application/x-pkcs7-certificates',\r\n    p7c = 'application/x-pkcs7-mime',\r\n    texi = 'application/x-texinfo',\r\n    roff = 'application/x-troff',\r\n    tr = 'application/x-troff',\r\n    man = 'application/x-troff-man',\r\n    me = 'application/x-troff-me',\r\n    ms = 'application/x-troff-ms',\r\n    crt = 'application/x-x509-ca-cert',\r\n    pko = 'application/ynd.ms-pkipko',\r\n    snd = 'audio/basic',\r\n    rmi = 'audio/mid',\r\n    mp3 = 'audio/mpeg',\r\n    aifc = 'audio/x-aiff',\r\n    aiff = 'audio/x-aiff',\r\n    ra = 'audio/x-pn-realaudio',\r\n    jpe = 'image/jpeg',\r\n    jpeg = 'image/jpeg',\r\n    jfif = 'image/pipeg',\r\n    tif = 'image/tiff',\r\n    mht = 'message/rfc822',\r\n    mhtml = 'message/rfc822',\r\n    nws = 'message/rfc822',\r\n    htm = 'text/html',\r\n    stm = 'text/html',\r\n    uls = 'text/iuls',\r\n    sct = 'text/scriptlet',\r\n    htt = 'text/webviewhtml',\r\n    htc = 'text/x-component',\r\n    mp2 = 'video/mpeg',\r\n    mpa = 'video/mpeg',\r\n    mpe = 'video/mpeg',\r\n    mpg = 'video/mpeg',\r\n    mpv2 = 'video/mpeg',\r\n    mov = 'video/quicktime',\r\n    lsf = 'video/x-la-asf',\r\n    lsx = 'video/x-la-asf',\r\n    asr = 'video/x-ms-asf',\r\n    asx = 'video/x-ms-asf',\r\n    flr = 'x-world/x-vrml',\r\n    vrml = 'x-world/x-vrml',\r\n    wrz = 'x-world/x-vrml',\r\n    xaf = 'x-world/x-vrml',\r\n    xof = 'x-world/x-vrml',\r\n    x3d = 'application/vnd.hzn-3d-crossword',\r\n    '3gp' = 'video/3gpp',\r\n    '3g2' = 'video/3gpp2',\r\n    mseq = 'application/vnd.mseq',\r\n    pwn = 'application/vnd.3m.post-it-notes',\r\n    plb = 'application/vnd.3gpp.pic-bw-large',\r\n    psb = 'application/vnd.3gpp.pic-bw-small',\r\n    pvb = 'application/vnd.3gpp.pic-bw-var',\r\n    tcap = 'application/vnd.3gpp2.tcap',\r\n    '7z' = 'application/x-7z-compressed',\r\n    abw = 'application/x-abiword',\r\n    ace = 'application/x-ace-compressed',\r\n    acc = 'application/vnd.americandynamics.acc',\r\n    acu = 'application/vnd.acucobol',\r\n    atc = 'application/vnd.acucorp',\r\n    adp = 'audio/adpcm',\r\n    aab = 'application/x-authorware-bin',\r\n    aam = 'application/x-authorware-map',\r\n    aas = 'application/x-authorware-seg',\r\n    air = 'application/vnd.adobe.air-application-installer-package+zip',\r\n    swf = 'application/x-shockwave-flash',\r\n    fxp = 'application/vnd.adobe.fxp',\r\n    pdf = 'application/pdf',\r\n    ppd = 'application/vnd.cups-ppd',\r\n    dir = 'application/x-director',\r\n    xdp = 'application/vnd.adobe.xdp+xml',\r\n    xfdf = 'application/vnd.adobe.xfdf',\r\n    aac = 'audio/x-aac',\r\n    ahead = 'application/vnd.ahead.space',\r\n    azf = 'application/vnd.airzip.filesecure.azf',\r\n    azs = 'application/vnd.airzip.filesecure.azs',\r\n    azw = 'application/vnd.amazon.ebook',\r\n    ami = 'application/vnd.amiga.ami',\r\n    apk = 'application/vnd.android.package-archive',\r\n    cii = 'application/vnd.anser-web-certificate-issue-initiation',\r\n    fti = 'application/vnd.anser-web-funds-transfer-initiation',\r\n    atx = 'application/vnd.antix.game-component',\r\n    dmg = 'application/x-apple-diskimage',\r\n    mpkg = 'application/vnd.apple.installer+xml',\r\n    aw = 'application/applixware',\r\n    les = 'application/vnd.hhe.lesson-player',\r\n    swi = 'application/vnd.aristanetworks.swi',\r\n    s = 'text/x-asm',\r\n    atomcat = 'application/atomcat+xml',\r\n    atomsvc = 'application/atomsvc+xml',\r\n    atom = 'application/atom+xml',\r\n    ac = 'application/pkix-attr-cert',\r\n    aif = 'audio/x-aiff',\r\n    avi = 'video/x-msvideo',\r\n    aep = 'application/vnd.audiograph',\r\n    dxf = 'image/vnd.dxf',\r\n    dwf = 'model/vnd.dwf',\r\n    par = 'text/plain-bas',\r\n    bcpio = 'application/x-bcpio',\r\n    bin = 'application/octet-stream',\r\n    bmp = 'image/bmp',\r\n    torrent = 'application/x-bittorrent',\r\n    cod = 'application/vnd.rim.cod',\r\n    mpm = 'application/vnd.blueice.multipass',\r\n    bmi = 'application/vnd.bmi',\r\n    sh = 'application/x-sh',\r\n    btif = 'image/prs.btif',\r\n    rep = 'application/vnd.businessobjects',\r\n    bz = 'application/x-bzip',\r\n    bz2 = 'application/x-bzip2',\r\n    csh = 'application/x-csh',\r\n    c = 'text/x-c',\r\n    cdxml = 'application/vnd.chemdraw+xml',\r\n    css = 'text/css',\r\n    cdx = 'chemical/x-cdx',\r\n    cml = 'chemical/x-cml',\r\n    csml = 'chemical/x-csml',\r\n    cdbcmsg = 'application/vnd.contact.cmsg',\r\n    cla = 'application/vnd.claymore',\r\n    c4g = 'application/vnd.clonk.c4group',\r\n    sub = 'image/vnd.dvb.subtitle',\r\n    cdmia = 'application/cdmi-capability',\r\n    cdmic = 'application/cdmi-container',\r\n    cdmid = 'application/cdmi-domain',\r\n    cdmio = 'application/cdmi-object',\r\n    cdmiq = 'application/cdmi-queue',\r\n    c11amc = 'application/vnd.cluetrust.cartomobile-config',\r\n    c11amz = 'application/vnd.cluetrust.cartomobile-config-pkg',\r\n    ras = 'image/x-cmu-raster',\r\n    dae = 'model/vnd.collada+xml',\r\n    csv = 'text/csv',\r\n    cpt = 'application/mac-compactpro',\r\n    wmlc = 'application/vnd.wap.wmlc',\r\n    cgm = 'image/cgm',\r\n    ice = 'x-conference/x-cooltalk',\r\n    cmx = 'image/x-cmx',\r\n    xar = 'application/vnd.xara',\r\n    cmc = 'application/vnd.cosmocaller',\r\n    cpio = 'application/x-cpio',\r\n    clkx = 'application/vnd.crick.clicker',\r\n    clkk = 'application/vnd.crick.clicker.keyboard',\r\n    clkp = 'application/vnd.crick.clicker.palette',\r\n    clkt = 'application/vnd.crick.clicker.template',\r\n    clkw = 'application/vnd.crick.clicker.wordbank',\r\n    wbs = 'application/vnd.criticaltools.wbs+xml',\r\n    cryptonote = 'application/vnd.rig.cryptonote',\r\n    cif = 'chemical/x-cif',\r\n    cmdf = 'chemical/x-cmdf',\r\n    cu = 'application/cu-seeme',\r\n    cww = 'application/prs.cww',\r\n    curl = 'text/vnd.curl',\r\n    dcurl = 'text/vnd.curl.dcurl',\r\n    mcurl = 'text/vnd.curl.mcurl',\r\n    scurl = 'text/vnd.curl.scurl',\r\n    car = 'application/vnd.curl.car',\r\n    pcurl = 'application/vnd.curl.pcurl',\r\n    cmp = 'application/vnd.yellowriver-custom-menu',\r\n    dssc = 'application/dssc+der',\r\n    xdssc = 'application/dssc+xml',\r\n    deb = 'application/x-debian-package',\r\n    uva = 'audio/vnd.dece.audio',\r\n    uvi = 'image/vnd.dece.graphic',\r\n    uvh = 'video/vnd.dece.hd',\r\n    uvm = 'video/vnd.dece.mobile',\r\n    uvu = 'video/vnd.uvvu.mp4',\r\n    uvp = 'video/vnd.dece.pd',\r\n    uvs = 'video/vnd.dece.sd',\r\n    uvv = 'video/vnd.dece.video',\r\n    dvi = 'application/x-dvi',\r\n    seed = 'application/vnd.fdsn.seed',\r\n    dtb = 'application/x-dtbook+xml',\r\n    res = 'application/x-dtbresource+xml',\r\n    ait = 'application/vnd.dvb.ait',\r\n    svc = 'application/vnd.dvb.service',\r\n    eol = 'audio/vnd.digital-winds',\r\n    djvu = 'image/vnd.djvu',\r\n    dtd = 'application/xml-dtd',\r\n    mlp = 'application/vnd.dolby.mlp',\r\n    wad = 'application/x-doom',\r\n    dpg = 'application/vnd.dpgraph',\r\n    dra = 'audio/vnd.dra',\r\n    dfac = 'application/vnd.dreamfactory',\r\n    dts = 'audio/vnd.dts',\r\n    dtshd = 'audio/vnd.dts.hd',\r\n    dwg = 'image/vnd.dwg',\r\n    geo = 'application/vnd.dynageo',\r\n    es = 'application/ecmascript',\r\n    mag = 'application/vnd.ecowin.chart',\r\n    mmr = 'image/vnd.fujixerox.edmics-mmr',\r\n    rlc = 'image/vnd.fujixerox.edmics-rlc',\r\n    exi = 'application/exi',\r\n    mgz = 'application/vnd.proteus.magazine',\r\n    epub = 'application/epub+zip',\r\n    eml = 'message/rfc822',\r\n    nml = 'application/vnd.enliven',\r\n    xpr = 'application/vnd.is-xpr',\r\n    xif = 'image/vnd.xiff',\r\n    xfdl = 'application/vnd.xfdl',\r\n    emma = 'application/emma+xml',\r\n    ez2 = 'application/vnd.ezpix-album',\r\n    ez3 = 'application/vnd.ezpix-package',\r\n    fst = 'image/vnd.fst',\r\n    fvt = 'video/vnd.fvt',\r\n    fbs = 'image/vnd.fastbidsheet',\r\n    fe_launch = 'application/vnd.denovo.fcselayout-link',\r\n    f4v = 'video/x-f4v',\r\n    flv = 'video/x-flv',\r\n    fpx = 'image/vnd.fpx',\r\n    npx = 'image/vnd.net-fpx',\r\n    flx = 'text/vnd.fmi.flexstor',\r\n    fli = 'video/x-fli',\r\n    ftc = 'application/vnd.fluxtime.clip',\r\n    fdf = 'application/vnd.fdf',\r\n    f = 'text/x-fortran',\r\n    mif = 'application/vnd.mif',\r\n    fm = 'application/vnd.framemaker',\r\n    fh = 'image/x-freehand',\r\n    fsc = 'application/vnd.fsc.weblaunch',\r\n    fnc = 'application/vnd.frogans.fnc',\r\n    ltf = 'application/vnd.frogans.ltf',\r\n    ddd = 'application/vnd.fujixerox.ddd',\r\n    xdw = 'application/vnd.fujixerox.docuworks',\r\n    xbd = 'application/vnd.fujixerox.docuworks.binder',\r\n    oas = 'application/vnd.fujitsu.oasys',\r\n    oa2 = 'application/vnd.fujitsu.oasys2',\r\n    oa3 = 'application/vnd.fujitsu.oasys3',\r\n    fg5 = 'application/vnd.fujitsu.oasysgp',\r\n    bh2 = 'application/vnd.fujitsu.oasysprs',\r\n    spl = 'application/x-futuresplash',\r\n    fzs = 'application/vnd.fuzzysheet',\r\n    g3 = 'image/g3fax',\r\n    gmx = 'application/vnd.gmx',\r\n    gtw = 'model/vnd.gtw',\r\n    txd = 'application/vnd.genomatix.tuxedo',\r\n    ggb = 'application/vnd.geogebra.file',\r\n    ggt = 'application/vnd.geogebra.tool',\r\n    gdl = 'model/vnd.gdl',\r\n    gex = 'application/vnd.geometry-explorer',\r\n    gxt = 'application/vnd.geonext',\r\n    g2w = 'application/vnd.geoplan',\r\n    g3w = 'application/vnd.geospace',\r\n    gsf = 'application/x-font-ghostscript',\r\n    bdf = 'application/x-font-bdf',\r\n    gtar = 'application/x-gtar',\r\n    texinfo = 'application/x-texinfo',\r\n    gnumeric = 'application/x-gnumeric',\r\n    kml = 'application/vnd.google-earth.kml+xml',\r\n    kmz = 'application/vnd.google-earth.kmz',\r\n    gqf = 'application/vnd.grafeq',\r\n    gif = 'image/gif',\r\n    gv = 'text/vnd.graphviz',\r\n    gac = 'application/vnd.groove-account',\r\n    ghf = 'application/vnd.groove-help',\r\n    gim = 'application/vnd.groove-identity-message',\r\n    grv = 'application/vnd.groove-injector',\r\n    gtm = 'application/vnd.groove-tool-message',\r\n    tpl = 'application/vnd.groove-tool-template',\r\n    vcg = 'application/vnd.groove-vcard',\r\n    h261 = 'video/h261',\r\n    h263 = 'video/h263',\r\n    h264 = 'video/h264',\r\n    hpid = 'application/vnd.hp-hpid',\r\n    hps = 'application/vnd.hp-hps',\r\n    hdf = 'application/x-hdf',\r\n    rip = 'audio/vnd.rip',\r\n    hbci = 'application/vnd.hbci',\r\n    jlt = 'application/vnd.hp-jlyt',\r\n    pcl = 'application/vnd.hp-pcl',\r\n    hpgl = 'application/vnd.hp-hpgl',\r\n    hvs = 'application/vnd.yamaha.hv-script',\r\n    hvd = 'application/vnd.yamaha.hv-dic',\r\n    hvp = 'application/vnd.yamaha.hv-voice',\r\n    'sfd-hdstx' = 'application/vnd.hydrostatix.sof-data',\r\n    stk = 'application/hyperstudio',\r\n    hal = 'application/vnd.hal+xml',\r\n    html = 'text/html',\r\n    irm = 'application/vnd.ibm.rights-management',\r\n    sc = 'application/vnd.ibm.secure-container',\r\n    ics = 'text/calendar',\r\n    icc = 'application/vnd.iccprofile',\r\n    ico = 'image/x-icon',\r\n    igl = 'application/vnd.igloader',\r\n    ief = 'image/ief',\r\n    ivp = 'application/vnd.immervision-ivp',\r\n    ivu = 'application/vnd.immervision-ivu',\r\n    rif = 'application/reginfo+xml',\r\n    '3dml' = 'text/vnd.in3d.3dml',\r\n    spot = 'text/vnd.in3d.spot',\r\n    igs = 'model/iges',\r\n    i2g = 'application/vnd.intergeo',\r\n    cdy = 'application/vnd.cinderella',\r\n    xpw = 'application/vnd.intercon.formnet',\r\n    fcs = 'application/vnd.isac.fcs',\r\n    ipfix = 'application/ipfix',\r\n    cer = 'application/pkix-cert',\r\n    pki = 'application/pkixcmp',\r\n    crl = 'application/pkix-crl',\r\n    pkipath = 'application/pkix-pkipath',\r\n    igm = 'application/vnd.insors.igm',\r\n    rcprofile = 'application/vnd.ipunplugged.rcprofile',\r\n    irp = 'application/vnd.irepository.package+xml',\r\n    jad = 'text/vnd.sun.j2me.app-descriptor',\r\n    jar = 'application/java-archive',\r\n    class = 'application/java-vm',\r\n    jnlp = 'application/x-java-jnlp-file',\r\n    ser = 'application/java-serialized-object',\r\n    java = 'text/x-java-source,java',\r\n    js = 'application/javascript',\r\n    json = 'application/json',\r\n    joda = 'application/vnd.joost.joda-archive',\r\n    jpm = 'video/jpm',\r\n    jpg = 'image/jpeg',\r\n    pjpeg = 'image/pjpeg',\r\n    jpgv = 'video/jpeg',\r\n    ktz = 'application/vnd.kahootz',\r\n    mmd = 'application/vnd.chipnuts.karaoke-mmd',\r\n    karbon = 'application/vnd.kde.karbon',\r\n    chrt = 'application/vnd.kde.kchart',\r\n    kfo = 'application/vnd.kde.kformula',\r\n    flw = 'application/vnd.kde.kivio',\r\n    kon = 'application/vnd.kde.kontour',\r\n    kpr = 'application/vnd.kde.kpresenter',\r\n    ksp = 'application/vnd.kde.kspread',\r\n    kwd = 'application/vnd.kde.kword',\r\n    htke = 'application/vnd.kenameaapp',\r\n    kia = 'application/vnd.kidspiration',\r\n    kne = 'application/vnd.kinar',\r\n    sse = 'application/vnd.kodak-descriptor',\r\n    lasxml = 'application/vnd.las.las+xml',\r\n    latex = 'application/x-latex',\r\n    lbd = 'application/vnd.llamagraphics.life-balance.desktop',\r\n    lbe = 'application/vnd.llamagraphics.life-balance.exchange+xml',\r\n    jam = 'application/vnd.jam',\r\n    apr = 'application/vnd.lotus-approach',\r\n    pre = 'application/vnd.lotus-freelance',\r\n    nsf = 'application/vnd.lotus-notes',\r\n    org = 'application/vnd.lotus-organizer',\r\n    scm = 'application/vnd.lotus-screencam',\r\n    lwp = 'application/vnd.lotus-wordpro',\r\n    lvp = 'audio/vnd.lucent.voice',\r\n    m3u = 'audio/x-mpegurl',\r\n    m4v = 'video/x-m4v',\r\n    hqx = 'application/mac-binhex40',\r\n    portpkg = 'application/vnd.macports.portpkg',\r\n    mgp = 'application/vnd.osgeo.mapguide.package',\r\n    mrc = 'application/marc',\r\n    mrcx = 'application/marcxml+xml',\r\n    mxf = 'application/mxf',\r\n    nbp = 'application/vnd.wolfram.player',\r\n    ma = 'application/mathematica',\r\n    mathml = 'application/mathml+xml',\r\n    mbox = 'application/mbox',\r\n    mc1 = 'application/vnd.medcalcdata',\r\n    mscml = 'application/mediaservercontrol+xml',\r\n    cdkey = 'application/vnd.mediastation.cdkey',\r\n    mwf = 'application/vnd.mfer',\r\n    mfm = 'application/vnd.mfmp',\r\n    msh = 'model/mesh',\r\n    mads = 'application/mads+xml',\r\n    mets = 'application/mets+xml',\r\n    mods = 'application/mods+xml',\r\n    meta4 = 'application/metalink4+xml',\r\n    mcd = 'application/vnd.mcd',\r\n    flo = 'application/vnd.micrografx.flo',\r\n    igx = 'application/vnd.micrografx.igx',\r\n    es3 = 'application/vnd.eszigno3+xml',\r\n    mdb = 'application/x-msaccess',\r\n    asf = 'video/x-ms-asf',\r\n    exe = 'application/x-msdownload',\r\n    cil = 'application/vnd.ms-artgalry',\r\n    cab = 'application/vnd.ms-cab-compressed',\r\n    ims = 'application/vnd.ms-ims',\r\n    application = 'application/x-ms-application',\r\n    clp = 'application/x-msclip',\r\n    mdi = 'image/vnd.ms-modi',\r\n    eot = 'application/vnd.ms-fontobject',\r\n    xls = 'application/vnd.ms-excel',\r\n    xlam = 'application/vnd.ms-excel.addin.macroenabled.12',\r\n    xlsb = 'application/vnd.ms-excel.sheet.binary.macroenabled.12',\r\n    xltm = 'application/vnd.ms-excel.template.macroenabled.12',\r\n    xlsm = 'application/vnd.ms-excel.sheet.macroenabled.12',\r\n    chm = 'application/vnd.ms-htmlhelp',\r\n    crd = 'application/x-mscardfile',\r\n    lrm = 'application/vnd.ms-lrm',\r\n    mvb = 'application/x-msmediaview',\r\n    mny = 'application/x-msmoney',\r\n    pptx = 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n    sldx = 'application/vnd.openxmlformats-officedocument.presentationml.slide',\r\n    ppsx = 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\r\n    potx = 'application/vnd.openxmlformats-officedocument.presentationml.template',\r\n    xlsx = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n    xltx = 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\r\n    docx = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n    dotx = 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\r\n    obd = 'application/x-msbinder',\r\n    thmx = 'application/vnd.ms-officetheme',\r\n    onetoc = 'application/onenote',\r\n    pya = 'audio/vnd.ms-playready.media.pya',\r\n    pyv = 'video/vnd.ms-playready.media.pyv',\r\n    ppt = 'application/vnd.ms-powerpoint',\r\n    ppa = 'application/vnd.ms-powerpoint',\r\n    ppam = 'application/vnd.ms-powerpoint.addin.macroenabled.12',\r\n    sldm = 'application/vnd.ms-powerpoint.slide.macroenabled.12',\r\n    pptm = 'application/vnd.ms-powerpoint.presentation.macroenabled.12',\r\n    ppsm = 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',\r\n    potm = 'application/vnd.ms-powerpoint.template.macroenabled.12',\r\n    mpp = 'application/vnd.ms-project',\r\n    pub = 'application/x-mspublisher',\r\n    scd = 'application/x-msschedule',\r\n    xap = 'application/x-silverlight-app',\r\n    stl = 'application/vnd.ms-pki.stl',\r\n    cat = 'application/vnd.ms-pki.seccat',\r\n    vsd = 'application/vnd.visio',\r\n    vsdx = 'application/vnd.visio2013',\r\n    wm = 'video/x-ms-wm',\r\n    wma = 'audio/x-ms-wma',\r\n    wax = 'audio/x-ms-wax',\r\n    wmx = 'video/x-ms-wmx',\r\n    wmd = 'application/x-ms-wmd',\r\n    wpl = 'application/vnd.ms-wpl',\r\n    wmz = 'application/x-ms-wmz',\r\n    wmv = 'video/x-ms-wmv',\r\n    wvx = 'video/x-ms-wvx',\r\n    wmf = 'application/x-msmetafile',\r\n    trm = 'application/x-msterminal',\r\n    doc = 'application/msword',\r\n    docm = 'application/vnd.ms-word.document.macroenabled.12',\r\n    dotm = 'application/vnd.ms-word.template.macroenabled.12',\r\n    wri = 'application/x-mswrite',\r\n    wps = 'application/vnd.ms-works',\r\n    xbap = 'application/x-ms-xbap',\r\n    xps = 'application/vnd.ms-xpsdocument',\r\n    mid = 'audio/midi',\r\n    mpy = 'application/vnd.ibm.minipay',\r\n    afp = 'application/vnd.ibm.modcap',\r\n    rms = 'application/vnd.jcp.javame.midlet-rms',\r\n    tmo = 'application/vnd.tmobile-livetv',\r\n    prc = 'application/x-mobipocket-ebook',\r\n    mbk = 'application/vnd.mobius.mbk',\r\n    dis = 'application/vnd.mobius.dis',\r\n    plc = 'application/vnd.mobius.plc',\r\n    mqy = 'application/vnd.mobius.mqy',\r\n    msl = 'application/vnd.mobius.msl',\r\n    txf = 'application/vnd.mobius.txf',\r\n    daf = 'application/vnd.mobius.daf',\r\n    fly = 'text/vnd.fly',\r\n    mpc = 'application/vnd.mophun.certificate',\r\n    mpn = 'application/vnd.mophun.application',\r\n    mj2 = 'video/mj2',\r\n    mpga = 'audio/mpeg',\r\n    mxu = 'video/vnd.mpegurl',\r\n    mpeg = 'video/mpeg',\r\n    m21 = 'application/mp21',\r\n    mp4a = 'audio/mp4',\r\n    'mp4' = 'video/mp4',\r\n    m3u8 = 'application/vnd.apple.mpegurl',\r\n    mus = 'application/vnd.musician',\r\n    msty = 'application/vnd.muvee.style',\r\n    mxml = 'application/xv+xml',\r\n    ngdat = 'application/vnd.nokia.n-gage.data',\r\n    'n-gage' = 'application/vnd.nokia.n-gage.symbian.install',\r\n    ncx = 'application/x-dtbncx+xml',\r\n    nc = 'application/x-netcdf',\r\n    nlu = 'application/vnd.neurolanguage.nlu',\r\n    dna = 'application/vnd.dna',\r\n    nnd = 'application/vnd.noblenet-directory',\r\n    nns = 'application/vnd.noblenet-sealer',\r\n    nnw = 'application/vnd.noblenet-web',\r\n    rpst = 'application/vnd.nokia.radio-preset',\r\n    rpss = 'application/vnd.nokia.radio-presets',\r\n    n3 = 'text/n3',\r\n    edm = 'application/vnd.novadigm.edm',\r\n    edx = 'application/vnd.novadigm.edx',\r\n    ext = 'application/vnd.novadigm.ext',\r\n    gph = 'application/vnd.flographit',\r\n    ecelp4800 = 'audio/vnd.nuera.ecelp4800',\r\n    ecelp7470 = 'audio/vnd.nuera.ecelp7470',\r\n    ecelp9600 = 'audio/vnd.nuera.ecelp9600',\r\n    oda = 'application/oda',\r\n    ogx = 'application/ogg',\r\n    oga = 'audio/ogg',\r\n    ogv = 'video/ogg',\r\n    dd2 = 'application/vnd.oma.dd2+xml',\r\n    oth = 'application/vnd.oasis.opendocument.text-web',\r\n    opf = 'application/oebps-package+xml',\r\n    qbo = 'application/vnd.intu.qbo',\r\n    oxt = 'application/vnd.openofficeorg.extension',\r\n    osf = 'application/vnd.yamaha.openscoreformat',\r\n    weba = 'audio/webm',\r\n    webm = 'video/webm',\r\n    odc = 'application/vnd.oasis.opendocument.chart',\r\n    otc = 'application/vnd.oasis.opendocument.chart-template',\r\n    odb = 'application/vnd.oasis.opendocument.database',\r\n    odf = 'application/vnd.oasis.opendocument.formula',\r\n    odft = 'application/vnd.oasis.opendocument.formula-template',\r\n    odg = 'application/vnd.oasis.opendocument.graphics',\r\n    otg = 'application/vnd.oasis.opendocument.graphics-template',\r\n    odi = 'application/vnd.oasis.opendocument.image',\r\n    oti = 'application/vnd.oasis.opendocument.image-template',\r\n    odp = 'application/vnd.oasis.opendocument.presentation',\r\n    otp = 'application/vnd.oasis.opendocument.presentation-template',\r\n    ods = 'application/vnd.oasis.opendocument.spreadsheet',\r\n    ots = 'application/vnd.oasis.opendocument.spreadsheet-template',\r\n    odt = 'application/vnd.oasis.opendocument.text',\r\n    odm = 'application/vnd.oasis.opendocument.text-master',\r\n    ott = 'application/vnd.oasis.opendocument.text-template',\r\n    ktx = 'image/ktx',\r\n    sxc = 'application/vnd.sun.xml.calc',\r\n    stc = 'application/vnd.sun.xml.calc.template',\r\n    sxd = 'application/vnd.sun.xml.draw',\r\n    std = 'application/vnd.sun.xml.draw.template',\r\n    sxi = 'application/vnd.sun.xml.impress',\r\n    sti = 'application/vnd.sun.xml.impress.template',\r\n    sxm = 'application/vnd.sun.xml.math',\r\n    sxw = 'application/vnd.sun.xml.writer',\r\n    sxg = 'application/vnd.sun.xml.writer.global',\r\n    stw = 'application/vnd.sun.xml.writer.template',\r\n    otf = 'application/x-font-otf',\r\n    osfpvg = 'application/vnd.yamaha.openscoreformat.osfpvg+xml',\r\n    dp = 'application/vnd.osgi.dp',\r\n    pdb = 'application/vnd.palm',\r\n    p = 'text/x-pascal',\r\n    paw = 'application/vnd.pawaafile',\r\n    pclxl = 'application/vnd.hp-pclxl',\r\n    efif = 'application/vnd.picsel',\r\n    pcx = 'image/x-pcx',\r\n    psd = 'image/vnd.adobe.photoshop',\r\n    prf = 'application/pics-rules',\r\n    pic = 'image/x-pict',\r\n    chat = 'application/x-chat',\r\n    p10 = 'application/pkcs10',\r\n    p12 = 'application/x-pkcs12',\r\n    p7m = 'application/pkcs7-mime',\r\n    p7s = 'application/pkcs7-signature',\r\n    p7r = 'application/x-pkcs7-certreqresp',\r\n    p7b = 'application/x-pkcs7-certificates',\r\n    p8 = 'application/pkcs8',\r\n    plf = 'application/vnd.pocketlearn',\r\n    pnm = 'image/x-portable-anymap',\r\n    pbm = 'image/x-portable-bitmap',\r\n    pcf = 'application/x-font-pcf',\r\n    pfr = 'application/font-tdpfr',\r\n    pgn = 'application/x-chess-pgn',\r\n    pgm = 'image/x-portable-graymap',\r\n    png = 'image/png',\r\n    ppm = 'image/x-portable-pixmap',\r\n    pskcxml = 'application/pskc+xml',\r\n    pml = 'application/vnd.ctc-posml',\r\n    ai = 'application/postscript',\r\n    pfa = 'application/x-font-type1',\r\n    pbd = 'application/vnd.powerbuilder6',\r\n    pgp = 'application/pgp-encrypted',\r\n    box = 'application/vnd.previewsystems.box',\r\n    ptid = 'application/vnd.pvi.ptid1',\r\n    pls = 'application/pls+xml',\r\n    str = 'application/vnd.pg.format',\r\n    ei6 = 'application/vnd.pg.osasli',\r\n    dsc = 'text/prs.lines.tag',\r\n    psf = 'application/x-font-linux-psf',\r\n    qps = 'application/vnd.publishare-delta-tree',\r\n    wg = 'application/vnd.pmi.widget',\r\n    qxd = 'application/vnd.quark.quarkxpress',\r\n    esf = 'application/vnd.epson.esf',\r\n    msf = 'application/vnd.epson.msf',\r\n    ssf = 'application/vnd.epson.ssf',\r\n    qam = 'application/vnd.epson.quickanime',\r\n    qfx = 'application/vnd.intu.qfx',\r\n    qt = 'video/quicktime',\r\n    rar = 'application/x-rar-compressed',\r\n    ram = 'audio/x-pn-realaudio',\r\n    rmp = 'audio/x-pn-realaudio-plugin',\r\n    rsd = 'application/rsd+xml',\r\n    rm = 'application/vnd.rn-realmedia',\r\n    bed = 'application/vnd.realvnc.bed',\r\n    mxl = 'application/vnd.recordare.musicxml',\r\n    musicxml = 'application/vnd.recordare.musicxml+xml',\r\n    rnc = 'application/relax-ng-compact-syntax',\r\n    rdz = 'application/vnd.data-vision.rdz',\r\n    rdf = 'application/rdf+xml',\r\n    rp9 = 'application/vnd.cloanto.rp9',\r\n    jisp = 'application/vnd.jisp',\r\n    rtf = 'application/rtf',\r\n    rtx = 'text/richtext',\r\n    link66 = 'application/vnd.route66.link66+xml',\r\n    rss = 'application/rss+xml,',\r\n    shf = 'application/shf+xml',\r\n    st = 'application/vnd.sailingtracker.track',\r\n    svg = 'image/svg+xml',\r\n    sus = 'application/vnd.sus-calendar',\r\n    sru = 'application/sru+xml',\r\n    setpay = 'application/set-payment-initiation',\r\n    setreg = 'application/set-registration-initiation',\r\n    sema = 'application/vnd.sema',\r\n    semd = 'application/vnd.semd',\r\n    semf = 'application/vnd.semf',\r\n    see = 'application/vnd.seemail',\r\n    snf = 'application/x-font-snf',\r\n    spq = 'application/scvp-vp-request',\r\n    spp = 'application/scvp-vp-response',\r\n    scq = 'application/scvp-cv-request',\r\n    scs = 'application/scvp-cv-response',\r\n    sdp = 'application/sdp',\r\n    etx = 'text/x-setext',\r\n    movie = 'video/x-sgi-movie',\r\n    ifm = 'application/vnd.shana.informed.formdata',\r\n    itp = 'application/vnd.shana.informed.formtemplate',\r\n    iif = 'application/vnd.shana.informed.interchange',\r\n    ipk = 'application/vnd.shana.informed.package',\r\n    tfi = 'application/thraud+xml',\r\n    shar = 'application/x-shar',\r\n    rgb = 'image/x-rgb',\r\n    slt = 'application/vnd.epson.salt',\r\n    aso = 'application/vnd.accpac.simply.aso',\r\n    imp = 'application/vnd.accpac.simply.imp',\r\n    twd = 'application/vnd.simtech-mindmapper',\r\n    csp = 'application/vnd.commonspace',\r\n    saf = 'application/vnd.yamaha.smaf-audio',\r\n    mmf = 'application/vnd.smaf',\r\n    spf = 'application/vnd.yamaha.smaf-phrase',\r\n    teacher = 'application/vnd.smart.teacher',\r\n    svd = 'application/vnd.svd',\r\n    rq = 'application/sparql-query',\r\n    srx = 'application/sparql-results+xml',\r\n    gram = 'application/srgs',\r\n    grxml = 'application/srgs+xml',\r\n    ssml = 'application/ssml+xml',\r\n    skp = 'application/vnd.koan',\r\n    sgml = 'text/sgml',\r\n    sdc = 'application/vnd.stardivision.calc',\r\n    sda = 'application/vnd.stardivision.draw',\r\n    sdd = 'application/vnd.stardivision.impress',\r\n    smf = 'application/vnd.stardivision.math',\r\n    sdw = 'application/vnd.stardivision.writer',\r\n    sgl = 'application/vnd.stardivision.writer-global',\r\n    sm = 'application/vnd.stepmania.stepchart',\r\n    sit = 'application/x-stuffit',\r\n    sitx = 'application/x-stuffitx',\r\n    sdkm = 'application/vnd.solent.sdkm+xml',\r\n    xo = 'application/vnd.olpc-sugar',\r\n    au = 'audio/basic',\r\n    wqd = 'application/vnd.wqd',\r\n    sis = 'application/vnd.symbian.install',\r\n    smi = 'application/smil+xml',\r\n    xsm = 'application/vnd.syncml+xml',\r\n    bdm = 'application/vnd.syncml.dm+wbxml',\r\n    xdm = 'application/vnd.syncml.dm+xml',\r\n    sv4cpio = 'application/x-sv4cpio',\r\n    sv4crc = 'application/x-sv4crc',\r\n    sbml = 'application/sbml+xml',\r\n    tsv = 'text/tab-separated-values',\r\n    tiff = 'image/tiff',\r\n    tao = 'application/vnd.tao.intent-module-archive',\r\n    tar = 'application/x-tar',\r\n    tcl = 'application/x-tcl',\r\n    tex = 'application/x-tex',\r\n    tfm = 'application/x-tex-tfm',\r\n    tei = 'application/tei+xml',\r\n    txt = 'text/plain',\r\n    dxp = 'application/vnd.spotfire.dxp',\r\n    sfs = 'application/vnd.spotfire.sfs',\r\n    tsd = 'application/timestamped-data',\r\n    tpt = 'application/vnd.trid.tpt',\r\n    mxs = 'application/vnd.triscape.mxs',\r\n    t = 'text/troff',\r\n    tra = 'application/vnd.trueapp',\r\n    ttf = 'application/x-font-ttf',\r\n    ttl = 'text/turtle',\r\n    umj = 'application/vnd.umajin',\r\n    uoml = 'application/vnd.uoml+xml',\r\n    unityweb = 'application/vnd.unity',\r\n    ufd = 'application/vnd.ufdl',\r\n    uri = 'text/uri-list',\r\n    utz = 'application/vnd.uiq.theme',\r\n    ustar = 'application/x-ustar',\r\n    uu = 'text/x-uuencode',\r\n    vcs = 'text/x-vcalendar',\r\n    vcf = 'text/x-vcard',\r\n    vcd = 'application/x-cdlink',\r\n    vsf = 'application/vnd.vsf',\r\n    wrl = 'model/vrml',\r\n    vcx = 'application/vnd.vcx',\r\n    mts = 'model/vnd.mts',\r\n    vtu = 'model/vnd.vtu',\r\n    vis = 'application/vnd.visionary',\r\n    viv = 'video/vnd.vivo',\r\n    ccxml = 'application/ccxml+xml,',\r\n    vxml = 'application/voicexml+xml',\r\n    src = 'application/x-wais-source',\r\n    wbxml = 'application/vnd.wap.wbxml',\r\n    wbmp = 'image/vnd.wap.wbmp',\r\n    wav = 'audio/x-wav',\r\n    davmount = 'application/davmount+xml',\r\n    woff = 'application/x-font-woff',\r\n    wspolicy = 'application/wspolicy+xml',\r\n    webp = 'image/webp',\r\n    wtb = 'application/vnd.webturbo',\r\n    wgt = 'application/widget',\r\n    hlp = 'application/winhlp',\r\n    wml = 'text/vnd.wap.wml',\r\n    wmls = 'text/vnd.wap.wmlscript',\r\n    wmlsc = 'application/vnd.wap.wmlscriptc',\r\n    wpd = 'application/vnd.wordperfect',\r\n    stf = 'application/vnd.wt.stf',\r\n    wsdl = 'application/wsdl+xml',\r\n    xbm = 'image/x-xbitmap',\r\n    xpm = 'image/x-xpixmap',\r\n    xwd = 'image/x-xwindowdump',\r\n    der = 'application/x-x509-ca-cert',\r\n    fig = 'application/x-xfig',\r\n    xhtml = 'application/xhtml+xml',\r\n    xml = 'application/xml',\r\n    xdf = 'application/xcap-diff+xml',\r\n    xenc = 'application/xenc+xml',\r\n    xer = 'application/patch-ops-error+xml',\r\n    rl = 'application/resource-lists+xml',\r\n    rs = 'application/rls-services+xml',\r\n    rld = 'application/resource-lists-diff+xml',\r\n    xslt = 'application/xslt+xml',\r\n    xop = 'application/xop+xml',\r\n    xpi = 'application/x-xpinstall',\r\n    xspf = 'application/xspf+xml',\r\n    xul = 'application/vnd.mozilla.xul+xml',\r\n    xyz = 'chemical/x-xyz',\r\n    yaml = 'text/yaml',\r\n    yang = 'application/yang',\r\n    yin = 'application/yin+xml',\r\n    zir = 'application/vnd.zul',\r\n    zip = 'application/zip'\r\n}\r\n","export function IsNullOrEmpty(value: any): boolean {\r\n    return value == null || value.length === 0;\r\n}\r\n","import { Injectable, Renderer2 } from '@angular/core';\r\nimport { FileUploadTypes } from './../helpers/file-types.class';\r\nimport { IsNullOrEmpty } from './../helpers/helpers.class';\r\n\r\nexport type ISize = 'B' | 'KB' | 'MB' | 'GB';\r\n\r\n@Injectable()\r\nexport class FileUploadService {\r\n\r\n    private readonly extensions: Array<ISize> = ['B', 'KB', 'MB', 'GB'];\r\n\r\n    private readonly sizeRegex = new RegExp(`^(\\\\d+)(?:\\\\s{0,1})(${this.extensions.join('|')})?$`, 'i');\r\n\r\n    constructor(private renderer: Renderer2) {\r\n    }\r\n\r\n    public isFileDragDropAvailable(): boolean {\r\n        const div = this.renderer.createElement('div');\r\n        return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div));\r\n    }\r\n\r\n    public parseSize(value: string | number): number {\r\n        if (IsNullOrEmpty(value)) {\r\n            return 0;\r\n        }\r\n\r\n        if (typeof value === 'number') {\r\n            return value;\r\n        }\r\n\r\n        const [, size, extension] = value.match(this.sizeRegex) || [null, '0', 'B'];\r\n        const i =  IsNullOrEmpty(extension) ? 0 : this.extensions.indexOf(extension.toUpperCase() as ISize);\r\n\r\n        return parseInt(size, 10) * Math.pow(1024, i < 0 ? 0 : i);\r\n    }\r\n\r\n    public formatSize(size: number): string {\r\n        return this.calculateSize(size);\r\n    }\r\n\r\n    private calculateSize(size: number, extensionIndex: number = 0): string {\r\n        if (isNaN(size)) {\r\n            size = 0;\r\n        }\r\n\r\n        if (size < 1024) {\r\n            return `${Math.round(size * 100) / 100} ${this.extensions[extensionIndex]}`;\r\n        }\r\n\r\n        return this.calculateSize(size / 1024, extensionIndex + 1);\r\n    }\r\n\r\n    public getFileType(file: File): string {\r\n        return Object.keys(FileUploadTypes).find((key) => FileUploadTypes[key] === file.type);\r\n    }\r\n}\r\n","import { BehaviorSubject, Subject, Observable } from 'rxjs';\r\nimport { ValidatorFn, ValidationErrors, ValidationError } from './validators.class';\r\nimport { IsNullOrEmpty } from './helpers.class';\r\nimport { IFileUploadControlConfiguration } from './control.interface';\r\n\r\nexport enum STATUS {\r\n    INVALID,\r\n    VALID,\r\n    DISABLED\r\n}\r\n\r\nexport enum FileEvent {\r\n    click = 'click',\r\n    focus = 'focus',\r\n    blur = 'blur'\r\n}\r\n\r\nexport class FileUploadControl {\r\n\r\n    private readonly files: Map<string, File> = new Map();\r\n\r\n    private listVisible = true;\r\n\r\n    private status: STATUS = STATUS.VALID;\r\n\r\n    private errors: Array<{ [key: string]: any }> = [];\r\n\r\n    private validators: Array<ValidatorFn> = [];\r\n\r\n    private multipleEnabled: boolean = true;\r\n\r\n    private nativeBehavior: boolean = false;\r\n\r\n    private readonly multipleChanged: BehaviorSubject<boolean> = new BehaviorSubject(this.multipleEnabled);\r\n\r\n    private readonly statusChanged: Subject<STATUS> = new Subject();\r\n\r\n    private readonly eventsChanged: Subject<FileEvent> = new Subject();\r\n\r\n    private readonly discardedValue: Subject<Array<ValidationError>> = new Subject();\r\n\r\n    private accept: string | null = null;\r\n\r\n    private discard: boolean = false;\r\n\r\n    private readonly acceptChanged: BehaviorSubject<string> = new BehaviorSubject(this.accept);\r\n\r\n    /**\r\n     * track status `VALID`, `INVALID` or `DISABLED`\r\n     */\r\n    public readonly statusChanges: Observable<STATUS> = this.statusChanged.asObservable();\r\n\r\n    /**\r\n     * emit an event every time the value of the control\r\n     * changes.\r\n     * Initially returns last value\r\n     */\r\n    public readonly valueChanges: BehaviorSubject<Array<File>> = new BehaviorSubject([]);\r\n\r\n    /**\r\n     * @internal\r\n     * used to trigger layout change for list visibility\r\n     */\r\n    public readonly listVisibilityChanges: BehaviorSubject<boolean> = new BehaviorSubject(this.listVisible);\r\n\r\n    /**\r\n     * track changed on accept attribute\r\n     */\r\n    public readonly acceptChanges: Observable<string> = this.acceptChanged.asObservable();\r\n\r\n    /**\r\n     * emit an event every time user programmatically ask for certain event\r\n     */\r\n    public readonly eventsChanges: Observable<FileEvent> = this.eventsChanged.asObservable();\r\n\r\n    /**\r\n     * track changed on multiple attribute\r\n     */\r\n    public readonly multipleChanges: Observable<boolean> = this.multipleChanged.asObservable();\r\n\r\n    /**\r\n     * track which files were discarded\r\n     */\r\n    public readonly discardedValueChanges: Observable<Array<ValidationError>> = this.discardedValue.asObservable();\r\n\r\n    constructor(configuration?: IFileUploadControlConfiguration, validators?: ValidatorFn | Array<ValidatorFn>) {\r\n        this.initialState(configuration);\r\n        this.defineValidators(validators);\r\n    }\r\n\r\n    /**\r\n     * set functions that determines the synchronous validity of this control.\r\n     */\r\n    public setValidators(newValidators: ValidatorFn | Array<ValidatorFn>): this {\r\n        this.defineValidators(newValidators);\r\n        this.validate();\r\n        return this;\r\n    }\r\n\r\n    public addFile(file: File): this {\r\n        return this.addMultipleFiles([file]);\r\n    }\r\n\r\n    public removeFile(file: File): this {\r\n        if (IsNullOrEmpty(file)) {\r\n            throw Error(`File has not been provided.`);\r\n        }\r\n\r\n        if (!this.disabled) {\r\n            this.files.delete(file.name);\r\n            this.validate();\r\n            this.valueChanges.next(Array.from(this.files.values()));\r\n        }\r\n        return this;\r\n    }\r\n\r\n    public addFiles(files: FileList): this {\r\n        return this.addMultipleFiles(Array.from(files));\r\n    }\r\n\r\n    public get valid(): boolean {\r\n        return this.errors.length === 0 && this.status !== STATUS.DISABLED;\r\n    }\r\n\r\n    public get invalid(): boolean {\r\n        return this.errors.length > 0;\r\n    }\r\n\r\n    public getError(): Array<ValidationErrors> {\r\n        return this.errors;\r\n    }\r\n\r\n    /**\r\n     * number of uploaded files\r\n     */\r\n    public get size(): number {\r\n        return this.files.size;\r\n    }\r\n\r\n    /**\r\n     * return list of Files\r\n     */\r\n    public get value(): Array<File> {\r\n        return Array.from(this.files.values());\r\n    }\r\n\r\n    public setValue(files: Array<File>, opts: { emitEvent?: boolean } = {}): this {\r\n        this.files.clear();\r\n\r\n        if (files instanceof Array) {\r\n            this.addMultipleFiles(files, opts);\r\n        } else {\r\n            throw Error(`FormControl.setValue was provided with wrong argument type, ${files} was provided instead Array<File>`);\r\n        }\r\n\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * reset the control\r\n     */\r\n    public clear(): this {\r\n        this.files.clear();\r\n        this.validate();\r\n        this.valueChanges.next(Array.from(this.files.values()));\r\n        return this;\r\n    }\r\n\r\n    public get isListVisible(): boolean {\r\n        return this.listVisible;\r\n    }\r\n\r\n    public setListVisibility(isVisible: boolean = true): this {\r\n        this.listVisible = isVisible;\r\n        this.listVisibilityChanges.next(this.listVisible);\r\n        return this;\r\n    }\r\n\r\n    public get disabled() {\r\n        return this.status === STATUS.DISABLED;\r\n    }\r\n\r\n    public enable(isEnabled: boolean = true): this {\r\n        this.status = isEnabled ? STATUS.VALID : STATUS.DISABLED;\r\n        this.validate();\r\n        this.statusChanged.next(this.status);\r\n        return this;\r\n    }\r\n\r\n    public disable(isDisabled: boolean = true): this {\r\n        this.status = isDisabled ? STATUS.DISABLED : STATUS.VALID;\r\n        this.validate();\r\n        this.statusChanged.next(this.status);\r\n        return this;\r\n    }\r\n\r\n    public click(): this {\r\n        this.eventsChanged.next(FileEvent.click);\r\n        return this;\r\n    }\r\n\r\n    public focus(): this {\r\n        this.eventsChanged.next(FileEvent.focus);\r\n        return this;\r\n    }\r\n\r\n    public blur(): this {\r\n        this.eventsChanged.next(FileEvent.blur);\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * specifies the types of files that the server accepts\r\n     *\r\n     * ### Example\r\n     *\r\n     * ```\r\n     * acceptFiles(\"file_extension|audio/*|video/*|image/*|media_type\")\r\n     * ```\r\n     *\r\n     * To specify more than one value, separate the values with a comma (e.g. acceptFiles(\"audio/*,video/*,image/*\").\r\n     *\r\n     */\r\n    public acceptFiles(accept: string): this {\r\n        this.accept = accept;\r\n        this.acceptChanged.next(this.accept);\r\n        return this;\r\n    }\r\n\r\n    public acceptAll(): this {\r\n        this.accept = null;\r\n        this.acceptChanged.next(this.accept);\r\n        return this;\r\n    }\r\n\r\n    public get isMultiple(): boolean {\r\n        return this.multipleEnabled;\r\n    }\r\n\r\n    public multiple(isEnabled: boolean = true): this {\r\n        this.multipleEnabled = isEnabled;\r\n        this.multipleChanged.next(this.multipleEnabled);\r\n        return this;\r\n    }\r\n\r\n    public native(isNativeBehaviorEnabled: boolean = true): this {\r\n        this.nativeBehavior = isNativeBehaviorEnabled;\r\n        return this;\r\n    }\r\n\r\n    public discardInvalid(discard: boolean = true): this {\r\n        this.discard = discard;\r\n        return this;\r\n    }\r\n\r\n    private initialState(configuration: IFileUploadControlConfiguration = {}): void {\r\n        if (IsNullOrEmpty(configuration)) {\r\n            return;\r\n        }\r\n        /**\r\n         * Toggles discard of all invalid files\r\n         * it depends to accept, limit, size once a file\r\n         * dropped or selected it will be discarded if does not satisfy the constraint\r\n         */\r\n        this.discard = configuration.discardInvalid || this.discard;\r\n        this.status = !!configuration.disabled ? STATUS.DISABLED : this.status;\r\n        this.nativeBehavior = configuration.native != null ? configuration.native : this.nativeBehavior;\r\n\r\n        if (!IsNullOrEmpty(configuration.multiple)) {\r\n            this.multiple(configuration.multiple);\r\n        }\r\n        if (!IsNullOrEmpty(configuration.listVisible)) {\r\n            this.setListVisibility(configuration.listVisible);\r\n        }\r\n        if (!IsNullOrEmpty(configuration.accept)) {\r\n            this.acceptFiles(configuration.accept.join(','));\r\n        }\r\n    }\r\n\r\n    private defineValidators(validators: ValidatorFn | Array<ValidatorFn>): void {\r\n        if (!IsNullOrEmpty(validators)) {\r\n            this.validators = Array.isArray(validators) ? [...validators] : [validators];\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @internal\r\n     * used to prevent valueChanges emit more times\r\n     * when multiple files are uploaded\r\n     */\r\n    private addMultipleFiles(files: Array<File>, { emitEvent }: { emitEvent?: boolean } = {}): this {\r\n        if (IsNullOrEmpty(files)) {\r\n            this.validate();\r\n            if (emitEvent != false) {\r\n                this.valueChanges.next(Array.from(this.files.values()));\r\n            }\r\n            return this;\r\n        }\r\n\r\n        /**\r\n         * native component deletes the list of files before adding new ones\r\n         */\r\n         if (this.nativeBehavior !== false) {\r\n            this.files.clear();\r\n        }\r\n\r\n        if (!this.multipleEnabled) {\r\n            /**\r\n             * if multiple is disabled and one file exists\r\n             * clear it and reupload a new one\r\n             */\r\n            if (this.files.size === 1) {\r\n                this.files.clear();\r\n            }\r\n            // add only one file\r\n            this.files.set(files[0].name, files[0]);\r\n        } else {\r\n            // replace files with same name\r\n            files.forEach(file => this.files.set(file.name, file));\r\n        }\r\n\r\n        if (this.discard) {\r\n            this.analyzeToDiscard();\r\n        } else {\r\n            this.validate();\r\n        }\r\n\r\n        if (emitEvent != false) {\r\n            this.valueChanges.next(Array.from(this.files.values()));\r\n        }\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * method used to discard invalid files\r\n     */\r\n    private analyzeToDiscard(): void {\r\n        const deletedFiles: Array<ValidationError> = [];\r\n\r\n        const validators = [...this.validators];\r\n\r\n        while (validators.length) {\r\n            const validator = validators.shift();\r\n            const error = validator(this);\r\n\r\n            if (error) {\r\n                this.discardFile(error, deletedFiles);\r\n            }\r\n        }\r\n\r\n        if (deletedFiles.length) {\r\n            this.discardedValue.next(deletedFiles);\r\n        }\r\n    }\r\n\r\n    private discardFile(error: ValidationErrors, deletedFiles: Array<ValidationError>) {\r\n        const errorsKey = Object.keys(error)[0];\r\n        const errors = error[errorsKey];\r\n\r\n        (Array.isArray(errors) ? errors : [errors]).forEach(fileError => {\r\n            if (fileError.file && this.files.has(fileError.file.name)) {\r\n                deletedFiles.push(fileError);\r\n                this.files.delete(fileError.file.name);\r\n            } else {\r\n                this.errors.push(error);\r\n            }\r\n        });\r\n    }\r\n\r\n    private validate(): void {\r\n        if (this.status !== STATUS.DISABLED) {\r\n            const currentState = this.valid;\r\n            this.errors = this.validators.map((validator) => validator(this)).filter((isInvalid) => isInvalid);\r\n\r\n            if (currentState !== this.valid) {\r\n                this.statusChanged.next(this.valid ? STATUS.VALID : STATUS.INVALID);\r\n            }\r\n        } else {\r\n            this.errors.length = 0;\r\n        }\r\n    }\r\n}\r\n","import { FileEvent, FileUploadControl } from './../helpers/control.class';\r\nimport {\r\n    ElementRef,\r\n    OnDestroy,\r\n    Renderer2,\r\n    ChangeDetectorRef,\r\n    OnInit,\r\n    Directive,\r\n    inject,\r\n    input,\r\n    InputSignal,\r\n    Signal,\r\n    viewChild,\r\n    InputSignalWithTransform,\r\n    booleanAttribute\r\n} from '@angular/core';\r\nimport { Subscription, merge } from 'rxjs';\r\nimport { IsNullOrEmpty } from './../helpers/helpers.class';\r\n\r\nexport const HAS_FILES_CLASS_NAME = 'has-files';\r\nexport const IS_INVALID_CLASS_NAME = 'ng-invalid';\r\nexport const DRAGOVER_CLASS_NAME = 'dragover';\r\nexport const TOUCHED_CLASS_NAME = 'ng-touched';\r\nexport const HAS_ANIMATION_CLASS_NAME = 'animated';\r\n\r\n@Directive()\r\nexport abstract class FileUploadAbstract implements OnInit, OnDestroy {\r\n\r\n    public readonly control: InputSignal<FileUploadControl> = input<FileUploadControl>(new FileUploadControl());\r\n\r\n    public readonly input: Signal<ElementRef<HTMLInputElement>> = viewChild.required('inputRef', { read: ElementRef<HTMLInputElement> });\r\n\r\n    public readonly label: Signal<ElementRef<HTMLLabelElement>> = viewChild.required('labelRef', { read: ElementRef<HTMLLabelElement> });\r\n\r\n    public readonly isMultiple: InputSignalWithTransform<boolean, boolean | string> = input<boolean, boolean | string>(null, { transform: booleanAttribute, alias: 'multiple' });\r\n\r\n    protected readonly hooks: Array<Function> = [];\r\n\r\n    protected readonly subscriptions: Array<Subscription> = [];\r\n\r\n    protected readonly hostElementRef: ElementRef = inject(ElementRef);\r\n\r\n    protected readonly renderer: Renderer2 = inject(Renderer2);\r\n\r\n    protected readonly cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n    protected onChange: (v: Array<File>) => void = () => { };\r\n\r\n    protected onTouch: () => void = () => {\r\n        this.renderer.addClass(this.hostElementRef.nativeElement, TOUCHED_CLASS_NAME);\r\n    };\r\n\r\n    constructor() {\r\n        /**\r\n         * TODO -> on input(control) change\r\n         * unsubscribe from all events and register new one,\r\n         * and run ngOnInit again\r\n         */\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.registerEvents();\r\n        this.checkAndMarkAsDisabled();\r\n        this.checkAndSetMultiple();\r\n        this.connectToForm();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.cdr.detach();\r\n        this.hooks.forEach((hook) => hook());\r\n        this.hooks.length = 0;\r\n        this.unregisterEvents();\r\n    }\r\n\r\n    /**\r\n     * register function which will be called on UI change\r\n     * to update view -> model\r\n     */\r\n    public registerOnChange(fn: (v: Array<File>) => void): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    public registerOnTouched(fn: any): void {\r\n        this.onTouch = fn;\r\n    }\r\n\r\n    protected unregisterEvents(): void {\r\n        this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n        this.subscriptions.length = 0;\r\n    }\r\n\r\n    protected registerEvents(): void {\r\n        const control = this.getControlInstance();\r\n        this.subscriptions.push(\r\n            control.statusChanges.subscribe((status) => this.checkAndMarkAsDisabled())\r\n        );\r\n\r\n        this.subscriptions.push(\r\n            control.eventsChanges.subscribe((event: FileEvent) => this.triggerEvent(event))\r\n        );\r\n\r\n        this.subscriptions.push(\r\n            control.acceptChanges.subscribe((accept: string) => this.updateAcceptAttr(accept))\r\n        );\r\n\r\n        this.subscriptions.push(\r\n            control.multipleChanges.subscribe((isMultiple: boolean) => this.toggleMultiple(isMultiple))\r\n        );\r\n\r\n        this.subscriptions.push(\r\n            merge(\r\n                control.listVisibilityChanges,\r\n                control.valueChanges\r\n            )\r\n                .subscribe(() => this.checkAndSetFilesClass())\r\n        );\r\n\r\n        this.subscriptions.push(\r\n            merge(\r\n                control.statusChanges,\r\n                control.valueChanges\r\n            )\r\n                .subscribe(() => this.checkAndSetInvalidClass())\r\n        );\r\n    }\r\n\r\n    protected clearInputEl(): void {\r\n        this.input().nativeElement.value = null;\r\n    }\r\n\r\n    /**\r\n     * used to update model once state is changed through @Input\r\n     * or in case of simple-file-upload to override user value\r\n     */\r\n    protected checkAndSetMultiple(): void {\r\n        const control = this.getControlInstance();\r\n        const isMultiple = this.isMultiple();\r\n\r\n        if (!control || isMultiple == null) {\r\n            return;\r\n        }\r\n\r\n        if (isMultiple !== control.isMultiple) {\r\n            control.multiple(isMultiple);\r\n        }\r\n    }\r\n\r\n    protected getControlInstance(): FileUploadControl {\r\n        return this.control();\r\n    }\r\n\r\n    private hasFiles(): boolean {\r\n        const control = this.getControlInstance();\r\n        return control.isListVisible && control.size > 0;\r\n    }\r\n\r\n    private isInvalid(): boolean {\r\n        const control = this.getControlInstance();\r\n        return !control.disabled && control.invalid;\r\n    }\r\n\r\n    private checkAndSetFilesClass(): void {\r\n        if (this.hasFiles() && this.hostElementRef) {\r\n            this.renderer.addClass(this.hostElementRef.nativeElement, HAS_FILES_CLASS_NAME);\r\n        } else {\r\n            this.renderer.removeClass(this.hostElementRef.nativeElement, HAS_FILES_CLASS_NAME);\r\n        }\r\n    }\r\n\r\n    private checkAndSetInvalidClass(): void {\r\n        if (this.isInvalid() && this.hostElementRef) {\r\n            this.renderer.addClass(this.hostElementRef.nativeElement, IS_INVALID_CLASS_NAME);\r\n        } else {\r\n            this.renderer.removeClass(this.hostElementRef.nativeElement, IS_INVALID_CLASS_NAME);\r\n        }\r\n    }\r\n\r\n    private triggerEvent(event: FileEvent): void {\r\n        if (typeof this.label().nativeElement[event] === 'function') {\r\n            this.label().nativeElement[event]();\r\n        }\r\n    }\r\n\r\n    private updateAcceptAttr(accept: string): void {\r\n        if (!IsNullOrEmpty(accept)) {\r\n            this.renderer.setAttribute(this.input().nativeElement, 'accept', accept);\r\n        } else {\r\n            this.renderer.removeAttribute(this.input().nativeElement, 'accept');\r\n        }\r\n    }\r\n\r\n    private checkAndMarkAsDisabled(): void {\r\n        const control = this.getControlInstance();\r\n        if (control?.disabled) {\r\n            this.renderer.addClass(this.hostElementRef.nativeElement, 'disabled');\r\n            this.renderer.setProperty(this.input().nativeElement, 'disabled', true);\r\n        } else {\r\n            this.renderer.removeClass(this.hostElementRef.nativeElement, 'disabled');\r\n            this.renderer.setProperty(this.input().nativeElement, 'disabled', false);\r\n        }\r\n    }\r\n\r\n    private toggleMultiple(isMultiple: boolean): void {\r\n        if (isMultiple) {\r\n            this.renderer.setAttribute(this.input().nativeElement, 'multiple', '');\r\n        } else {\r\n            this.renderer.removeAttribute(this.input().nativeElement, 'multiple');\r\n        }\r\n    }\r\n\r\n    /**\r\n     * ControlValueAccessor implementation\r\n     */\r\n    private connectToForm(): void {\r\n        const control = this.getControlInstance();\r\n        this.subscriptions.push(\r\n            control.valueChanges.subscribe((v) => this.onChange(v))\r\n        );\r\n    }\r\n}\r\n","import {\r\n    Component,\r\n    ChangeDetectionStrategy\r\n} from '@angular/core';\r\n\r\n@Component({\r\n    selector: `file-upload-drop-zone`,\r\n    templateUrl: `./file-upload-drop-zone.component.html`,\r\n    styleUrls: [`./file-upload-drop-zone.component.scss`],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class FileUploadDropZoneComponent {\r\n}\r\n","<div class=\"icon\">\r\n    <svg viewBox=\"0 0 96 96\">\r\n        <g>\r\n            <path d=\"M62.8,68.1c0-0.6-0.2-1.1-0.6-1.5c-0.4-0.4-0.9-0.6-1.5-0.6s-1.1,0.2-1.5,0.6\r\n                c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.2,1.1,0.6,1.5c0.4,0.4,0.9,0.6,1.5,0.6s1.1-0.2,1.5-0.6S62.8,68.7,62.8,68.1z M71.3,68.1\r\n                c0-0.6-0.2-1.1-0.6-1.5c-0.4-0.4-0.9-0.6-1.5-0.6c-0.6,0-1.1,0.2-1.5,0.6C67.2,67,67,67.5,67,68.1c0,0.6,0.2,1.1,0.6,1.5\r\n                s0.9,0.6,1.5,0.6c0.6,0,1.1-0.2,1.5-0.6C71.1,69.2,71.3,68.7,71.3,68.1z M75.5,60.7v10.6c0,0.9-0.3,1.6-0.9,2.2\r\n                c-0.6,0.6-1.4,0.9-2.2,0.9H23.7c-0.9,0-1.6-0.3-2.2-0.9c-0.6-0.6-0.9-1.4-0.9-2.2V60.7c0-0.9,0.3-1.6,0.9-2.2\r\n                c0.6-0.6,1.4-0.9,2.2-0.9h14.1c0.5,1.2,1.2,2.2,2.3,3c1.1,0.8,2.3,1.2,3.7,1.2h8.5c1.3,0,2.6-0.4,3.7-1.2c1.1-0.8,1.9-1.8,2.3-3\r\n                h14.1c0.9,0,1.6,0.3,2.2,0.9C75.2,59.1,75.5,59.8,75.5,60.7z M64.8,39.3c-0.4,0.9-1,1.3-2,1.3h-8.5v14.8c0,0.6-0.2,1.1-0.6,1.5\r\n                c-0.4,0.4-0.9,0.6-1.5,0.6h-8.5c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5V40.6h-8.5c-0.9,0-1.6-0.4-2-1.3\r\n                c-0.4-0.9-0.2-1.6,0.5-2.3l14.8-14.8c0.4-0.4,0.9-0.6,1.5-0.6s1.1,0.2,1.5,0.6L64.3,37C65,37.7,65.1,38.4,64.8,39.3z\"/>\r\n        </g>\r\n    </svg>\r\n</div>\r\n\r\n<div class=\"upload-text\">\r\n    <ng-content></ng-content>\r\n</div>","import { Component, OnInit, ChangeDetectionStrategy, InputSignal, input } from '@angular/core';\r\nimport { FileUploadService } from '../../services/file-upload.service';\r\n\r\n\r\nexport type IFileType = 'text' | 'audio' | 'video' | 'image';\r\n\r\n\r\n@Component({\r\n    selector: `file-upload-icon`,\r\n    templateUrl: `./file-upload-icon.component.html`,\r\n    styleUrls: [`./file-upload-icon.component.scss`],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class FileUploadIconComponent implements OnInit {\r\n\r\n    public file: InputSignal<File> = input.required<File>();\r\n\r\n    private fileType: string = 'unknown';\r\n\r\n    constructor(private fileUploadService: FileUploadService) {\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.fileType = this.fileUploadService.getFileType(this.file());\r\n    }\r\n\r\n    public comparationType(): IFileType {\r\n        if (this.isIcon('image')) {\r\n            return 'image';\r\n        } else if (this.isIcon('text')) {\r\n            return 'text';\r\n        } else if (this.isIcon('audio')) {\r\n            return 'audio';\r\n        } else if (this.isIcon('video')) {\r\n            return 'video';\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private isIcon(type: IFileType): boolean {\r\n        switch (type) {\r\n            case 'text':\r\n                return this.fileType === 'html' || this.fileType === 'css' ||\r\n                    this.fileType === 'csv' || this.fileType === 'js' ||\r\n                    this.fileType === 'pdf' || this.fileType === 'ppt' ||\r\n                    this.fileType === 'xls' || this.fileType === 'xlsx' ||\r\n                    this.fileType === 'xml' || this.fileType === 'doc' ||\r\n                    this.fileType === 'txt' || this.fileType === 'docx';\r\n            case 'audio':\r\n                return this.fileType === 'aac' || this.fileType === 'midi' ||\r\n                    this.fileType === 'oga' || this.fileType === 'wav' ||\r\n                    this.fileType === 'weba';\r\n            case 'image':\r\n                return this.fileType === 'png' || this.fileType === 'bmp' ||\r\n                    this.fileType === 'gif' || this.fileType === 'jpg' ||\r\n                    this.fileType === 'svg' || this.fileType === 'webp' ||\r\n                    this.fileType === 'ico';\r\n            case 'video':\r\n                return this.fileType === 'avi' || this.fileType === 'mpeg' ||\r\n                    this.fileType === 'ogv' || this.fileType === 'webm' ||\r\n                    this.fileType === '3gp' || this.fileType === '3g2';\r\n        }\r\n    }\r\n}\r\n","@switch (comparationType()) {\r\n    @case ('image') {\r\n        <svg viewBox=\"0 0 96 96\">\r\n            <g>\r\n                <path d=\"M71.4,30.7c0.6,0.6,1.2,1.5,1.6,2.5c0.4,1.1,0.7,2.1,0.7,2.9v38.6c0,0.9-0.3,1.7-0.9,2.3\r\n                    S71.4,78,70.5,78h-45c-0.9,0-1.7-0.3-2.3-0.9c-0.6-0.6-0.9-1.4-0.9-2.3V21.2c0-0.9,0.3-1.7,0.9-2.3c0.6-0.6,1.4-0.9,2.3-0.9h30\r\n                    c0.9,0,1.9,0.2,2.9,0.7c1.1,0.4,1.9,1,2.5,1.6L71.4,30.7z M56.6,22.6v12.6h12.6c-0.2-0.6-0.5-1.1-0.7-1.4L57.9,23.3\r\n                    C57.7,23,57.2,22.8,56.6,22.6z M69.4,73.7V39.4H55.5c-0.9,0-1.7-0.3-2.3-0.9c-0.6-0.6-0.9-1.4-0.9-2.3V22.3H26.6v51.4H69.4z\r\n                    M65.1,58.7v10.7H30.9V63l6.4-6.4l4.3,4.3L54.4,48L65.1,58.7z M37.3,52.3c-1.8,0-3.3-0.6-4.6-1.9c-1.3-1.2-1.9-2.8-1.9-4.6\r\n                    c0-1.8,0.6-3.3,1.9-4.6c1.3-1.2,2.8-1.9,4.6-1.9s3.3,0.6,4.6,1.9c1.3,1.3,1.9,2.8,1.9,4.6c0,1.8-0.6,3.3-1.9,4.6\r\n                    C40.6,51.7,39.1,52.3,37.3,52.3z\"/>\r\n            </g>\r\n        </svg>\r\n    }\r\n    @case ('audio') {\r\n        <svg viewBox=\"0 0 96 96\">\r\n            <g>\r\n                <path d=\"M71.4,30.7c0.6,0.6,1.2,1.5,1.6,2.5c0.4,1.1,0.7,2.1,0.7,2.9v38.6c0,0.9-0.3,1.7-0.9,2.3\r\n                    S71.4,78,70.5,78h-45c-0.9,0-1.7-0.3-2.3-0.9c-0.6-0.6-0.9-1.4-0.9-2.3V21.2c0-0.9,0.3-1.7,0.9-2.3c0.6-0.6,1.4-0.9,2.3-0.9h30\r\n                    c0.9,0,1.9,0.2,2.9,0.7c1.1,0.4,1.9,1,2.5,1.6L71.4,30.7z M56.6,22.6v12.6h12.6c-0.2-0.6-0.5-1.1-0.7-1.4L57.9,23.3\r\n                    C57.7,23,57.2,22.8,56.6,22.6z M69.4,73.7V39.4H55.5c-0.9,0-1.7-0.3-2.3-0.9c-0.6-0.6-0.9-1.4-0.9-2.3V22.3H26.6v51.4H69.4z\r\n                    M43,46.5c0.4,0.2,0.7,0.5,0.7,1v18.2c0,0.5-0.2,0.8-0.7,1c-0.2,0-0.3,0.1-0.4,0.1c-0.3,0-0.5-0.1-0.8-0.3l-5.6-5.6h-4.4\r\n                    c-0.3,0-0.6-0.1-0.8-0.3c-0.2-0.2-0.3-0.5-0.3-0.8v-6.4c0-0.3,0.1-0.6,0.3-0.8c0.2-0.2,0.5-0.3,0.8-0.3h4.4l5.6-5.6\r\n                    C42.2,46.4,42.6,46.3,43,46.5z M57,69.5c0.7,0,1.3-0.3,1.7-0.8c2.9-3.5,4.3-7.6,4.3-12.2s-1.4-8.6-4.3-12.2\r\n                    c-0.4-0.5-0.8-0.7-1.4-0.8c-0.6-0.1-1.1,0.1-1.6,0.5c-0.5,0.4-0.7,0.9-0.8,1.5c-0.1,0.6,0.1,1.1,0.5,1.6c2.2,2.7,3.3,5.9,3.3,9.4\r\n                    c0,3.5-1.1,6.7-3.3,9.4c-0.4,0.5-0.5,1-0.5,1.6c0.1,0.6,0.3,1.1,0.8,1.4C56.1,69.4,56.5,69.5,57,69.5z M49.9,64.6\r\n                    c0.6,0,1.1-0.2,1.6-0.7c1.9-2.1,2.9-4.5,2.9-7.3s-1-5.3-2.9-7.3c-0.4-0.4-0.9-0.6-1.5-0.7c-0.6,0-1.1,0.2-1.5,0.6s-0.6,0.9-0.7,1.5\r\n                    c0,0.6,0.2,1.1,0.6,1.6c1.2,1.3,1.7,2.7,1.7,4.4c0,1.7-0.6,3.1-1.7,4.4c-0.4,0.4-0.6,1-0.6,1.6c0,0.6,0.2,1.1,0.7,1.5\r\n                    C48.9,64.4,49.4,64.6,49.9,64.6z\"/>\r\n            </g>\r\n        </svg>\r\n    }\r\n    @case ('text') {\r\n        <svg viewBox=\"0 0 96 96\">\r\n            <g>\r\n                <path d=\"M71.4,30.7c0.6,0.6,1.2,1.5,1.6,2.5c0.4,1.1,0.7,2.1,0.7,2.9v38.6c0,0.9-0.3,1.7-0.9,2.3\r\n                    S71.4,78,70.5,78h-45c-0.9,0-1.7-0.3-2.3-0.9c-0.6-0.6-0.9-1.4-0.9-2.3V21.2c0-0.9,0.3-1.7,0.9-2.3c0.6-0.6,1.4-0.9,2.3-0.9h30\r\n                    c0.9,0,1.9,0.2,2.9,0.7c1.1,0.4,1.9,1,2.5,1.6L71.4,30.7z M56.6,22.6v12.6h12.6c-0.2-0.6-0.5-1.1-0.7-1.4L57.9,23.3\r\n                    C57.7,23,57.2,22.8,56.6,22.6z M69.4,73.7V39.4H55.5c-0.9,0-1.7-0.3-2.3-0.9c-0.6-0.6-0.9-1.4-0.9-2.3V22.3H26.6v51.4H69.4z\r\n                    M35.1,44.8c0-0.3,0.1-0.6,0.3-0.8c0.2-0.2,0.5-0.3,0.8-0.3h23.6c0.3,0,0.6,0.1,0.8,0.3c0.2,0.2,0.3,0.5,0.3,0.8v2.1\r\n                    c0,0.3-0.1,0.6-0.3,0.8c-0.2,0.2-0.5,0.3-0.8,0.3H36.2c-0.3,0-0.6-0.1-0.8-0.3c-0.2-0.2-0.3-0.5-0.3-0.8V44.8z M59.8,52.3\r\n                    c0.3,0,0.6,0.1,0.8,0.3c0.2,0.2,0.3,0.5,0.3,0.8v2.1c0,0.3-0.1,0.6-0.3,0.8c-0.2,0.2-0.5,0.3-0.8,0.3H36.2c-0.3,0-0.6-0.1-0.8-0.3\r\n                    c-0.2-0.2-0.3-0.5-0.3-0.8v-2.1c0-0.3,0.1-0.6,0.3-0.8c0.2-0.2,0.5-0.3,0.8-0.3H59.8z M59.8,60.9c0.3,0,0.6,0.1,0.8,0.3\r\n                    c0.2,0.2,0.3,0.5,0.3,0.8v2.1c0,0.3-0.1,0.6-0.3,0.8c-0.2,0.2-0.5,0.3-0.8,0.3H36.2c-0.3,0-0.6-0.1-0.8-0.3\r\n                    c-0.2-0.2-0.3-0.5-0.3-0.8v-2.1c0-0.3,0.1-0.6,0.3-0.8c0.2-0.2,0.5-0.3,0.8-0.3H59.8z\"/>\r\n            </g>\r\n        </svg>\r\n    }\r\n    @case ('video') {\r\n        <svg viewBox=\"0 0 96 96\">\r\n            <g>\r\n                <path d=\"M71.4,30.7c0.6,0.6,1.2,1.5,1.6,2.5c0.4,1.1,0.7,2.1,0.7,2.9v38.6c0,0.9-0.3,1.7-0.9,2.3\r\n                    S71.4,78,70.5,78h-45c-0.9,0-1.7-0.3-2.3-0.9c-0.6-0.6-0.9-1.4-0.9-2.3V21.2c0-0.9,0.3-1.7,0.9-2.3c0.6-0.6,1.4-0.9,2.3-0.9h30\r\n                    c0.9,0,1.9,0.2,2.9,0.7c1.1,0.4,1.9,1,2.5,1.6L71.4,30.7z M56.6,22.6v12.6h12.6c-0.2-0.6-0.5-1.1-0.7-1.4L57.9,23.3\r\n                    C57.7,23,57.2,22.8,56.6,22.6z M69.4,73.7V39.4H55.5c-0.9,0-1.7-0.3-2.3-0.9c-0.6-0.6-0.9-1.4-0.9-2.3V22.3H26.6v51.4H69.4z\r\n                    M48,43.7c1.2,0,2.2,0.4,3,1.3c0.8,0.8,1.3,1.9,1.3,3v12.9c0,1.2-0.4,2.2-1.3,3c-0.8,0.8-1.9,1.3-3,1.3H35.1c-1.2,0-2.2-0.4-3-1.3\r\n                    c-0.8-0.8-1.3-1.9-1.3-3V48c0-1.2,0.4-2.2,1.3-3c0.8-0.8,1.9-1.3,3-1.3H48z M64.5,43.8c0.4,0.2,0.7,0.5,0.7,1v19.3\r\n                    c0,0.5-0.2,0.8-0.7,1c-0.2,0-0.3,0.1-0.4,0.1c-0.3,0-0.6-0.1-0.8-0.3l-8.9-8.9v-3l8.9-8.9c0.2-0.2,0.5-0.3,0.8-0.3\r\n                    C64.2,43.7,64.3,43.7,64.5,43.8z\"/>\r\n            </g>\r\n        </svg>\r\n    }\r\n    @default {\r\n        <svg viewBox=\"0 0 96 96\">\r\n            <g>\r\n                <path d=\"M71.4,30.7c0.6,0.6,1.2,1.5,1.6,2.5c0.4,1.1,0.7,2.1,0.7,2.9v38.6c0,0.9-0.3,1.7-0.9,2.3\r\n                    S71.4,78,70.5,78h-45c-0.9,0-1.7-0.3-2.3-0.9c-0.6-0.6-0.9-1.4-0.9-2.3V21.2c0-0.9,0.3-1.7,0.9-2.3c0.6-0.6,1.4-0.9,2.3-0.9h30\r\n                    c0.9,0,1.9,0.2,2.9,0.7c1.1,0.4,1.9,1,2.5,1.6L71.4,30.7z M56.6,22.6v12.6h12.6c-0.2-0.6-0.5-1.1-0.7-1.4L57.9,23.3\r\n                    C57.7,23,57.2,22.8,56.6,22.6z M69.4,73.7V39.4H55.5c-0.9,0-1.7-0.3-2.3-0.9c-0.6-0.6-0.9-1.4-0.9-2.3V22.3H26.6v51.4H69.4z\"/>\r\n            </g>\r\n        </svg>\r\n    }\r\n}\r\n","import { Component, InputSignal, InputSignalWithTransform, input, numberAttribute } from '@angular/core';\r\nimport { FileUploadControl } from '../../helpers/control.class';\r\nimport { FileUploadService } from '../../services/file-upload.service';\r\nimport { FileUploadIconComponent } from './file-upload-icon.component';\r\n\r\n@Component({\r\n    selector: `file-upload-list-item`,\r\n    template: `\r\n    <file-upload-icon [file]=\"file()\"></file-upload-icon>\r\n    <div class=\"file-info\">\r\n        <span class=\"file-name\">{{ file().name }}</span> ({{ calculateSize( file().size ) }})\r\n    </div>\r\n    <div class=\"file-buttons\">\r\n        <span class=\"remove-btn\" (click)=\"removeFile(file())\">\r\n        <svg viewBox=\"0 0 96 96\">\r\n            <g>\r\n                <path d=\"M40.5,66.8V39.3c0-0.4-0.1-0.7-0.4-0.9S39.6,38,39.3,38h-2.5c-0.4,0-0.7,0.1-0.9,0.4\r\n                    s-0.4,0.5-0.4,0.9v27.5c0,0.4,0.1,0.7,0.4,0.9s0.5,0.4,0.9,0.4h2.5c0.4,0,0.7-0.1,0.9-0.4S40.5,67.1,40.5,66.8z M50.5,66.8V39.3\r\n                    c0-0.4-0.1-0.7-0.4-0.9S49.6,38,49.3,38h-2.5c-0.4,0-0.7,0.1-0.9,0.4s-0.4,0.5-0.4,0.9v27.5c0,0.4,0.1,0.7,0.4,0.9s0.5,0.4,0.9,0.4\r\n                    h2.5c0.4,0,0.7-0.1,0.9-0.4S50.5,67.1,50.5,66.8z M60.5,66.8V39.3c0-0.4-0.1-0.7-0.4-0.9S59.6,38,59.3,38h-2.5\r\n                    c-0.4,0-0.7,0.1-0.9,0.4s-0.4,0.5-0.4,0.9v27.5c0,0.4,0.1,0.7,0.4,0.9s0.5,0.4,0.9,0.4h2.5c0.4,0,0.7-0.1,0.9-0.4\r\n                    S60.5,67.1,60.5,66.8z M39.3,28h17.5l-1.9-4.6c-0.2-0.2-0.4-0.4-0.7-0.4H41.8c-0.3,0.1-0.5,0.2-0.7,0.4L39.3,28z M75.5,29.3v2.5\r\n                    c0,0.4-0.1,0.7-0.4,0.9S74.6,33,74.3,33h-3.8v37c0,2.2-0.6,4-1.8,5.6S66,78,64.3,78H31.8c-1.7,0-3.2-0.8-4.4-2.3s-1.8-3.4-1.8-5.5\r\n                    V33h-3.8c-0.4,0-0.7-0.1-0.9-0.4s-0.4-0.5-0.4-0.9v-2.5c0-0.4,0.1-0.7,0.4-0.9s0.5-0.4,0.9-0.4h12.1l2.7-6.5c0.4-1,1.1-1.8,2.1-2.5\r\n                    s2-1,3.1-1h12.5c1,0,2.1,0.3,3.1,1s1.7,1.5,2.1,2.5l2.7,6.5h12.1c0.4,0,0.7,0.1,0.9,0.4S75.5,28.9,75.5,29.3z\"/>\r\n            </g>\r\n        </svg> <ng-content></ng-content></span>\r\n    </div>\r\n    `,\r\n    styleUrls: [`./file-upload-list-item.component.scss`],\r\n    standalone: true,\r\n    imports: [FileUploadIconComponent]\r\n})\r\nexport class FileUploadListItemComponent {\r\n\r\n    public index: InputSignalWithTransform<number, number | string> = input.required<number, number | string>({ transform: numberAttribute });\r\n\r\n    public file: InputSignal<File> = input.required<File>();\r\n\r\n    public control: InputSignal<FileUploadControl> = input.required<FileUploadControl>();\r\n\r\n    constructor(private fileUploadService: FileUploadService) {\r\n    }\r\n\r\n    public removeFile(file: File): void {\r\n        this.control().removeFile(file);\r\n    }\r\n\r\n    public calculateSize(size: number): string {\r\n       return this.fileUploadService.formatSize(size);\r\n    }\r\n}","import {\r\n  Component,\r\n  HostListener,\r\n  Inject,\r\n  TemplateRef,\r\n  ChangeDetectionStrategy,\r\n  forwardRef,\r\n  booleanAttribute,\r\n  contentChild,\r\n  Signal,\r\n  input,\r\n  InputSignalWithTransform,\r\n  effect,\r\n  DOCUMENT,\r\n  signal,\r\n  WritableSignal,\r\n  viewChild,\r\n  ElementRef\r\n} from '@angular/core';\r\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { FileUploadService } from './../../services/file-upload.service';\r\nimport { FileUploadAbstract, DRAGOVER_CLASS_NAME, HAS_ANIMATION_CLASS_NAME } from './../file-upload-abstract.component';\r\nimport { FileUploadDropZoneComponent } from './../drop-zone/file-upload-drop-zone.component';\r\nimport { FileUploadListItemComponent } from './../file-list/file-upload-list-item.component';\r\nimport { FileUploadControl } from './../../helpers/control.class';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\n\r\n\r\nexport enum AnimationState {\r\n    ZOOM_OUT = 'zoom-out',\r\n    ZOOM_IN = 'zoom-in',\r\n    STATIC = 'static',\r\n    FADE_IN = 'fade-in',\r\n    FADE_OUT = 'fade-out'\r\n}\r\n\r\nexport enum ListAnimationState {\r\n    VISIBLE = 'list-visible',\r\n    HIDE_TEXT = 'hide-text'\r\n}\r\n\r\n@Component({\r\n    selector: `file-upload:not([simple])`,\r\n    templateUrl: `./file-upload.component.html`,\r\n    styleUrls: [`./file-upload.component.scss`],\r\n    providers: [\r\n        FileUploadService,\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => FileUploadComponent),\r\n            multi: true\r\n        }\r\n    ],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true,\r\n    imports: [\r\n    AsyncPipe,\r\n    NgTemplateOutlet,\r\n    FileUploadDropZoneComponent,\r\n    FileUploadListItemComponent],\r\n    host: {\r\n        '[class.animated]': 'animation()'\r\n    }\r\n})\r\nexport class FileUploadComponent extends FileUploadAbstract implements ControlValueAccessor {\r\n\r\n    public animation: InputSignalWithTransform<boolean, boolean | string> = input<boolean, boolean | string>(true, { transform: booleanAttribute });\r\n\r\n    protected templateRef: Signal<TemplateRef<any>> = contentChild('placeholder', { read: TemplateRef });\r\n\r\n    protected listItem: Signal<TemplateRef<any>> = contentChild('item', { read: TemplateRef });\r\n\r\n    protected listContainerRef: Signal<ElementRef<any>> = viewChild('listContainerRef');\r\n\r\n    protected templateContext = {\r\n        $implicit: this.fileUploadService.isFileDragDropAvailable(),\r\n        isFileDragDropAvailable: this.fileUploadService.isFileDragDropAvailable()\r\n    };\r\n\r\n    /** animation fields */\r\n    protected readonly zoomState: WritableSignal<AnimationState> = signal(AnimationState.STATIC);\r\n    protected readonly isListVisible: WritableSignal<boolean> = signal(false);\r\n    private animationListener: Subscription | null = null\r\n\r\n    constructor(\r\n        private readonly fileUploadService: FileUploadService,\r\n        @Inject(DOCUMENT) private readonly document,\r\n    ) {\r\n        super();\r\n\r\n        effect((onCleanup) => {\r\n            this.checkAndSetMultiple();\r\n\r\n            if (this.isAnimationDisabled()) {\r\n                // rewmove css animated class if needed\r\n                this.renderer.removeClass(this.hostElementRef.nativeElement, HAS_ANIMATION_CLASS_NAME);\r\n            } else {\r\n                this.animationListener = fromEvent<AnimationEvent>(this.label().nativeElement, 'animationend')\r\n                                            .subscribe((event) => {\r\n                                                const STATE = event.animationName.endsWith(AnimationState.ZOOM_OUT) ?\r\n                                                AnimationState.ZOOM_OUT : event.animationName.endsWith(AnimationState.ZOOM_IN) ?\r\n                                                AnimationState.ZOOM_IN : AnimationState.STATIC;\r\n\r\n                                                this.zoomAnimationDone(STATE);\r\n                                            });\r\n            }\r\n\r\n            onCleanup(() => {\r\n                // cleanup previous animation listener\r\n                this.animationListener?.unsubscribe();\r\n            });\r\n        });\r\n\r\n        effect(() => {\r\n            // setup and cleanup previous list animation state\r\n            if (this.listContainerRef()) {\r\n                this.animationListEnter()\r\n            } else {\r\n                this.animationListLeave();\r\n            }\r\n        });\r\n    }\r\n\r\n    public onKeyDown(event: KeyboardEvent): void {\r\n        if (event.keyCode === 13 || event.keyCode === 32) {\r\n            event.preventDefault();\r\n            const control = this.getControlInstance();\r\n            control.click();\r\n        }\r\n    }\r\n\r\n    @HostListener('drop', ['$event'])\r\n    public onDrop(event: Event): void {\r\n        const control = this.getControlInstance();\r\n        if (control.disabled) {\r\n            return;\r\n        }\r\n        // There is some issue with DragEvent in typescript lib.dom.d.ts\r\n        const files = (event as any).dataTransfer.files;\r\n        control.addFiles(files);\r\n        this.onTouch();\r\n    }\r\n\r\n    public onInputChange(event: Event): void {\r\n        const input = (event.target) as HTMLInputElement;\r\n        const control = this.getControlInstance();\r\n\r\n        if (!control.disabled && input.files.length > 0) {\r\n            control.addFiles(input.files);\r\n            this.clearInputEl();\r\n        }\r\n\r\n        this.onTouch();\r\n    }\r\n\r\n     /**\r\n      * model -> view changes\r\n      */\r\n    public writeValue(files: any): void {\r\n        if (files != null) {\r\n            const control = this.getControlInstance();\r\n            control.setValue(files, { emitEvent: false });\r\n            this.renderView();\r\n        }\r\n    }\r\n\r\n    public setDisabledState(isDisabled: boolean): void {\r\n        const control = this.getControlInstance();\r\n        control.disable(isDisabled);\r\n    }\r\n\r\n    protected zoomAnimationDone(state: AnimationState): void {\r\n        const control = this.getControlInstance();\r\n        if (control.isListVisible && control.size > 0) {\r\n            this.showList();\r\n        } else {\r\n            this.hideList();\r\n        }\r\n\r\n        if (state == AnimationState.ZOOM_OUT) {\r\n            this.renderer.addClass(this.hostElementRef.nativeElement, ListAnimationState.HIDE_TEXT);\r\n        } else {\r\n            this.renderer.removeClass(this.hostElementRef.nativeElement, ListAnimationState.HIDE_TEXT);\r\n        }\r\n\r\n        if (state == AnimationState.ZOOM_IN) {\r\n            this.zoomState.set(AnimationState.STATIC);\r\n        }\r\n    }\r\n\r\n    // animation callbacks used only with css animation\r\n    protected animationListLeave(): void {\r\n        this.zoomState.set(AnimationState.ZOOM_IN);\r\n        this.renderer.removeClass(this.hostElementRef.nativeElement, ListAnimationState.VISIBLE);\r\n    }\r\n\r\n    protected animationListEnter(): void {\r\n        this.renderer.addClass(this.hostElementRef.nativeElement, ListAnimationState.VISIBLE);\r\n        this.zoomState.set(AnimationState.STATIC);\r\n    }\r\n\r\n    protected getListItemTemplateContext(index: number, item: File):\r\n        { $implicit: File, file: File, index: number, control: FileUploadControl } {\r\n        return {\r\n            $implicit: item,\r\n            file: item,\r\n            index,\r\n            control: this.getControlInstance()\r\n        };\r\n    }\r\n\r\n    protected trackByFn(index: number, item: File): string {\r\n        return item.name;\r\n    }\r\n\r\n    protected override registerEvents(): void {\r\n        super.registerEvents();\r\n        ['drag', 'dragstart', 'dragend', 'dragover', 'dragenter', 'dragleave', 'drop'].forEach((eventName) => {\r\n            this.hooks.push(\r\n                this.renderer.listen(this.document, eventName, (event: any) => this.preventDragEvents(event))\r\n            );\r\n        });\r\n\r\n        ['dragover', 'dragenter'].forEach((eventName) => {\r\n            this.hooks.push(\r\n                this.renderer.listen(this.hostElementRef.nativeElement, eventName, (event: any) => this.onDragOver(event))\r\n            );\r\n        });\r\n\r\n        ['dragleave', 'dragend', 'drop'].forEach((eventName) => {\r\n            this.hooks.push(\r\n                this.renderer.listen(this.hostElementRef.nativeElement, eventName, (event: any) => this.onDragLeave(event))\r\n            );\r\n        });\r\n\r\n        const control = this.getControlInstance();\r\n        this.subscriptions.push(\r\n            control.valueChanges.subscribe((files) => this.renderView())\r\n        );\r\n\r\n        this.subscriptions.push(\r\n            control.listVisibilityChanges.subscribe((status) => this.toggleListVisibility())\r\n        );\r\n    }\r\n\r\n    private isAnimationDisabled(): boolean {\r\n        return this.animation() === false;\r\n    }\r\n\r\n    private preventDragEvents(event: Event): void {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * this triggers animation state\r\n     */\r\n    private renderView(): void {\r\n        // ako nema animacije postaviti sve css klase da se statički prikaže sve\r\n        if (!this.isListVisible()) {\r\n            const control = this.getControlInstance();\r\n            const ZOOM_STATE = control.isListVisible && control.size > 0 ? AnimationState.ZOOM_OUT : AnimationState.STATIC;\r\n            this.zoomState.set(ZOOM_STATE);\r\n        }\r\n\r\n        if (this.isAnimationDisabled()) {\r\n            // If animation is turned off, watch for changes in the list\r\n            // and then dd the necessary CSS classes\r\n            this.zoomAnimationDone(AnimationState.STATIC);\r\n        }\r\n\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    private showList(): void {\r\n        this.isListVisible.set(true);\r\n    }\r\n\r\n    private hideList(): void {\r\n        this.isListVisible.set(false);\r\n    }\r\n\r\n    private toggleListVisibility(): void {\r\n        const control = this.getControlInstance();\r\n        this.isListVisible.set(control.isListVisible && control.size > 0);\r\n        if (this.isListVisible()) {\r\n            this.renderer.addClass(this.hostElementRef.nativeElement, ListAnimationState.VISIBLE);\r\n            this.zoomState.set(AnimationState.STATIC);\r\n        }\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    /**\r\n     * on file over add class name\r\n     */\r\n    private onDragOver(event: Event): void {\r\n        this.renderer.addClass(this.hostElementRef.nativeElement, DRAGOVER_CLASS_NAME);\r\n    }\r\n\r\n    /**\r\n     * on mouse out remove class name\r\n     */\r\n    private onDragLeave(event: Event): void {\r\n        this.renderer.removeClass(this.hostElementRef.nativeElement, DRAGOVER_CLASS_NAME);\r\n    }\r\n}\r\n","<label #labelRef class=\"upload-input\" [class]=\"zoomState()\"\r\n    tabindex=\"0\"\r\n    (keydown)=\"onKeyDown($event)\">\r\n\r\n    <ng-container *ngTemplateOutlet=\"templateRef() ? templateRef() : defaultTemplate; context: templateContext\" />\r\n\r\n    <ng-template #defaultTemplate let-isFileDragDropAvailable=\"isFileDragDropAvailable\">\r\n        <file-upload-drop-zone>\r\n            @if (isFileDragDropAvailable) {\r\n                <b>Drag and drop</b> files<br> or click here\r\n            } @else {\r\n                <b>Click here</b> to<br> choose a files\r\n            }\r\n        </file-upload-drop-zone>\r\n    </ng-template>\r\n\r\n    <input #inputRef type=\"file\" class=\"files-input\" tabindex=\"-1\" multiple (change)=\"onInputChange($event)\">\r\n</label>\r\n\r\n\r\n@if ((getControlInstance().listVisibilityChanges | async) && getControlInstance().size > 0 && isListVisible()) {\r\n    <div class=\"upload-list fade-in\" #listContainerRef>\r\n        @for (file of getControlInstance().valueChanges | async; track trackByFn(i, file); let i = $index;) {\r\n            <ng-container *ngTemplateOutlet=\"listItem() ? listItem() : defaultItemTemplate; context: getListItemTemplateContext(i, file) \" />\r\n        }\r\n    </div>\r\n\r\n    <ng-template #defaultItemTemplate let-i=\"index\" let-file=\"file\" let-control=\"control\">\r\n        <file-upload-list-item [index]=\"i\" [file]=\"file\" [control]=\"control\">Remove</file-upload-list-item>\r\n    </ng-template>\r\n}\r\n\r\n","import {\r\n  Input,\r\n  OnInit,\r\n  ElementRef,\r\n  HostListener,\r\n  Renderer2,\r\n  OnDestroy,\r\n  Inject,\r\n  ViewChild,\r\n  ContentChild,\r\n  TemplateRef,\r\n  Component,\r\n  AfterViewInit,\r\n  viewChild,\r\n  Signal,\r\n  contentChild,\r\n  InputSignal,\r\n  input,\r\n  DOCUMENT\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet, NgComponentOutlet } from '@angular/common';\r\n\r\nimport { FileUploadControl } from '../../helpers/control.class';\r\nimport { IsNullOrEmpty } from '../../helpers/helpers.class';\r\nimport { FileUploadService } from '../../services/file-upload.service';\r\nimport { DRAGOVER_CLASS_NAME, TOUCHED_CLASS_NAME } from './../file-upload-abstract.component';\r\nimport { Subscription, merge } from 'rxjs';\r\nimport { FileUploadDropZoneComponent } from './../drop-zone/file-upload-drop-zone.component';\r\nimport { HAS_FILES_CLASS_NAME, IS_INVALID_CLASS_NAME } from './../file-upload-abstract.component';\r\n\r\n\r\n@Component({\r\n    selector: `[file-drop-zone]`,\r\n    template: `\r\n        <ng-content></ng-content>\r\n        @if (fileUploadService.isFileDragDropAvailable()) {\r\n            <div #overlay class=\"overlay\">\r\n                <div class=\"upload-input\">\r\n                    <ng-container *ngTemplateOutlet=\"templateRef() ? templateRef() : defaultTemplate\"></ng-container>\r\n\r\n                    <ng-template #defaultTemplate>\r\n                        <file-upload-drop-zone>\r\n                            <b>Drop</b> it here\r\n                        </file-upload-drop-zone>\r\n                    </ng-template>\r\n                </div>\r\n            </div>\r\n        }\r\n    `,\r\n    styleUrls: [`./file-upload-attr.component.scss`],\r\n    providers: [\r\n        FileUploadService,\r\n    ],\r\n    standalone: true,\r\n    imports: [\r\n        NgTemplateOutlet,\r\n        FileUploadDropZoneComponent\r\n    ]\r\n})\r\nexport class FileUploadAttributeComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n    public control: InputSignal<FileUploadControl> = input<FileUploadControl>(new FileUploadControl());\r\n\r\n    public overlay: Signal<ElementRef<HTMLDivElement>> = viewChild<ElementRef<HTMLDivElement>>('overlay');\r\n\r\n    public templateRef: Signal<TemplateRef<any>> = contentChild('placeholder', { read: TemplateRef });\r\n\r\n    private hooks: Array<Function> = [];\r\n\r\n    private subscriptions: Array<Subscription> = [];\r\n\r\n    constructor(\r\n        public fileUploadService: FileUploadService,\r\n        private readonly hostElementRef: ElementRef,\r\n        private renderer: Renderer2,\r\n        @Inject(DOCUMENT) private document\r\n    ) {}\r\n\r\n    public ngOnInit() {\r\n        const control = this.control();\r\n\r\n        this.subscriptions.push(\r\n            merge(\r\n                control.listVisibilityChanges,\r\n                control.valueChanges\r\n            )\r\n            .subscribe(() => this.checkAndSetFilesClass())\r\n        );\r\n\r\n        this.subscriptions.push(\r\n            merge(\r\n                control.statusChanges,\r\n                control.valueChanges\r\n            )\r\n            .subscribe(() => this.checkAndSetInvalidClass())\r\n        );\r\n    }\r\n\r\n    public ngAfterViewInit(): void {\r\n        if (this.fileUploadService.isFileDragDropAvailable()) {\r\n            this.setEvents();\r\n            this.checkAndMarkAsDisabled();\r\n        }\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.hooks.forEach((hook) => hook());\r\n        this.hooks.length = 0;\r\n        this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n        this.subscriptions.length = 0;\r\n    }\r\n\r\n    private setEvents(): void {\r\n        const control = this.control();\r\n\r\n        ['drag', 'dragstart', 'dragend', 'dragover', 'dragenter', 'dragleave', 'drop'].forEach((eventName) => {\r\n            this.hooks.push(\r\n                this.renderer.listen(this.document, eventName, (event: any) => this.preventDragEvents(event))\r\n            );\r\n        });\r\n\r\n        ['dragover', 'dragenter'].forEach((eventName) => {\r\n            this.hooks.push(\r\n                this.renderer.listen(this.hostElementRef.nativeElement, eventName, (event: any) => this.onDragOver(event))\r\n            );\r\n        });\r\n\r\n        ['dragleave', 'dragend', 'drop'].forEach((eventName) => {\r\n            this.hooks.push(\r\n                this.renderer.listen(this.hostElementRef.nativeElement, eventName, (event: any) => {\r\n                    if(control.disabled && eventName === 'dragleave' || eventName !== 'dragleave') {\r\n                        this.onDragLeave(event);\r\n                    }\r\n                })\r\n            );\r\n        });\r\n\r\n        ['dragleave'].forEach((eventName) => {\r\n            this.hooks.push(\r\n                this.renderer.listen(this.overlay().nativeElement, eventName, (event: any) => this.onDragLeave(event))\r\n            );\r\n        });\r\n\r\n        this.subscriptions.push(\r\n            control.statusChanges.subscribe((status) => this.checkAndMarkAsDisabled())\r\n        );\r\n    }\r\n\r\n    private hasFiles(): boolean {\r\n        const control = this.control();\r\n        return control.isListVisible && control.size > 0;\r\n    }\r\n\r\n    private isInvalid(): boolean {\r\n        const control = this.control();\r\n        return !control.disabled && control.invalid;\r\n    }\r\n\r\n    private checkAndSetFilesClass(): void {\r\n        if (this.hasFiles() && this.hostElementRef) {\r\n            this.renderer.addClass(this.hostElementRef.nativeElement, HAS_FILES_CLASS_NAME);\r\n        } else {\r\n            this.renderer.removeClass(this.hostElementRef.nativeElement, HAS_FILES_CLASS_NAME);\r\n        }\r\n    }\r\n\r\n    private checkAndSetInvalidClass(): void {\r\n        if (this.isInvalid() && this.hostElementRef) {\r\n            this.renderer.addClass(this.hostElementRef.nativeElement, IS_INVALID_CLASS_NAME);\r\n        } else {\r\n            this.renderer.removeClass(this.hostElementRef.nativeElement, IS_INVALID_CLASS_NAME);\r\n        }\r\n    }\r\n\r\n    private checkAndMarkAsDisabled(): void {\r\n        const control = this.control();\r\n        if (control.disabled) {\r\n            this.renderer.addClass(this.hostElementRef.nativeElement, 'disabled');\r\n        } else {\r\n            this.renderer.removeClass(this.hostElementRef.nativeElement, 'disabled');\r\n        }\r\n    }\r\n\r\n    private preventDragEvents(event: Event): void {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * on file over add class name\r\n     */\r\n    private onDragOver(event: Event): void {\r\n        this.renderer.addClass(this.hostElementRef.nativeElement, DRAGOVER_CLASS_NAME);\r\n    }\r\n\r\n    /**\r\n     * on mouse out remove class name\r\n     */\r\n    private onDragLeave(event: Event): void {\r\n        this.renderer.removeClass(this.hostElementRef.nativeElement, DRAGOVER_CLASS_NAME);\r\n    }\r\n\r\n    @HostListener('drop', ['$event'])\r\n    public onDrop(event: Event): void {\r\n        const control = this.control();\r\n        if (control.disabled) {\r\n            return;\r\n        }\r\n        const files = (event as any).dataTransfer.files;\r\n        control.addFiles(files);\r\n        this.onTouch();\r\n    }\r\n\r\n    private onTouch: () => void = () => {\r\n        this.renderer.addClass(this.hostElementRef.nativeElement, TOUCHED_CLASS_NAME);\r\n    }\r\n\r\n}\r\n","import {\r\n    Component,\r\n    TemplateRef,\r\n    ChangeDetectionStrategy,\r\n    forwardRef,\r\n    Signal,\r\n    contentChild,\r\n    InputSignalWithTransform,\r\n    booleanAttribute,\r\n    input\r\n} from '@angular/core';\r\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { FileUploadService } from './../../services/file-upload.service';\r\nimport { FileUploadAbstract } from './../file-upload-abstract.component';\r\n\r\n\r\n@Component({\r\n    selector: `file-upload[simple]`,\r\n    templateUrl: `./simple-file-upload.component.html`,\r\n    styleUrls: [`./simple-file-upload.component.scss`],\r\n    providers: [\r\n        FileUploadService,\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => SimpleFileUploadComponent),\r\n            multi: true\r\n        }\r\n    ],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true,\r\n    imports: [AsyncPipe, NgTemplateOutlet]\r\n})\r\nexport class SimpleFileUploadComponent extends FileUploadAbstract implements ControlValueAccessor {\r\n\r\n    public buttonRef: Signal<TemplateRef<any>> = contentChild('button', { read: TemplateRef });\r\n\r\n    public placeholderRef: Signal<TemplateRef<any>> = contentChild('placeholder', { read: TemplateRef });\r\n\r\n    constructor(public fileUploadService: FileUploadService) {\r\n        super();\r\n    }\r\n\r\n    public onInputChange(event: Event): void {\r\n        const input = (event.target) as HTMLInputElement;\r\n        const control = this.control();\r\n\r\n        if (!control.disabled && input.files.length > 0) {\r\n            control.setValue(Array.from(input.files));\r\n            this.clearInputEl();\r\n        }\r\n\r\n        this.onTouch();\r\n    }\r\n\r\n     /**\r\n      * model -> view changes\r\n      */\r\n    public writeValue(files: any): void {\r\n        if (files != null) {\r\n            const control = this.control();\r\n            control.setValue(files, { emitEvent: false });\r\n        }\r\n    }\r\n\r\n    public trackByFn(index: number, item: File): string {\r\n        return item.name;\r\n    }\r\n\r\n    /**\r\n     * register function which will be called on UI change\r\n     * to update view -> model\r\n     */\r\n    public registerOnChange(fn: (v: Array<File>) => void): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    public registerOnTouched(fn: any): void {\r\n        this.onTouch = fn;\r\n    }\r\n\r\n    public setDisabledState(isDisabled: boolean): void {\r\n        const control = this.getControlInstance();\r\n        control.disable(isDisabled);\r\n    }\r\n\r\n    public onKeyDown(event: KeyboardEvent): void {\r\n        if (event.keyCode === 13 || event.keyCode === 32) {\r\n            event.preventDefault();\r\n            const control = this.getControlInstance();\r\n            control.click();\r\n        }\r\n    }\r\n}\r\n","<div class=\"upload-text\">\r\n    @if (getControlInstance().valueChanges | async) {\r\n        <ng-container *ngTemplateOutlet=\"placeholderRef() ? placeholderRef() : defaultPlaceholderTemplate; context: { $implicit: getControlInstance().value, control: getControlInstance(), files: getControlInstance().value }\" />\r\n    }\r\n\r\n    <ng-template #defaultPlaceholderTemplate let-files=\"files\">\r\n        @for (file of files; track trackByFn(i, file); let i = $index;) {\r\n            @if (i > 0) { <span>,&nbsp;</span> } <span class=\"file-name\">{{ file.name }}</span>\r\n        } @empty {\r\n            Select a file...\r\n        }\r\n    </ng-template>\r\n</div>\r\n\r\n<label #labelRef class=\"upload-button\" tabindex=\"0\" (keydown)=\"onKeyDown($event)\">\r\n    <ng-container *ngTemplateOutlet=\"buttonRef() ? buttonRef() : defaultButtonTemplate; context: { control: getControlInstance() }\"></ng-container>\r\n\r\n    <ng-template #defaultButtonTemplate>\r\n        <div class=\"button\">\r\n            <div class=\"icon\">\r\n                <svg viewBox=\"0 0 96 96\">\r\n                    <g>\r\n                        <path d=\"M62.8,68.1c0-0.6-0.2-1.1-0.6-1.5c-0.4-0.4-0.9-0.6-1.5-0.6s-1.1,0.2-1.5,0.6\r\n                            c-0.4,0.4-0.6,0.9-0.6,1.5c0,0.6,0.2,1.1,0.6,1.5c0.4,0.4,0.9,0.6,1.5,0.6s1.1-0.2,1.5-0.6S62.8,68.7,62.8,68.1z M71.3,68.1\r\n                            c0-0.6-0.2-1.1-0.6-1.5c-0.4-0.4-0.9-0.6-1.5-0.6c-0.6,0-1.1,0.2-1.5,0.6C67.2,67,67,67.5,67,68.1c0,0.6,0.2,1.1,0.6,1.5\r\n                            s0.9,0.6,1.5,0.6c0.6,0,1.1-0.2,1.5-0.6C71.1,69.2,71.3,68.7,71.3,68.1z M75.5,60.7v10.6c0,0.9-0.3,1.6-0.9,2.2\r\n                            c-0.6,0.6-1.4,0.9-2.2,0.9H23.7c-0.9,0-1.6-0.3-2.2-0.9c-0.6-0.6-0.9-1.4-0.9-2.2V60.7c0-0.9,0.3-1.6,0.9-2.2\r\n                            c0.6-0.6,1.4-0.9,2.2-0.9h14.1c0.5,1.2,1.2,2.2,2.3,3c1.1,0.8,2.3,1.2,3.7,1.2h8.5c1.3,0,2.6-0.4,3.7-1.2c1.1-0.8,1.9-1.8,2.3-3\r\n                            h14.1c0.9,0,1.6,0.3,2.2,0.9C75.2,59.1,75.5,59.8,75.5,60.7z M64.8,39.3c-0.4,0.9-1,1.3-2,1.3h-8.5v14.8c0,0.6-0.2,1.1-0.6,1.5\r\n                            c-0.4,0.4-0.9,0.6-1.5,0.6h-8.5c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5V40.6h-8.5c-0.9,0-1.6-0.4-2-1.3\r\n                            c-0.4-0.9-0.2-1.6,0.5-2.3l14.8-14.8c0.4-0.4,0.9-0.6,1.5-0.6s1.1,0.2,1.5,0.6L64.3,37C65,37.7,65.1,38.4,64.8,39.3z\"/>\r\n                    </g>\r\n                </svg>\r\n            </div>\r\n            \r\n            <span class=\"button-text\">Browse</span>\r\n        </div>\r\n    </ng-template>\r\n\r\n    <input #inputRef type=\"file\" class=\"files-input\" tabindex=\"-1\" (change)=\"onInputChange($event)\">\r\n</label>","import { AbstractControl } from '@angular/forms';\r\nimport { IsNullOrEmpty } from './helpers.class';\r\nimport { FileUploadControl } from './control.class';\r\nimport { FileUploadTypes } from './file-types.class';\r\n\r\nexport interface ValidationError {\r\n    actual: any;\r\n    file: File;\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface ValidationErrors {\r\n    [key: string]: any;\r\n}\r\n\r\nexport type  ValidatorFn = (c: AbstractControl | FileUploadControl) => ValidationErrors | null;\r\n\r\n/**\r\n * function used to check file size\r\n */\r\nconst checkFileSize = (actualSize: number, maxSize: number, minSize: number = 0, file?: File): ValidationErrors | null => {\r\n    return (!IsNullOrEmpty(maxSize) && actualSize > maxSize) || actualSize < minSize ?\r\n        {maxSize, minSize, actual: actualSize, file} : null;\r\n};\r\n\r\nconst getFileType = (file: File, fileExtension: string): FileUploadTypes => {\r\n    const type = file.type;\r\n    if (!IsNullOrEmpty(type)) {\r\n        return type as FileUploadTypes;\r\n    }\r\n\r\n    return FileUploadTypes[fileExtension];\r\n};\r\n\r\nenum CheckType {\r\n    ALLOWED,\r\n    NOTALLOWED\r\n}\r\n\r\nconst FILE_EXT_REG = /(^[.]\\w*)$/m;\r\n/**\r\n * function used to check file type\r\n *\r\n * #### allowedTypes\r\n * file_extension|audio/*|video/*|image/*|media_type\r\n */\r\nconst checkFileTypes = (file: File, types: Array<string>, checkType: CheckType): ValidationErrors | null => {\r\n    const fileExtension = file.name.split('.').pop().toLowerCase();\r\n    const fileType = getFileType(file, fileExtension);\r\n\r\n    for (const type of types) {\r\n        const isFound = FILE_EXT_REG.test(type) ? type === `.${fileExtension}` : new RegExp(type).test(fileType);\r\n        if (isFound) {\r\n            return checkType === CheckType.ALLOWED ? null : {notAllowedTypes: types, actual: fileType, file};\r\n        }\r\n    }\r\n\r\n    return checkType === CheckType.ALLOWED ? {allowedTypes: types, actual: fileType, file} : null;\r\n};\r\n\r\nconst checkValueType = (value: any ): void => {\r\n    if (!Array.isArray(value)) {\r\n        throw Error(`FormControl.setValue was provided with wrong argument type, ${value} was provided instead Array<File>`);\r\n    }\r\n};\r\n\r\n// @dynamic\r\nexport class FileUploadValidators {\r\n\r\n    /**\r\n     * Validator that compare the summary size of all files\r\n     */\r\n    public static sizeLimit(maxSize: number): ValidatorFn {\r\n        return (control: AbstractControl | FileUploadControl): {sizeLimit: ValidationErrors} | null => {\r\n            const files: Array<File> = control.value;\r\n            if (IsNullOrEmpty(files)) { return null; }\r\n            checkValueType(files);\r\n\r\n            const sum = files.map(file => file.size).reduce((a, b) => a + b, 0);\r\n            const toLargeFiles = checkFileSize(sum, maxSize);\r\n\r\n            return toLargeFiles ?\r\n                    {'sizeLimit': toLargeFiles} : null;\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Validator that validate individually file maximum size length.\r\n     * Compare the File size in bytes\r\n     * @dynamic\r\n     */\r\n    public static fileSize(maxSize: number): ValidatorFn {\r\n        return (control: AbstractControl | FileUploadControl): {fileSize: Array<ValidationErrors>} => {\r\n            const files: Array<File> = control.value;\r\n            if (IsNullOrEmpty(files)) { return null; }\r\n            checkValueType(files);\r\n\r\n            const toLargeFiles = files.map((file) => checkFileSize(file.size, maxSize, 0, file))\r\n                                        .filter((error) => error);\r\n\r\n            return toLargeFiles.length > 0 ?\r\n                    {'fileSize': toLargeFiles} : null;\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Compare the File size in bytes with max and min size limits\r\n     * @dynamic\r\n     */\r\n    public static sizeRange({ minSize, maxSize }: { minSize?: number; maxSize?: number }): ValidatorFn {\r\n        return (control: AbstractControl | FileUploadControl): {sizeRange: Array<ValidationErrors>} => {\r\n            const files: Array<File> = control.value;\r\n            if (IsNullOrEmpty(files)) { return null; }\r\n            checkValueType(files);\r\n\r\n            const sizeMismatch = files.map((file) => checkFileSize(file.size, maxSize, minSize, file))\r\n                                        .filter((error) => error);\r\n\r\n            return sizeMismatch.length > 0 ?\r\n                    {'sizeRange': sizeMismatch} : null;\r\n        };\r\n    }\r\n\r\n    /**\r\n     * validator that requires control to have limit on files number\r\n     * @dynamic\r\n     */\r\n    public static filesLimit(numFiles: number): ValidatorFn {\r\n        return (control: AbstractControl | FileUploadControl): ValidationErrors => {\r\n            const files: Array<File> = control.value;\r\n            if (IsNullOrEmpty(files)) { return null; }\r\n            checkValueType(files);\r\n\r\n            const filesLimit = files.slice(-1 * (files.length - numFiles))\r\n                                    .map(file => ({'max': numFiles, 'actual': files.length, file }));\r\n\r\n            return files.length > numFiles ?\r\n                {'filesLimit': filesLimit} : null;\r\n        };\r\n    }\r\n\r\n    /**\r\n     * validator that requires control to have limit on media types\r\n     *\r\n     * ##### Allowed media types are\r\n     *\r\n     * - file_extension - a file extension starting with the STOP character,\r\n     * e.g: .gif, .jpg, .png, .doc\r\n     * - audio/* -        All sound files are accepted\r\n     * - video/* -        All video files are accepted\r\n     * - image/* -        All image files are accepted\r\n     * - media_type -     A valid media type, with no parameters. Look at [IANA Media Types]\r\n     *      (https://www.iana.org/assignments/media-types/media-types.xhtml) for a complete list of standard media types\r\n     *\r\n     * #### Example\r\n     * `FileUploadValidators.accept([file_extension, audio/*, video/*, image/*, media_type])`\r\n     * @dynamic\r\n     */\r\n    public static accept(allowedFileTypes: Array<string>): ValidatorFn {\r\n        return (control: AbstractControl | FileUploadControl): ValidationErrors => {\r\n            const files: Array<File> = control.value;\r\n            if (IsNullOrEmpty(files)) { return null; }\r\n            checkValueType(files);\r\n\r\n            const notAllowedFiles = files.map((file) => checkFileTypes(file, allowedFileTypes, CheckType.ALLOWED))\r\n                                        .filter((error) => error);\r\n\r\n            return notAllowedFiles.length > 0 ?\r\n                {'fileTypes': notAllowedFiles} : null;\r\n        };\r\n    }\r\n\r\n    /**\r\n     * validator that requires control to have limit on media types\r\n     *\r\n     * ##### Not allowed media types are\r\n     *\r\n     * - file_extension - a file extension starting with the STOP character,\r\n     * e.g: .gif, .jpg, .png, .doc\r\n     * - audio/* -        All sound files are accepted\r\n     * - video/* -        All video files are accepted\r\n     * - image/* -        All image files are accepted\r\n     * - media_type -     A valid media type, with no parameters. Look at [IANA Media Types]\r\n     *      (https://www.iana.org/assignments/media-types/media-types.xhtml) for a complete list of standard media types\r\n     *\r\n     * #### Example\r\n     * `FileUploadValidators.reject([file_extension, audio/*, video/*, image/*, media_type])`\r\n     * @dynamic\r\n     */\r\n    public static reject(rejectFileTypes: Array<string>): ValidatorFn {\r\n        return (control: AbstractControl | FileUploadControl): ValidationErrors => {\r\n            const files: Array<File> = control.value;\r\n            if (IsNullOrEmpty(files)) { return null; }\r\n            checkValueType(files);\r\n\r\n            const notAllowedFiles = files.map((file) => checkFileTypes(file, rejectFileTypes, CheckType.NOTALLOWED))\r\n                                        .filter((error) => error);\r\n\r\n            return notAllowedFiles.length > 0 ?\r\n                {'fileTypes': notAllowedFiles} : null;\r\n        };\r\n    }\r\n\r\n}\r\n","import { Directive, forwardRef, Input, OnChanges, SimpleChanges, Host, Self, Optional, HostBinding } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, AbstractControl } from '@angular/forms';\r\nimport { ValidationErrors, ValidatorFn, FileUploadValidators } from './../helpers/validators.class';\r\nimport { IsNullOrEmpty } from './../helpers/helpers.class';\r\nimport { FileUploadService } from './../services/file-upload.service';\r\n\r\n\r\n/**\r\n * A Directive that adds the `filesize` validator to controls marked with the\r\n * `filesize` attribute. The size of the file is in bytes or any other unit\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * <file-upload name=\"files\" ngModel filesize=\"830000\"></file-upload>\r\n * <file-upload name=\"files\" ngModel [filesize]=\"830000\"></file-upload>\r\n * <file-upload name=\"files\" ngModel minSize=\"0\" max=\"6200\"></file-upload>\r\n * <file-upload name=\"files\" ngModel filesize=\"123MB\"></file-upload>\r\n * <file-upload name=\"files\" ngModel [filesize]=\"12 mb\"></file-upload>\r\n * <file-upload name=\"files\" ngModel minSize=\"0\" max=\"324KB\"></file-upload>\r\n * ```\r\n *\r\n */\r\n@Directive({\r\n    selector: `file-upload[filesize][formControlName],\r\n    file-upload[filesize][formControl],\r\n    file-upload[filesize][ngModel],\r\n    file-upload[minsize][formControlName],\r\n    file-upload[minsize][formControl],\r\n    file-upload[minsize][ngModel],\r\n    file-upload[maxsize][formControlName],\r\n    file-upload[maxsize][formControl],\r\n    file-upload[maxsize][ngModel]`,\r\n    providers: [{\r\n        provide: NG_VALIDATORS,\r\n        useExisting: forwardRef(() => FileSizeValidator),\r\n        multi: true\r\n    }],\r\n    host: {\r\n        '[attr.filesize]': 'filesize ? filesize : null',\r\n        '[attr.minsize]': 'minsize ? minsize : null',\r\n        '[attr.maxsize]': 'maxsize ? maxsize : null'\r\n    },\r\n    standalone: true\r\n})\r\nexport class FileSizeValidator implements Validator, OnChanges {\r\n\r\n    @Input()\r\n    public filesize: string|number;\r\n\r\n    @Input()\r\n    public minsize: string|number;\r\n\r\n    @Input()\r\n    public maxsize: string|number;\r\n\r\n    private validator: ValidatorFn;\r\n\r\n    constructor(private readonly fileUploadService: FileUploadService){}\r\n\r\n    private onChange: () => void;\r\n\r\n    public ngOnChanges(changes: SimpleChanges): void {\r\n        if ('filesize' in changes \r\n            || 'maxsize' in changes \r\n            || 'minsize' in changes) {\r\n          this._createValidator();\r\n          if (this.onChange) {\r\n              this.onChange();\r\n          }\r\n        }\r\n    }\r\n\r\n    public validate(c: AbstractControl): ValidationErrors|null {\r\n        return this.validator(c);\r\n    }\r\n\r\n    public registerOnValidatorChange(fn: () => void): void {\r\n        this.onChange = fn; \r\n    }\r\n\r\n    private _createValidator(): void {\r\n        let maxSize = null;\r\n        if (!IsNullOrEmpty(this.maxsize)) {\r\n            maxSize = this.fileUploadService.parseSize(this.maxsize);\r\n        } else if (!IsNullOrEmpty(this.filesize)) {\r\n            maxSize = this.fileUploadService.parseSize(this.filesize);\r\n        }\r\n\r\n        const minSize = this.fileUploadService.parseSize(this.minsize);\r\n        this.validator = FileUploadValidators.sizeRange({ maxSize, minSize });\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * A Directive that adds the `fileslimit` validator to controls marked with the\r\n * `fileslimit` attribute.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * <file-upload name=\"files\" ngModel fileslimit=\"2\"></file-upload>\r\n * <file-upload name=\"files\" ngModel [fileslimit]=\"2\"></file-upload>\r\n * ```\r\n *\r\n */\r\n@Directive({\r\n    selector: 'file-upload[fileslimit][formControlName], file-upload[fileslimit][formControl], file-upload[fileslimit][ngModel]',\r\n    providers: [{\r\n        provide: NG_VALIDATORS,\r\n        useExisting: forwardRef(() => FilesLimitValidator),\r\n        multi: true\r\n    }],\r\n    host: {'[attr.fileslimit]': 'fileslimit ? fileslimit : null'},\r\n    standalone: true\r\n})\r\nexport class FilesLimitValidator implements Validator, OnChanges {\r\n\r\n    @Input()\r\n    public fileslimit: string|number;\r\n\r\n    private validator: ValidatorFn;\r\n\r\n    private onChange: () => void;\r\n\r\n    public ngOnChanges(changes: SimpleChanges): void {\r\n        if ('fileslimit' in changes) {\r\n          this._createValidator();\r\n          if (this.onChange) {\r\n            this.onChange();\r\n          }\r\n        }\r\n    }\r\n\r\n    public validate(c: AbstractControl): ValidationErrors|null {\r\n        return this.fileslimit != null ? this.validator(c) : null;\r\n    }\r\n\r\n    public registerOnValidatorChange(fn: () => void): void {\r\n        this.onChange = fn; \r\n    }\r\n\r\n    private _createValidator(): void {\r\n        this.validator = FileUploadValidators.filesLimit(typeof this.fileslimit === 'string' ? parseInt(this.fileslimit, 10) : this.fileslimit);\r\n    }\r\n}\r\n\r\n/**\r\n * A Directive that adds the `accept` validator to controls marked with the\r\n * `accept` attribute.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * <file-upload name=\"files\" ngModel accept=\"file_extension|audio/*|video/*|image/*|media_type\"></file-upload>\r\n * <file-upload name=\"files\" ngModel [accept]=\"file_extension|audio/*|video/*|image/*|media_type\"></file-upload>\r\n * ```\r\n * \r\n * To specify more than one value, separate the values with a comma (e.g. <file-upload accept=\"audio/*,video/*,image/*\"></file-upload>.\r\n *\r\n */\r\n@Directive({\r\n    selector: 'file-upload[accept][formControlName], file-upload[accept][formControl], file-upload[accept][ngModel]',\r\n    providers: [{\r\n        provide: NG_VALIDATORS,\r\n        useExisting: forwardRef(() => FilesAcceptValidator),\r\n        multi: true\r\n    }],\r\n    host: {'[attr.accept]': 'accept ? accept : null'},\r\n    standalone: true\r\n})\r\nexport class FilesAcceptValidator implements Validator, OnChanges {\r\n\r\n    @Input()\r\n    public accept: string;\r\n\r\n    private validator: ValidatorFn;\r\n\r\n    private onChange: () => void;\r\n\r\n    public ngOnChanges(changes: SimpleChanges): void {\r\n        if ('accept' in changes) {\r\n          this._createValidator();\r\n          if (this.onChange) {\r\n              this.onChange();\r\n          }\r\n        }\r\n    }\r\n\r\n    public validate(c: AbstractControl): ValidationErrors|null {\r\n        return !!this.validator ? this.validator(c) : null;\r\n    }\r\n\r\n    public registerOnValidatorChange(fn: () => void): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    private _createValidator(): void {\r\n        if (IsNullOrEmpty(this.accept)) {\r\n            return;\r\n        }\r\n        this.validator = FileUploadValidators.accept(this.accept.split(','));\r\n    }\r\n}\r\n","import { Directive, Optional, Host, Self, input, InputSignal, effect } from '@angular/core';\r\nimport { FileUploadComponent } from '../components/multiple-file-upload/file-upload.component';\r\nimport { SimpleFileUploadComponent } from '../components/simple-file-upload/simple-file-upload.component';\r\n\r\n\r\n\r\n@Directive({\r\n    selector: 'file-upload[accept]',\r\n    host: { '[attr.accept]': 'accept ? accept : null' },\r\n    standalone: true\r\n})\r\nexport class FilesAcceptDirective {\r\n\r\n    public readonly accept: InputSignal<string> = input.required();\r\n\r\n    private readonly fileUpload: FileUploadComponent | SimpleFileUploadComponent = null;\r\n\r\n    constructor(\r\n        @Optional() @Host() @Self() fileUpload: FileUploadComponent,\r\n        @Optional() @Host() @Self() simpleFileUpload: SimpleFileUploadComponent) {\r\n        this.fileUpload = fileUpload || simpleFileUpload;\r\n        effect(() => {\r\n            this.setAccept(this.accept());\r\n        });\r\n    }\r\n\r\n    private setAccept(accept: string): void {\r\n        const control = this.fileUpload?.control();\r\n        if (control) {\r\n            control.acceptFiles(accept);\r\n        }\r\n    }\r\n}\r\n","import { Directive, Input, SimpleChanges, Optional, Host, Self, OnChanges, AfterViewInit, input, InputSignalWithTransform, booleanAttribute, effect } from '@angular/core';\r\nimport { FileUploadComponent } from '../components/multiple-file-upload/file-upload.component';\r\nimport { SimpleFileUploadComponent } from '../components/simple-file-upload/simple-file-upload.component';\r\n\r\n\r\nexport function booleanTransform(value: unknown): boolean {\r\n    if (typeof value === 'string' && (value === 'true' || value === 'false')) {\r\n        return JSON.parse(value.toLowerCase());\r\n    } else if (typeof value === 'boolean') {\r\n        return value;\r\n    } else {\r\n        throw Error(`Provided value in directive [discard]=\"${value}\" is not boolean.`);\r\n    }\r\n}\r\n\r\n\r\n@Directive({\r\n    selector: 'file-upload[discard]',\r\n    host: { '[attr.discard]': 'discard ? discard : null' },\r\n    standalone: true\r\n})\r\nexport class FilesDiscardDirective {\r\n\r\n    public discard: InputSignalWithTransform<boolean, boolean | string | null> = input<boolean, boolean | string | null>(true, { transform: booleanAttribute });\r\n\r\n    private readonly fileUpload: FileUploadComponent | SimpleFileUploadComponent = null;\r\n\r\n    constructor(\r\n        @Optional() @Host() @Self() fileUpload: FileUploadComponent,\r\n        @Optional() @Host() @Self() simpleFileUpload: SimpleFileUploadComponent) {\r\n        this.fileUpload = fileUpload || simpleFileUpload;\r\n        effect(() => {\r\n            this.setAccept(this.discard());\r\n        });\r\n    }\r\n\r\n    private setAccept(discard: boolean): void {\r\n        const control = this.fileUpload?.control();\r\n        if (control) {\r\n            control.discardInvalid(discard);\r\n        }\r\n    }\r\n}\r\n","import { Directive, Optional, Host, Self, InputSignalWithTransform, input, booleanAttribute, effect } from '@angular/core';\r\nimport { FileUploadComponent } from '../components/multiple-file-upload/file-upload.component';\r\nimport { SimpleFileUploadComponent } from '../components/simple-file-upload/simple-file-upload.component';\r\n\r\n\r\n\r\n@Directive({\r\n    selector: 'file-upload[native]',\r\n    host: { '[attr.native]': 'native ? native : null' },\r\n    standalone: true\r\n})\r\nexport class FilesNativeDirective {\r\n\r\n    public native: InputSignalWithTransform<boolean, boolean | string | null> = input<boolean, boolean | string | null>(true, { transform: booleanAttribute });\r\n\r\n    private readonly fileUpload: FileUploadComponent | SimpleFileUploadComponent = null;\r\n\r\n    constructor(\r\n        @Optional() @Host() @Self() fileUpload: FileUploadComponent,\r\n        @Optional() @Host() @Self() simpleFileUpload: SimpleFileUploadComponent) {\r\n        this.fileUpload = fileUpload || simpleFileUpload;\r\n        effect(() => {\r\n            this.enableNative(this.native());\r\n        })\r\n    }\r\n\r\n    private enableNative(isNative: boolean): void {\r\n        const control = this.fileUpload?.control();\r\n        if (control) {\r\n            control.native(isNative);\r\n        }\r\n    }\r\n}\r\n","/*\r\n * FileUpload\r\n *\r\n * By Ivan Pintar, http://www.pintar-ivan.com\r\n * Licensed under the MIT License\r\n * See https://github.com/pIvan/file-upload/blob/master/README.md\r\n */\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { FileUploadComponent } from './components/multiple-file-upload/file-upload.component';\r\nimport { FileUploadDropZoneComponent } from './components/drop-zone/file-upload-drop-zone.component';\r\nimport { FileUploadListItemComponent } from './components/file-list/file-upload-list-item.component';\r\nimport { FileUploadIconComponent } from './components/file-list/file-upload-icon.component';\r\nimport { FileUploadAttributeComponent } from './components/attribute/file-upload-attr.component';\r\nimport { SimpleFileUploadComponent } from './components/simple-file-upload/simple-file-upload.component';\r\n\r\nimport { FileSizeValidator, FilesLimitValidator, FilesAcceptValidator } from './directives/validators.directive';\r\nimport { FilesAcceptDirective } from './directives/attribute.directive';\r\nimport { FilesDiscardDirective } from './directives/discard.directive';\r\nimport { FilesNativeDirective } from './directives/native.directive';\r\n\r\nexport { FileUploadComponent } from './components/multiple-file-upload/file-upload.component';\r\nexport { FileUploadDropZoneComponent } from './components/drop-zone/file-upload-drop-zone.component';\r\nexport { FileUploadListItemComponent } from './components/file-list/file-upload-list-item.component';\r\nexport { FileUploadAttributeComponent } from './components/attribute/file-upload-attr.component';\r\nexport { SimpleFileUploadComponent } from './components/simple-file-upload/simple-file-upload.component';\r\nexport { FileSizeValidator, FilesLimitValidator, FilesAcceptValidator } from './directives/validators.directive';\r\nexport { FilesAcceptDirective } from './directives/attribute.directive';\r\nexport { FilesDiscardDirective } from './directives/discard.directive';\r\nexport { FilesNativeDirective } from './directives/native.directive';\r\n\r\nexport { FileUploadControl } from './helpers/control.class';\r\nexport { FileUploadValidators, ValidationErrors, ValidatorFn } from './helpers/validators.class';\r\nexport { FileUploadTypes } from './helpers/file-types.class';\r\n\r\nexport { FileUploadService } from './services/file-upload.service';\r\n\r\n@NgModule({\r\n    imports: [\r\n        FileUploadComponent,\r\n        FileUploadDropZoneComponent,\r\n        FileUploadListItemComponent,\r\n        FileUploadAttributeComponent,\r\n        SimpleFileUploadComponent,\r\n        FileUploadIconComponent,\r\n        // directives\r\n        FileSizeValidator,\r\n        FilesLimitValidator,\r\n        FilesAcceptValidator,\r\n        FilesAcceptDirective,\r\n        FilesDiscardDirective,\r\n        FilesNativeDirective,\r\n    ],\r\n    declarations: [],\r\n    exports: [\r\n        FileUploadComponent,\r\n        FileUploadDropZoneComponent,\r\n        FileUploadListItemComponent,\r\n        FileUploadAttributeComponent,\r\n        SimpleFileUploadComponent,\r\n        // directives\r\n        FileSizeValidator,\r\n        FilesLimitValidator,\r\n        FilesAcceptValidator,\r\n        FilesAcceptDirective,\r\n        FilesDiscardDirective,\r\n        \r\n    ]\r\n})\r\nexport class FileUploadModule {\r\n}\r\n","/*\n * Public API Surface of ngx-file-upload\n */\n\nexport * from './lib/file-upload.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.FileUploadService","i1.FileUploadComponent","i2.SimpleFileUploadComponent"],"mappings":"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"}