<?xml version="1.0" encoding="utf-8"?>
<Application>
	<AppTitle>Untitled Application</AppTitle>
	<AppShortName>MyApp</AppShortName>
	<Author>Author name</Author>
	<Version>1.0</Version>
	<DesignDeviceName>Apple iPhone 6/7/8</DesignDeviceName>
	<VariablesScanned>True</VariablesScanned>
	<PageWidth>667</PageWidth>
	<PageHeight>375</PageHeight>
	<AutoSizeWidth>False</AutoSizeWidth>
	<AutoSizeHeight>False</AutoSizeHeight>
	<HideScrollbars>False</HideScrollbars>
	<ResponsiveSize>True</ResponsiveSize>
	<PublishPlatform>WebApp</PublishPlatform>
	<EmptyBuildFolder>False</EmptyBuildFolder>
	<AppIcon>C:\Users\User\Documents\VisualNeoWeb\Libraries\img\default-icon.png</AppIcon>
	<LanguageCode>en</LanguageCode>
	<DisplayMode>standalone</DisplayMode>
	<ServiceWorker>Offline page</ServiceWorker>
	<ThemeColor>#000000</ThemeColor>
	<PwaScope>/</PwaScope>
	<MobileOSTypes>[AndroidOS,iOS,WindowsPhoneOS]</MobileOSTypes>
	<WindowState>normal</WindowState>
	<TitleBar>True</TitleBar>
	<Sizeable>True</Sizeable>
	<MaximizeBtn>False</MaximizeBtn>
	<MinimizeBtn>True</MinimizeBtn>
	<SystemMenu>True</SystemMenu>
	<ContextMenu>False</ContextMenu>
	<AlwaysOnTop>False</AlwaysOnTop>
	<ShowInTaskbar>True</ShowInTaskbar>
	<SingleInstance>False</SingleInstance>
	<ChromeKioskMode>False</ChromeKioskMode>
	<CustomHeadMetadata>&lt;link href=&quot;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css&quot; rel=&quot;stylesheet&quot;&gt;



&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.4.3/purify.min.js&quot;&gt;&lt;/script&gt;</CustomHeadMetadata>
	<CustomBodyMetadata>&lt;link href=&quot;https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css&quot; rel=&quot;stylesheet&quot; /&gt;
&lt;script src=&quot;https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js&quot;&gt;&lt;/script&gt;</CustomBodyMetadata>
	<Components>
		<FunctionList name="Subroutines">
			<Components>
				<Function name="xss">
					<Code>.SetVar [test] &quot;&quot;
beginjs
var rawInput = $App.test; // Variabel input dari pengguna
var sanitizedInput = DOMPurify.sanitize(rawInput); // Sanitasi input

// Menyimpan hasil sanitasi ke variabel atau elemen lain
$App.test = sanitizedInput;
endjs


.AlertBox &quot;test ini [test]&quot; &quot;[test]&quot; &quot;&quot;</Code>
				</Function>
				<Function name="sanitizeInput">
					<Code>// Fungsi untuk menyanitasi input dengan DOMPurify
function sanitizeInput(inputVarName, outputVarName) {
  // Validasi apakah input variabel ada
  if (typeof window[inputVarName] === &quot;undefined&quot;) {
    console.error(`Variabel ${inputVarName} tidak ditemukan atau tidak valid.`);
    return;
  }

  // Ambil nilai dari variabel input
  var rawInput = window[inputVarName];
  console.log(`Nilai awal ${inputVarName}:`, rawInput);

  // Sanitasi nilai menggunakan DOMPurify
  var sanitizedInput = DOMPurify.sanitize(rawInput);
  console.log(`Hasil sanitasi untuk ${inputVarName}:`, sanitizedInput);

  // Simpan hasil sanitasi ke variabel output
  window[outputVarName] = sanitizedInput;
  console.log(`Nilai ${outputVarName} disimpan:`, window[outputVarName]);
}</Code>
					<ScriptLanguage>JavaScript</ScriptLanguage>
				</Function>
				<Function name="xssp">
					<Code>beginjs
// Fungsi untuk menyanitasi input dengan DOMPurify
function sanitizeInput(inputVarName, outputVarName) {
  // Validasi apakah input variabel ada
  if (typeof window[inputVarName] === &quot;undefined&quot;) {
    console.error(`Variabel ${inputVarName} tidak ditemukan atau tidak valid.`);
    return;
  }

  // Ambil nilai dari variabel input
  var rawInput = window[inputVarName];
  console.log(`Nilai awal ${inputVarName}:`, rawInput);

  // Sanitasi nilai menggunakan DOMPurify
  $App.sanitizedInput = DOMPurify.sanitize(rawInput);
  console.log(`Hasil sanitasi untuk ${inputVarName}:`, sanitizedInput);

  // Simpan hasil sanitasi ke variabel output
  window[outputVarName] = sanitizedInput;
  console.log(`Nilai ${outputVarName} disimpan:`, window[outputVarName]);
}

endjs
SetVar [hasil] [sanitizedInput]</Code>
				</Function>
			</Components>
		</FunctionList>
		<LibraryList name="Libraries"/>
		<PageList name="Main">
			<Components>
				<Page id="NewPage">
					<pageenter>BeginJS
 $(&apos;#Combobox1&apos;).select2({
  multiple: true,
    tags: &quot;true&quot;,
  placeholder: &quot;Select an option&quot;,
  allowClear: true,
  minimumInputLength : 1,
  multiple : true,
  tokenSeparators : &apos;,&apos;
});
 $(&apos;#Combobox3&apos;).select2(
{
  tags: &quot;true&quot;,
  placeholder: &quot;Select an option&quot;,
  allowClear: true
}
 );
EndJS</pageenter>
					<Components>
						<Container id="Container4">
							<left>8px</left>
							<top>154px</top>
							<width>296px</width>
							<height>48px</height>
							<style>border-width:1px;border-style:solid;background-color:#fff;</style>
							<css_class>row</css_class>
							<click>neoGoogleFonts &quot;Kablammo&quot;</click>
							<Components>
								<Headline id="Headline1">
									<left>88px</left>
									<top>16px</top>
									<height>16px</height>
									<css_class>col-sm-12</css_class>
									<text>MultiSelect</text>
									<kind>h4</kind>
								</Headline>
								<Combobox id="Combobox1">
									<left>344px</left>
									<top>0px</top>
									<height>32px</height>
									<css_class>col-sm-12</css_class>
									<items>Afghanistan|AF,Albania|AL,Algeria|DZ,Andorra|AD,Angola|AO,Argentina|AR,Armenia|AM,Australia|AU,Austria|AT,Azerbaijan|AZ,Bahamas|BS,Bahrain|BH,Bangladesh|BD,Barbados|BB,Belarus|BY,Belgium|BE,Belize|BZ,Benin|BJ,Bhutan|BT,Bolivia|BO,Bosnia and Herzegovina|BA,Botswana|BW,Brazil|BR,Brunei|BN,Bulgaria|BG,Burkina Faso|BF,Burundi|BI,Cabo Verde|CV,Cambodia|KH,Cameroon|CM,Canada|CA,Central African Republic|CF,Chad|TD,Chile|CL,China|CN,Colombia|CO,Comoros|KM,Congo (Congo-Brazzaville)|CG,Costa Rica|CR,Croatia|HR,Cuba|CU,Cyprus|CY,Czech Republic (Czechia)|CZ,Denmark|DK,Djibouti|DJ,Dominica|DM,Dominican Republic|DO,Ecuador|EC,Egypt|EG,El Salvador|SV,Equatorial Guinea|GQ,</items>
									<multi_select>False</multi_select>
								</Combobox>
								<TextInput id="TextInput2">
									<left>24px</left>
									<top>256px</top>
									<height>56px</height>
									<css_class>col-sm-12</css_class>
									<variable>[list1]</variable>
									<place_holder>how to populate multiselect into using , (comma) as seperator</place_holder>
									<change>.xss</change>
								</TextInput>
							</Components>
						</Container>
						<Container id="Container5">
							<left>8px</left>
							<top>238px</top>
							<width>296px</width>
							<height>48px</height>
							<style>border-width:1px;border-style:solid;background-color:#fff;</style>
							<css_class>row</css_class>
							<click>neoGoogleFonts &quot;Kablammo&quot;</click>
							<Components>
								<Headline id="Headline2">
									<left>88px</left>
									<top>16px</top>
									<height>16px</height>
									<css_class>col-sm-12</css_class>
									<text>Single Select (the value populated)</text>
									<kind>h4</kind>
								</Headline>
								<Combobox id="Combobox3">
									<left>344px</left>
									<top>0px</top>
									<height>32px</height>
									<css_class>col-sm-12</css_class>
									<items>Afghanistan|AF,Albania|AL,Algeria|DZ,Andorra|AD,Angola|AO,Argentina|AR,Armenia|AM,Australia|AU,Austria|AT,Azerbaijan|AZ,Bahamas|BS,Bahrain|BH,Bangladesh|BD,Barbados|BB,Belarus|BY,Belgium|BE,Belize|BZ,Benin|BJ,Bhutan|BT,Bolivia|BO,Bosnia and Herzegovina|BA,Botswana|BW,Brazil|BR,Brunei|BN,Bulgaria|BG,Burkina Faso|BF,Burundi|BI,Cabo Verde|CV,Cambodia|KH,Cameroon|CM,Canada|CA,Central African Republic|CF,Chad|TD,Chile|CL,China|CN,Colombia|CO,Comoros|KM,Congo (Congo-Brazzaville)|CG,Costa Rica|CR,Croatia|HR,Cuba|CU,Cyprus|CY,Czech Republic (Czechia)|CZ,Denmark|DK,Djibouti|DJ,Dominica|DM,Dominican Republic|DO,Ecuador|EC,Egypt|EG,El Salvador|SV,Equatorial Guinea|GQ,</items>
									<variable>[list2]</variable>
									<multi_select>False</multi_select>
								</Combobox>
								<TextInput id="TextInput4">
									<left>24px</left>
									<top>256px</top>
									<height>56px</height>
									<css_class>col-sm-12</css_class>
									<variable>[list2]</variable>
									<place_holder>Correct result</place_holder>
									<change>.xss</change>
								</TextInput>
							</Components>
						</Container>
						<PushButton id="PushButton1">
							<left>215px</left>
							<top>255px</top>
							<width>165px</width>
							<height>45px</height>
							<caption>Get Values Into list1</caption>
							<click>BeginJS
$App.options = $(&apos;#Combobox1&apos;).find(&apos;:selected&apos;).map(function() {
    const value = $(this).val();
    return value ? value.trim() : null; // Filtrar valores vacíos o nulos
}).get();

$App.list1 = $App.options.join(&quot;, &quot;);
EndJS</click>
						</PushButton>
					</Components>
				</Page>
				<Page id="aa">
					<Components>
						<PushButton id="PushButton4">
							<left>18px</left>
							<top>198px</top>
							<height>24px</height>
							<css_class>col-sm-6</css_class>
							<caption>aa</caption>
							<click>GotoPage &quot;NewPage&quot;</click>
						</PushButton>
						<Container id="Container15">
							<left>104px</left>
							<top>280px</top>
							<width>264px</width>
							<height>48px</height>
							<style>border-width:1px;border-style:solid;background-color:#fff;</style>
						</Container>
						<PushButton id="PushButton5">
							<left>18px</left>
							<top>198px</top>
							<height>24px</height>
							<css_class>col-sm-6</css_class>
							<caption>aa</caption>
							<click>slOpenModal &quot;Container15&quot;
SizeObject &quot;Container15&quot; 500 1000
MoveObject &quot;Container15&quot; 10 50</click>
						</PushButton>
					</Components>
				</Page>
			</Components>
		</PageList>
		<PageList name="Master">
			<Components>
				<Page id="MasterPage"/>
			</Components>
		</PageList>
		<PageList name="Dialog">
			<Components>
				<Page id="NewDialog">
					<Components>
						<DialogContainer id="DialogContainer1">
							<left>0px</left>
							<top>0px</top>
							<width>667px</width>
							<height>375px</height>
							<close_button>False</close_button>
							<kind>custom</kind>
							<Components>
								<Container id="Container21">
									<left>24px</left>
									<top>64px</top>
									<width>440px</width>
									<height>120px</height>
									<style>border-width:1px;border-style:solid;background-color:#fff;</style>
									<css_class>row</css_class>
									<Components>
										<Container id="Container22">
											<left>72px</left>
											<top>8px</top>
											<height>8px</height>
											<style>border-width:1px;border-style:solid;background-color:#fff;</style>
											<css_class>col-xs-12</css_class>
											<Components>
												<Combobox id="Combobox2">
													<left>78px</left>
													<top>6px</top>
													<height>24px</height>
													<css_class>col-sm-12</css_class>
													<items>Afghanistan|AF,Albania|AL,Algeria|DZ,Andorra|AD,Angola|AO,Argentina|AR,Armenia|AM,Australia|AU,Austria|AT,Azerbaijan|AZ,Bahamas|BS,Bahrain|BH,Bangladesh|BD,Barbados|BB,Belarus|BY,Belgium|BE,Belize|BZ,Benin|BJ,Bhutan|BT,Bolivia|BO,Bosnia and Herzegovina|BA,Botswana|BW,Brazil|BR,Brunei|BN,Bulgaria|BG,Burkina Faso|BF,Burundi|BI,Cabo Verde|CV,Cambodia|KH,Cameroon|CM,Canada|CA,Central African Republic|CF,Chad|TD,Chile|CL,China|CN,Colombia|CO,Comoros|KM,Congo (Congo-Brazzaville)|CG,Costa Rica|CR,Croatia|HR,Cuba|CU,Cyprus|CY,Czech Republic (Czechia)|CZ,Denmark|DK,Djibouti|DJ,Dominica|DM,Dominican Republic|DO,Ecuador|EC,Egypt|EG,El Salvador|SV,Equatorial Guinea|GQ,</items>
													<variable>[list2]</variable>
													<multi_select>False</multi_select>
												</Combobox>
											</Components>
										</Container>
										<Container id="Container23">
											<left>18px</left>
											<top>18px</top>
											<height>8px</height>
											<style>border-width:1px;border-style:solid;background-color:#fff;</style>
											<css_class>col-xs-12</css_class>
											<Components>
												<PushButton id="PushButton3">
													<left>38px</left>
													<top>8px</top>
													<height>16px</height>
													<css_class>col-sm-12</css_class>
													<click>closedialog</click>
												</PushButton>
											</Components>
										</Container>
									</Components>
								</Container>
							</Components>
						</DialogContainer>
					</Components>
				</Page>
			</Components>
		</PageList>
	</Components>
</Application>
