﻿B4J=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=10
@EndOfDesignText@
#IgnoreWarnings:12
Sub Class_Globals
	Dim zip As BANanoObject
	Dim Banano As BANano		'ignore
	Dim zipFileName As String
	Private result As Object
End Sub

'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize(fileName As String)
	zipFileName = fileName
	zip.Initialize2("JSZip", Null)
End Sub

'add a file object using filename and content
Sub AddFile(fName As String, fObject As Object)
	zip.RunMethod("file", Array(fName, fObject, CreateMap("binary":True)))
End Sub

Sub Compress As BANanoPromise
	Dim obj As Map = CreateMap()
	obj.Put("type", "blob")
	obj.Put("compression", "DEFLATE")
	obj.Put("compressionOptions", CreateMap("level":9))
	result = Banano.Await(zip.RunMethod("generateAsync", obj))
	Return result
End Sub

'download the zip file
Sub Download
	Dim obj As Object = Banano.CreateObjectUrl(result)
	Dim a As BANanoElement = Banano.CreateElement("a")
	a.SetField("download", zipFileName)
	a.SetField("href", obj)
	a.SetField("target", "_blank")
	a.RunMethod("click", Null)
	Banano.revokeObjectURL(obj)
End Sub
