<?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;

&lt;script src=&quot;https://code.jquery.com/jquery-3.2.1.min.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css&quot;/&gt;

&lt;link rel=&quot;stylesheet&quot; href=&quot;icon_font/css/icon_font.css&quot;&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/jquery.transfer.css&quot;&gt;
&lt;script src=&quot;https://code.jquery.com/jquery-3.3.1.min.js&quot;
        integrity=&quot;sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT&quot;
        crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/jquery.transfer.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">
			<Components>
				<LibraryItem>
					<FileName>C:\Users\User\Downloads\lou-multi-select-0.9.10-53-g57fb8d3\lou-multi-select-57fb8d3\css\multi-select.css</FileName>
				</LibraryItem>
				<LibraryItem>
					<FileName>C:\Users\User\Downloads\lou-multi-select-0.9.10-53-g57fb8d3\lou-multi-select-57fb8d3\js\jquery.multi-select.js</FileName>
				</LibraryItem>
			</Components>
		</LibraryList>
		<PageList name="Main">
			<Components>
				<Page id="NewPage">
					<pageenter>BeginJS



 $(&apos;#Combobox1&apos;).select2({
  multiple: true,
  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
}
 );

//
$(document).ready(function () {
  // Opsi yang ingin ditambahkan secara dinamis
  const options = [
    { id: &apos;1&apos;, text: &apos;Option 1&apos; },
    { id: &apos;2&apos;, text: &apos;Option 2&apos; },
    { id: &apos;3&apos;, text: &apos;Option 3&apos; },
    { id: &apos;4&apos;, text: &apos;Option 4&apos; }
  ];

  // Initialize Select2
  const $multiSelect = $(&apos;#multiSelect&apos;);
  $multiSelect.select2({
    placeholder: &quot;Select options&quot;, // Placeholder text
    allowClear: true               // Allow clearing selections
  });

  // Tambahkan opsi ke Select2
  options.forEach(option =&gt; {
    const newOption = new Option(option.text, option.id, false, false);
    $multiSelect.append(newOption).trigger(&apos;change&apos;); // Trigger agar opsi dikenali oleh Select2
  });

  // Event untuk mendapatkan nilai secara otomatis
  $multiSelect.on(&apos;change&apos;, function () {
    const selectedValues = $multiSelect.val(); // Get selected options
    const outputText = selectedValues ? selectedValues.join(&apos;, &apos;) : &apos;&apos;; // Gabungkan nilai dengan koma

    // Tampilkan di textarea
    $(&apos;#output&apos;).val(outputText);
    $(&apos;#TextInput1&apos;).val(outputText);

    // Tampilkan menggunakan alert
    //alert(&apos;Selected Values: &apos; + outputText);
  });
});




//
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>
									<variable>[list1]</variable>
									<multi_select>False</multi_select>
									<change>.SetVar [final] [list1(0)]

.StrLen &quot;[list1]&quot; [final]

jsAlert &quot;[list1]&quot;</change>
								</Combobox>
								<TextInput id="TextInput2">
									<left>24px</left>
									<top>256px</top>
									<height>56px</height>
									<css_class>col-sm-12</css_class>
									<variable>[list1_a]</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>
									<change>SetVar [final] [list2]</change>
								</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>
						</PushButton>
						<Headline id="Headline3">
							<left>424px</left>
							<top>256px</top>
							<width>208px</width>
							<height>80px</height>
							<text>[final]</text>
						</Headline>
						<Container id="Container1">
							<left>8px</left>
							<top>8px</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="Headline4">
									<left>88px</left>
									<top>16px</top>
									<height>16px</height>
									<css_class>col-sm-12</css_class>
									<text>MultiSelect</text>
									<kind>h4</kind>
								</Headline>
								<TextInput id="TextInput1">
									<left>24px</left>
									<top>256px</top>
									<height>56px</height>
									<css_class>col-sm-12</css_class>
									<variable>[list4]</variable>
									<place_holder>how to populate multiselect into using , (comma) as seperator</place_holder>
									<change>.xss</change>
								</TextInput>
							</Components>
						</Container>
						<Container id="Container3">
							<left>72px</left>
							<top>352px</top>
							<width>88px</width>
							<height>32px</height>
							<style>border-width:1px;border-style:solid;background-color:#fff;</style>
							<css_class>row</css_class>
							<html>&lt;div class=&quot;container&quot;&gt;
  &lt;label for=&quot;multiSelect&quot;&gt;Select Options:&lt;/label&gt;
  &lt;select id=&quot;multiSelect&quot; multiple class=&quot;form-control&quot; style=&quot;width: 100%;&quot;&gt;
    &lt;!-- Opsi akan ditambahkan secara dinamis melalui JavaScript --&gt;
  &lt;/select&gt;

  &lt;div class=&quot;mt-3&quot;&gt;
    &lt;label for=&quot;output&quot;&gt;Selected Values:&lt;/label&gt;
    &lt;textarea id=&quot;output&quot; class=&quot;form-control&quot; rows=&quot;3&quot; readonly&gt;&lt;/textarea&gt;
  &lt;/div&gt;
&lt;/div&gt;
</html>
						</Container>
					</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>
