/mods/mod_rechnungen/settings_edit.phtml |
---|
4,6 → 4,8 |
* Template für die Einstellungen des Rechnungen Moduls |
*/ |
use horstoeko\zugferd\ZugferdProfiles; |
?> |
<div> |
182,6 → 184,47 |
</div> |
<div id="tab3" role="tabpanel" class="tab-pane" > |
<?php echo wpsg_drawForm_Select('wpsg_mod_rechnungen_einvoice', __('E-Rechnung', 'wpsg'), [ |
0 => __('Keine E-Rechnungsdaten erzeugen', 'wpsg'), |
100 + ZugferdProfiles::PROFILE_MINIMUM => __('EN16931 Minimum', 'wpsg'), |
100 + ZugferdProfiles::PROFILE_BASIC => __('EN16931 Basic', 'wpsg'), |
100 + ZugferdProfiles::PROFILE_BASICWL => __('EN16931 Basic WL', 'wpsg'), |
100 + ZugferdProfiles::PROFILE_EN16931 => __('EN16931 Comfort', 'wpsg'), |
100 + ZugferdProfiles::PROFILE_EXTENDED => __('EN16931 Extended', 'wpsg'), |
100 + ZugferdProfiles::PROFILE_XRECHNUNG => __('EN16931 XRechnung 1', 'wpsg'), |
100 + ZugferdProfiles::PROFILE_XRECHNUNG_2 => __('EN16931 XRechnung 2', 'wpsg'), |
100 + ZugferdProfiles::PROFILE_XRECHNUNG_2_1 => __('EN16931 XRechnung 2.1', 'wpsg'), |
100 + ZugferdProfiles::PROFILE_XRECHNUNG_2_2 => __('EN16931 XRechnung 2.2', 'wpsg'), |
100 + ZugferdProfiles::PROFILE_XRECHNUNG_2_3 => __('EN16931 XRechnung 2.3', 'wpsg'), |
100 + ZugferdProfiles::PROFILE_XRECHNUNG_3 => __('EN16931 XRechnung 3', 'wpsg'), |
], $this->get_option('wpsg_mod_rechnungen_einvoice'), ['help' => 'wpsg_mod_rechnungen_einvoice']); ?> |
<p style="line-height:normal; margin-bottom:1rem; margin-top:1rem; display:none; font-style:italic;" id="wpsg_mod_rechnungen_einvoice_description"><?php echo __('Die Platzhalter können bei den Formatfeldern und dem Dateinamen verwendet werden. Der Platzhalter %nr% sollte dabei immer Verwendung finden.', 'wpsg'); ?></p> |
<script> |
const eInvoiceProfileDev = <?php echo json_encode(ZugferdProfiles::PROFILEDEF); ?>; |
const el_wpsg_mod_rechnungen_einvoice_description = document.getElementById('wpsg_mod_rechnungen_einvoice_description'); |
document.getElementById('wpsg_mod_rechnungen_einvoice').addEventListener('change', ev => { |
if (eInvoiceProfileDev[ev.target.value] !== undefined) { |
el_wpsg_mod_rechnungen_einvoice_description.innerText = eInvoiceProfileDev[ev.target.value].description; |
el_wpsg_mod_rechnungen_einvoice_description.style.display = 'block'; |
} else { |
el_wpsg_mod_rechnungen_einvoice_description.style.display = 'hidden'; |
} |
}); |
document.getElementById('wpsg_mod_rechnungen_einvoice').dispatchEvent(new Event('change')); |
</script> |
<?php echo wpsg_drawForm_Input('wpsg_rechnungen_url', __('URL Benachrichtigung', 'wpsg'), $this->get_option('wpsg_rechnungen_url'), array('help' => 'wpsg_rechnung_url')); ?> |
<?php echo wpsg_drawForm_Select('wpsg_mod_rechnungen_auto', __('Rechnungserstellung', 'wpsg'), array( |
'0' => __('Manuell', 'wpsg'), |
/mods/mod_productvariants/frontend.js |
---|
18,6 → 18,7 |
'success': function(data) { |
jQuery('#wpsg_produktform_' + template_index).replaceWith(data); |
if (typeof refreshFsLightbox === 'function') refreshFsLightbox(); |
} |
} ); |
/mods/mod_paypalapi/settings_edit.phtml |
---|
59,7 → 59,13 |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_paypalapi_aktiv', __('PayPal für neue Bestellungen erlauben', 'wpsg'), $this->get_option('wpsg_mod_paypalapi_aktiv'), array('help' => 'wpsg_shippay_activ')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_paypalapi_plus_aktiv', __('PayPal Plus aktivieren', 'wpsg'), $this->get_option('wpsg_mod_paypalapi_plus_aktiv'), array('help' => 'wpsg_mod_paypalapi_plus_aktiv')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_paypalapi_giropay_aktiv', __('GiroPay aktivieren', 'wpsg'), $this->get_option('wpsg_mod_paypalapi_giropay_aktiv'), array('help' => 'wpsg_mod_paypalapi_giropay_aktiv ')); ?> |
<div id="wpsg_mod_paypalapi_giropay_aktiv_layer"> |
<?php echo wpsg_drawForm_Input('wpsg_mod_paypalapi_giropay_name', __('Bezeichnung (GiroPay)', 'wpsg'), $this->get_option('wpsg_mod_paypalapi_giropay_name'), array('help' => 'wpsg_shippay_name')); ?> |
<?php echo wpsg_drawForm_Textarea('wpsg_mod_paypalapi_giropay_hint', __('Hinweistext (GiroPay)', 'wpsg'), $this->get_option('wpsg_mod_paypalapi_giropay_hint'), array('help' => 'wpsg_shippay_hint')); ?> |
</div> |
<div class="wpsg_mod_paypalapi_plus_aktiv_layer wpsg_mod_paypalapi_plus_aktiv_layer_1"> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_paypalapi_plus_basket', __('Zahlungsauswahl im Warenkorb', 'wpsg'), $this->get_option('wpsg_mod_paypalapi_plus_basket'), array('help' => 'wpsg_mod_paypalapi_plus_basket')); ?> |
</div> |
85,7 → 91,9 |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_paypalapi_paypalexpress_details', __('Warenkorbdetails übertragen', 'wpsg'), $this->get_option('wpsg_mod_paypalapi_paypalexpress_details'), array('help' => 'wpsg_mod_paypalapi_paypalexpress_details')); ?> |
<br /> |
<?php echo wpsg_drawForm_Input('wpsg_mod_paypalapi_experience_label', __('Bezeichnung im PayPal Zahlungsinterface', 'wpsg'), $this->get_option('wpsg_mod_paypalapi_experience_label'), array('help' => 'wpsg_mod_paypalapi_experience_label', 'hint' => __('Max. 127 Zeichen', 'wpsg'))); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_paypalapi_experience_logo', __('URL für ein Logo im PayPal Zahlungsinterface', 'wpsg'), $this->get_option('wpsg_mod_paypalapi_experience_logo'), array('help' => 'wpsg_mod_paypalapi_experience_logo', 'hint' => __('gif|png|jpg, Max. 190x60', 'wpsg'))); ?> |
<?php echo wpsg_drawForm_Select('wpsg_mod_paypalapi_experience_locale_code', __('Sprache im PayPal Zahlungsinterface', 'wpsg'), array( |
'DE' => __('Deutsch', 'wpsg'), |
174,4 → 182,40 |
} ); |
const el_wpsg_mod_paypalapi_plus_aktiv = document.getElementById('wpsg_mod_paypalapi_plus_aktiv'); |
const el_wpsg_mod_paypalapi_giropay_aktiv = document.getElementById('wpsg_mod_paypalapi_giropay_aktiv'); |
const el_wpsg_mod_paypalapi_giropay_aktiv_layer = document.getElementById('wpsg_mod_paypalapi_giropay_aktiv_layer'); |
el_wpsg_mod_paypalapi_plus_aktiv.addEventListener('change', event => { |
if (el_wpsg_mod_paypalapi_plus_aktiv.checked) { |
el_wpsg_mod_paypalapi_giropay_aktiv.disabled = true; |
el_wpsg_mod_paypalapi_giropay_aktiv.checked = false; |
} else { |
el_wpsg_mod_paypalapi_giropay_aktiv.disabled = false; |
} |
}); |
el_wpsg_mod_paypalapi_giropay_aktiv.addEventListener('change', event => { |
if (el_wpsg_mod_paypalapi_giropay_aktiv.checked) { |
el_wpsg_mod_paypalapi_giropay_aktiv_layer.style.display = 'block'; |
} else { |
el_wpsg_mod_paypalapi_giropay_aktiv_layer.style.display = 'none'; |
} |
}); |
el_wpsg_mod_paypalapi_plus_aktiv.dispatchEvent(new Event('change')); |
el_wpsg_mod_paypalapi_giropay_aktiv.dispatchEvent(new Event('change')); |
</script> |
/mods/mod_productvars/overview_row.phtml |
---|
13,7 → 13,7 |
<?php if ($this->view['$bPicture'] == true) { ?>class="titlep"><?php } else { ?>class="title"><?php } ?> |
<?php echo __($pv['name'], 'wpsg'); ?><?php if ($pv['pflicht'] == '1') { ?><span class="wpsg_required">*</span><?php } ?> |
</div> |
<div class="valuel"> |
<div class="value"> |
<?php if ($pv['typ'] == '1') { // Auswahlfeld ?> |
<?php if ($this->view['wpsg_mod_productvars']['p']['wpsg_mod_productvars'][$pv['id']] == 'not_set') { ?> |
<?php echo __('Nicht angegeben', 'wpsg'); ?> |
32,10 → 32,6 |
<?php echo nl2br(wpsg_hspc($this->view['wpsg_mod_productvars']['p']['wpsg_mod_productvars'][$pv['id']])); ?> |
<?php } ?> |
</div> |
<div class="dummyr"> |
<?php echo __(' '); ?> |
</div> |
</div> |
<?php } ?> |
<?php } ?> |
/mods/mod_productvariants/admin_edit.phtml |
---|
37,7 → 37,7 |
<?php $colspan += 3; ?> |
<?php if (wpsg_isSizedInt($this->view['product_id'])) { $colspan += 2; ?> |
<th class="col_artnr"><?php echo __('Artikelnummer', 'wpsg'); ?></th> |
<!--<th class="col_artnr"><?php echo __('Artikelnummer', 'wpsg'); ?></th>--> |
<th class="col_price"><?php echo __('Preis', 'wpsg'); ?></th> |
<?php if ($this->hasMod('wpsg_mod_stock')) { ?> |
170,7 → 170,7 |
<td class="col_shortname"><span class="wpsg_editable" id="productvariation_shortname_<?php echo $vari['id']; ?>"><?php echo wpsg_hspc($vari['shortname']); ?></span></td> |
<?php if (wpsg_isSizedInt($this->view['product_id'])) { ?> |
<td class="col_artnr"><span class="wpsg_editable" id="productvariation_anr_<?php echo $vari['id']; ?>"><?php echo wpsg_hspc($vari['anr']); ?></span></td> |
<!--<td class="col_artnr"><span class="wpsg_editable" id="productvariation_anr_<?php echo $vari['id']; ?>"><?php echo wpsg_hspc($vari['anr']); ?></span></td>--> |
<td class="col_price"><span class="wpsg_editable" id="productvariation_price_<?php echo $vari['id']; ?>"><?php echo wpsg_hspc(wpsg_ff($vari['price'], $this->get_option('wpsg_currency'))); ?></span></td> |
<?php if ($this->hasMod('wpsg_mod_stock')) { ?> |
316,7 → 316,7 |
</div> |
<?php } ?> |
<?php if (wpsg_isSizedInt($this->view['product_id'])) { ?> |
<?php /* if (wpsg_isSizedInt($this->view['product_id'])) { ?> |
<div style="margin-top:0.25rem;"> |
<span>EAN: |
<span title="<?php echo __('EAN der Produktvariation', 'wpsg'); ?>" class="wpsg_editable" id="productvariation_ean_<?php echo $vari['id']; ?>"><?php echo $vari['ean']??''; ?></span> |
333,7 → 333,7 |
</script> |
</div> |
<?php } ?> |
<?php } */ ?> |
<script> |
/mods/mod_rechnungen/order_view_orderdata_after.phtml |
---|
183,8 → 183,14 |
let el_invoice_wpsg_rechnungen_preview = document.getElementById('invoice_wpsg_rechnungen_preview'); |
let el_invoice_wpsg_rechnungen_submit = document.getElementById('invoice_wpsg_rechnungen_submit'); |
let submit = false; |
function check_invoice_amount(event) { |
if (submit === true) return; |
submit = true; |
let ok = false; |
for (let el_checkbox of document.getElementsByClassName('wpsg_check_amount_invoice')) { |
215,6 → 221,8 |
} else { |
submit = false; |
alert('<?php echo __('Bitte mindestens ein Produkt auswählen!', 'wpsg'); ?>'); |
event.stopPropagation(); |
/mods/mod_ordercondition/overview_top.phtml |
---|
11,7 → 11,7 |
<?php foreach ($this->view['wpsg_mod_ordercondition']['data'] as $oc) { ?> |
<div class="wpsg_agb" id="wpsg_agb_<?php echo $oc['id']; ?>"> |
<label> |
<input type="checkbox" value="1" name="wpsg_mod_ordercondition[<?php echo $oc['id']; ?>]" /> |
<input type="checkbox" value="1" name="wpsg_mod_ordercondition[<?php echo $oc['id']; ?>]" required /> |
<?php if (strlen($oc['text']) < $minLength) { ?> |
<?php echo $oc['text']; ?> |
<?php } else { ?> |
/mods/mod_prepayment/order_done.phtml |
---|
7,6 → 7,7 |
//wpsg_debug($this->view['wpsg_mod_prepayment']['subject']); |
?> |
<?php echo wpsg_translate(__('Sie haben die Zahlungsart "Vorkasse" gewählt. Überweisen Sie daher den Rechnungsbetrag von #1# auf folgendes Konto:', 'wpsg'), wpsg_ff($this->view['basket']['arCalculation']['sum']['topay_brutto'], $this->get_option('wpsg_currency'))); ?> |
<br /><br /> |
<?php echo wpsg_translate(__('Kontoinhaber: #1#', 'wpsg'), $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_kinhaber'))); ?><br /> |
15,9 → 16,74 |
<?php echo wpsg_translate(__('BIC-/SWIFT-Code: #1#', 'wpsg'), $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_swift'))); ?> |
<br /><br /> |
<?php echo wpsg_translate(__('Bitte als Betreff angeben: "#1#"', 'wpsg'), $this->view['wpsg_mod_prepayment']['subject']); ?> |
<br /><br /> |
<?php if (isset($this->view['wpsg_mod_prepayment']['subject'])) { ?> |
<?php return; if ( isset($this->view['wpsg_mod_prepayment']['subject']) && ($this->get_option('wpsg_mod_prepayment_qrcode') == true) ) { ?> |
<?php require_once WPSG_PATH_LIB.'phpgirocode.class.php'; ?> |
<?php if ($this->get_option('wpsg_mod_prepayment_qrcode_country') == '0') { ?> |
<!-- Girocode und QR-Rechnung --> |
<?php |
try { |
$img = array(); |
$img = $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['wpsg_mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 10, PhpGirocode::OUTPUT_BASE64, $this->get_option('wpsg_mod_prepayment_qrcode_country'), $this->view['basket'])); |
?> |
<div class="wpsg_mod_prepayment_info_wrap"> |
<?php foreach ($img as $i) { ?> |
<div class="wpsg_mod_prepayment_info"> |
<div class="wpsg_mod_prepayment_info_left"> |
<div class="wpsg_mod_prepayment_info_left_qr-download"> |
<h4><?php echo wpsg_translate(__($i['title'], 'wpsg')); ?></h4> |
<?php if (isset($i['filepath'])) { ?><a title="Downloadlink für die QR-Rechnung" target="_blank" href="<?php echo $this->callMod('wpsg_mod_prepayment', 'getFrontendLink', [$i['order_id']]); ?>"><i class="fa fa-download" aria-hidden="true"></i></a><?php } ?> |
</div> |
<br /> |
<?php echo '<img class="wpsg_mod_prepayment_info_left_qrcodeimg" src="data:image/png;base64,'.$i['hash'].'" />'; ?> |
<br /> |
<div class="wpsg_mod_prepayment_info_left_wrap"> |
<div class="wpsg_mod_prepayment_info_left_currency"> |
<h4><?php echo wpsg_translate(__('Währung', 'wpsg')); ?></h4> |
<?php echo $this->get_option('wpsg_currency'); ?> |
</div> |
<div class="wpsg_mod_prepayment_info_left_amount"> |
<h4><?php echo wpsg_translate(__('Betrag', 'wpsg')); ?></h4> |
<?php echo sprintf("%.2f", $i['invoiceAmount']); ?> |
</div> |
</div> |
</div> |
<div class="wpsg_mod_prepayment_info_right"> |
<h4><?php echo wpsg_translate(__('Konto / Zahlbar an', 'wpsg')); ?></h4> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_iban')); ?><br /> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_kinhaber')); ?><br /> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_street')); ?><br /> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_zip')).' '.$this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_city')); ?><br /> |
<?php if (!empty($i['referenceNumber'])) { ?> |
<h4><?php echo wpsg_translate(__('Referenz', 'wpsg')); ?></h4> |
<?php echo $i['referenceNumber']; ?><br /> |
<?php } ?> |
<h4><?php echo wpsg_translate(__('Zusätzliche Informationen', 'wpsg')); ?></h4> |
<?php echo $i['additionalInformation']; ?><br /> |
<h4><?php echo wpsg_translate(__('Zahlbar durch', 'wpsg')); ?></h4> |
<?php echo $i['customerdata']['vname'].' '.$i['customerdata']['name']; ?><br /> |
<?php echo $i['customerdata']['strasse'].' '.$i['customerdata']['nr']; ?><br /> |
<?php echo $i['customerdata']['plz'].' '.$i['customerdata']['ort']; ?><br /> |
</div> |
</div> |
<?php } ?> |
</div> |
<?php } catch (\Exception $e) { wpsg_debug($e); } ?> |
<?php } else if ($this->get_option('wpsg_mod_prepayment_qrcode_country') == '1') { ?> |
<!-- Girocode (EPC) --> |
<p> |
<?php echo __('Wenn Ihre Banking-App Girocode unterstützt, können Sie diesen QRCode scannen.', 'wpsg'); ?> |
</p> |
24,12 → 90,94 |
<?php |
require_once WPSG_PATH_LIB.'phpgirocode.class.php'; |
$img = array(); |
$img = $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['wpsg_mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 10, PhpGirocode::OUTPUT_BASE64, $this->get_option('wpsg_mod_prepayment_qrcode_country'), $this->view['basket'])); |
$img = $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['wpsg_mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 8, PhpGirocode::OUTPUT_BASE64)); |
?> |
echo '<img src="data:image/png;base64,'.$img.'" />'; |
<div class="wpsg_mod_prepayment_girocode"> |
<div class="wpsg_mod_prepayment_girocode_left" > |
<h4><?php echo wpsg_translate(__($img['title'], 'wpsg')); ?></h4> |
<br /> |
<?php echo '<img class="wpsg_mod_prepayment_girocode_left_qrcodeimg" src="data:image/png;base64,'.$img['hash'].'" />'; ?> |
<br> |
<div class="wpsg_mod_prepayment_girocode_left_wrap"> |
<div class="wpsg_mod_prepayment_girocode_left_currency"> |
<h4><?php echo wpsg_translate(__('Währung', 'wpsg')); ?></h4> |
<?php echo $this->get_option('wpsg_currency'); ?> |
</div> |
<div class="wpsg_mod_prepayment_girocode_left_amount"> |
<h4><?php echo wpsg_translate(__('Betrag', 'wpsg')); ?></h4> |
<?php echo sprintf("%.2f", $img['invoiceAmount']); ?> |
</div> |
</div> |
</div> |
<div class="wpsg_mod_prepayment_girocode_right"> |
<h4><?php echo wpsg_translate(__('Konto / Zahlbar an', 'wpsg')); ?></h4> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_iban')); ?><br /> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_kinhaber')); ?><br /> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_street')); ?><br /> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_zip')).' '.$this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_city')); ?><br /> |
<?php if (!empty($img['referenceNumber'])) { ?> |
<h4><?php echo wpsg_translate(__('Referenz', 'wpsg')); ?></h4> |
<?php echo $img['referenceNumber']; ?><br /> |
<?php } ?> |
<h4><?php echo wpsg_translate(__('Zusätzliche Informationen', 'wpsg')); ?></h4> |
<?php echo $img['additionalInformation']; ?><br /> |
<h4><?php echo wpsg_translate(__('Zahlbar durch', 'wpsg')); ?></h4> |
<?php echo $img['customerdata']['vname'].' '.$img['customerdata']['name']; ?><br /> |
<?php echo $img['customerdata']['strasse'].' '.$img['customerdata']['nr']; ?><br /> |
<?php echo $img['customerdata']['plz'].' '.$img['customerdata']['ort']; ?><br /> |
</div> |
</div> |
<?php } else if ($this->get_option('wpsg_mod_prepayment_qrcode_country') == '2') { ?> |
<!-- QR-Rechnung (SWISS) --> |
<?php |
$img = array(); |
$img = $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['wpsg_mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 10, PhpGirocode::OUTPUT_BASE64, $this->get_option('wpsg_mod_prepayment_qrcode_country'), $this->view['basket'])); |
?> |
<div class="wpsg_mod_prepayment_qrrechnung"> |
<div class="wpsg_mod_prepayment_qrrechnung_left"> |
<h4><?php echo wpsg_translate(__($img['title'], 'wpsg')); ?></h4> |
<br /> |
<?php echo '<img class="wpsg_mod_prepayment_qrrechnung_left_qrcodeimg" src="data:image/png;base64,'.$img['hash'].'" />'; ?> |
<br> |
<div class="wpsg_mod_prepayment_qrrechnung_left_wrap"> |
<div class="wpsg_mod_prepayment_qrrechnung_left_currency"> |
<h4><?php echo wpsg_translate(__('Währung', 'wpsg')); ?></h4> |
<?php echo $this->get_option('wpsg_currency'); ?> |
</div> |
<div class="wpsg_mod_prepayment_qrrechnung_left_amount"> |
<h4><?php echo wpsg_translate(__('Betrag', 'wpsg')); ?></h4> |
<?php echo sprintf("%.2f", $img['invoiceAmount']); ?> |
</div> |
</div> |
</div> |
<div class="wpsg_mod_prepayment_qrrechnung_right"> |
<h4><?php echo wpsg_translate(__('Konto / Zahlbar an', 'wpsg')); ?></h4> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_iban')); ?><br /> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_mod_prepayment_kinhaber')); ?><br /> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_street')); ?><br /> |
<?php echo $this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_zip')).' '.$this->replaceUniversalPlatzhalter($this->get_option('wpsg_shopdata_city')); ?><br /> |
<?php if (!empty($img['referenceNumber'])) { ?> |
<h4><?php echo wpsg_translate(__('Referenz', 'wpsg')); ?></h4> |
<?php echo $img['referenceNumber']; ?><br /> |
<?php } ?> |
<h4><?php echo wpsg_translate(__('Zusätzliche Informationen', 'wpsg')); ?></h4> |
<?php echo $img['additionalInformation']; ?><br /> |
<h4><?php echo wpsg_translate(__('Zahlbar durch', 'wpsg')); ?></h4> |
<?php echo $img['customerdata']['vname'].' '.$img['customerdata']['name']; ?><br /> |
<?php echo $img['customerdata']['strasse'].' '.$img['customerdata']['nr']; ?><br /> |
<?php echo $img['customerdata']['plz'].' '.$img['customerdata']['ort']; ?><br /> |
</div> |
</div> |
<?php } ?> |
<?php } ?> |
/mods/mod_deliverynote/order_view_content.phtml |
---|
134,7 → 134,7 |
function wpsg_mod_deliverynote_checkProducts() |
{ |
if (jQuery('.wpsg_mod_deliverynote_product:checked').length <= 0) |
if (jQuery('.wpsg_mod_deliverynote_product_i:checked').length <= 0) |
{ |
alert('<?php echo __('Bitte mindestens ein Produkt für den Lieferschein wählen', 'wpsg'); ?>'); |
146,7 → 146,7 |
var arProductKeys = Array(); |
jQuery('.wpsg_mod_deliverynote_product:checked').each(function() { |
jQuery('.wpsg_mod_deliverynote_product_i:checked').each(function() { |
arProductKeys.push(jQuery(this).val()); |
154,6 → 154,7 |
jQuery('#wpsg_mod_deliverynote_productindexes').val(arProductKeys.join(',')); |
} |
return true; |
/mods/mod_trustedshops/settings_edit.phtml |
---|
1,7 → 1,7 |
<?php |
/** |
* Tempalte für die Einstellungen des Trusted Shops Moduls |
* Template für die Einstellungen des Trusted Shops Moduls |
*/ |
?> |
16,6 → 16,7 |
<br /> |
<div class="wpsg_mod_protectedshops"> |
<div class="wpsg_admin_box" id="wpsg_tab"> |
<ul class="nav nav-tabs" role="tablist"> |
24,7 → 25,9 |
<li role="presentation"><a href="#tab3" aria-controls="messages" role="tab" data-toggle="tab"><?php echo __('Bewertungslinks', 'wpsg'); ?></a></li> |
<li role="presentation"><a href="#tab4" aria-controls="messages" role="tab" data-toggle="tab"><?php echo __('Review Collector', 'wpsg'); ?></a></li> |
</ul> |
<div class="tab-content"> |
<div id="tab1" role="tabpanel" class="tab-pane active" > |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_trustedshops_siegelcache', __('Bewertungsbild zwischenspeichern (empfohlen)', 'wpsg'), $this->get_option('wpsg_mod_trustedshops_siegelcache'), array('help' => 'wpsg_mod_trustedshops_siegelcache')); ?> |
67,8 → 70,6 |
<br /> |
<?php if ($this->hasMod('wpsg_mod_rechnungen')) { ?> |
<br /> |
<?php echo wpsg_drawForm_Select('wpsg_mod_trustedshops_invoicemail', __('Link zur Bewertung in Rechnungsmail', 'wpsg'), array( |
'0' => __('Nicht anzeigen', 'wpsg'), |
'1' => __('Immer anzeigen', 'wpsg'), |
75,7 → 76,6 |
'2' => __('Nur anzeigen, wenn Kunde bewerten möchte', 'wpsg') |
), $this->get_option('wpsg_mod_trustedshops_invoicemail'), array('help' => 'wpsg_mod_trustedshops_invoicemail')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_trustedshops_invoicemailtitle', __('Text des Links', 'wpsg'), $this->get_option('wpsg_mod_trustedshops_invoicemailtitle'), array('help' => 'wpsg_mod_trustedshops_invoicemailtitle')); ?> |
<?php } ?> |
</div> |
82,39 → 82,31 |
<div id="tab4" role="tabpanel" class="tab-pane" > |
<?php echo wpsg_drawForm_TextStart(); ?> |
<input type="hidden" name="wpsg_mod_trustedshops_reminder" value="0"> |
<input id="wpsg_mod_trustedshops_reminder" type="checkbox" class="checkbox" <?php echo ((wpsg_isSizedInt($this->get_option('wpsg_mod_trustedshops_reminder')))?'checked="checked"':''); ?> tabindex="14" name="wpsg_mod_trustedshops_reminder" value="1"> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_trustedshops_reminder', __('Erinnerung', 'wpsg'), $this->get_option('wpsg_mod_trustedshops_reminder'), array('help' => 'wpsg_mod_trustedshops_reminder')); ?> |
<div id="wpsg_mod_trustedshops_reminder_layer" style="display:none;"> |
<?php echo wpsg_drawForm_Input('wpsg_mod_trustedshops_reminderDays', __('Zeitspanne zum versenden der Erinnerunsmail in Tagen', 'wpsg'), $this->get_option('wpsg_mod_trustedshops_reminderDays'), array('help' => 'wpsg_mod_trustedshops_reminderDays')); ?> |
</div> |
<div id="wpsg_mod_trustedshops_reminder_layer" class="wpsg_form_trustedshops_reminderDays"> |
<br /> |
<p><?php echo __('Nach', 'wpsg'); ?></p> |
<input id="wpsg_mod_trustedshops_reminderDays" type="text" class="text" tabindex="15" name="wpsg_mod_trustedshops_reminderDays" value="<?php echo $this->get_option('wpsg_mod_trustedshops_reminderDays'); ?>"> |
<p><?php echo __('Tagen', 'wpsg'); ?></p> |
<?php echo wpsg_drawForm_Link('wpsg_mod_trustedshops_link', __('Auslöser bei Statuswechsel', 'wpsg'), |
__('Bearbeiten', 'wpsg'), array('help' => 'wpsg_mod_trustedshops_link', 'class' => 'wpsg_mod_trustedshops_state')); ?> |
</div> |
<div class="wpsg_mod_trustedshops_reminderstate_layer" style="display:none;"> |
<?php echo wpsg_drawForm_TextEnd(__('Erinnerung', 'wpsg'), array('noP' => true)); ?> |
<?php echo wpsg_drawForm_TextStart(); ?> |
<?php foreach ($this->arStatus as $state_id => $state_label) { ?> |
<?php |
$arr1 = $this->get_option('wpsg_mod_trustedshops_state'); |
$chk = ((in_array($state_id, (array)$this->get_option('wpsg_mod_trustedshops_state')))?1:0); |
echo wpsg_drawForm_Checkbox('wpsg_mod_trustedshops_state[]', __($state_label, 'wpsg'), |
$chk, array('help1' => 'wpsg_shippay_mwstland', |
'value' => wpsg_hspc($state_id), |
'noHidden' => true, |
'fullWidth' => true |
)); |
$chk, array('help1' => 'wpsg_shippay_mwstland', 'value' => wpsg_hspc($state_id), 'labelright' => true)); |
?> |
<br /> |
<?php } ?> |
<?php echo wpsg_drawForm_TextEnd(__('Bestellzustände', 'wpsg'), array('noP' => true)); ?> |
<br /> |
</div> |
<?php echo wpsg_drawForm_Input('', __('Letzter Export', 'wpsg'), $this->view['lastExport'], array('text' => true)); ?> |
<br /> |
139,6 → 131,7 |
</div> |
</div> |
</div> |
<script type="text/javascript">/* <![CDATA[ */ |
145,23 → 138,6 |
jQuery(document).ready(function() { |
jQuery('#wpsg_mod_trustedshops_reminder').bind('change', function() { |
if (jQuery('#wpsg_mod_trustedshops_reminder').is(':checked')) |
{ |
jQuery('#wpsg_mod_trustedshops_reminder_layer').show(250); |
} |
else |
{ |
jQuery('#wpsg_mod_trustedshops_reminder_layer').hide(250); |
} |
} ).change(); |
jQuery('#wpsg_tab').wpsg_tab( { |
'cookiename': 'wpsg_trustedshop_tab', |
'tab2': function() { |
186,6 → 162,40 |
} ).change(); |
jQuery('.wpsg_mod_trustedshops_state').bind('click', function() { |
jQuery('.wpsg_mod_trustedshops_reminderstate_layer').toggle(); |
if (jQuery('.wpsg_mod_trustedshops_reminderstate_layer').is(':visible')) jQuery(this).html('<?php echo __('Ausblenden', 'wpsg'); ?>'); |
else jQuery(this).html('<?php echo __('Bearbeiten', 'wpsg'); ?>'); |
return false; |
} ); |
} ); |
document.addEventListener("DOMContentLoaded", function() { |
var reminderCheckbox = document.getElementById('wpsg_mod_trustedshops_reminder'); |
var reminderDiv = document.getElementById('wpsg_mod_trustedshops_reminder_layer'); |
function toggleDivVisibility(checkbox, div) |
{ |
if (checkbox.checked) div.style.display = "block"; |
else div.style.display = "none"; |
} |
// Event Listener für die Checkboxen |
reminderCheckbox.addEventListener("change", function() { |
toggleDivVisibility(reminderCheckbox, reminderDiv); |
}); |
// Überprüfen und Initialisieren des Anfangszustands der Checkboxen |
toggleDivVisibility(reminderCheckbox, reminderDiv); |
}); |
/* ]]> */</script> |
/mods/mod_paypalapi/gfx/giropay.svg |
---|
0,0 → 1,0 |
<svg width="75px" height="32px" viewBox="0 0 75 32" version="1.1" xmlns="http://www.w3.org/2000/svg"><title>logo giropay</title><desc>Created with Sketch.</desc><defs><polygon id="path-1" points="0 0.017902439 46.0918699 0.017902439 46.0918699 19.8373984 0 19.8373984"></polygon><polygon id="path-3" points="0 19.9821138 46.0918699 19.9821138 46.0918699 0.162601626 0 0.162601626"></polygon></defs><g id="SPB_&_AltPay_NewAssets" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="matrix(1.614571, 0, 0, 1.614571, -161.457123, -256.816772)"><g id="logo-giropay" transform="translate(100.000000, 159.000000)"><g id="Group-3" transform="translate(0.000000, 0.144715)"><mask id="mask-2" fill="#FFFFFF"><polygon points="0 0.017902439 46.0918699 0.017902439 46.0918699 19.8373984 0 19.8373984" transform="matrix(1, 0, 0, 1, 0, 0)"></polygon></mask><g id="Clip-2"></g><path d="M0,3.5735122 C0,1.60977236 1.5998374,0.017902439 3.57349593,0.017902439 L42.5182114,0.017902439 C44.4918699,0.017902439 46.0918699,1.60977236 46.0918699,3.5735122 L46.0918699,16.2818049 C46.0918699,18.2455447 44.4918699,19.8374146 42.5182114,19.8374146 L3.57349593,19.8374146 C1.5998374,19.8374146 0,18.2455447 0,16.2818049 L0,3.5735122 Z" id="Fill-1" fill="#003a7d" mask="url(#mask-2)"></path></g><path d="M1.46738211,3.84021138 L1.46738211,16.3065528 C1.46738211,17.5338699 2.46738211,18.5288293 3.70087805,18.5288293 L24.1036423,18.5288293 L24.1036423,1.61793496 L3.70087805,1.61793496 C2.46738211,1.61793496 1.46738211,2.61289431 1.46738211,3.84021138" id="Fill-4" fill="#ffffff"></path><path d="M5.67102439,10.0205528 C5.67102439,9.34152846 6.00582114,8.77730081 6.64663415,8.77730081 C7.42126829,8.77730081 7.74630894,9.39892683 7.74630894,9.95356098 C7.74630894,10.7187642 7.25866667,11.235187 6.64663415,11.235187 C6.13004878,11.235187 5.67102439,10.795187 5.67102439,10.0205528 Z M9.41053659,7.57226016 L7.8515122,7.57226016 L7.8515122,8.47112195 L7.8324878,8.47112195 C7.46907317,7.85908943 6.87606504,7.45746341 6.13964228,7.45746341 C4.59021138,7.45746341 3.8921626,8.56689431 3.8921626,10.0491707 C3.8921626,11.5221789 4.74321951,12.5550244 6.11102439,12.5550244 C6.79964228,12.5550244 7.37346341,12.2872195 7.78468293,11.7038049 L7.80370732,11.7038049 L7.80370732,11.9716098 C7.80370732,12.9472195 7.26826016,13.4158374 6.27362602,13.4158374 C5.55622764,13.4158374 5.11622764,13.2628293 4.59021138,13.0046179 L4.50419512,14.3626667 C4.90582114,14.5060813 5.58500813,14.6782764 6.40744715,14.6782764 C8.41590244,14.6782764 9.41053659,14.0182764 9.41053659,11.9716098 L9.41053659,7.57226016 Z" id="Fill-6" fill="#ED1C24"></path><mask id="mask-4" fill="#FFFFFF"><polygon points="0 19.9821138 46.0918699 19.9821138 46.0918699 0.162601626 0 0.162601626" transform="matrix(1, 0, 0, 1, 0, 0)"></polygon></mask><g id="Clip-9"></g><path d="M10.5985366,6.75918699 L12.32,6.75918699 L12.32,5.49674797 L10.5985366,5.49674797 L10.5985366,6.75918699 Z M10.598374,12.5549593 L12.3198374,12.5549593 L12.3198374,7.57219512 L10.598374,7.57219512 L10.598374,12.5549593 Z" id="Fill-8" fill="#ED1C24" mask="url(#mask-4)"></path><path d="M17.1133333,7.51479675 C16.9411382,7.48617886 16.7307317,7.45739837 16.5299187,7.45739837 C15.7839024,7.45739837 15.3534959,7.85918699 15.0570732,8.4904065 L15.0380488,8.4904065 L15.0380488,7.57219512 L13.4694309,7.57219512 L13.4694309,12.5549593 L15.1910569,12.5549593 L15.1910569,10.4508943 C15.1910569,9.47544715 15.6404878,8.89203252 16.4439024,8.89203252 C16.6447154,8.89203252 16.835935,8.89203252 17.0273171,8.94943089 L17.1133333,7.51479675 Z" id="Fill-10" fill="#ED1C24" mask="url(#mask-4)"></path><path d="M20.0773496,11.4647154 C19.2835285,11.4647154 18.9583252,10.804878 18.9583252,10.0682927 C18.9583252,9.32243902 19.2835285,8.66243902 20.0773496,8.66243902 C20.8711707,8.66243902 21.196374,9.32243902 21.196374,10.0682927 C21.196374,10.804878 20.8711707,11.4647154 20.0773496,11.4647154 M20.0773496,12.6697561 C21.7223902,12.6697561 22.9752358,11.7133333 22.9752358,10.0682927 C22.9752358,8.41382114 21.7223902,7.45739837 20.0773496,7.45739837 C18.4323089,7.45739837 17.1794634,8.41382114 17.1794634,10.0682927 C17.1794634,11.7133333 18.4323089,12.6697561 20.0773496,12.6697561" id="Fill-11" fill="#ED1C24" mask="url(#mask-4)"></path><path d="M29.3757073,10.0110244 C29.3757073,10.8048455 28.9836748,11.3500488 28.3332683,11.3500488 C27.7594472,11.3500488 27.2812358,10.8048455 27.2812358,10.0780163 C27.2812358,9.332 27.7020488,8.77720325 28.3332683,8.77720325 C29.0026992,8.77720325 29.3757073,9.35102439 29.3757073,10.0110244 Z M25.5597724,14.5633821 L27.2812358,14.5633821 L27.2812358,11.856878 L27.3002602,11.856878 C27.6254634,12.4498862 28.2758699,12.6697236 28.8783089,12.6697236 C30.360748,12.6697236 31.1545691,11.4456585 31.1545691,9.97265041 C31.1545691,8.76777236 30.399122,7.45736585 29.0218862,7.45736585 C28.2376585,7.45736585 27.5106667,7.77297561 27.166439,8.47118699 L27.147252,8.47118699 L27.147252,7.5721626 L25.5597724,7.5721626 L25.5597724,14.5633821 Z" id="Fill-12" fill="#ffffff" mask="url(#mask-4)"></path><path d="M33.505252,10.9769919 C33.505252,10.4987805 33.9642764,10.3169919 34.5476911,10.3169919 C34.8059024,10.3169919 35.0546829,10.3361789 35.2745203,10.3457724 C35.2745203,10.929187 34.8633008,11.5221951 34.2128943,11.5221951 C33.8112683,11.5221951 33.505252,11.3212195 33.505252,10.9769919 Z M36.9769593,12.5550407 C36.900374,12.1628455 36.8813496,11.770813 36.8813496,11.3786179 L36.8813496,9.52317073 C36.8813496,8.00252033 35.7815122,7.45747967 34.5094797,7.45747967 C33.7730569,7.45747967 33.1322439,7.56268293 32.5202114,7.81130081 L32.5488293,8.97813008 C33.0270407,8.7103252 33.5816748,8.60512195 34.1364715,8.60512195 C34.7580976,8.60512195 35.2650894,8.78674797 35.2745203,9.46577236 C35.0546829,9.42756098 34.7485041,9.39894309 34.4711057,9.39894309 C33.5530569,9.39894309 31.8984228,9.58056911 31.8984228,11.1013821 C31.8984228,12.1820325 32.7784228,12.6698374 33.7634634,12.6698374 C34.4711057,12.6698374 34.9493171,12.392439 35.3415122,11.770813 L35.3606992,11.770813 C35.3606992,12.0290244 35.3893171,12.2872358 35.3989106,12.5550407 L36.9769593,12.5550407 Z" id="Fill-13" fill="#ffffff" mask="url(#mask-4)"></path><path d="M37.750748,14.5634634 C38.1045691,14.6398862 38.4583902,14.6782602 38.8218049,14.6782602 C40.3998537,14.6782602 40.7728618,13.463626 41.2606667,12.2107805 L43.0873333,7.5722439 L41.3658699,7.5722439 L40.3426179,10.8239512 L40.3234309,10.8239512 L39.2522114,7.5722439 L37.3967642,7.5722439 L39.414813,12.6698049 C39.2904228,13.1098049 38.9653821,13.3584228 38.5445691,13.3584228 C38.3053821,13.3584228 38.0949756,13.3296423 37.8655447,13.2532195 L37.750748,14.5634634 Z" id="Fill-14" fill="#ffffff" mask="url(#mask-4)"></path></g></g></svg> |
/mods/mod_paypalapi/overview_button.phtml |
---|
0,0 → 1,89 |
<?php |
declare(strict_types=1); |
/** |
* @author: daniel |
* @date: 13.06.24 |
* @time: 14:48 |
*/ |
namespace wpsg; |
?> |
<?php GiroPayPalAPI::getInstance()->integrateSDK(); ?> |
<div style="width:300px; float:right;"> |
<div id="giropay-btn"></div> |
</div> |
<script> |
paypal.Buttons({ |
fundingSource: paypal.FUNDING.GIROPAY, |
style: { |
label: "pay", |
}, |
createOrder() { |
const form = document.getElementById('wpsg_form'); |
if (form.checkValidity()) { |
return fetch("<?php echo $this->getUrl(\wpsg_ShopController::URL_BASKET, 'wpsg_mod_paypalapi', 'giroPayCreateOrderFromSession', [ ], true); ?>", { |
method: "POST", |
headers: { |
"Content-Type": "application/json", |
}, |
body: { } |
}) |
.then((response) => response.json()) |
.then((order) => order.id); |
} else form.reportValidity(); |
}, |
onApprove(data) { |
return fetch("<?php echo $this->getUrl(\wpsg_ShopController::URL_BASKET, 'wpsg_mod_paypalapi', 'giroPayApproveOrder', [], true); ?>", { |
method: "POST", |
headers: { |
"Content-Type": "application/json", |
}, |
body: JSON.stringify({ |
orderID: data.orderID |
}) |
}) |
.then((response) => response.json()) |
.then((orderData) => { |
location.href = orderData.order_done_url; |
// Successful capture! For dev/demo purposes: |
// console.log('Capture result', orderData, JSON.stringify(orderData, null, 2)); |
// const transaction = orderData.order_paypal.purchase_units[0].payments.captures[0]; |
//console.log('Transaction Status:', transaction.status); |
//console.log('Transaction ID:', transaction.id); |
}); |
}, |
onCancel(data, actions) { |
console.log(`Order Canceled - ID: ${data.orderID}`); |
location.href = '<?php echo $this->getUrl(\wpsg_ShopController::URL_BASKET, 'wpsg_mod_paypalapi', 'giroPayCancelOrder', [], true); ?>'; |
}, |
onError(err) { |
<?php if ($GLOBALS['wpsg_sc']->get_option('wpsg_debugModus') === "1") { ?>console.error(err);<?php } ?> |
} |
}).render("#giropay-btn"); |
</script> |
/mods/mod_productvars/basket_row.phtml |
---|
11,7 → 11,7 |
<div class="title"> |
<?php echo __($pv['name'], 'wpsg'); ?><?php if ($pv['pflicht'] == '1') { ?><span class="wpsg_required">*</span><?php } ?> |
</div> |
<div class="valuel"> |
<div class="value"> |
<?php if ($pv['typ'] == '1') { // Auswahlfeld ?> |
<select class="<?php echo ((in_array("wpsg_mod_productvars_".$pv['id']."_".$this->view['wpsg_mod_productvars']['p']['product_index'], (array)$this->view['error']))?'wpsg_error':''); ?>" name="wpsg_mod_productvars[<?php echo $pv['id']; ?>][<?php echo $this->view['wpsg_mod_productvars']['p']['product_index']; ?>]"> |
<option value="not_set"><?php echo __('Bitte wählen', 'wpsg'); ?></option> |
31,6 → 31,5 |
class="<?php echo ((in_array("wpsg_mod_productvars_".$pv['id']."_".$this->view['wpsg_mod_productvars']['p']['product_index'], (array)$this->view['error']))?'wpsg_error':''); ?>"><?php echo @wpsg_hspc($this->view['wpsg_mod_productvars']['p']['wpsg_mod_productvars'][$pv['id']]); ?></textarea> |
<?php } ?> |
</div> |
</div> |
<?php } ?> |
/mods/mod_printshop/producttemplate.phtml |
---|
66,7 → 66,7 |
<?php /* URL für die Lightbox */ ?> |
<?php $att = wp_get_attachment_image_src($arAttachmentIDsAll[$i], array(800, 600), false); ?> |
<a <?php if ($arAttachmentIDsAll[$i] != $arAttachmentID) echo 'style="display:none;"'; ?> rel="gallery-wpsg-<?php echo $this->getTemplateIndex(); ?>" title="<?php echo $this->getProductName($this->view['data']['id']); ?>" href="<?php echo $att[0]; ?>" class="thickbox"> |
<a <?php if ($arAttachmentIDsAll[$i] != $arAttachmentID) echo 'style="display:none;"'; ?> data-fslightbox="<?php echo $this->getTemplateIndex(); ?>" title="<?php echo $this->getProductName($this->view['data']['id']); ?>" href="<?php echo $att[0]; ?>"> |
<?php echo wp_get_attachment_image($arAttachmentIDsAll[$i], array(300, 300), false, array()); ?> |
83,13 → 83,23 |
<?php if ($this->get_option('wpsg_showArticelnumber') == '1') { ?> |
<div class="wpsg_artikelnummer"> |
<?php echo __('Artikelnummer', 'wpsg'); ?>: <span class="wpsg_anr"><?php echo wpsg_hspc($this->view['data']['anr']); ?></span><br /> |
<?php if (wpsg_isSizedInt($this->get_option('wpsg_mod_produktartikel_ean'))) {?> |
<?php echo __('EAN','wpsg');?>:<span class="wpsg_ean"><?php echo wpsg_hspc($this->view['data']['ean']); ?></span><br /> |
</div> |
<?php } ?> |
<?php if (wpsg_isSizedInt($this->get_option('wpsg_mod_produktartikel_gtin'))) {?> |
<?php echo __('GTIN','wpsg');?>:<span class="wpsg_gtin"><?php echo wpsg_hspc($this->view['data']['gtin']); ?></span><br /> |
<?php }?></div> |
<?php $arProductCodes = $oProduct->getAllProductCodes(); ?> |
<?php if (sizeof($arProductCodes) > 0) { ?> |
<div class="product_code_wrap"> |
<?php foreach ($arProductCodes as $product_code) { ?> |
<?php if ($product_code !== null) { ?> |
<div class="product_code <?php echo $product_code['code_key']; ?>"> |
<span class="label"><?php echo $product_code['label']; ?></span>: <span class="code"><?php echo $product_code['code']; ?></span> |
</div> |
<?php } ?> |
<?php } ?> |
</div> |
<?php } ?> |
<?php /* Abfrage Preisanzeige nur für eingeloggte User aktiv und User eingeloggt START*/ ?> |
<?php if ($this->view['oProduct']->canDisplayPrice()) { ?> |
/mods/mod_prepayment/mail_html.phtml |
---|
30,4 → 30,54 |
<td><?php echo __('Betreff', 'wpsg'); ?>:</td> |
<td style="text-align:right;"><?php echo wpsg_translate(__('#1#', 'wpsg'), $this->view['mod_prepayment']['subject']); ?></td> |
</tr> |
<?php |
if (isset($this->view['mod_prepayment']['subject']) && ($this->get_option('wpsg_mod_prepayment_qrcode') == true)) { |
require_once WPSG_PATH_LIB.'phpgirocode.class.php'; |
echo '<tr><td>'.__('Zahlen via QR Code', 'wpsg').':</td></tr>'; |
if ($this->get_option('wpsg_mod_prepayment_qrcode_country') == '0') { |
$qrcodes = array(); |
$qrcodes = $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['wpsg_mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 3, PhpGirocode::OUTPUT_BASE64, $this->get_option('wpsg_mod_prepayment_qrcode_country'), $this->view['basket'])); |
foreach ($qrcodes as $qr) { |
if ($qr['title'] == 'QR-Rechnung') echo '<tr style="margin-top:25px;" >'; |
else echo '<tr>'; |
echo '<td>'.__($qr['title'], 'wpsg').'</td>'; |
echo '<td style="float:right;"><img style="max-width:120px;" width="120" height="120" src="data:image/png;base64,'.$qr['hash'].'" alt="qrcode" /></td>'; |
echo '</tr>'; |
} |
} else if ($this->get_option('wpsg_mod_prepayment_qrcode_country') == '1') { |
$qrcode = $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 3, PhpGirocode::OUTPUT_BASE64, $this->get_option('wpsg_mod_prepayment_qrcode_country'), $this->view['basket'])); |
echo ' |
<tr> |
<td>'.__($qrcode['title'], 'wpsg').':</td> |
<td style="float:right;" alt="qrcode">'.$qrcode['hash'].'</td> |
</tr> |
'; |
} else if ($this->get_option('wpsg_mod_prepayment_qrcode_country') == '2') { |
$qrcode = $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 3, PhpGirocode::OUTPUT_BASE64, $this->get_option('wpsg_mod_prepayment_qrcode_country'), $this->view['basket'])); |
echo ' |
<tr> |
<td>'.__($qrcode['title'], 'wpsg').':</td> |
<td style="float:right;" alt="qrcode">'.$qrcode['hash'].'</td> |
</tr> |
'; |
} |
} |
?> |
</table> |
/mods/mod_legaltexts/form_haendlerbund.phtml |
---|
8,17 → 8,45 |
<style type="text/css"> |
.wphb_clear { clear:both; } |
.wphb_form_field { width:770px; margin-bottom:5px; } |
.wphb_form_field .wphb_form_left { line-height:24px; font-weight:bold; width:350px; float:left; } |
.wphb_form_field .wphb_form_right { width:420px; float:left; position:relative; line-height:28px; } |
.wphb_form_field .wphb_form_right select, .wphb_form_field .wphb_form_right input { width:95%; } |
.wphb_form_field .wphb_form_right input.checkbox { width:auto !important; float:left; margin-left:2px; margin-top:5px; } |
.wphb_form_field .wphb_form_right p { padding:4px 0px 4px 6px; margin:0px; } |
.wphb_form { padding:10px; } |
.wphb_date { float:right; padding-right:5%; } |
.wphb_hinweis { font-style:italic; } |
.wphb_form_field { |
width: 100%; |
display: flex; |
flex-direction: row; |
justify-content: flex-start; |
align-items: center; |
} |
.wphb_form_field input { |
width: 100%; |
} |
.wphb_form_left { |
width: 50% !important; |
flex-grow: 0; |
flex-shrink: 0; |
} |
.wphb_form_right { |
width: 50% !important; |
flex-grow: 0; |
flex-shrink: 0; |
} |
.wphb_table { |
width: 100%; |
border-spacing: 0px; |
border-collapse: collapse; |
} |
.wphb_table input { |
min-height: unset !important; |
} |
.wphb_table select { |
width: 100%; |
} |
.col0 { |
width: 50%; |
} |
.col1 { |
width: 50%; |
} |
</style> |
<?php if ($this->view['wpsg_mod_legaltexts']['form'] == false) { ?> |
/mods/mod_rechnungen/copymail.phtml |
---|
1,14 → 1,14 |
<?php |
/* |
* Template für die Rechnungskopie |
**/ |
*/ |
/** @var wpsg_order $oOrder */ |
$oOrder = wpsg_order::getInstance($this->view['order']['id']); |
$arPflicht = $this->loadPflichtFeldDaten(); |
$arTitle = explode('|', $arPflicht['anrede_auswahl']); |
?><?php echo wpsg_translate(__('Hallo #1# #2# #3#,', 'wpsg'), $oOrder->getInvoiceTitle(), $oOrder->getInvoiceFirstName(), $oOrder->getInvoiceName()); ?> |
?><?php echo wpsg_translate(__('Hallo #1# #2# #3#,', 'wpsg'), @$arTitle[$this->view['basket']['checkout']['title']], $this->view['basket']['checkout']['vname'], $this->view['basket']['checkout']['name']); ?> |
<?php if (isset($this->view['rnr'])) { ?> |
<?php echo __("hiermit erhalten Sie die Kopie der Rechnung", "wpsg"); ?> <?php echo $this->view['rnr']; ?>. |
<?php } else { ?> |
/mods/mod_rechnungen/invoice_pdf.phtml |
---|
34,9 → 34,6 |
$arCalculation = $this->view['basket']['arCalculation']; |
if ($this->getFrontendTaxView() === WPSG_NETTO) $taxdisplay = 'netto'; |
else $taxdisplay = 'brutto'; |
// Damit die Steuer bei der Kleinunternehmerregelung nicht angezeigt wird leer ich den Array sicherheitshalber |
if ( ($this->get_option('wpsg_kleinunternehmer') == '1') || ($this->view['oCalculationOrder']->getTaxMode() === \wpsg\wpsg_calculation::TAXMODE_SMALLBUSINESS) ) unset($this->view['basket']['mwst']); |
199,16 → 196,20 |
if ($bNoTax) { |
$discount_value = $this->view['basket']['arCalculation']['sum']['discount_netto']; |
$discount_value = abs($this->view['basket']['arCalculation']['sum']['discount_netto']); |
$shipping_cost = $this->view['basket']['arCalculation']['sum']['shipping_netto']; |
$payment_cost = $this->view['basket']['arCalculation']['sum']['payment_netto']; |
$taxdisplay = 'netto'; |
} else { |
$discount_value = $this->view['basket']['arCalculation']['sum']['discount_brutto']; |
$discount_value = abs($this->view['basket']['arCalculation']['sum']['discount_brutto']); |
$shipping_cost = $this->view['basket']['arCalculation']['sum']['shipping_brutto']; |
$payment_cost = $this->view['basket']['arCalculation']['sum']['payment_brutto']; |
$taxdisplay = 'brutto'; |
} |
$summe = 0; |
216,7 → 217,9 |
$bKopf = false; $pnr = 1; $offset = 0; $count = 0; |
foreach ($this->view['basket']['arCalculation']['product'] as $p) |
{ |
$product = wpsg_product::getInstance($p['product_id']); |
if (($p['product_key']??'') !== '') $product->setProductKey($p['product_key']); |
if (!$bKopf) |
{ |
256,8 → 259,8 |
if ($this->get_option('wpsg_mod_rechnungen_anr') == '1') $pdf->Cell(10, 8, $product->getNr(), 0, 0, 'C'); |
else $pdf->Cell(10, 8, $pnr.".", 0, 0, 'C'); |
if ($this->get_option('wpsg_rechnungen_pdetailname') == '1') $produkt_text = $this->getProductName($this->getProduktID($p['product_id']), true); |
else $produkt_text = $this->getProductName($this->getProduktID($p['product_id']), false); |
if ($this->get_option('wpsg_rechnungen_pdetailname') == '1') $produkt_text = $product->getProductName(true); |
else $produkt_text = $product->getProductName(false); |
$produktBeschreibung = trim(strip_tags($product->getShortDescription())); |
451,7 → 454,8 |
} // produkte |
if (wpsg_isSizedArray($this->view['basket']['arCalculation']['voucher'])) { |
if (wpsg_isSizedArray($this->view['basket']['arCalculation']['voucher'])) |
{ |
foreach ($this->view['basket']['arCalculation']['voucher'] as $v) { |
504,12 → 508,21 |
if ($bTaxCol) |
{ |
if ($this->arShipping[$this->view['data']['type_shipping']]['mwst_null'] == '1' && $bNoTax) $mwst = wpsg_ff(0.00, '%'); |
else { |
// if ($this->arShipping[$this->view['data']['type_shipping']]['mwst_null'] == '1' && $bNoTax) |
// { |
if ($bNoTax) |
{ |
if ($this->view['basket']['arCalculation']['shipping'][0]['tax_key'] === '0') $mwst = _('anteilig'); |
else { |
$mwst = wpsg_ff(0.00, '%'); |
} else { |
if ($this->view['basket']['arCalculation']['shipping'][0]['tax_key'] === '0') { |
$mwst = _('anteilig'); |
} else { |
$mwst = wpsg_ff($this->view['basket']['arCalculation']['shipping'][0]['tax'], '%'); |
$mwst = wpsg_ff($this->view['basket']['arCalculation']['tax'][$this->view['basket']['arCalculation']['shipping'][0]['tax_key']]['tax_value'], '%'); |
549,7 → 562,9 |
if ($bTaxCol) |
{ |
if ($this->arPayment[$this->view['data']['type_payment']]['mwst_null'] == '1' && $bNoTax) |
// if ($this->arPayment[$this->view['data']['type_payment']]['mwst_null'] == '1' && $bNoTax) |
// { |
if ($bNoTax) |
{ |
$mwst = wpsg_ff(0.00, '%'); |
636,8 → 651,21 |
$pdf->Cell(37, 8, $this->view['kunde']['ustidnr'], 0, 0, 'R'); |
} |
$offset += 10; // Abstand zwischen Tabelle und Auswertung |
$offset += 5; // Abstand zwischen Tabelle und Rabatt |
// Rabatt |
if ($discount_value > 0) |
{ |
$offset += 5; |
$pdf->Text($prod_left + 80, $prod_top + $offset, __("Rabatt", "wpsg")); |
$pdf->setXY($prod_left + 140, $prod_top + $offset - 5); |
$pdf->Cell(37, 8, '-'.wpsg_ff($discount_value, $this->get_option('wpsg_currency')), 0, 0, 'R'); |
} |
$offset += 5; // Abstand zwischen Rabatt und Auswertung |
if ( ($this->get_option('wpsg_kleinunternehmer') == '1') || ($this->view['oCalculationOrder']->getTaxMode() === \wpsg\wpsg_calculation::TAXMODE_SMALLBUSINESS) ) |
{ |
644,7 → 672,7 |
$pdf->Text($prod_left, $prod_top + $offset, __("Es ergibt sich folgender Gesamtbetrag", "wpsg").':'); |
$pdf->Text($prod_left + 80, $prod_top + $offset, __("Summe", "wpsg")); |
$pdf->setXY($prod_left + 140, $prod_top + $offset - 5); |
$pdf->Cell(37, 8, wpsg_ff($this->view['basket']['arCalculation']['sum']['brutto'] + $this->view['basket']['arCalculation']['sum']['discount_brutto'], $this->get_option('wpsg_currency')), 0, 0, 'R'); |
$pdf->Cell(37, 8, wpsg_ff($this->view['basket']['arCalculation']['sum']['brutto'], $this->get_option('wpsg_currency')), 0, 0, 'R'); |
if ( !$bNoTax || ($arCalculation['sum']['topay_brutto'] != $arCalculation['sum']['brutto']) ) $offset += 5; |
} else { |
655,8 → 683,7 |
$pdf->Text($prod_left, $prod_top + $offset, __("Es ergibt sich folgender Gesamtbetrag", "wpsg").':'); |
$pdf->Text($prod_left + 80, $prod_top + $offset, __("Summe", "wpsg")); |
$pdf->setXY($prod_left + 140, $prod_top + $offset - 5); |
$pdf->Cell(37, 8, wpsg_ff($this->view['basket']['arCalculation']['sum']['brutto'] + $this->view['basket']['arCalculation']['sum']['discount_brutto'], $this->get_option('wpsg_currency')), 0, 0, 'R'); |
//if ( !$bNoTax || ($arCalculation['sum']['topay_brutto'] != $arCalculation['sum']['brutto']) ) |
$pdf->Cell(37, 8, wpsg_ff($this->view['basket']['arCalculation']['sum']['brutto'], $this->get_option('wpsg_currency')), 0, 0, 'R'); |
$offset += 5; |
if ( !(($this->view['oOrder']->isInnerEu() || $deliverycountrytax) && ($this->view['oCalculationOrder']->getTaxMode() === \wpsg\wpsg_calculation::TAXMODE_B2B)) ) { |
701,7 → 728,7 |
$pdf->Text($prod_left + 80, $prod_top + $offset, __("NETTOBETRAG", "wpsg")); |
$pdf->setXY($prod_left + 140, $prod_top + $offset - 5); |
$pdf->Cell(37, 8, wpsg_ff($this->view['basket']['arCalculation']['sum']['netto'] + $this->view['basket']['arCalculation']['sum']['discount_netto'], $this->get_option('wpsg_currency')), 0, 0, 'R'); |
$pdf->Cell(37, 8, wpsg_ff($this->view['basket']['arCalculation']['sum']['topay_netto'], $this->get_option('wpsg_currency')), 0, 0, 'R'); |
if (sizeof($this->view['basket']['arCalculation']['tax']) >= 1) |
{ |
739,17 → 766,6 |
} |
// Rabatt |
if ($discount_value > 0) |
{ |
$offset += 5; |
$pdf->Text($prod_left + 80, $prod_top + $offset, __("Rabatt", "wpsg")); |
$pdf->setXY($prod_left + 140, $prod_top + $offset - 5); |
$pdf->Cell(37, 8, '-'.wpsg_ff($discount_value, $this->get_option('wpsg_currency')), 0, 0, 'R'); |
} |
// Wertgutschein |
if ( $arCalculation['sum']['topay_brutto'] != $arCalculation['sum']['brutto'] ) { |
924,7 → 940,7 |
} else { |
$pdf->Output($oInvoice->getFilePath(), 'F'); |
if (($this->view['rebuild']??false) === false) $pdf->Output($oInvoice->getFilePath(), 'F'); |
// Hier wird der Dateiname an FPD übergeben. Er soll sich aus der Rechnungsnummer ergeben, auch wenn das Dokument über die ID gespeichert ist. |
if ($this->view['output'] === true) $pdf->Output($this->view['filename_out'], 'I'); |
/mods/mod_rechnungen/order_view.phtml |
---|
30,17 → 30,25 |
<div> |
<?php echo $oInvoice->getNr(true); ?> |
</div> |
<div style="text-align:right;"> |
<div style="text-align:right; white-space:nowrap;"> |
<?php /* |
<a target="_blank" href="<?php |
echo wp_nonce_url(WPSG_URL_WP.'wp-admin/admin.php?page=wpsg-Order&mod=wpsg_mod_rechnungen&noheader=1&action=ajax&edit_id='.$_REQUEST['edit_id'].'&r_id='.$r['id'].'&do=rebuildadmin', 'wpsg-mod_invoice-order_ajax-rebuildadmin-'.$_REQUEST['edit_id']); |
?>" style="color:red;"><?php echo __('Neu erstellen', 'wpsg'); ?></a> |
*/ ?> |
<a target="_blank" onclick="if (!confirm('<?php echo __('Sind Sie sicher, dass Sie eine Kopie dieser Rechnung/Rechnungskorrektur erneut an den Kunden senden möchten?', 'wpsg'); ?>')) return false;" href="<?php |
if ($r['o_id'] == '0') { |
// Multirechnung |
$r_o_ids = array_map('intval', explode(',', $r['o_ids'])); |
echo wp_nonce_url(WPSG_URL_WP.'wp-admin/admin.php?page=wpsg-Order&mod=wpsg_mod_rechnungen&noheader=1&action=ajax&edit_id='.$r_o_ids[0].'&r_id='.$r['id'].'&do=copy', 'wpsg-mod_invoice-order_ajax-copy-'.$r_o_ids[0]); |
echo wp_nonce_url(WPSG_URL_WP.'wp-admin/admin.php?page=wpsg-Order&mod=wpsg_mod_rechnungen&noheader=1&action=ajax&edit_id='.$_REQUEST['edit_id'].'&r_id='.$r['id'].'&do=copy', 'wpsg-mod_invoice-order_ajax-copy-'.$_REQUEST['edit_id']); |
} else { |
// normale Rechnung |
echo wp_nonce_url(WPSG_URL_WP.'wp-admin/admin.php?page=wpsg-Order&mod=wpsg_mod_rechnungen&noheader=1&action=ajax&edit_id='.$this->view['data']['id'].'&r_id='.$r['id'].'&do=copy', 'wpsg-mod_invoice-order_ajax-copy-'.$this->view['data']['id']); |
echo wp_nonce_url(WPSG_URL_WP.'wp-admin/admin.php?page=wpsg-Order&mod=wpsg_mod_rechnungen&noheader=1&action=ajax&edit_id='.$_REQUEST['edit_id'].'&r_id='.$r['id'].'&do=copy', 'wpsg-mod_invoice-order_ajax-copy-'.$_REQUEST['edit_id']); |
} |
?>"><?php echo ' '.__("Kopie senden", "wpsg"); ?></a> |
59,6 → 67,6 |
<style> |
#wpsg_mod_rechnungen_order_view .grid { display:grid; width:100%; grid-template-columns:150px 1fr 100px; row-gap:0.25rem; } |
#wpsg_mod_rechnungen_order_view .grid { display:grid; width:100%; grid-template-columns:150px 1fr 250px; row-gap:0.25rem; column-gap:1rem; } |
</style> |
/mods/mod_rechnungen/accounting_pdf.phtml |
---|
34,9 → 34,6 |
$arCalculation = $this->view['basket']['arCalculation']; |
if ($this->getFrontendTaxView() === WPSG_NETTO) $taxdisplay = 'netto'; |
else $taxdisplay = 'brutto'; |
// Damit die Steuer bei der Kleinunternehmerregelung nicht angezeigt wird leer ich den Array sicherheitshalber |
if ( ($this->get_option('wpsg_kleinunternehmer') == '1') || ($this->view['oCalculationOrder']->getTaxMode() === \wpsg\wpsg_calculation::TAXMODE_SMALLBUSINESS) ) unset($this->view['basket']['mwst']); |
175,7 → 172,6 |
if ($this->get_option('wpsg_showMwstAlways') === '1') $bTaxCol = true; |
else if (!$bNoTax) $bTaxCol = true; |
if ($bNoTax) { |
$discount_value = $this->view['basket']['arCalculation']['sum']['discount_netto']; |
182,6 → 178,8 |
$shipping_cost = $this->view['basket']['arCalculation']['sum']['shipping_netto']; |
$payment_cost = $this->view['basket']['arCalculation']['sum']['payment_netto']; |
$taxdisplay = 'netto'; |
} else { |
$discount_value = $this->view['basket']['arCalculation']['sum']['discount_brutto']; |
188,6 → 186,8 |
$shipping_cost = $this->view['basket']['arCalculation']['sum']['shipping_brutto']; |
$payment_cost = $this->view['basket']['arCalculation']['sum']['payment_brutto']; |
$taxdisplay = 'brutto'; |
} |
$summe = 0; |
483,12 → 483,21 |
if ($bTaxCol) |
{ |
if ($this->arShipping[$this->view['data']['type_shipping']]['mwst_null'] == '1' && $bNoTax) $mwst = wpsg_ff(0.00, '%'); |
else { |
// if ($this->arShipping[$this->view['data']['type_shipping']]['mwst_null'] == '1' && $bNoTax) $mwst = wpsg_ff(0.00, '%'); |
// { |
if ($bNoTax) |
{ |
if ($this->view['basket']['arCalculation']['shipping'][0]['tax_key'] === '0') $mwst = _('anteilig'); |
else { |
$mwst = wpsg_ff(0.00, '%'); |
} else { |
if ($this->view['basket']['arCalculation']['shipping'][0]['tax_key'] === '0') { |
$mwst = _('anteilig'); |
} else { |
$mwst = wpsg_ff($this->view['basket']['arCalculation']['shipping'][0]['tax'], '%'); |
$mwst = wpsg_ff($this->view['basket']['arCalculation']['tax'][$this->view['basket']['arCalculation']['shipping'][0]['tax_key']]['tax_value'], '%'); |
528,7 → 537,9 |
if ($bTaxCol) |
{ |
if ($this->arPayment[$this->view['data']['type_payment']]['mwst_null'] == '1' && $bNoTax) |
// if ($this->arPayment[$this->view['data']['type_payment']]['mwst_null'] == '1' && $bNoTax) |
// { |
if ($bNoTax) |
{ |
$mwst = wpsg_ff(0.00, '%'); |
615,8 → 626,21 |
$pdf->Cell(37, 8, $this->view['kunde']['ustidnr'], 0, 0, 'R'); |
} |
$offset += 10; // Abstand zwischen Tabelle und Auswertung |
$offset += 5; // Abstand zwischen Tabelle und Rabatt |
// Rabatt |
if ($discount_value > 0) |
{ |
$offset += 5; |
$pdf->Text($prod_left + 80, $prod_top + $offset, __("Rabatt", "wpsg")); |
$pdf->setXY($prod_left + 140, $prod_top + $offset - 5); |
$pdf->Cell(37, 8, '-'.wpsg_ff($discount_value, $this->get_option('wpsg_currency')), 0, 0, 'R'); |
} |
$offset += 5; // Abstand zwischen Rabatt und Auswertung |
if ( ($this->get_option('wpsg_kleinunternehmer') == '1') || ($this->view['oCalculationOrder']->getTaxMode() === \wpsg\wpsg_calculation::TAXMODE_SMALLBUSINESS) ) |
{ |
623,9 → 647,10 |
$pdf->Text($prod_left, $prod_top + $offset, __("Es ergibt sich folgender Gesamtbetrag", "wpsg").':'); |
$pdf->Text($prod_left + 80, $prod_top + $offset, __("Summe", "wpsg")); |
$pdf->setXY($prod_left + 140, $prod_top + $offset - 5); |
$pdf->Cell(37, 8, wpsg_ff($this->view['basket']['arCalculation']['sum']['brutto'] + $this->view['basket']['arCalculation']['sum']['discount_brutto'], $this->get_option('wpsg_currency')), 0, 0, 'R'); |
if ( !$bNoTax || ($arCalculation['sum']['topay_brutto'] != $arCalculation['sum']['brutto']) ) $offset += 5; |
$pdf->Cell(37, 8, wpsg_ff($this->view['basket']['arCalculation']['sum']['brutto'], $this->get_option('wpsg_currency')), 0, 0, 'R'); |
$offset += 5; |
} else { |
if ($bNoTax) |
680,7 → 705,7 |
$pdf->Text($prod_left + 80, $prod_top + $offset, __("NETTOBETRAG", "wpsg")); |
$pdf->setXY($prod_left + 140, $prod_top + $offset - 5); |
$pdf->Cell(37, 8, wpsg_ff($this->view['basket']['arCalculation']['sum']['netto'] + $this->view['basket']['arCalculation']['sum']['discount_netto'], $this->get_option('wpsg_currency')), 0, 0, 'R'); |
$pdf->Cell(37, 8, wpsg_ff($this->view['basket']['arCalculation']['sum']['topay_netto'], $this->get_option('wpsg_currency')), 0, 0, 'R'); |
if (sizeof($this->view['basket']['arCalculation']['tax']) >= 1) |
{ |
718,17 → 743,6 |
} |
// Rabatt |
if ($discount_value > 0) |
{ |
$offset += 5; |
$pdf->Text($prod_left + 80, $prod_top + $offset, __("Rabatt", "wpsg")); |
$pdf->setXY($prod_left + 140, $prod_top + $offset - 5); |
$pdf->Cell(37, 8, '-'.wpsg_ff($discount_value, $this->get_option('wpsg_currency')), 0, 0, 'R'); |
} |
// Wertgutschein |
if ( $arCalculation['sum']['topay_brutto'] != $arCalculation['sum']['brutto'] ) { |
/mods/mod_rechnungen/multi_invoice_pdf.phtml |
---|
286,7 → 286,7 |
if ($this->get_option('wpsg_mod_rechnungen_anr') == '1') { |
$pdf->Cell(10, 8, $oOrderProduct->getProduct()->getProductNr(), 0, 0, 'C'); |
$pdf->Cell(10, 8, $oOrderProduct->getProduct()->getNr(), 0, 0, 'C'); |
} else { |
/mods/mod_relatedproducts/list.phtml |
---|
9,16 → 9,39 |
<?php if (sizeof($this->view['wpsg_mod_relatedproducts']['data']) <= 0) { ?> |
<p><?php echo __('Noch keine Produkte zugeordnet', 'wpsg'); ?></p> |
<?php } else { ?> |
<div id="wpsg_mod_relatedproduct_list"> |
<?php foreach ($this->view['wpsg_mod_relatedproducts']['data'] as $p) { ?> |
<div class="order_item"> |
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-bar-expand" viewBox="0 0 16 16"> |
<path fill-rule="evenodd" d="M3.646 10.146a.5.5 0 0 1 .708 0L8 13.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708m0-4.292a.5.5 0 0 0 .708 0L8 2.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8"/> |
</svg> |
<span id="wpsg_rp_<?php echo $p['id']; ?>"> |
<?php echo wpsg_drawForm_Select('wpsg_mod_relatedproduct['.$p['id'].']', '<a href="'.wp_nonce_url(WPSG_URL_WP.'wp-admin/admin.php?page=wpsg-Produkt&action=edit&edit_id='.$p['product_id'], 'wpsg-product-edit-'.$p['product_id']).'">'.$p['name'].'</p>', $this->view['wpsg_mod_relatedproducts']['arTemplates'], $p['template'], array('icon' => 'wpsg_icon_remove glyphicon glyphicon-trash')); ?> |
<?php echo wpsg_drawForm_Select('wpsg_mod_relatedproduct['.$p['id'].']', '<a href="'.wp_nonce_url(WPSG_URL_WP.'wp-admin/admin.php?page=wpsg-Produkt&action=edit&edit_id='.$p['product_id'], 'wpsg-product-edit-'.$p['product_id']).'">'.$p['name'].'</a>', $this->view['wpsg_mod_relatedproducts']['arTemplates'], $p['template'], array('icon' => 'wpsg_icon_remove glyphicon glyphicon-trash')); ?> |
</span> |
<div class="wpsg_clear"></div> |
</div> |
<?php } ?> |
</div> |
<?php } ?> |
<script type="text/javascript"> |
<style> |
#wpsg_mod_relatedproduct_list { display:flex; flex-direction:column; gap:5px; |
& > .order_item { display:block; position:relative; cursor:pointer !important; |
& > svg { display:none; width:16px; height:16px; left:0; top:50%; transform:translateY(-50%); position:absolute; cursor:pointer !important; } |
&:hover > svg { display:block; } |
.form-group { margin-top:0; margin-bottom:0; |
& > * { cursor:pointer; |
a { display:inline; } |
} |
& > label { display:flex; justify-content:flex-end; } |
} |
} |
} |
</style> |
<script> |
jQuery('#relatedproducts_list a.wpsg_icon_remove').on('click', function() { |
var rel_id = jQuery(this).parents('span').attr('id').replace(/wpsg_rp_/, ''); |
40,4 → 63,12 |
} ); |
jQuery(document).ready(function() { |
jQuery("#wpsg_mod_relatedproduct_list").sortable({ |
}).disableSelection(); |
}); |
</script> |
/mods/mod_ticket/basket_row.phtml |
---|
0,0 → 1,21 |
<?php |
/** |
* Template für die Integration der Produktvariablen innerhalb des Warenkorbs |
*/ |
namespace wpsgTicket; |
/** @var Ticket $oTicket */ |
$oTicket = $this->view['oTicket']; |
?> |
<div class="product_info"> |
<div class="title"> |
<?php echo __('Datum', 'wpsg'); ?> |
</div> |
<div class="value"> |
<?php echo $oTicket->getLabel(); ?> |
</div> |
</div> |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/mods/mod_ticket/order_view.phtml |
---|
0,0 → 1,125 |
<?php |
declare(strict_types=1); |
/** |
* @author: Daniel Schmitzer (daniel@maennchen1.de) |
* @date: 03.12.23 |
* @time: 15:14 |
*/ |
namespace wpsgTicket; |
/** @var \wpsg_order $oOrder */ |
$oOrder = \wpsg_order::getInstance(intval($this->view['data']['id'])); |
$data = []; |
foreach ($oOrder->getOrderProducts() as $oOrderProduct) { |
if (intval($oOrderProduct->getMeta('ticket_id', false, 0)) > 0) { |
for ($amount_index = 0; $amount_index < $oOrderProduct->getAmount(); $amount_index++) { |
$oTicketBooking = TicketBooking::getInstanceByBookingKey(TicketBooking::encodeBookingKey($oOrderProduct->getId(), $amount_index)); |
$data[] = $oTicketBooking->toJSON(); |
} |
} |
} |
?> |
<?php echo wpsg_drawForm_AdminboxStart(__('Ticketbuchungen', 'wpsg')); ?> |
<div id="order_view_app"> |
<table> |
<thead> |
<tr> |
<th class="col_ticket"><?php echo __('Ticket', 'wpsg'); ?></th> |
<th class="col_product"><?php echo __('Ticket Produkt', 'wpsg'); ?></th> |
<th class="col_date"><?php echo __('Datum / Zeitraum', 'wpsg'); ?></th> |
<th class="col_state"><?php echo __('Status', 'wpsg'); ?></th> |
</tr> |
</thead> |
<tbody v-for="(row, i) in data"> |
<tr> |
<td class="col_ticket"> |
<a :href="row.urls.pdf" target="_blank">{{row.label}}</a> |
</td> |
<td class="col_product"> |
<a :href="row.urls.product_edit">{{row.ticket_product_label}}</a> |
</td> |
<td class="col_date">{{row.ticket_data.label}}</td> |
<td class="col_state"> |
<span :class="{'text-red': row.state_code === <?php echo TicketBooking::STATUS_UNAVAILABLE; ?>, 'text-green': row.state_code === <?php echo TicketBooking::STATUS_AVAILABLE; ?>}">{{row.state_label}}</span> |
<span v-if="row.is_send" :title="row.is_send_tooltip" class="ml-4 glyphicon glyphicon-send text-green"></span> |
</td> |
</tr> |
<template v-if="row.arProductVars.length > 0"> |
<template v-for="(pv_data, pv_id) of row.arProductVars"> |
<tr> |
<td colspan="2"> |
{{pv_data['name']}}: |
</td> |
<td colspan="2"> |
{{pv_data['value']}} |
</td> |
</tr> |
</template> |
</template> |
</tbody> |
</table> |
<br /> |
<div class="flex items-center gap-2"> |
<a href="<?php echo \add_query_arg([ |
'action' => 'wpsg_ticket', |
'ticket_action' => 'export', |
'order_id' => $oOrder->getId() |
], \admin_url('admin-ajax.php')); ?>" target="_blank" class="button"><?php echo __('Terminübersicht exportieren', 'wpsg'); ?></a> |
<a href="<?php echo \add_query_arg([ |
'action' => 'wpsg_ticket', |
'ticket_action' => 'resend', |
'order_id' => $oOrder->getId() |
], \admin_url('admin-ajax.php')); ?>" class="button"><?php echo __('Tickets per E-Mail an Kunden versenden', 'wpsg'); ?></a> |
</div> |
</div> |
<style> |
#order_view_app table { width:100%; } |
#order_view_app table tr td { padding:0.25rem 0.5rem 0.25rem 0; border-bottom:1px solid #DEDEDE; } |
#order_view_app table tr th { border-bottom:1px solid black; } |
#order_view_app .text-red { color:red; } |
#order_view_app .text-green { color:green; } |
#order_view_app .flex { display:flex; } |
#order_view_app .items-center { align-items:center; } |
#order_view_app .ml-4 { margin-left:1rem; } |
#order_view_app .gap-2 { gap:0.5rem; } |
</style> |
<?php echo wpsg_drawForm_AdminboxEnd(); ?> |
<script type="module"> |
const wpsgSettings = { |
baseUrl: '<?php echo WPSG_URL; ?>' |
}; |
import { order_view } from '<?php echo WPSG_URL; ?>mods/mod_ticket/assets/js/wpsg_order_view.js'; |
order_view(wpsgSettings, <?php echo json_encode([ |
'order_id' => $oOrder->getId(), |
'data' => $data, |
'ajax_url' => \admin_url('admin-ajax.php') |
]); ?>); |
</script> |
/mods/mod_ticket/order_view_row.phtml |
---|
0,0 → 1,41 |
<?php |
/** |
* Anzeige des Variantennamens in der Bestellverwaltung |
*/ |
namespace wpsgTicket; |
$i = $this->view['i']; |
$p = $this->view['p']; |
/** @var Ticket $oTicket */ |
$oTicket = $this->view['oTicket']; |
/** @var \wpsg_order_product $oOrderProduct */ |
$oOrderProduct = $this->view['oOrderProduct']; |
?> |
<tr class="wpsg_<?php echo (($i % 2 == 0)?'odd':'even'); ?>"> |
<td class="wpsg_cell_name"> |
<?php echo __('Datum', 'wpsg'); ?>: |
</td> |
<td class="wpsg_cell_ticket text-right" colspan="<?php echo ((sizeof($this->view['arCalculation']['tax']) > 1 || $this->get_option('wpsg_showMwstAlways') == '1')?4:3); ?>"> |
<?php echo $oTicket->getLabel(); ?> |
</td> |
</tr> |
<tr class="wpsg_<?php echo (($i % 2 == 0)?'odd':'even'); ?>"> |
<td class="wpsg_cell_name"> |
<?php if ($p['amount'] > 1) { ?> |
<?php echo __('Tickets', 'wpsg'); ?>: |
<?php } else { ?> |
<?php echo __('Ticket', 'wpsg'); ?>: |
<?php } ?> |
</td> |
<td class="wpsg_cell_ticket text-right" colspan="<?php echo ((sizeof($this->view['arCalculation']['tax']) > 1 || $this->get_option('wpsg_showMwstAlways') == '1')?4:3); ?>"> |
<?php for ($i = 0; $i < $p['amount']; $i ++) { ?> |
<a target="_blank" href="<?php echo $oTicket->getTicketPublicURL($oOrderProduct->getId(), $i); ?>">Ticket #<?php echo $i + 1; ?></a> |
<?php } ?> |
</td> |
</tr> |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/mods/mod_ticket/product_addedit_content.phtml |
---|
0,0 → 1,526 |
<?php |
declare(strict_types=1); |
/** |
* @author: Daniel Schmitzer (daniel@maennchen1.de) |
* @date: 14.10.23 |
* @time: 07:56 |
*/ |
namespace wpsgTicket; |
$oProduct = \wpsg_product::getInstance($this->view['data']['id']); |
\wpsg_drawForm_AdminboxStart(__('Ticketprodukt', 'wpsg')); |
$arTicketTemplate = []; |
foreach (TicketTemplate::find([], null, true) as $oTicketTemplate) $arTicketTemplate[$oTicketTemplate->getId()] = $oTicketTemplate->getLabel(); |
?> |
<script type="module"> |
import { product_addedit_content } from '<?php echo WPSG_URL; ?>mods/mod_ticket/assets/js/wpsg_ticket.js'; |
const wpsgSettings = { |
baseUrl: '<?php echo WPSG_URL; ?>' |
}; |
product_addedit_content(wpsgSettings, <?php echo $oProduct->getId(); ?>, '<?php echo \admin_url('admin-ajax.php'); ?>'); |
</script> |
<?php echo wpsg_drawForm_Checkbox('meta[ticket_product]', __('Produkt ist ein Ticket Produkt', 'wpsg'), $oProduct->getMeta('ticket_product', false, '0')); ?> |
<hr /> |
<div id="wpsg_ticket_product" style="display:none;"> |
<?php echo wpsg_drawForm_Select('meta[ticket_template]', __('Ticket Template', 'wpsg'), $arTicketTemplate, $oProduct->getMeta('ticket_template', false, '0')); ?> |
<template v-if="mounted"> |
<br /> |
<div class="flex justify-between"> |
<div class="flex gap-2 items-center"> |
<a href="#" @click.prevent="addSerialevent" class="button"><?php echo __('Neuen Serientermin definieren', 'wpsg'); ?></a> |
<a href="#" @click.prevent="addEvent" class="button"><?php echo __('Neuen Einzeltermin anlegen', 'wpsg'); ?></a> |
<a href="<?php echo \add_query_arg([ |
'action' => 'wpsg_ticket', |
'ticket_action' => 'export', |
'ticket_product_id' => $oProduct->getId() |
], \admin_url('admin-ajax.php')); ?>" target="_blank" class="button"><?php echo __('Terminübersicht exportieren', 'wpsg'); ?></a> |
</div> |
<a href="/wp-admin/admin.php?page=wpsg-Admin&action=module&modul=wpsg_mod_ticket"><?php echo __('Zur Modulkonfiguration', 'wpsg'); ?></a> |
</div> |
<br /> |
<div class="nav nav-tabs"> |
<li :class="{'active': tab === 2}"><a @click.prevent="tab = 2" href="#"><?php echo __('Serientermine', 'wpsg'); ?></a></li> |
<li :class="{'active': tab === 1}"><a @click.prevent="tab = 1" href="#"><?php echo __('Termine', 'wpsg'); ?></a></li> |
<li :class="{'active': tab === 3}"><a @click.prevent="tab = 3" href="#"><?php echo __('Belegungsansicht', 'wpsg'); ?></a></li> |
</div> |
<div class="tab-content"> |
<div v-if="tab === 1" class="ticket_list"> |
<div class="head"> |
<div class="tablenav"> |
<div class="flex justify-between items-center grow pr-4"> |
<label> |
<input type="checkbox" v-model="data.filter.hideInactive" @change="reload" /><span><?php echo __('Nur buchbare Termine anzeigen', 'wpsg'); ?></span> |
</label> |
<select style="width:200px;" v-if="data_serial.items.length > 0" v-model.number="data.filter.autoticket_id" @change="load()"> |
<option :value="0"><?php echo __('Alle', 'wpsg'); ?></option> |
<template v-for="(st, i) of data_serial.items"> |
<option :value="st.id">{{st.label}}</option> |
</template> |
</select> |
</div> |
<span class="tablenav-pages" v-if="data.pager.count > 0"> |
<span class="displaying-num">{{data.pager.count}} Tickets</span> |
<span class="pagination-links"> |
<a href="#" @click.prevent="goPage(1)" class="tablenav-pages-navspan button" :class="{'disabled': data.pager.page <= 1}">«</a> |
<a href="#" @click.prevent="goPage(data.pager.page - 1)" class="tablenav-pages-navspan button" :class="{'disabled': data.pager.page <= 1}">‹</a> |
<span class="paging-input"> |
<span class="tablenav-paging-text"> |
<span class="total-pages">{{data.pager.page}}</span> |
von |
<span class="total-pages">{{data.pager.pages}}</span> |
</span> |
</span> |
<a href="#" @click.prevent="goPage(data.pager.page + 1)" class="next-page button" :class="{'disabled': data.pager.page >= data.pager.pages}">›</a> |
<a href="#" @click.prevent="goPage(data.pager.pages)" class="last-page button" :class="{'disabled': data.pager.page >= data.pager.pages}">»</a> |
</span> |
</span> |
</div> |
</div> |
<div class="content" v-if="data.items.length > 0"> |
<table> |
<thead> |
<tr> |
<th class="col_date"><?php echo __('Datum', 'wpsg'); ?></th> |
<th class="col_order"><?php echo __('Bestellungen', 'wpsg'); ?></th> |
<th class="col_slots"><?php echo __('Slots', 'wpsg'); ?></th> |
<th class="col_state"><?php echo __('Status', 'wpsg'); ?></th> |
</tr> |
</thead> |
<tbody v-for="(t, i) of data.items"> |
<tr> |
<td class="col_date">{{t.label}}</td> |
<td class="col_order"></td> |
<td class="col_slots"> |
{{t.slots_used}} / {{t.slots}} |
</td> |
<td class="col_state"> |
<div class="inner"> |
<span v-if="t.state === 1" class="active"><?php echo __('aktiv', 'wpsg'); ?></span> |
<span v-else-if="t.state === 2" class="inactive"><?php echo __('inaktiv', 'wpsg'); ?></span> |
<span> / </span> |
<span v-if="t.booking_state === 1" class="text-green"><?php echo __('buchbar', 'wpsg'); ?></span> |
<span v-else-if="t.booking_state === 2" class="text-red"> |
<span v-if="t.slots_used >= t.slots_available"> |
<?php echo __('ausgebucht', 'wpsg'); ?> |
</span> |
<span v-else> |
<?php echo __('ausgelaufen', 'wpsg'); ?> |
</span> |
</span> |
</div> |
</td> |
</tr> |
<tr> |
<td class="col_action"> |
<div class="inner"> |
<a href="#" @click.prevent="changeTerminState(t)"> |
<span v-if="t.state === 1"><?php echo __('deaktivieren', 'wpsg'); ?></span> |
<span v-else-if="t.state === 2"><?php echo __('aktivieren', 'wpsg'); ?></span> |
</a> |
<span> | </span> |
<a href="#" @click.prevent="deleteTicket(t)"><?php echo __('löschen', 'wpsg'); ?></a> |
</div> |
</td> |
<td class="col_order" colspan="2"> |
<template v-if="t.order.length > 10"> |
{{t.order.length}} Bestellungen |
</template> |
<span v-else class="flex flex-wrap gap-4"> |
<span v-for="(o, i2) of t.order"><a :href="o.order_link">{{o.order_nr}}</a> ({{o.amount}})</span> |
</span> |
</td> |
<td> |
<template v-if="t.autoticket_id > 0"> |
<a title="<?php echo __('Termine dieses Serientermins anzeigen', 'wpsg'); ?>" href="#" @click.prevent="display_autoTermin(t.autoticket_id)"><?php echo __('Serientermin'); ?> #{{t.autoticket_id}}</a> |
</template> |
</td> |
</tr> |
</tbody> |
</table> |
</div> |
</div> |
<div v-if="tab === 2" class="ticket_serial ticket_list"> |
<div class="head"> |
<div class="tablenav"> |
<div></div> |
<span class="tablenav-pages" v-if="data_serial.pager.count > 0"> |
<span class="displaying-num">{{data_serial.pager.count}} Serientermine</span> |
<span class="pagination-links"> |
<a href="#" @click.prevent="goSerialPage(1)" class="tablenav-pages-navspan button" :class="{'disabled': data_serial.pager.page <= 1}">«</a> |
<a href="#" @click.prevent="goSerialPage(data_serial.pager.page - 1)" class="tablenav-pages-navspan button" :class="{'disabled': data_serial.pager.page <= 1}">‹</a> |
<span class="paging-input"> |
<span class="tablenav-paging-text"> |
<span class="total-pages">{{data_serial.pager.page}}</span> |
von |
<span class="total-pages">{{data_serial.pager.pages}}</span> |
</span> |
</span> |
<a href="#" @click.prevent="goSerialPage(data_serial.pager.page + 1)" class="next-page button" :class="{'disabled': data_serial.pager.page >= data_serial.pager.pages}">›</a> |
<a href="#" @click.prevent="goSerialPage(data_serial.pager.pages)" class="last-page button" :class="{'disabled': data_serial.pager.page >= data_serial.pager.pages}">»</a> |
</span> |
</span> |
</div> |
</div> |
<div class="content" v-if="data_serial.items.length > 0"> |
<table> |
<thead> |
<tr> |
<th class="col_date"><?php echo __('Datum', 'wpsg'); ?></th> |
<th class="col_tickets"><?php echo __('Termine', 'wpsg'); ?></th> |
<th class="col_state"><?php echo __('Status', 'wpsg'); ?></th> |
</tr> |
</thead> |
<tbody v-for="(t, i) of data_serial.items"> |
<tr> |
<td class="col_date"> |
<a href="#" title="<?php echo __('Termine dieses Serientermins anzeigen', 'wpsg'); ?>" @click.prevent="display_autoTermin(t.id)">{{t.label}}</a> |
</td> |
<td class="col_tickets">{{t.count_tickets}}</td> |
<td class="col_state"> |
<div class="inner"> |
<span v-if="t.state === 1" class="active"><?php echo __('aktiv', 'wpsg'); ?></span> |
<span v-else-if="t.state === 2" class="inactive"><?php echo __('inaktiv', 'wpsg'); ?></span> |
</div> |
</td> |
</tr> |
<tr> |
<td class="col_action"> |
<div class="inner"> |
<a href="#" @click.prevent="editTicket(t)"> |
<?php echo __('bearbeiten', 'wpsg'); ?> |
</a> |
<span> | </span> |
<a href="#" @click.prevent="changeTerminState(t)"> |
<span v-if="t.state === 1"><?php echo __('deaktivieren', 'wpsg'); ?></span> |
<span v-else-if="t.state === 2"><?php echo __('aktivieren', 'wpsg'); ?></span> |
</a> |
<span> | </span> |
<a href="#" @click.prevent="deleteTicket(t)"><?php echo __('löschen', 'wpsg'); ?></a> |
</div> |
</td> |
<td class="col_order" colspan="2"> |
<template v-if="t.order.length > 10"> |
{{t.order.length}} Bestellungen |
</template> |
<span v-else class="flex flex-wrap gap-4"> |
<span v-for="(o, i2) of t.order"><a :href="o.order_link">{{o.order_nr}}</a> ({{o.amount}})</span> |
</span> |
</td> |
</tr> |
</tbody> |
</table> |
</div> |
</div> |
<div v-if="tab === 3" class="ticket_cal relative"> |
<div class="flex"> |
<div id="calendar" ref="ref_calendar"></div> |
<div v-if="arOccupancy && day_selected" class="occupancy_view"> |
<template v-for="(t, i) of arOccupancy[day_selected].arTicket"> |
<h3> |
<span><?php echo __('Ticket', 'wpsg'); ?> #{{t.id}} {{t.label}}</span> |
<span>{{t.slots}} <?php echo __('Slots', 'wpsg'); ?></span> |
</h3> |
<ul> |
<template v-for="(o, j) of t.order"> |
<li> |
<a :href="o.order_link"><?php echo __('Bestellung', 'wpsg'); ?> {{o.order_nr}} / {{o.order_invoice_name}}</a> |
<span>{{o.amount}} <?php echo __('Slots', 'wpsg'); ?></span> |
</li> |
</template> |
</ul> |
</template> |
</div> |
</div> |
<div v-if="cal_loading" class="loading_layer"> |
<img src="<?php echo WPSG_URL; ?>views/gfx/ajax-loader.gif" alt="<?php echo __('Bitte warten ...', 'wpsg'); ?>" /> |
</div> |
</div> |
</div> |
<div class="dialog" v-if="dialog_add"> |
<form class="inner" @submit.stop.prevent="dialog_submit"> |
<div class="head"> |
<span><?php echo __('Neue Termine', 'wpsg'); ?></span> |
<a href="#" @click.prevent="closeDialog">X</a> |
</div> |
<div class="content"> |
<div class="form_col"> |
<div class="form_field"> |
<label> |
<?php echo __('Start', 'wpsg'); ?> |
</label> |
<div class="flex gap-2 items-center"> |
<input type="date" v-model="dialog_add.from_date" required="required" /> |
<input type="time" v-model="dialog_add.from_time" /> |
</div> |
</div> |
<div class="form_field"> |
<label> |
<?php echo __('Ende', 'wpsg'); ?> |
</label> |
<div class="flex gap-2 items-center"> |
<input type="date" v-model="dialog_add.to_date" /> |
<input type="time" v-model="dialog_add.to_time" /> |
</div> |
</div> |
<div class="form_field"> |
<label> |
<?php echo __('Anzahl Slots', 'wpsg'); ?> |
</label> |
<div class="flex gap-2 items-center"> |
<input type="number" min="1" max="100" v-model="dialog_add.slots" /> |
</div> |
</div> |
<p style="max-width:500px; padding-top:1rem;"> |
<?php echo __('Ein Termin kann so oft gebucht/bestellt werden wie freie Slots verfügbar sind und er in der Zukunft liegt. Ein Termin kann über mehrere Tage gehen, dann wird der gesammte Zeitraum gebucht. Wird eine Startzeit angegeben, muss auch eine Endzeit angegeben werden', 'wpsg'); ?> |
</p> |
</div> |
</div> |
<div class="foot"> |
<input type="submit" class="button button-primary" value="<?php echo __('Termin anlegen', 'wpsg'); ?>" /> |
</div> |
</form> |
</div> |
<div class="dialog" v-if="serial"> |
<form class="inner" @submit.stop.prevent="submitSerial"> |
<div class="head"> |
<span v-if="serial.id > 0"><?php echo __('Serientermin bearbeiten', 'wpsg'); ?></span> |
<span v-else><?php echo __('Neuen Serientermin definieren', 'wpsg'); ?></span> |
<a href="#" @click.prevent="closeSerialDialog">X</a> |
</div> |
<div class="content"> |
<div class="form_col"> |
<div class="form_field"> |
<label><?php echo __('Bezeichnung (optional)', 'wpsg'); ?></label> |
<div> |
<input type="text" v-model="serial.label" style="width:275px;" /> |
</div> |
</div> |
<div class="form_field"> |
<label><?php echo __('Kurztext (Kalender)', 'wpsg'); ?></label> |
<div> |
<input type="text" v-model="serial.label_short" style="width:275px;" /> |
</div> |
</div> |
<div class="form_field"> |
<label> |
<?php echo __('Zeitraum', 'wpsg'); ?> |
</label> |
<div class="flex gap-2 items-center justify-between grow"> |
<input type="date" v-model="serial.from_date" required style="width:125px;" /> |
<span>-</span> |
<input type="date" v-model="serial.to_date" required style="width:125px;" /> |
</div> |
</div> |
<div class="form_field"> |
<label> |
<?php echo __('Uhrzeit (optional)', 'wpsg'); ?> |
</label> |
<div class="flex gap-2 items-center justify-between grow"> |
<input type="time" v-model="serial.event_data.from_time" style="width:125px;" /> |
<span>-</span> |
<input type="time" v-model="serial.event_data.to_time" style="width:125px;" /> |
</div> |
</div> |
<div class="form_field"> |
<label> |
<?php echo __('Slots', 'wpsg'); ?> |
</label> |
<div class="flex gap-2 items-center"> |
<input type="number" v-model.number="serial.event_data.slots" style="width:275px;" /> |
</div> |
</div> |
<div class="form_field"> |
<label> |
<?php echo __('Tage im voraus planen', 'wpsg'); ?> |
</label> |
<div class="flex gap-2 items-center"> |
<select v-model.number="serial.days_future" class="w-full" style="width:275px;"> |
<option value="30">30</option> |
<option value="60">60</option> |
<option value="90">90</option> |
</select> |
</div> |
</div> |
<div class="form_field"> |
<label> |
<?php echo __('Wochentage', 'wpsg'); ?> |
</label> |
<div class="weekday_wrap"> |
<label v-for="i in 7"> |
<div> |
<template v-if="i === 1">Mo</template> |
<template v-if="i === 2">Die</template> |
<template v-if="i === 3">Mi</template> |
<template v-if="i === 4">Do</template> |
<template v-if="i === 5">Fr</template> |
<template v-if="i === 6">Sa</template> |
<template v-if="i === 7">So</template> |
</div> |
<div> |
<input type="checkbox" @change="setWeekDay($event, i - 1)" :checked="serial.days.includes(i - 1)" /> |
</div> |
</label> |
</div> |
</div> |
<div v-if="serial.id > 0"> |
<br /> |
<?php echo __('Eine Bearbeitung des Serientermins wirkt sich nur auf', 'wpsg'); ?><br /> |
<?php echo __('zukünftige Termine dieses Serientermins aus.', 'wpsg'); ?> |
</div> |
</div> |
</div> |
<div class="foot"> |
<input v-if="serial.id > 0" type="submit" class="button button-primary" value="<?php echo __('Serientermin speichen', 'wpsg'); ?>" /> |
<input v-else type="submit" class="button button-primary" value="<?php echo __('Serientermin + Termine anlegen', 'wpsg'); ?>" /> |
</div> |
</form> |
</div> |
<div v-if="loading" class="loading_layer"> |
<img src="<?php echo WPSG_URL; ?>views/gfx/ajax-loader.gif" alt="<?php echo __('Bitte warten ...', 'wpsg'); ?>" /> |
</div> |
</template> |
</div> |
<style> |
#wpsg_ticket_product .occupancy_view { padding-left:2rem; flex-grow:1; |
h3 { padding:0; display:flex; justify-content:space-between; align-items:flex-start; margin:1.5rem 0 1rem 0; |
* { font-size:14px; font-weight:bold; line-height:1.5rem; } |
} |
ul { padding-left:1.5rem; font-size:14px; |
li { list-style:disc; display:flex; align-items:flex-start; justify-content:space-between; position:relative; |
&:before { content:'-'; position:absolute; margin-left:-1rem; } |
} |
} |
pre { white-space:break-spaces; } |
} |
#wpsg_ticket_product .flex { display:flex; } |
#wpsg_ticket_product .items-center { align-items:center; } |
#wpsg_ticket_product .justify-between { justify-content:space-between; } |
#wpsg_ticket_product .grow { flex-grow:1; } |
#wpsg_ticket_product .pr-4 { padding-right:1rem; } |
#wpsg_ticket_product label { margin-bottom:0; } |
#wpsg_ticket_product .dialog { position:fixed; left:0; top:0; height:100dvh; width:100dvw; background-color:rgba(0, 0, 0, 0.75); z-index:99999; display:flex; justify-content:center; align-items:center; } |
#wpsg_ticket_product .dialog > .inner { background-color:white; border:1px solid black; min-width:500px; min-height:275px; display:flex; flex-direction:column; } |
#wpsg_ticket_product .dialog > .inner > .head { padding:1rem 2rem; border-bottom:1px solid black; font-weight:bold; font-size:1em; display:flex; align-items:center; justify-content:space-between; } |
#wpsg_ticket_product .dialog > .inner > .head a { color:black; font-weight:bold; font-size:1.5em; } |
#wpsg_ticket_product .dialog > .inner > .head a:hover { text-decoration:none !important; } |
#wpsg_ticket_product .dialog > .inner > .content { padding:1rem 2rem; flex-grow:1; } |
#wpsg_ticket_product .dialog > .inner > .foot { padding:1rem 2rem; } |
#wpsg_ticket_product .dialog > .inner .form_field { display:flex; align-items:center; justify-content:flex-start; } |
#wpsg_ticket_product .dialog > .inner .form_field label { width:200px; } |
#wpsg_ticket_product .dialog > .inner .form_col { display:flex; flex-direction:column; gap:0.5rem; } |
#wpsg_ticket_product .ticket_list { display:flex; flex-direction:column; } |
#wpsg_ticket_product .ticket_list .head .tablenav { display:flex; justify-content:space-between; align-items:center; padding-top:0;} |
#wpsg_ticket_product .ticket_list .head .tablenav label { display:flex; justify-content:flex-start; align-items:center; gap:0.5rem; font-weight:normal; } |
#wpsg_ticket_product .ticket_list .head .tablenav label input { margin:0; } |
#wpsg_ticket_product .ticket_list .head .tablenav-pages { display:flex; align-items:center; justify-content:flex-start; margin:0; } |
#wpsg_ticket_product .ticket_list .head .pagination-links { display:flex; align-items:center; justify-content:flex-start; gap:0.5rem; } |
#wpsg_ticket_product .ticket_list .content { border:1px solid #c3c4c7; padding:0; } |
#wpsg_ticket_product .ticket_list .content table { width:100%; } |
#wpsg_ticket_product .ticket_list .content table thead tr th { border-bottom:1px solid #c3c4c7; } |
#wpsg_ticket_product .ticket_list .content table > * > tr > * { padding:3px 5px 0px 5px; text-align:center; } |
#wpsg_ticket_product .ticket_list .content table > * > tr > *:first-child { text-align:left; } |
#wpsg_ticket_product .ticket_list .content table > * > tr > *:last-child { text-align:right; } |
#wpsg_ticket_product .ticket_list .content table > * > tr > .col_action { padding-top:0; padding-bottom:3px; } |
#wpsg_ticket_product .ticket_list .content table > * > tr > .col_action > .inner { display:flex; gap:0.5rem; justify-content:flex-start; align-items:center; flex-wrap:wrap; } |
#wpsg_ticket_product .ticket_list .content table > * > tr > .col_date { width:250px; } |
#wpsg_ticket_product .ticket_list .content table > * > tr > .col_order { text-align:left; padding-bottom:3px; } |
#wpsg_ticket_product .ticket_list .content table > * > tr > .col_state .inner { display:flex; justify-content:flex-end; align-items:center; gap:0.5rem; } |
#wpsg_ticket_product .ticket_list .content table > *:nth-child(even) > tr > * { background-color:#f6f7f7; } |
#wpsg_ticket_product .ticket_list .content table .inactive, |
#wpsg_ticket_product .text-red { color:red; } |
#wpsg_ticket_product .ticket_list .content table .active, |
#wpsg_ticket_product .text-green { color:green; } |
#wpsg_ticket_product .flex { display:flex; } |
#wpsg_ticket_product .grow { flex-grow:1; } |
#wpsg_ticket_product .flex-wrap { flex-wrap:wrap; } |
#wpsg_ticket_product .gap-2 { gap:0.5rem; } |
#wpsg_ticket_product .gap-4 { gap:1rem; } |
#wpsg_ticket_product .relative { position:relative; } |
#wpsg_ticket_product { position:relative; padding:1rem 0; } |
#wpsg_ticket_product .loading_layer { position:absolute; left:0; top:0; width:100%; height:100%; transition:all 0.1s; display:flex; align-items:center; justify-content:center; background-color:rgba(255, 255, 255, 0.75); } |
#wpsg_ticket_product .ticket_cal { all:initial !important; font-family:'Arial' !important; } |
#wpsg_ticket_product .ticket_cal * { font-family:'Arial' !important; } |
#wpsg_ticket_product .ticket_cal .vanilla-calendar-week__day { font-size:12px !important; } |
#wpsg_ticket_product .vanilla-calendar-month, |
#wpsg_ticket_product .vanilla-calendar-year { font-size:14px !important; font-family:'Arial' !important; } |
#wpsg_ticket_product .vanilla-calendar-days { column-gap:15px; } |
#wpsg_ticket_product .vanilla-calendar-days { row-gap:0.5rem; } |
#wpsg_ticket_product .vanilla-calendar-day__btn { font-size:1rem; } |
#wpsg_ticket_product .vanilla-calendar-day__btn:not(.vanilla-calendar-day__btn_disabled) { background-color:#fde047; color:black; } |
#wpsg_ticket_product .vanilla-calendar-day__btn.full { background-color:green; color:white; } |
#wpsg_ticket_product .weekday_wrap { display:flex; flex-grow:1; justify-content:space-between; align-items:flex-start; } |
#wpsg_ticket_product .weekday_wrap > label { display:flex; flex-direction:column; gap:0.125rem; width:initial !important; margin-bottom:0 !important; } |
</style> |
<script> |
const el_ticket_product = document.getElementById('metaticket_product'); |
const el_wpsg_ticket_product = document.getElementById('wpsg_ticket_product'); |
const el_basket_multiple = document.getElementById('basket_multiple'); |
el_ticket_product.addEventListener('change', (event) => { |
if (event.target.checked) { |
el_basket_multiple.disabled = true; |
el_basket_multiple.selectedIndex = 2; |
wpsg_ticket_product.style.display = 'block'; |
} else { |
el_basket_multiple.disabled = false; |
wpsg_ticket_product.style.display = 'none'; |
} |
}); |
el_ticket_product.dispatchEvent(new Event('change')); |
</script> |
<?php |
\wpsg_drawForm_AdminboxEnd(); |
/mods/mod_ticket/produkttemplate.phtml |
---|
0,0 → 1,255 |
<?php |
declare(strict_types=1); |
/** |
* @author: Daniel Schmitzer (daniel@maennchen1.de) |
* @date: 21.10.23 |
* @time: 15:42 |
*/ |
namespace wpsgTicket; |
/** @var \wpsg_product $oProduct */ |
$oProduct = $this->view['oProduct']; |
$product_key = $this->view['data']['product_key']; |
/** @var TicketProduct $oTicketProduct */ |
$oTicketProduct = TicketProduct::getInstance($oProduct->getId()); |
TicketProduct::$enqueTicket = true; |
$arTicket = $oTicketProduct->getAvailableTickets(); |
if (sizeof($arTicket) <= 0) { wpsg_debug(__('Keine Tickets verfügbar', 'wpsg')); return; } |
$arProductVars = false; |
if ($this->hasMod('wpsg_mod_productvars')) { |
$arProductVars = array_values($this->callMod('wpsg_mod_productvars', 'getAllProductVars', [$oTicketProduct->getProductId()])); |
foreach ($arProductVars as $k => $v) $arProductVars[$k]['value'] = ''; |
} |
$json_data = [ |
'template_index' => $this->getTemplateIndex(), |
'ajax_url' => \admin_url('admin-ajax.php'), |
'product_id' => $oProduct->getId(), |
'product_key' => $product_key, |
'price' => $oProduct->getPrice($product_key, \wpsg_ShopController::getShop()->getFrontendTaxview()), |
'product_vars' => $arProductVars |
]; |
if ($this->hasMod('wpsg_mod_productvariants')) { |
if ($this->callMod('wpsg_mod_productvariants', 'isVariantsProductKey', [$product_key])) { |
$product_id = $this->getProduktID($product_key); |
$json_data['vp_data'] = $this->callMod('wpsg_mod_productvariants', 'getVariants', [$product_id, true, true, true]); |
$json_data['vp_info'] = $this->callMod('wpsg_mod_productvariants', 'getVariantenInfoArray', [$product_key]); |
foreach ($json_data['vp_data'] as $k => $v) { |
foreach ($v['arVariation'] as $k2 => $v2) { |
$simulated_product_key = $this->callMod('wpsg_mod_productvariants', 'getSimulatedVariKey', array($this->view['data']['product_key'], $v['id'], $v2['variation_id'])); |
$attachmentID = $this->imagehandler->getAttachmentID($simulated_product_key); |
$json_data['vp_data'][$k]['arVariation'][$k2]['img'] = \wp_get_attachment_image($attachmentID, 'thumbnail'); |
} |
} |
} |
} |
?> |
<div class="wpsg_ticket_product"> |
<div style="display:none;" class="json_data"><?php echo base64_encode(json_encode($json_data)); ?></div> |
<template v-if="mounted"> |
<div v-if="layer_msg" class="layer_msg"> |
<div class="inner"> |
<div class="msg">{{layer_msg}}</div> |
<div class="button_wrap"> |
<a class="wp-element-button" href="#" @click.prevent="layer_msg = undefined;"><?php echo __('OK', 'wpsg'); ?></a> |
<a class="wp-element-button" href="<?php echo \wpsg_ShopController::getShop()->getURL(\wpsg_ShopController::URL_BASKET); ?>"><?php echo __('Zum Warenkorb', 'wpsg'); ?></a> |
</div> |
</div> |
</div> |
<div class="wpsg_produkt wpsg_product_name"> |
<?php if (!$this->titleDisplayed) { ?> |
<h1 class="wpsg_producttitle"><?php echo $oProduct->getProductName(); ?></h1> |
<h2 class="wpsg_productdetailtitle"><?php echo $this->view['data']['detailname']; ?></h2> |
<?php } ?> |
<?php $this->callMods('product_top_afterheadline', array(&$this->view['data']['id'], $this->getTemplateIndex())); ?> |
</div> |
<?php $this->callMods('product_top', array(&$this->view['data']['id'], $this->getTemplateIndex())); ?> |
<?php /* Block für die Produktbilder START */ ?> |
<?php |
/* Das ist das primäre Anzeigebild des Produktes (AttachmentID) */ |
$arAttachmentID = $this->imagehandler->getAttachmentID($this->view['data']['product_key']); |
/* Array mit allen AttachmentIDs der Produktbilder */ |
$arAttachmentIDsAll = $this->imagehandler->getAttachmentIDs($this->view['data']['product_id']); |
?> |
<div class="product_top"> |
<?php if (sizeof($arAttachmentIDsAll) > 0) { ?> |
<div class="wpsg_productimages"> |
<div class="wpsg_produkt_produktbilder"> |
<?php if (sizeof($arAttachmentIDsAll) > 0) { for ($i = 0; $i < sizeof($arAttachmentIDsAll); $i ++) { ?> |
<?php /* URL für die Lightbox */ ?> |
<?php $att = \wp_get_attachment_image_src($arAttachmentIDsAll[$i], array(800, 600), false); ?> |
<meta itemprop="image" content="<?php echo $att[0]; ?>" /> |
<a <?php if ($arAttachmentIDsAll[$i] != $arAttachmentID) echo 'style="display:none;"'; ?> data-fslightbox="<?php echo $this->getTemplateIndex(); ?>" title="<?php echo $oProduct->getProductName(); ?>" href="<?php echo $att[0]; ?>"> |
<?php echo \wp_get_attachment_image($arAttachmentIDsAll[$i], array(600, 600), false, array()); ?> |
</a> |
<?php } } ?> |
</div> |
</div> |
<?php } ?> |
<?php /* Block für die Produktbilder ENDE */ ?> |
<div class="product_top_content"> |
<?php if (strlen(trim($this->view['data']['beschreibung'])) > 0) { ?> |
<div class="wpsg_product_information_short"> |
<div class="wpsg_produkt_additional_information"> |
<div itemprop="description" class="wpsg_produkt_shortdescription"> |
<span><?php echo $this->view['data']['beschreibung']; ?></span> |
</div> |
</div> |
</div> |
<?php } ?> |
</div> |
</div> |
<?php if (strlen(trim($this->view['data']['longdescription'])) > 0) { ?> |
<div class="wpsg_product_information_long"> |
<span><?php echo $this->view['data']['longdescription']; ?></span> |
</div> |
<?php } ?> |
<div class="calendar_wrap"> |
<div ref="ref_calendar"></div> |
</div> |
<div v-if="data.product_vars" class="variant_wrap"> |
<template v-for="(pv, i) of data.product_vars"> |
<div class="variant_row"> |
<span>{{pv.name}}</span> |
<span> |
<template v-if="pv.typ === '1'"><!-- Auswahl --> |
<select v-model="pv.value" :required="pv.pflicht === '1'" :name="'wpsg_mod_productvars[' + pv.id + ']'"> |
<option value=""><?php echo __('Bitte auswählen', 'wpsg'); ?></option> |
<option v-for="(option, i) of pv.auswahl.split('|')" :value="option"> |
{{option}} |
</option> |
</select> |
</template> |
<template v-else-if="pv.typ === '2'"><!-- Textzeile --> |
<input type="text" v-model="pv.value" :required="pv.pflicht === '1'" :name="'wpsg_mod_productvars[' + pv.id + ']'" /> |
</template> |
<template v-else-if="pv.typ === '4'"><!-- Textfeld --> |
<textarea v-model="pv.value" :required="pv.pflicht === '1'" :name="'wpsg_mod_productvars[' + pv.id + ']'"></textarea> |
</template> |
<template v-else-if="pv.typ === '3'"><!-- Checkbox --> |
<input type="checkbox" value="1" v-model="pv.value" :required="pv.pflicht === '1'" :name="'wpsg_mod_productvars[' + pv.id + ']'" /> |
</template> |
</span> |
</div> |
</template> |
</div> |
<div v-if="data.vp_data" class="variant_wrap"> |
<template v-for="(vp, i) of data.vp_data"> |
<div v-if="(vp.deleted + vp.count_variation) !== 1" class="variant_row"> |
<span>{{vp.name}}</span> |
<span> |
<select v-if="vp.type == '<?php echo \wpsg_mod_productvariants::TYPE_SELECT; ?>'" @change="setVari(vp.id, $event.target.value)"> |
<template v-for="(o, j) of vp.arVariation"> |
<option v-if="o.active" :value="o.variation_id" :checked="((data.vp_info[vp.id]['vari_id'] === o.id)?'checked':'')"> |
{{o.name}} <?php if ($this->get_option('wpsg_mod_productvariants_price') === '1') { ?>(+ {{ff(o.price)}} <?php echo $this->get_option('wpsg_currency'); ?>)<?php } ?> |
</option> |
</template> |
</select> |
<div v-else-if="vp.type == '<?php echo \wpsg_mod_productvariants::TYPE_RADIO; ?>'" class="radio_wrap"> |
<template v-for="(o, j) of vp.arVariation"> |
<label class="radio" v-if="o.active"> |
<input type="radio" :value="o.variation_id" :name="vp.id + 'radio'" v-if="data.vp_info[vp.id]['vari_id'] === o.id" checked="checked" /> |
<input v-else type="radio" :value="o.id" :name="vp.id + 'radio'" @change.prevent="setVari(vp.id, o.id)" /> |
<span>{{o.name}} <?php if ($this->get_option('wpsg_mod_productvariants_price') === '1') { ?>(+ {{ff(o.price)}} <?php echo $this->get_option('wpsg_currency'); ?>)<?php } ?></span> |
</label> |
</template> |
</div> |
<div v-else-if="vp.type == '<?php echo \wpsg_mod_productvariants::TYPE_IMAGE; ?>'" class="image_wrap"> |
<template v-for="(o, j) of vp.arVariation"> |
<div class="image" v-if="o.active" :class="{'act': o.set}" @click="setVari(vp.id, o.variation_id)"> |
<div v-html="o.img"></div> |
</div> |
</template> |
</div> |
</span> |
</div> |
</template> |
</div> |
<div class="no_event" v-if="ticket === undefined"> |
<?php echo __('Bitte einen Termin im Kalender wählen.', 'wpsg'); ?> |
</div> |
<template v-else> |
<div class="mt-8 flex justify-between items-center"> |
<div> |
<strong><?php echo __('Ausgewählter Termin: ', 'wpsg'); ?></strong>{{ticket.label}} |
</div> |
<div> |
<?php if ($this->view['oProduct']->canDisplayPrice()) { ?> |
<span class="price">{{ff(data.price)}} <?php echo $this->get_option('wpsg_currency'); ?></span> |
<?php } ?> |
</div> |
</div> |
<div class="ticket_selection"> |
<span> |
<input v-if="ticket.slots !== 1" type="number" min="1" :max="ticket.slots" v-model="ticket.amount" /> |
</span> |
<button type="submit" class="wp-element-button" :class="computedButtonClass"> |
{{computedButtonText}} |
</button> |
</div> |
</template> |
<div v-if="loading" class="loading_layer"> |
<!--<img src="<?php echo WPSG_URL; ?>views/gfx/ajax-loader.gif" alt="<?php echo __('Bitte warten ...', 'wpsg'); ?>" />--> |
</div> |
</template> |
</div> |
/mods/mod_ticket/qrScanner.phtml |
---|
0,0 → 1,221 |
<?php |
declare(strict_types=1); |
/** |
* @author: Daniel Schmitzer (daniel@maennchen1.de) |
* @date: 13.11.23 |
* @time: 19:11 |
*/ |
namespace wpsgTicket; |
?> |
<div id="qr_scanner_app" style="display:none; padding-right:2rem; padding-top:2rem; max-height:400px;"> |
<div id="reader" style="width:500px;"></div> |
<div id="ticket_dialog" v-if="ticket_dialog"> |
<div class="inner"> |
<div v-if="ticket_dialog.loading" class="loading_layer"> |
<img src="<?php echo WPSG_URL; ?>views/gfx/ajax-loader.gif" alt="<?php echo __('Bitte warten ...', 'wpsg'); ?>" /> |
</div> |
<div class="head"> |
<div class="flex justify-between items-center"> |
<div class="flex items-center justify-start"> |
TicketBuchung #{{ticket_dialog.booking_id}} |
<div class="button_wrap"> |
<a @click="ticket_dialog.tab = 1" :class="{'active': ticket_dialog.tab === 1}"><?php echo __('Informationen', 'wpsg'); ?></a> |
<a @click="ticket_dialog.tab = 2" :class="{'active': ticket_dialog.tab === 2}"><?php echo __('Protokoll', 'wpsg'); ?></a> |
<a :href="ticket_dialog.urls.pdf" target="_blank"><?php echo __('PDF', 'wpsg'); ?></a> |
<!--<a @click="ticket_dialog.tab = 3" :class="{'active': ticket_dialog.tab === 3}"><?php echo __('RAW', 'wpsg'); ?></a>--> |
</div> |
</div> |
<div class="flex flex-items-center justify-end"> |
<div :class="'state ' + 'state' + ticket_dialog.state_code"> |
{{ticket_dialog.state_label}} |
</div> |
<a @click.prevent="hideDialg">X</a> |
</div> |
</div> |
</div> |
<div class="content"> |
<template v-if="ticket_dialog.tab === 1"> |
<div class="grid-cols-2 grid"> |
<div> |
<div class="form_row"> |
<div class="form_label"><?php echo __('Ticket-Produkt', 'wpsg'); ?></div> |
<div class="form_value"> |
<a :href="ticket_dialog.urls.product_edit">{{ticket_dialog.ticket_product_label}}</a> |
</div> |
</div> |
<div class="form_row"> |
<div class="form_label"><?php echo __('Datum/Zeitraum', 'wpsg'); ?></div> |
<div class="form_value" :class="{'text-red': ticket_dialog.time_raised}">{{ticket_dialog.ticket_data.label}}</div> |
</div> |
<div class="form_row"> |
<div class="form_label"><?php echo __('Kaufpreis', 'wpsg'); ?></div> |
<div class="form_value">{{ticket_dialog.order_product_price_ff}}</div> |
</div> |
</div> |
<div> |
<div class="form_row"> |
<div class="form_label"><?php echo __('Bestellnummer', 'wpsg'); ?></div> |
<div class="form_value"> |
<a :href="ticket_dialog.urls.order_edit">{{ticket_dialog.order_nr}}</a> |
</div> |
</div> |
<div class="form_row"> |
<div class="form_label"><?php echo __('Bestellstatus', 'wpsg'); ?></div> |
<div class="form_value" :class="{ |
'text-red': !ticket_dialog.wpsg_mod_ticket_orderstate_active.includes(ticket_dialog.order_state), |
'text-green': ticket_dialog.wpsg_mod_ticket_orderstate_active.includes(ticket_dialog.order_state) |
}">{{ticket_dialog.order_state_label}}</div> |
</div> |
<div class="form_row"> |
<div class="form_label"><?php echo __('Käufer', 'wpsg'); ?></div> |
<div class="form_value">{{ticket_dialog.order_title}} {{ticket_dialog.order_firstname}} {{ticket_dialog.order_lastname}}</div> |
</div> |
</div> |
</div> |
<br /> |
<div class="form_row form_row_1_4"> |
<div class="form_label"><?php echo __('Ticket-Status', 'wpsg'); ?></div> |
<div class="form_value"> |
<span class="text-red" v-if="ticket_dialog.state_code === <?php echo TicketBooking::STATUS_UNAVAILABLE; ?>"> |
{{ticket_dialog.revoke_text}} |
</span> |
<span class="text-green" v-if="ticket_dialog.state_code === <?php echo TicketBooking::STATUS_AVAILABLE; ?>"> |
<?php echo __('Gültig', 'wpsg'); ?> |
</span> |
</div> |
</div> |
<br /> |
<div v-if="ticket_dialog.sibling.length > 0"> |
<strong><?php echo __('Zusammengkaufte Tickets', 'wpsg'); ?> ({{ticket_dialog.sibling.length}} Stück)</strong> |
<table> |
<thead> |
<tr> |
<td><?php echo __('Buchung', 'wpsg'); ?></td> |
<td><?php echo __('Datum/Zeitraum', 'wpsg'); ?></td> |
<td class="col_ticket_state"><?php echo __('Ticket-Status', 'wpsg'); ?></td> |
</tr> |
</thead> |
<tbody v-for="(ts, i) of ticket_dialog.sibling"> |
<tr> |
<td><a @click.prevent="showTicket(ts.booking_id)" href="#">#{{ts.booking_id}}</a> <a :href="ts.urls.pdf" target="_blank">[<?php echo __('PDF', 'wpsg'); ?>]</a></td> |
<td :class="{'text-red': ticket_dialog.time_raised}">{{ticket_dialog.ticket_data.label}}</td> |
<td> |
<span class="text-red" v-if="ts.state_code === <?php echo TicketBooking::STATUS_UNAVAILABLE; ?>"> |
<span v-if="ts.revoked"> |
<?php echo __('Entwertet', 'wpsg'); ?> |
</span> |
<template v-else> |
<span v-if="ts.time_raised" class="text-red"><?php echo __('Ausgelaufen', 'wpsg'); ?></span> |
<span v-else><?php echo __('Ungültig', 'wpsg'); ?></span> |
</template> |
</span> |
<span class="text-green" v-if="ts.state_code === <?php echo TicketBooking::STATUS_AVAILABLE; ?>"> |
<?php echo __('Gültig', 'wpsg'); ?> |
[<a v-if="ts.state_code === <?php echo TicketBooking::STATUS_AVAILABLE; ?>" href="#" @click="revokeBooking(ts.booking_id, false)" class="revokeBooking">entwerten</a>] |
</span> |
</td> |
</tr> |
</tbody> |
</table> |
</div> |
</template> |
<div v-if="ticket_dialog.tab === 2"> |
<table> |
<thead> |
<tr> |
<th><?php echo __('Datum/Zeit', 'wpsg'); ?></th> |
<th><?php echo __('Benutzer', 'wpsg'); ?></th> |
<th><?php echo __('Aktion', 'wpsg'); ?></th> |
</tr> |
</thead> |
<tbody v-for="(l, i) of ticket_dialog.log"> |
<tr> |
<td class="col_time">{{en_de_date_time(l.date_time)}}</td> |
<td class="col_user">{{l.user_name}}</td> |
<td> |
<span class="text-green" v-if="l.log === <?php echo TicketBooking::LOG_SCAN; ?>"><?php echo __('gescannt', 'wpsg'); ?></span> |
<span class="text-red" v-else-if="l.log === <?php echo TicketBooking::LOG_REVOKE; ?>"><?php echo __('entwertet', 'wpsg'); ?></span> |
</td> |
</tr> |
</tbody> |
</table> |
</div> |
<div v-if="ticket_dialog.tab === 3"> |
<pre>{{ticket_dialog}}</pre> |
</div> |
</div> |
<div class="foot" v-if="ticket_dialog.state_code === 1"> |
<a href="#" @click="revokeBooking(ticket_dialog.booking_id)" v-if="ticket_dialog.state_code === 1" class="revokeBooking"><?php echo __('Ticket entwerten', 'wpsg'); ?></a> |
</div> |
</div> |
</div> |
</div> |
<style> |
#qr_scanner_app .flex { display:flex; } |
#qr_scanner_app .grid { display:grid; } |
#qr_scanner_app .text-red { color:red; } |
#qr_scanner_app .justify-between { justify-content:space-between; } |
#qr_scanner_app .justify-start { justify-content:flex-start; } |
#qr_scanner_app .justify-end { justify-content:flex-end; } |
#qr_scanner_app .items-center { align-items:center; } |
#qr_scanner_app .text-green { color:green; } |
#qr_scanner_app .text-red { color:red; } |
#qr_scanner_app .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } |
#ticket_dialog { position:fixed; left:0; top:0; width:100dvw; height:100dvh; display:flex; justify-content:center; align-items:center; z-index:10000; background-color:rgba(255, 255, 255, 0.95); } |
#ticket_dialog > .inner { background-color:white; border:1px solid #003664; position:relative; } |
#ticket_dialog > .inner .loading_layer { position:absolute; left:0; top:0; width:100%; height:100%; transition:all 0.1s; display:flex; align-items:center; justify-content:center; background-color:rgba(255, 255, 255, 0.75); } |
#ticket_dialog > .inner > .head { border-bottom:1px solid #003664; padding:0.5rem 1rem; font-size:1.25em; font-weight:bold; color:white; background-color:#003664; } |
#ticket_dialog > .inner > .head .button_wrap { font-size:0.75em; margin-left:1.5rem; display:flex; gap:0.5rem; align-items:center; } |
#ticket_dialog > .inner > .head .button_wrap > a { border:1px solid white; display:block; padding:0.25rem 0.75rem; } |
#ticket_dialog > .inner > .head .button_wrap > a.active { background-color:white; color:#003664; } |
#ticket_dialog > .inner > .head .state { font-size:0.75em; border:1px solid white; display:flex; align-items:center; padding:0.25rem 0.75rem; margin-right:1.5rem; } |
#ticket_dialog > .inner > .head .state2 { background-color:red; } |
#ticket_dialog > .inner > .head .state1 { background-color:green; } |
#ticket_dialog > .inner > .head a { color:#FFFFFF; cursor:pointer; } |
#ticket_dialog > .inner > .head > a:hover { text-decoration:none; } |
#ticket_dialog > .inner > .head > a { padding:0.5rem; display:inline-block; cursor:pointer; color:#003664; } |
#ticket_dialog > .inner > .content { padding:1rem; width:50dvw; max-width:calc(100dvw - 60px); height:500px; max-height:calc(100dvh - 60px); overflow:auto; } |
#ticket_dialog > .inner > .content .form_row { display:flex; padding:0.25rem 0; justify-content:space-between; } |
#ticket_dialog > .inner > .content .form_row .form_label { } |
#ticket_dialog > .inner > .content .form_row .form_value { width:50%; } |
#ticket_dialog > .inner > .content .form_row_1_4 .form_value { width:75%; } |
#ticket_dialog > .inner > .content table { width:100%; } |
#ticket_dialog > .inner > .content table thead > tr > * { background-color:#003664; color:#FFFFFF; padding:0.25rem 0.5rem; } |
#ticket_dialog > .inner > .content table tbody > tr > * { padding:0.25rem 0.5rem; } |
#ticket_dialog > .inner > .content table tbody > tr:last-child > * { border-bottom:1px solid #333333; } |
#ticket_dialog > .inner > .content table tr > *.col_time { width:130px; } |
#ticket_dialog > .inner > .content table tr > *.col_user { width:250px; } |
#ticket_dialog > .inner > .foot { border-top:1px solid #003664; padding:0.5rem 1rem; display:flex; justify-content:space-between; align-items:center; } |
#ticket_dialog > .inner > .foot a { padding:0.25rem 0.75rem; background-color:green; border:1px solid #003664; color:#FFFFFF; } |
#ticket_dialog .revokeBooking { } |
#ticket_dialog .col_ticket_state { width:150px; } |
</style> |
<script src="<?php echo WPSG_URL; ?>mods/mod_ticket/assets/js/HTML5QrScannerv2.3.8.js"></script> |
<script type="module"> |
const wpsgSettings = { |
baseUrl: '<?php echo WPSG_URL; ?>' |
}; |
import { wpsg_ticket_qrScanner } from '<?php echo WPSG_URL; ?>mods/mod_ticket/assets/js/wpsg_qrscanner.js'; |
wpsg_ticket_qrScanner(wpsgSettings, <?php echo json_encode([ |
'admin_url' => \admin_url('admin-ajax.php') |
]); ?>); |
</script> |
/mods/mod_ticket/settings_edit.phtml |
---|
0,0 → 1,159 |
<?php |
declare(strict_types=1); |
/** |
* @author: Daniel Schmitzer (daniel@maennchen1.de) |
* @date: 26.10.23 |
* @time: 18:55 |
*/ |
namespace wpsgTicket; |
$arTicketTemplates = TicketTemplate::find(); |
$arFontVue = []; |
foreach ($this->view['arFonts'] as $font_code => $font_label) { |
$arFontVue[] = ['code' => $font_code, 'label' => $font_label]; |
} |
?> |
<div id="wpsg_ticket_modul"> |
<ul class="nav nav-tabs" role="tablist"> |
<li role="presentation" class="active"><a href="#tab1" role="tab" data-toggle="tab"><?php echo __('Einstellungen', 'wpsg'); ?></a></li> |
<li role="presentation" class=""><a href="#tab2" role="tab" data-toggle="tab"><?php echo __('Templates', 'wpsg'); ?></a></li> |
<li role="presentation" style="float:right;"><a href="#tab5" role="tab" data-toggle="tab"><?php echo __('Info / Hilfe', 'wpsg'); ?></a></li> |
</ul> |
<div class="tab-content"> |
<div role="tabpanel" class="tab-pane active" id="tab1"> |
<p> |
<?php echo __('Beim Wechsel einer Bestellung auf einen der folgenden Bestellzuständen wird einmalig eine E-Mail mit den Tickets versendet.', 'wpsg'); ?> |
</p> |
<?php |
$wpsg_mod_ticket_orderstate_send = Plugin::getInstance()->getSendOrderState(); |
?> |
<select id="wpsg_mod_ticket_orderstate_send" multiple="multiple" size="5" style="border:1px solid black; width:100%;"> |
<?php foreach ($this->arStatus as $status_key => $status_label) { ?> |
<option |
<?php echo ((in_array($status_key, $wpsg_mod_ticket_orderstate_send))?'selected="selected"':''); ?> |
value="<?php echo $status_key; ?>"><?php echo $status_label; ?></option> |
<?php } ?> |
</select> |
<hr /> |
<p> |
<?php echo __('Bei folgenden Bestellzuständen gilt ein Ticket als "aktiv" sofern es noch nicht entwertet wurde.', 'wpsg'); ?> |
</p> |
<?php |
$wpsg_mod_ticket_orderstate_active = Plugin::getInstance()->getActiveOrderState(); |
?> |
<select id="wpsg_mod_ticket_orderstate_active" multiple="multiple" size="5" style="border:1px solid black; width:100%;"> |
<?php foreach ($this->arStatus as $status_key => $status_label) { ?> |
<option |
<?php echo ((in_array($status_key, $wpsg_mod_ticket_orderstate_active))?'selected="selected"':''); ?> |
value="<?php echo $status_key; ?>"><?php echo $status_label; ?></option> |
<?php } ?> |
</select> |
</div> |
<div role="tabpanel" class="tab-pane" id="tab2"> |
<?php echo $this->render(WPSG_PATH_VIEW.'/mods/mod_ticket/settings_edit_templates.phtml'); ?> |
</div> |
<div role="tabpanel" class="tab-pane" id="tab5"> |
TODO |
</div> |
</div> |
<div v-if="loading" class="loading_layer"> |
<img src="<?php echo WPSG_URL; ?>views/gfx/ajax-loader.gif" alt="<?php echo __('Bitte warten ...', 'wpsg'); ?>" /> |
</div> |
</div> |
<style> |
.items-center { justify-content:center; } |
.items-start { justify-content:start; } |
.flex { display:flex; } |
.justify-between { justify-content:space-between; } |
.mb-4 { margin-bottom:1rem; } |
.gap-2 { gap:0.5rem; } |
.text-center { text-align:center; } |
#wpsg_ticket_modul .control-label { padding-top:0; font-size:1em; } |
.checkbox_row { display:flex; flex-direction:row; align-items:center; justify-content:flex-start; gap:1rem; margin-bottom:0.5rem; } |
.checkbox_row input { margin:0; } |
#wpsg_ticket_modul { position:relative; } |
#wpsg_ticket_modul a { text-decoration:none; position:relative; } |
#wpsg_ticket_modul select.template_select { width:200px; } |
#wpsg_ticket_modul > .loading_layer { position:absolute; left:0; top:0; width:100%; height:100%; transition:all 0.1s; display:flex; align-items:center; justify-content:center; background-color:rgba(255, 255, 255, 0.75); } |
#wpsg_ticket_modul .field_table { width:100%; border-top:1px solid #dddddd; border-left:1px solid #dddddd; border-right:1px solid #dddddd; font-size:12px; } |
#wpsg_ticket_modul .field_table td { padding:1px 5px; } |
#wpsg_ticket_modul .field_table tbody > tr:first-child > * { padding-top:1rem; } |
#wpsg_ticket_modul .field_table tbody > tr:last-child > * { padding-bottom:1rem; } |
#wpsg_ticket_modul .field_table th { padding:1px 5px; } |
#wpsg_ticket_modul .field_table tr > * { background-color:#f9f9f9; } |
#wpsg_ticket_modul .field_table tr:nth-child(4) > * { border-bottom:1px solid #dddddd; padding-bottom:1rem; } |
#wpsg_ticket_modul .field_table .w-1 { width:100px; font-size:12px; } |
#wpsg_ticket_modul .field_table .w-2 { width:200px; font-size:12px; } |
#wpsg_ticket_modul_template .head { width:100%; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid #DDDDDD; margin-bottom:1rem; padding-bottom:1rem; } |
#wpsg_ticket_modul_template .head select { width:300px; } |
#wpsg_ticket_modul_template .head div { flex-grow:1; } |
#wpsg_ticket_modul_template .wpsg_field_wrap_template_name { display:flex; justify-content:space-between; align-items:center; padding-right:10px !important; } |
#wpsg_ticket_modul_template .wpsg_field_wrap_template_name > div { gap:1rem; display:flex; justify-content:flex-start; align-items:center; } |
#wpsg_ticket_modul_template .template td.col_bg, |
#wpsg_ticket_modul_template .template td.col_align { width:50px; text-align:center; } |
#wpsg_ticket_modul_template .template tr td { vertical-align:middle; } |
#wpsg_ticket_modul_template .template tr td:last-child { text-align:right; } |
#wpsg_ticket_modul_template .template tr td:last-child .wpsg-glyphicon { margin-right:0; } |
#wpsg_ticket_modul_template .uploadstate { display:flex; justify-content:flex-start; align-items:center; } |
#wpsg_ticket_modul_template .uploadstate > img { margin-right:1rem; } |
#wpsg_ticket_modul_template .file_wrap { display:flex; justify-content:space-between; align-items:center; } |
#wpsg_ticket_modul_template .file_wrap .file { display:flex; gap:1rem; justify-content:flex-end; align-items:center; } |
#wpsg_ticket_modul_template .file_wrap .file .wpsg-glyphicon { margin-right:8px; } |
#wpsg_ticket_modul_template .label-copy { display:flex; justify-content:space-between; } |
#wpsg_ticket_modul_template .label-copy .glyphicon { font-size:14px; } |
#wpsg_ticket_modul_template .col_w0 { width:50px; } |
#wpsg_ticket_modul_template .col_w1 { width:100px; } |
#wpsg_ticket_modul_template .col_w1 select, |
#wpsg_ticket_modul_template .col_w1 input { width:100% !important; } |
</style> |
<script type="module"> |
const wpsgSettings = { |
baseUrl: '<?php echo WPSG_URL; ?>' |
}; |
import { ticket_settings_edit } from '<?php echo WPSG_URL; ?>mods/mod_ticket/assets/js/wpsg_modul.js'; |
ticket_settings_edit(wpsgSettings, '<?php echo \admin_url('admin-ajax.php'); ?>', <?php echo json_encode([ |
'arTemplates' => $arTicketTemplates, |
'arFonts' => $arFontVue, |
'label' => [ |
'copyTemplateConfirm' => __('Sind Sie sich sicher, dass sie das Template kopieren möchten?', 'wpsg'), |
'removeFieldConfirm' => __('Sind Sie sich sicher, dass sie das Feld löschen möchten?', 'wpsg'), |
'newTemplate' => __('Bitte die Bezeichnung des neuen Templates angeben.', 'wpsg'), |
'error_noTemplateName' => __('Bitte eine Bezeichnung angeben', 'wpsg') |
] |
]); ?>); |
</script> |
/mods/mod_ticket/settings_edit_templates.phtml |
---|
0,0 → 1,209 |
<?php |
namespace wpsgTicket; |
?> |
<div id="wpsg_ticket_modul_template"> |
<div class="head"> |
<a href="#" @click.prevent="addTemplate" title="<?php echo __('Neues Template anlegen', 'wpsg'); ?>"> |
<span class="wpsg-glyphicon glyphicon glyphicon-plus"></span> |
</a> |
<div v-if="data.arTemplates.length > 0"> |
<select v-model="template"> |
<option :value="null"><?php echo __('Bitte auswählen', 'wpsg'); ?></option> |
<option v-for="(template, index) in data.arTemplates" :value="template"> |
{{template.template_name}} ({{template.config.arField.length}} <?php echo __('Felder', 'wpsg'); ?><template v-if="template.defaulttemplate">, <?php echo __('Standard', 'wpsg'); ?></template>) |
</option> |
</select> |
</div> |
<div v-else> |
<?php echo __('Keine Templates vorhanden', 'wpsg'); ?> |
</div> |
<a v-if="template" href="#" @click.prevent="removeTemplate" title="<?php echo __('Template löschen', 'wpsg'); ?>"> |
<span class="wpsg-glyphicon glyphicon glyphicon-trash"></span> |
</a> |
</div> |
<div v-if="template" class="template"> |
<div class="form-group form-group-sm has-feedback"> |
<label class="col-sm-6 control-label label-copy" for="wpsg_mod_downloadplus_filename"> |
<a href="#" title="<?php echo __('Template kopieren', 'wpsg'); ?>" @click="copyTemplate()"><span class="wpsg-glyphicon glyphicon glyphicon-copy"></span></a> |
<span><?php echo __('Name des Templates', 'wpsg'); ?></span> |
</label> |
<div class="col-sm-6"> |
<div class="wpsg_field_wrap wpsg_field_wrap_template_name"> |
<input type="text" v-model="template.template_name" /> |
<div> |
<label class="control-label"><?php echo __('Standard: ', 'wpsg'); ?></label> |
<input type="checkbox" :checked="template.defaulttemplate" @click="setDefaultTemplate" /> |
</div> |
</div> |
</div> |
</div> |
<div class="form-group form-group-sm has-feedback"> |
<label class="col-sm-6 control-label"><?php echo __('Template Größe (mm)', 'wpsg'); ?></label> |
<div class="col-sm-6"> |
<div class="wpsg_field_wrap flex items-center justify-start gap-2"> |
<input type="text" class="form-control input-sm" autocomplete="off" v-model="template.config.width"> |
x |
<input type="text" class="form-control input-sm" autocomplete="off" v-model="template.config.height"> |
</div> |
</div> |
</div> |
<div class="form-group form-group-sm has-feedback"> |
<label class="col-sm-6 control-label"><?php echo __('Hintergrund (PDF/JPEG)', 'wpsg'); ?></label> |
<div class="col-sm-6"> |
<div class="wpsg_field_wrap flex items-start justify-between gap-2"> |
<input type="file" @change.prevent="uploadBg" ref="file_upload" accept=".jpeg,.jpg,.pdf" /> |
<span class="flex items-center"> |
<a v-if="template.hasBackground" :href="template.url_bg_download" target="_blank"><?php echo __('Anzeigen', 'wpsg'); ?></a> |
</span> |
</div> |
</div> |
</div> |
<br /> |
<table class="table table_qr table-body-striped wpsg_mod_downloadplus_fieldtable"> |
<thead> |
<tr> |
<th colspan="8"><?php echo __('QR - Code', 'wpsg'); ?></th> |
</tr> |
</thead> |
<template v-for="(field, field_index) in template.config.arField"> |
<tbody v-if="field.text === '%qr%'"> |
<tr> |
<td class="col_w0"></td> |
<td class="col_w1"> |
<div class="text-right"><strong><?php echo __('X / Y', 'wpsg'); ?></strong></div> |
</td> |
<td class="col_w1"> |
<div clasS="flex items-center gap-2"> |
<input type="text" style="width:50px;" v-model="field.x" /> |
<span>/</span> |
<input type="text" style="width:50px;" v-model="field.y" /> |
</div> |
</td> |
<td class="col_w1"> |
<div class="text-right"><strong><?php echo __('Breite', 'wpsg'); ?></strong></div> |
</td> |
<td class="col_w1"> |
<input type="text" style="width:50px;" v-model="field.w" /> |
</td> |
<td class="col_w1"> |
<div class="text-right"><strong><?php echo __('Höhe', 'wpsg'); ?>:</strong></div> |
</td> |
<td class="col_w1"> |
<input type="text" style="width:50px;" v-model="field.h" /> |
</td> |
<td class="col_w0"></td> |
</tr> |
</tbody> |
</template> |
</table> |
<table class="table table-body-striped wpsg_mod_downloadplus_fieldtable"> |
<thead> |
<tr> |
<th colspan="8"><?php echo __('Weitere Felder mit Platzhaltern', 'wpsg'); ?></th> |
</tr> |
<tr> |
<th class="col_w0"> |
<a href="#" @click.prevent="addField" title="<?php echo __('Neues Feld', 'wpsg'); ?>"> |
<span class="wpsg-glyphicon glyphicon glyphicon-plus"></span> |
</a> |
</th> |
<th class="col_w1"><?php echo __('X', 'wpsg'); ?></th> |
<th class="col_w1"><?php echo __('Y', 'wpsg'); ?></th> |
<th class="col_w1"><?php echo __('Ausrichtung', 'wpsg'); ?></th> |
<th class="col_w1"><?php echo __('Farbe', 'wpsg'); ?></th> |
<th class="col_w1"><?php echo __('Deckkraft', 'wpsg'); ?></th> |
<th class="col_w1"><?php echo __('Winkel', 'wpsg'); ?></th> |
<th class="col_action"></th> |
</tr> |
</thead> |
<template v-for="(field, field_index) in template.config.arField"> |
<tbody v-if="field.text !== '%qr%'"> |
<tr> |
<td class="col_w0">#{{field_index + 1}}</td> |
<td class="col_w1"> |
<input type="text" style="width:50px;" v-model="field.x" /> |
</td> |
<td class="col_w1"> |
<input type="text" style="width:50px;" v-model="field.y" /> |
</td> |
<td class="col_w1"> |
<select v-model="field.align" v-if="field.text !== '%qr%'"> |
<option value="L">Links</option> |
<option value="C">Zentriert</option> |
<option value="R">Rechts</option> |
</select> |
<div v-else class="text-right"><strong><?php echo __('Breite', 'wpsg'); ?></strong></div> |
</td> |
<td class="col_w1"> |
<input class="wpsg_hideBarcode" v-if="field.text !== '%qr%'" type="text" style="width:75px;" v-model="field.color" /> |
<input v-else type="text" style="width:50px;" v-model="field.w" /> |
</td> |
<td class="col_w1"> |
<input class="wpsg_hideBarcode" v-if="field.text !== '%qr%'" type="text" style="width:50px;" v-model="field.opaque" /> |
<div v-else class="text-right"><strong><?php echo __('Höhe', 'wpsg'); ?>:</strong></div> |
</td> |
<td class="col_w1"> |
<input class="wpsg_hideBarcode" v-if="field.text !== '%qr%'" type="text" style="width:50px;" v-model="field.angle" /> |
<input v-else type="text" style="width:50px;" v-model="field.h" /> |
</td> |
<td class="col_w0"></td> |
</tr> |
<tr> |
<td class="col_w0"> |
<a href="#" @click.prevent="addField(field_index)" title="<?php echo __('Neues Feld davor einfügen', 'wpsg'); ?>"> |
<span class="wpsg-glyphicon glyphicon glyphicon-plus"></span> |
</a> |
</td> |
<td class="col_freitext_label col_w1" colspan="1"> |
<span v-if="field.text !== '%qr%'"><?php echo __('Freitext', 'wpsg'); ?>:</span> |
</td> |
<td colspan="5" class="col_freitext"> |
<div class="flex items-center gap-2"> |
<input v-if="field.text !== '%qr%'" type="text" style="width:100%;" v-model="field.text" /> |
<span v-else>QR Code</span> |
<template v-if="field.text !== '%qr%'"> |
<select class="fontselect" v-model="field.font" style="width:100%;"> |
<option v-for="(font, index_font) in data.arFonts" :value="font.code">{{font.label}}</option> |
</select> |
<select v-model="field.fontsize" style="width:100%;"> |
<option v-for="size in [4,5,6,7,8,9,10,11,12,13,14,16,18,20,22,24,26,28,30,32,34]" :value="size">{{size}}</option> |
</select> |
</template> |
</div> |
</td> |
<td> |
<a v-if="field.text !== '%qr%'" target="_blank" href="#" @click.prevent="removeField(field_index)" title="<?php echo __('Feld löschen', 'wpsg'); ?>"> |
<span class="wpsg-glyphicon glyphicon glyphicon-trash"></span> |
</a> |
</td> |
</tr> |
</tbody> |
</template> |
</table> |
<a :href="template.url_preview" target="_blank" class="button button-primary"><?php echo __('Vorschau', 'wpsg'); ?></a> |
</div> |
<br /> |
</div> |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/mods/mod_ticket/ticket_mail.phtml |
---|
0,0 → 1,21 |
<?php |
declare(strict_types=1); |
/** |
* @author: Daniel Schmitzer (daniel@maennchen1.de) |
* @date: 03.12.23 |
* @time: 13:12 |
*/ |
namespace wpsgTicket; |
/** @var \wpsg_order $oOrder */ |
$oOrder = $this->view['oOrder']; |
/** @var int[] $arTicketBookingIDSend */ |
$arTicketBookingIDSend = $this->view['arTicketBookingIDSend']; |
?>Hallo <?php echo $oOrder->getCustomer()->getFirstname().' '.$oOrder->getCustomer()->getName(); ?> |
Hiermit erhalten Sie im Anhang Ihre Tickets aus der Bestellung <?php echo $oOrder->getNr(); ?>. |
/mods/mod_ticket/ticket_mail_html.phtml |
---|
0,0 → 1,20 |
<?php |
declare(strict_types=1); |
/** |
* @author: Daniel Schmitzer (daniel@maennchen1.de) |
* @date: 03.12.23 |
* @time: 13:13 |
*/ |
namespace wpsgTicket; |
/** @var \wpsg_order $oOrder */ |
$oOrder = $this->view['oOrder']; |
/** @var int[] $arTicketBookingIDSend */ |
$arTicketBookingIDSend = $this->view['arTicketBookingIDSend']; |
?><p>Hallo <?php echo $oOrder->getCustomer()->getFirstname().' '.$oOrder->getCustomer()->getName(); ?></p> |
<p>Hiermit erhalten Sie im Anhang Ihre Tickets aus der Bestellung <?php echo $oOrder->getNr(); ?>.</p> |
/mods/mod_klarna/gfx/klarna.svg |
---|
0,0 → 1,0 |
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="40.4494" viewBox="0 0 100 40.4494"><defs><style>.cls-1{fill:#ffb3c7;}</style></defs><g id="Lager_2" data-name="Lager 2"><g id="Layer_1" data-name="Layer 1"><rect class="cls-1" width="100" height="40.4494" rx="11.7384"/><path d="M80.0772,17.7235a6.194,6.194,0,1,0,0,10.2373v.75h3.5145V16.9727H80.0772Zm-3.1964,8.1388a3.0243,3.0243,0,1,1,3.1849-3.02A3.1059,3.1059,0,0,1,76.8808,25.8623Z"/><rect x="28.2027" y="11.7416" width="3.678" height="16.9694"/><path d="M64.1542,16.6569a4.2694,4.2694,0,0,0-3.62,1.6383V16.9733h-3.5V28.711h3.5421V22.5424a2.4754,2.4754,0,0,1,2.6383-2.6591c1.5447,0,2.4325.9228,2.4325,2.6348V28.711h3.5107V21.2464C69.1577,18.5146,66.9857,16.6569,64.1542,16.6569Z"/><path d="M43,17.7235a6.194,6.194,0,1,0,0,10.2373v.75h3.5145V16.9727H43Zm-3.1965,8.1388a3.0243,3.0243,0,1,1,3.1845-3.02A3.1058,3.1058,0,0,1,39.8034,25.8623Z"/><path d="M51.9513,18.5017V16.9728H48.353V28.7111h3.606v-5.48c0-1.8491,2.0042-2.843,3.3949-2.843.014,0,.0276.0014.0417.0015V16.9735A4.3821,4.3821,0,0,0,51.9513,18.5017Z"/><path d="M87.323,24.5476a2.2059,2.2059,0,1,0,2.206,2.2059A2.2057,2.2057,0,0,0,87.323,24.5476Z"/><path d="M25.6675,11.7384H21.8558a9.7488,9.7488,0,0,1-3.9412,7.8678l-1.51,1.131,5.8513,7.9792h4.8106l-5.3837-7.342A13.5049,13.5049,0,0,0,25.6675,11.7384Z"/><rect x="12.1204" y="11.7384" width="3.8185" height="16.9773"/></g></g></svg> |
/mods/mod_klarna/order_done.phtml |
---|
0,0 → 1,42 |
<?php |
declare(strict_types=1); |
/** |
* @author: daniel |
* @date: 04.03.24 |
* @time: 13:39 |
*/ |
namespace wpsgKlarna; |
$view = $this->view['wpsg_mod_klarna']; |
?> |
<div class="order_done_wpsg_mod_klarna <?php echo ($view['state']??''); ?>"> |
<?php if (($view['state']??'') === 'PAYED_DONE') { ?> |
<p><?php echo __('Betrag wurde mit Klarna bezahlt.', 'wpsgKlarna'); ?></p> |
<?php } else if (($view['state']??'') === 'PAYED') { ?> |
<p><?php echo __('Betrag wurde bereits mit Klarna bezahlt.', 'wpsgKlarna'); ?></p> |
<?php } else if (($view['state']??'') === 'TOPAY') { ?> |
<div id="wpsg_mod_klarna_widget"></div> |
<input type="button" class="button" id="klarna_payment_button" value="<?php echo __('Jetzt mit Klarna bezahlen.', 'wpsgKlarna'); ?>" /> |
<?php |
$this->view['wpsg_mod_klarna']['button_id'] = 'klarna_payment_button'; |
echo $this->render(dirname(__FILE__).'/pay.phtml'); |
?> |
<?php } ?> |
</div> |
/mods/mod_statistics/settings_edit.phtml |
---|
3,9 → 3,9 |
<div id="wpsg_tab"> |
<ul class="nav nav-tabs" role="tablist"> |
<li role="presentation" class="active"><a href="#tab1" aria-controls="home" role="tab" data-toggle="tab"><?php echo __('Auswertung Bestellstatus', 'wpsg'); ?></a></li> |
<li role="presentation"><a href="#tab2" aria-controls="profile" role="tab" data-toggle="tab"><?php echo __('Piwik', 'wpsg'); ?></a></li> |
<li role="presentation"><a href="#tab2" aria-controls="profile" role="tab" data-toggle="tab"><?php echo __('Matomo', 'wpsg'); ?></a></li> |
<li role="presentation"><a href="#tab3" aria-controls="profile" role="tab" data-toggle="tab"><?php echo __('Google', 'wpsg'); ?></a></li> |
<li role="presentation"><a href="#tab4" aria-controls="profile" role="tab" data-toggle="tab"><?php echo __('Social Media', 'wpsg'); ?></a></li> |
<!-- <li role="presentation"><a href="#tab4" aria-controls="profile" role="tab" data-toggle="tab"><?php echo __('Social Media', 'wpsg'); ?></a></li> --> |
<li role="presentation"><a href="#tab5" aria-controls="messages" role="tab" data-toggle="tab"><?php echo __('Sonstiges', 'wpsg'); ?></a></li> |
</ul> |
46,108 → 46,186 |
<br/> |
<?php echo __('Ermöglicht die Integration des Trackintools "Piwik".', 'wpsg'); ?> |
<?php echo __('Ermöglicht die Integration des Trackintools "Matomo".', 'wpsg'); ?> |
<br/><br/> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_url', __('URL zur Piwik Installation', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_url'), array('hint' => __('Ohne Protokoll, Beispiel: piwik.domain.de', 'wpsg'))); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_trackingcode', __('Trackingcode einbinden', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_trackingcode'), array('help' => 'wpsg_mod_statistics_piwik_trackingcode')); ?> |
<div id="wpsg_mod_statistik_tracking_layer" style="display:none;"> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_url', __('URL zur Matomo Installation', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_url'), array('help' => 'wpsg_mod_statistics_piwik_url'), array('hint' => __('Ohne Protokoll, Beispiel: matomo.domain.de', 'wpsg'))); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_SiteId', __('Matomo Seiten ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_SiteId'), array('help' => 'wpsg_mod_statistics_piwik_SiteId')); ?> |
</div> |
<br /> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_generel', __('Allgemeine Protokollierung', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_generel')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_SiteId', __('Piwik Seiten ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_SiteId'), array('help' => 'wpsg_mod_statistics_piwik_SiteId')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_ecommerce', __('Käufe (eCommerce) tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_ecommerce')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_generel', __('Allgemeine Protokollierung', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_generel'), array('help' => 'wpsg_mod_statistics_piwik_generel')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_ecommerce', __('Käufe (eCommerce) tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_ecommerce'), array('help' => 'wpsg_mod_statistics_piwik_ecommerce')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_productView', __('Produkte tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_productView'), array('help' => 'wpsg_mod_statistics_piwik_productView')); ?> |
<?php if ($this->hasMod('wpsg_mod_produktartikel')) echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_categoryView', __('Produktkategorien tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_categoryView'), array('help' => 'wpsg_mod_statistics_piwik_categoryView')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_basketdata', __('Warenkorbdaten tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_basketdata'), array('help' => 'wpsg_mod_statistics_piwik_basketdata')); ?> |
<br /><br /> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_basket', __('Warenkorb tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_basket')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_basket_target', __('Ziel ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_basket_target')); ?> |
<strong><?php echo __('Matomo Goals tracken:', 'wpsg'); ?></strong> |
<br /> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_basket', __('Warenkorb tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_basket'), array('help' => 'wpsg_mod_statistics_piwik_basketdata')); ?> |
<div id="wpsg_mod_statistics_piwik_basket_layer" style="display: none;"> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_basket_target', __('Matomo ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_basket_target')); ?> |
</div> |
<br /> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_checkout', __('Checkout tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_checkout')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_checkout_target', __('Ziel ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_checkout_target')); ?> |
<div id="wpsg_mod_statistics_piwik_checkout_layer" style="display: none;"> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_checkout_target', __('Matomo ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_checkout_target')); ?> |
</div> |
<br /> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_checkout2', __('Checkout2 tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_checkout2')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_checkout2_target', __('Ziel ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_checkout2_target')); ?> |
<div id="wpsg_mod_statistics_piwik_checkout2_layer" style="display: none;"> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_checkout2_target', __('Matomo ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_checkout2_target')); ?> |
</div> |
<br /> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_overview', __('Overview tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_overview')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_overview_target', __('Ziel ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_overview_target')); ?> |
<div id="wpsg_mod_statistics_piwik_overview_layer" style="display: none;"> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_overview_target', __('Matomo ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_overview_target')); ?> |
</div> |
<br /> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_piwik_done', __('Done tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_done')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_done_target', __('Ziel ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_done_target')); ?> |
<div id="wpsg_mod_statistics_piwik_done_layer" style="display: none;"> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_piwik_done_target', __('Matomo ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_piwik_done_target')); ?> |
</div> |
<div class="wpsg_clearer"></div> |
</div> |
<div role="tabpanel" class="tab-pane" id="tab3"> |
<?php |
<script> |
echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_google_active', __('Google Analytics aktivieren', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_active'), array('help' => 'wpsg_mod_statistics_google_active')); |
document.addEventListener("DOMContentLoaded", function() { |
echo wpsg_drawForm_Input('wpsg_mod_statistics_google_tracking_code', __('Tracking-Code', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_tracking_code'), array('help' => 'wpsg_mod_statistics_google_tracking_code')); |
var trackingCheckbox = document.getElementById('wpsg_mod_statistics_piwik_trackingcode'); |
var trackingDiv = document.getElementById('wpsg_mod_statistik_tracking_layer'); |
echo wpsg_drawForm_Input('wpsg_mod_statistics_google_domainname', __('Domainname', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_domainname'), array('help' => 'wpsg_mod_statistics_google_domainname')); |
var basketCheckbox = document.getElementById("wpsg_mod_statistics_piwik_basket"); |
var basketDiv = document.getElementById("wpsg_mod_statistics_piwik_basket_layer"); |
echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_google_anonymise_ip_address', __('IP Adresse anonymisieren', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_anonymise_ip_address'), array('help' => 'wpsg_mod_statistics_google_anonymise_ip_address')); |
var checkoutCheckbox = document.getElementById("wpsg_mod_statistics_piwik_checkout"); |
var checkoutDiv = document.getElementById("wpsg_mod_statistics_piwik_checkout_layer"); |
//echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_google_enable_first_touch_tracking', __('Enable First Touch Tracking', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_enable_first_touch_tracking')); |
var checkout2Checkbox = document.getElementById("wpsg_mod_statistics_piwik_checkout2"); |
var checkout2Div = document.getElementById("wpsg_mod_statistics_piwik_checkout2_layer"); |
echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_google_track_page_load_time', __('Ladegeschwindigkeit der Website erfassen', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_track_page_load_time'), array('help' => 'wpsg_mod_statistics_google_track_page_load_time')); |
var overviewCheckbox = document.getElementById("wpsg_mod_statistics_piwik_overview"); |
var overviewDiv = document.getElementById("wpsg_mod_statistics_piwik_overview_layer"); |
echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_google_opt_out', __('Google Opt Out', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_opt_out'), array('help' => 'wpsg_mod_statistics_google_opt_out')); |
var doneCheckbox = document.getElementById("wpsg_mod_statistics_piwik_done"); |
var doneDiv = document.getElementById("wpsg_mod_statistics_piwik_done_layer"); |
echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_google_enhanced_tracking_code', __('Enhanced Tacking Code', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_enhanced_tracking_code'), array('help' => 'wpsg_mod_statistics_google_enhanced_tracking_code')); |
?> |
<h3><?php echo __('Zieleinrichtung in Google Analytics', 'wpsg'); ?></h3> |
<?php |
echo wpsg_drawForm_Textstart(); |
echo wpsg_drawForm_TextEnd(__('Ziel', 'wpsg'), array('noP' => true)); |
?> |
function toggleDivVisibility(checkbox, div) |
{ |
<ul> |
<li> |
<?php |
if (checkbox.checked) div.style.display = "block"; |
else div.style.display = "none"; |
echo wpsg_drawForm_Input('wpsg_mod_statistics_google_done', __('Bestellabschluss', 'wpsg'), trim(str_replace(get_site_url(), '', $this->getURL(wpsg_ShopController::URL_BASKET).'?wpsg_done')).'=', array('text' => true)); |
} |
?> |
</li> |
</ul> |
<?php |
echo wpsg_drawForm_Textstart(); |
echo wpsg_drawForm_TextEnd(__('Trichter (optional)', 'wpsg'), array('noP' => true)); |
?> |
// Event Listener für die Checkboxen |
trackingCheckbox.addEventListener("change", function() { |
toggleDivVisibility(trackingCheckbox, trackingDiv); |
}); |
<ul> |
basketCheckbox.addEventListener("change", function() { |
toggleDivVisibility(basketCheckbox, basketDiv); |
}); |
<li><?php echo wpsg_drawForm_Input('wpsg_mod_statistics_google_basket', __('Warenkorb', 'wpsg'), trim(str_replace(get_site_url(), '', $this->getURL(wpsg_ShopController::URL_BASKET))), array('text' => true)); ?></li> |
<li><?php echo wpsg_drawForm_Input('wpsg_mod_statistics_google_checkout', __('Adresse', 'wpsg'), trim(str_replace(get_site_url(), '', $this->getURL(wpsg_ShopController::URL_CHECKOUT))).'=', array('text' => true)); ?></li> |
<li><?php echo wpsg_drawForm_Input('wpsg_mod_statistics_google_checkout2', __('Versand', 'wpsg'), trim(str_replace(get_site_url(), '', $this->getURL(wpsg_ShopController::URL_CHECKOUT2))).'=', array('text' => true)); ?></li> |
<li><?php echo wpsg_drawForm_Input('wpsg_mod_statistics_google_overview', __('Warenkorbübersicht', 'wpsg'), trim(str_replace(get_site_url(), '', $this->getURL(wpsg_ShopController::URL_OVERVIEW))).'=', array('text' => true)); ?></li> |
checkoutCheckbox.addEventListener("change", function() { |
toggleDivVisibility(checkoutCheckbox, checkoutDiv); |
}); |
</ul> |
checkout2Checkbox.addEventListener("change", function() { |
toggleDivVisibility(checkout2Checkbox, checkout2Div); |
}); |
<div class="wpsg_clearer"></div> |
overviewCheckbox.addEventListener("change", function() { |
toggleDivVisibility(overviewCheckbox, overviewDiv); |
}); |
doneCheckbox.addEventListener("change", function() { |
toggleDivVisibility(doneCheckbox, doneDiv); |
}); |
// Überprüfen und Initialisieren des Anfangszustands der Checkboxen |
toggleDivVisibility(trackingCheckbox, trackingDiv); |
toggleDivVisibility(basketCheckbox, basketDiv); |
toggleDivVisibility(checkoutCheckbox, checkoutDiv); |
toggleDivVisibility(checkout2Checkbox, checkout2Div); |
toggleDivVisibility(overviewCheckbox, overviewDiv); |
toggleDivVisibility(doneCheckbox, doneDiv); |
}); |
</script> |
<div role="tabpanel" class="tab-pane" id="tab3"> |
<br/> |
<?php echo __('Ermöglicht die Integration von "Google Analytics 4".', 'wpsg'); ?> |
<br/><br/> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_google_active', __('Trackingcode einbinden', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_active'), array('help' => 'wpsg_mod_statistics_google_active')); ?> |
<div id="wpsg_mod_statistik_google_tracking_layer" style="display:none;"> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_google_tracking_code', __('Google Tag ID', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_tracking_code'), array('help' => 'wpsg_mod_statistics_google_tracking_code')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_google_tracking_debug_mode', __('Google Debug Mode', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_tracking_debug_mode'), array('help' => 'wpsg_mod_statistics_google_tracking_debug_mode')); ?> |
</div> |
<br /> |
<div role="tabpanel" id="tab4" class="tab-pane"> |
<?php |
echo wpsg_drawForm_input('wpsg_mod_statistics_socialmedia_fb_px', __('Facebook Pixel', 'wpsg'), $this->get_option('wpsg_mod_statistics_socialmedia_fb_px'), array('help' => 'wpsg_mod_statistics_socialmedia_fb_px')); |
?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_statistics_google_ecommerce', __('Käufe (eCommerce) tracken', 'wpsg'), $this->get_option('wpsg_mod_statistics_google_ecommerce'), array('help' => 'wpsg_mod_statistics_google_ecommerce')); ?> |
<div class="wpsg_clearer"></div> |
</div> |
<div role="tabpanel" class="tab-pane" id="tab5"> |
<?php |
echo wpsg_drawForm_Input('wpsg_mod_statistics_line_chart_width', __('Liniendiagramm (Breite in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_line_chart_width'), array('help' => 'wpsg_mod_statistics_line_chart_width')); |
echo wpsg_drawForm_Input('wpsg_mod_statistics_line_chart_height', __('Liniendiagramm (Hoehe in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_line_chart_height'), array('help' => 'wpsg_mod_statistics_line_chart_height')); |
<script> |
echo wpsg_drawForm_Input('wpsg_mod_statistics_pie_chart_width', __('Kuchendiagramm (Breite in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_pie_chart_width'), array('help' => 'wpsg_mod_statistics_pie_chart_width')); |
echo wpsg_drawForm_Input('wpsg_mod_statistics_pie_chart_height', __('Kuchendiagramm (Höhe in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_pie_chart_height'), array('help' => 'wpsg_mod_statistics_pie_chart_height')); |
document.addEventListener("DOMContentLoaded", function() { |
echo wpsg_drawForm_Input('wpsg_mod_statistics_bar_chart_width', __('Balkendiagramm (Breite in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_bar_chart_width'), array('help' => 'wpsg_mod_statistics_bar_chart_width')); |
echo wpsg_drawForm_Input('wpsg_mod_statistics_bar_chart_height', __('Balkendiagramm (Höhe in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_bar_chart_height'), array('help' => 'wpsg_mod_statistics_bar_chart_height')); |
var GoogleTrackingCheckbox = document.getElementById('wpsg_mod_statistics_google_active'); |
var GoogleTrackingDiv = document.getElementById('wpsg_mod_statistik_google_tracking_layer'); |
echo wpsg_drawForm_Input('wpsg_mod_statistics_topproductcount', __('Anzeige Top-Produkte', 'wpsg'), $this->get_option('wpsg_mod_statistics_topproductcount'), array('help' => 'wpsg_mod_statistics_topproductcount')); |
function toggleGoogleDivVisibility(checkbox, div) |
{ |
echo wpsg_drawForm_Input('wpsg_mod_statistics_productinterval', __('Intervall-Zeitraum für Produktstatistik', 'wpsg'), $this->get_option('wpsg_mod_statistics_productinterval'), array('help' => 'wpsg_mod_statistics_productinterval')); |
?> |
if (checkbox.checked) div.style.display = "block"; |
else div.style.display = "none"; |
} |
// Event Listener für die Checkboxen |
GoogleTrackingCheckbox.addEventListener("change", function() { |
toggleGoogleDivVisibility(GoogleTrackingCheckbox, GoogleTrackingDiv); |
}); |
// Überprüfen und Initialisieren des Anfangszustands der Checkboxen |
toggleGoogleDivVisibility(GoogleTrackingCheckbox, GoogleTrackingDiv); |
}); |
</script> |
<!-- <div role="tabpanel" id="tab4" class="tab-pane"> |
<?php // echo wpsg_drawForm_input('wpsg_mod_statistics_socialmedia_fb_px', __('Facebook Pixel', 'wpsg'), $this->get_option('wpsg_mod_statistics_socialmedia_fb_px'), array('help' => 'wpsg_mod_statistics_socialmedia_fb_px')); ?> |
<div class="wpsg_clearer"></div> |
</div> --> |
<div role="tabpanel" class="tab-pane" id="tab5"> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_line_chart_width', __('Liniendiagramm (Breite in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_line_chart_width'), array('help' => 'wpsg_mod_statistics_line_chart_width')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_line_chart_height', __('Liniendiagramm (Hoehe in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_line_chart_height'), array('help' => 'wpsg_mod_statistics_line_chart_height')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_pie_chart_width', __('Kuchendiagramm (Breite in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_pie_chart_width'), array('help' => 'wpsg_mod_statistics_pie_chart_width')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_pie_chart_height', __('Kuchendiagramm (Höhe in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_pie_chart_height'), array('help' => 'wpsg_mod_statistics_pie_chart_height')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_bar_chart_width', __('Balkendiagramm (Breite in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_bar_chart_width'), array('help' => 'wpsg_mod_statistics_bar_chart_width')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_bar_chart_height', __('Balkendiagramm (Höhe in px)', 'wpsg'), $this->get_option('wpsg_mod_statistics_bar_chart_height'), array('help' => 'wpsg_mod_statistics_bar_chart_height')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_topproductcount', __('Anzeige Top-Produkte', 'wpsg'), $this->get_option('wpsg_mod_statistics_topproductcount'), array('help' => 'wpsg_mod_statistics_topproductcount')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_statistics_productinterval', __('Intervall-Zeitraum für Produktstatistik', 'wpsg'), $this->get_option('wpsg_mod_statistics_productinterval'), array('help' => 'wpsg_mod_statistics_productinterval')); ?> |
<div class="wpsg_clearer"></div> |
</div> |
</div> |
/mods/mod_klarna/order_view_afterpayment.phtml |
---|
0,0 → 1,31 |
<?php |
declare(strict_types=1); |
/** |
* @author: daniel |
* @date: 04.03.24 |
* @time: 16:38 |
*/ |
namespace wpsgKlarna; |
$oOrder = \wpsg_order::getInstance(intval($this->view['data']['id'])); |
$client_token = $oOrder->getMeta('wpsg_mod_klarna_client_token', false, ''); |
$session_id = $oOrder->getMeta('wpsg_mod_klarna_session_id', false, ''); |
$authorization_token = $oOrder->getMeta('wpsg_mod_klarna_authorization_token', false, ''); |
$klarna_order_id = $oOrder->getMeta('wpsg_mod_klarna_order_id', false, ''); |
$capture_id = $oOrder->getMeta('wpsg_mod_klarna_capture_id', false, ''); |
?> |
<br /> |
<?php if ($client_token !== '') { echo wpsg_drawForm_Input('', __('Klarna ClientToken', 'wpsg'), $client_token, ['readonly' => true]); } ?> |
<?php if ($session_id !== '') { echo wpsg_drawForm_Input('', __('Klarna SessionID', 'wpsg'), $session_id, ['readonly' => true]); } ?> |
<?php if ($authorization_token !== '') { echo wpsg_drawForm_Input('', __('Klarna AuthorizationToken', 'wpsg'), $authorization_token, ['readonly' => true]); } ?> |
<?php if ($klarna_order_id !== '') { echo wpsg_drawForm_Input('', __('Klarna OrderId', 'wpsg'), $klarna_order_id, ['readonly' => true]); } ?> |
<?php if ($capture_id !== '') { echo wpsg_drawForm_Input('', __('Klarna CaptureId', 'wpsg'), $capture_id, ['readonly' => true]); } ?> |
/mods/mod_klarna/pay.phtml |
---|
0,0 → 1,114 |
<?php |
declare(strict_types=1); |
/** |
* @author: daniel |
* @date: 05.03.24 |
* @time: 07:20 |
*/ |
namespace wpsgKlarna; |
$view = $this->view['wpsg_mod_klarna']; |
/** @var \wpsg_order $oOrder */ |
$oOrder = $view['oOrder']; |
$authorize_arg = [ |
'billing_address' => [ |
'given_name' => $oOrder->getInvoiceFirstName(), |
'family_name' => $oOrder->getInvoiceName(), |
'email' => $oOrder->getCustomer()->getEMail(), |
'street_address' => $oOrder->getInvoiceStreet(), |
'postal_code' => $oOrder->getInvoiceZip(), |
'city' => $oOrder->getInvoiceCity(), |
] |
]; |
?> |
<script> |
window.klarnaAsyncCallback = () => { |
const el_pppl_loading_blocker = document.getElementById('pppl_loading_blocker'); |
Klarna.Payments.init({ |
client_token: '<?php echo $view['client_token']; ?>' |
}); |
Klarna.Payments.load({ |
container: '#wpsg_mod_klarna_widget' |
}, { |
}, function (res) { |
console.log(res); |
}); |
document.getElementById('<?php echo $view['button_id']; ?>').addEventListener('click', (event) => { |
event.preventDefault(); |
if (el_pppl_loading_blocker) el_pppl_loading_blocker.style.display = 'block'; |
Klarna.Payments.authorize( |
{}, {}, |
function(res) { |
console.log(res); |
if (res.authorization_token) { |
try { |
fetch('<?php echo $view['url_setAuthToken']; ?>', { |
method: 'POST', |
headers: { |
"Content-Type": "application/json" |
}, |
body: JSON.stringify({ |
'authorization_token': res.authorization_token |
}) |
}).then(response => { |
return response.json(); |
}).then(data => { |
if (data.success) { |
location.href = data.href; |
} else throw Error(); |
}).catch(e => { |
if (el_pppl_loading_blocker) el_pppl_loading_blocker.style.display = 'none'; |
}); |
} catch (error) { |
if (el_pppl_loading_blocker) el_pppl_loading_blocker.style.display = 'none'; |
} |
} else { |
if (el_pppl_loading_blocker) el_pppl_loading_blocker.style.display = 'none'; |
} |
} |
); |
}); |
}; |
</script> |
<script src="https://x.klarnacdn.net/kp/lib/v1/api.js" async></script> |
/mods/mod_klarna/settings_edit.phtml |
---|
1,25 → 1,58 |
<?php |
declare(strict_types=1); |
/** |
* Template für die Einstellungen des Klarna Moduls |
* @author: daniel |
* @date: 04.03.24 |
* @time: 11:56 |
*/ |
namespace wpsgKlarna; |
?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_klarna_bezeichnung', __('Bezeichnung', 'wpsg'), $this->get_option('wpsg_mod_klarna_bezeichnung'), array('help' => 'wpsg_mod_klarna_bezeichnung')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_klarna_aktiv', __('Aktiv', 'wpsg'), $this->get_option('wpsg_mod_klarna_aktiv'), array('help' => 'wpsg_mod_klarna_aktiv')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_klarna_aktiv_from', __('Aktiv ab Betrag', 'wpsg'), $this->get_option('wpsg_mod_klarna_aktiv_from'), array('help' => 'wpsg_mod_klarna_aktiv_from')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_klarna_aktiv_to', __('Aktiv bis Betrag', 'wpsg'), $this->get_option('wpsg_mod_klarna_aktiv_to'), array('help' => 'wpsg_mod_klarna_aktiv_to')); ?> |
<?php echo wpsg_drawForm_Textarea('wpsg_mod_klarna_hint', __('Hinweistext', 'wpsg'), $this->get_option('wpsg_mod_klarna_hint'), array('help' => 'wpsg_mod_klarna_hint')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_klarna_active', __('Zahlungsart für neue Bestellungen aktiv', 'wpsg'), $this->get_option('wpsg_mod_klarna_active'), ['help' => 'wpsg_mod_klarna_active']); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_klarna_admin_active', __('Zahlungsart nur für Admins aktiv', 'wpsgPayone'), $this->get_option('wpsg_mod_klarna_admin_active'), ['help' => 'wpsg_mod_klarna_admin_active']); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_klarna_api_user', __('API Benutzername', 'wpsg'), $this->get_option('wpsg_mod_klarna_api_user'), ['help' => 'wpsg_mod_klarna_api_user']); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_klarna_api_password', __('API Passwort', 'wpsg'), $this->get_option('wpsg_mod_klarna_api_password'), ['help' => 'wpsg_mod_klarna_api_password']); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_klarna_sandbox', __('Sandbox Modus', 'wpsg'), $this->get_option('wpsg_mod_klarna_sandbox'), ['help' => 'wpsg_mod_klarna_sandbox']); ?> |
<div id="wpsg_mod_klarna_sandbox_layer"> |
<?php echo wpsg_drawForm_Input('wpsg_mod_klarna_sandbox_user', __('(Sandbox) API Benutzername', 'wpsg'), $this->get_option('wpsg_mod_klarna_sandbox_user'), ['help' => 'wpsg_mod_klarna_sandbox_user']); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_klarna_sandbox_password', __('(Sandbox) API Passwort', 'wpsg'), $this->get_option('wpsg_mod_klarna_sandbox_password'), ['help' => 'wpsg_mod_klarna_sandbox_password']); ?> |
</div> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_klarna_debug', __('API Anfragen im Bestellprotokoll protokollieren', 'wpsg'), $this->get_option('wpsg_mod_klarna_debug'), ['help' => 'wpsg_mod_klarna_debug']); ?> |
<br /> |
<?php echo wpsg_drawForm_Input('wpsg_mod_klarna_merchantID', __('Händler ID (Merchant ID)', 'wpsg'), $this->get_option('wpsg_mod_klarna_merchantID'), array('help' => 'wpsg_mod_klarna_merchantID')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_klarna_sharedSecret', __('Geheimnis', 'wpsg'), $this->get_option('wpsg_mod_klarna_sharedSecret'), array('help' => 'wpsg_mod_klarna_sharedSecret')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_klarna_checkout', __('Zahlungen im Checkout vorauthorisieren', 'wpsg'), $this->get_option('wpsg_mod_klarna_checkout'), array('help' => 'wpsg_mod_klarna_checkout')); ?> |
<br /> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_klarna_sandbox', __('Sandboxmodus', 'wpsg'), $this->get_option('wpsg_mod_klarna_sandbox'), array('help' => 'wpsg_mod_klarna_sandbox')); ?> |
<script> |
const el_wpsg_mod_klarna_sandbox = document.getElementById('wpsg_mod_klarna_sandbox'); |
const el_wpsg_mod_klarna_sandbox_layer = document.getElementById('wpsg_mod_klarna_sandbox_layer'); |
el_wpsg_mod_klarna_sandbox.addEventListener('change', (event) => { |
if (event.target.checked) el_wpsg_mod_klarna_sandbox_layer.style.display = 'block'; |
else el_wpsg_mod_klarna_sandbox_layer.style.display = 'none'; |
}); |
el_wpsg_mod_klarna_sandbox.dispatchEvent(new Event('change')); |
</script> |
<br /> |
<?php echo wpsg_drawForm_Input('wpsg_mod_klarna_gebuehr', __('Gebühr', 'wpsg'), wpsg_ff($this->get_option('wpsg_mod_klarna_gebuehr'), true), array('help' => 'wpsg_mod_klarna_gebuehr','unit' => $this->get_option('wpsg_currency').' / %')); ?> |
<?php echo wpsg_drawForm_Select('wpsg_mod_klarna_mwst', __('Mehrwertsteuersatz', 'wpsg'), wpsg_tax_groups(), $this->get_option('wpsg_mod_klarna_mwst'), array('help' => 'wpsg_mod_klarna_mwst')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_klarna_mwstland', __('Keine MwSt. wenn Land steuerfrei', 'wpsg'), $this->get_option('wpsg_mod_klarna_mwstland'), array('help' => 'wpsg_mod_klarna_mwstland')); ?> |
<br /> |
<?php echo wpsg_drawForm_Select('wpsg_mod_klarna_success', __('Erfolgsseite', 'wpsg'), $this->view['pages'], $this->get_option('wpsg_mod_klarna_success'), array('help' => 'wpsg_mod_klarna_success')); ?> |
<?php echo wpsg_drawForm_Select('wpsg_mod_klarna_error', __('Fehlerseite', 'wpsg'), $this->view['pages'], $this->get_option('wpsg_mod_klarna_error'), array('help' => 'wpsg_mod_klarna_error')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_klarna_fee', __('Gebühr', 'wpsg'), wpsg_ff($this->get_option('wpsg_mod_klarna_fee'), true), array('help' => 'wpsg_mod_klarna_fee','unit' => $this->get_option('wpsg_currency').' / %')); ?> |
<?php echo wpsg_drawForm_Select('wpsg_mod_klarna_tax_key', __('Mehrwertsteuersatz', 'wpsg'), wpsg_tax_groups(), $this->get_option('wpsg_mod_klarna_tax_key'), array('help' => 'wpsg_mod_klarna_tax_key')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_klarna_notaxcountry', __('Keine MwSt. wenn Land steuerfrei', 'wpsg'), $this->get_option('wpsg_mod_klarna_notaxcountry'), array('help' => 'wpsg_mod_klarna_notaxcountry')); ?> |
<?php echo wpsg_drawForm_Textarea('wpsg_mod_klarna_hint', __('Hinweistext', 'wpsg'), $this->get_option('wpsg_mod_klarna_hint'), array('help' => 'wpsg_mod_klarna_hint')); ?> |
/mods/mod_stock/product_addedit_content.phtml |
---|
4,6 → 4,9 |
* Template für die Integration des Lagerbestandes in die Produktverwaltung |
*/ |
/** @var wpsg_product $oProduct */ |
$oProduct = $this->view['oProduct']; |
?> |
<?php echo wpsg_drawForm_AdminboxStart(__('Lagerbestand', 'wpsg')); ?> |
25,8 → 28,32 |
<br /> |
<div class="info"><?php echo __('Lagerbestand = Bestand(Variante 1) + Bestand(Variante 2) + Bestand(Variante X)','wpsg'); ?></div> |
<?php if ($this->hasMod('wpsg_mod_productvariants')) { ?> |
<?php echo wpsg_drawForm_Select('meta[wpsg_vp_product_stock_nocalc]', __('Produktbestand nach Kauf', 'wpsg'), [ |
'0' => wpsg_translate( |
__('Voreinstellung (#1#)', 'wpsg'), |
(($this->get_option('wpsg_vp_product_stock_nocalc') === '1')?'nicht berechnen':'berechnen') |
), |
'2' => __('berechnen'), |
'1' => __('nicht berechnen') |
], $oProduct->getMeta('wpsg_vp_product_stock_nocalc'), [ |
'hint' => __('Ist hier "berechnen" eingestellt, wird beim Ändern des Bestandes einer Variante der Bestand im Produkt aus den Varianten ermittelt. (Lagerbestand im Produkt = Bestand(Variante 1) + Bestand(Variante 2) + ... )', 'wpsg') |
]); ?> |
<?php echo wpsg_drawForm_Select('meta[wpsg_vp_product_stock_varinotchange]', __('Produktbestand in Varianten nicht verringern', 'wpsg'), [ |
'0' => wpsg_translate( |
__('Voreinstellung (#1#)', 'wpsg'), |
(($this->get_option('wpsg_vp_product_stock_varinotchange') === '1')?'nicht verringern':'verringern') |
), |
'2' => __('verringern'), |
'1' => __('nicht verringern') |
], $oProduct->getMeta('wpsg_vp_product_stock_varinotchange'), [ |
'hint' => __('Ist hier "nicht verringern" aktiviert, so wird der Bestand in der Variante beim Kauf nicht reduziert.', 'wpsg') |
]); ?> |
<?php } ?> |
<?php /* Mailbenachrichtigung beim Erreichen des Minimalbestandes des Produktes */ ?> |
<?php if ($this->get_option('wpsg_mod_stock_minstockproduct') == '1') { ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_minstockproduct', __('Mindestlagerbestand', 'wpsg'), wpsg_getStr($this->view['data']['minstockproduct_count'])); ?> |
/mods/mod_productvariants/settings_edit.phtml |
---|
22,7 → 22,14 |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_productvariants_price', __('Preis der Variation direkt anzeigen'), $this->get_option('wpsg_mod_productvariants_price')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_vp_detailview', __('Erweiterte Variantenanzeige aktivieren', 'wpsg'), $this->get_option('wpsg_vp_detailview'), array('help' => 'wpsg_vp_detailview')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_vp_replaceanr', __('Produktartikelnummer ersetzen', 'wpsg'), $this->get_option('wpsg_vp_replaceanr'), array('hint' => __('Ersetzt die Produktartikelnummer durch die zusammengesetzte Artikelnummern der Varianten.', 'wpsg'), 'help' => 'wpsg_vp_replaceanr')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_vp_product_stock_nocalc', __('Produktbestand nach Kauf nicht berechnen', 'wpsg'), $this->get_option('wpsg_vp_product_stock_nocalc'), [ |
'hint' => __('Ist diese Option aktiv, so bildet sich der Bestand im Produkt bei Variantenprodukten nicht aus den Varianten neu sondern wird einfach reduziert.', 'wpsg'), 'help' => 'wpsg_vp_product_stock_nocalc' |
]); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_vp_product_stock_varinotchange', __('Produktbestand in Varianten nicht verringern', 'wpsg'), $this->get_option('wpsg_vp_product_stock_varinotchange'), [ |
'hint' => __('Ist diese Option aktiv, so wird bei Kauf der Bestand in den Varianten nicht verringert.', 'wpsg'), 'help' => 'wpsg_vp_product_stock_varinotchange' |
]); ?> |
</div> |
</div> |
/mods/mod_productvariants/produkt_addedit_content.phtml |
---|
1,19 → 1,411 |
<?php |
declare(strict_types=1); |
/** |
* Template für die Verwaltung der Produktvarianten innerhalb des Produktes |
* @author: Daniel Schmitzer (daschmi@daschmi.de) |
* @date: 20.04.23 |
* @time: 11:30 |
*/ |
namespace wpsg; |
?> |
<?php if (!wpsg_isSizedInt($this->view['data']['id'])) { ?> |
<p><?php echo __('Bitte speichern Sie das Produkt zuerst.', 'wpsg'); ?></p> |
<?php } else { |
/** @var \wpsg_product $oProduct */ |
$oProduct = \wpsg_product::getInstance(intval($this->view['data']['id'])); |
?> |
<?php echo wpsg_drawForm_AdminboxStart(__('Produktvarianten', 'wpsg')); ?> |
<?php if (wpsg_isSizedInt($this->view['data']['id'])) { ?> |
<?php echo $this->view['wpsg_mod_productvariants']['html']; ?> |
<a href="<?php echo WPSG_URL_WP; ?>wp-admin/admin.php?page=wpsg-Admin&action=module&modul=wpsg_mod_productvariants"><span class="wpsg-glyphicon glyphicon glyphicon-wrench"></span><?php echo __('Zur Konfiguration der Produktvarianten', 'wpsg'); ?></a> |
<script type="text/javascript">/* <![CDATA[ */ |
<?php echo wpsg_drawForm_AdminboxEnd(); ?> |
<div id="wpsg_mod_productvars_combination"> |
<div v-if="loading" class="loading_layer"> |
<img class="loading" src="<?php echo WPSG_URL; ?>views/gfx/ajax-loader.gif" alt="<?php echo __('Bitte warten ...', 'wpsg'); ?>" /> |
</div> |
<div class="inner"> |
<div class="top_filter"> |
<div v-for="(variant, i) of arVariationen"> |
<select v-model="arFilter[i]"> |
<option :value="0">{{getVariantLabel(i)}} [ Alle ]</option> |
<option :value="parseInt(variation)" v-for="(variation, j) of variant">{{getVariantLabel(i)}} [{{getVariationLabel(variation)}}]</option> |
</select> |
</div> |
</div> |
<div v-for="(combination, i) of arPossibleKeysFiltered" class="relative"> |
<div class="panel panel-default"> |
<div class="panel-heading clearfix"> |
<h3 class="panel-title"> |
{{combination.label}} |
<div class="right"> |
<a :href="combination.url" target="_blank" class="url" title="<?php echo __('Produktvariante im Frontend ansehen', 'wpsg'); ?>"> |
<span class="glyphicon glyphicon-new-window"></span> |
</a> |
<span v-if="combination.id > 0" class="glyphicon glyphicon-pencil" @click.prevent="edit(combination)"></span> |
<span v-else class="glyphicon glyphicon-plus" @click.prevent="add(combination)"></span> |
</div> |
</h3> |
</div> |
<div class="panel-body" v-if="combination.loaded"> |
<div v-if="combination.loading" class="loading_layer"> |
<img class="loading" src="<?php echo WPSG_URL; ?>views/gfx/ajax-loader.gif" alt="<?php echo __('Bitte warten ...', 'wpsg'); ?>" /> |
</div> |
<div class="form-group form-group-sm "> |
<label class="col-sm-6 control-label" for="name">Produktname</label> |
<div class="col-sm-6"> |
<div class="wpsg_field_wrap"> |
<input type="text" |
@keydown.enter.prevent |
class="form-control input-sm " autocomplete="off" placeholder="" v-model="combination.name" /> |
</div> |
</div> |
<div class="clearfix wpsg_clear"></div> |
</div> |
<div class="form-group form-group-sm "> |
<label class="col-sm-6 control-label" for="detailname">Produktname (Detail)</label> |
<div class="col-sm-6"> |
<div class="wpsg_field_wrap"> |
<input type="text" |
@keydown.enter.prevent |
class="form-control input-sm " autocomplete="off" placeholder="" v-model="combination.detailname" /> |
</div> |
</div> |
<div class="clearfix wpsg_clear"></div> |
</div> |
<div class="form-group form-group-sm "> |
<label class="col-sm-6 control-label" for="anr">Artikelnummer</label> |
<div class="col-sm-6"> |
<div class="wpsg_field_wrap"> |
<input type="text" |
@keydown.enter.prevent |
class="form-control input-sm" autocomplete="off" placeholder="" v-model="combination.anr" /> |
</div> |
</div> |
<div class="clearfix wpsg_clear"></div> |
</div> |
<!-- Productcodes --> |
<template v-if="codeKeyNotSet(combination).length > 0"> |
<div class="form-group form-group-sm has-feedback"> |
<label class="col-sm-6 control-label" for="metaean">Code hinzufügen</label> |
<div class="col-sm-6"> |
<div class="wpsg_field_wrap"> |
<select class="form-control input-sm" v-model="combination.add_code_key"> |
<option v-for="(code_key, i) of codeKeyNotSet(combination)" :value="code_key">{{combination.arProductCodes[code_key].label}}</option> |
</select> |
<a @click.stop.prevent="codeKeyAdd(combination)" href="#" class="glyphicon glyphicon glyphicon-plus form-control-feedback" aria-hidden="true" style="pointer-events: auto;"></a> |
</div> |
</div> |
<div class="clearfix wpsg_clear"></div> |
</div> |
<hr /> |
</template> |
<div class="code_wrap"> |
<template v-for="(code, i) of combination.arProductCodes"> |
<div class="form-group form-group-sm has-feedback" v-if="code.set === true"> |
<label class="col-sm-6 control-label" for="metaean">{{code.label}}</label> |
<div class="col-sm-6"> |
<div class="wpsg_field_wrap"> |
<input type="text" class="form-control input-sm" v-model="code.code" |
@keydown.enter.prevent |
/> |
<a @click.stop.prevent="codeKeyRemove(combination, code.code_key)" href="#" class="glyphicon glyphicon glyphicon-trash form-control-feedback" aria-hidden="true" style="pointer-events: auto;"></a> |
</div> |
</div> |
<div class="clearfix wpsg_clear"></div> |
</div> |
</template> |
</div> |
<!--<pre>{{combination}}</pre>--> |
<div class="mt-8 flex w-full justify-end"> |
<input type="submit" @click.prevent="save(combination)" class="button button-primary" value="speichern" /> |
</div> |
</div> |
</div> |
</div> |
</div> |
</div> |
<script type="module"> |
import { ref, createApp, onMounted, computed } from '<?php echo plugin_dir_url(__FILE__); ?>/../../../js/vue.esm-browser.js'; |
document.addEventListener('DOMContentLoaded', () => { |
const app = createApp({ |
setup() { |
const product_id = ref(<?php echo $oProduct->getId(); ?>); |
const loading = ref(true); |
const arFilter = ref(undefined); |
const arPossibleKeys = ref(undefined); |
const arVariant = ref(undefined); |
const arVariantLabel = ref(undefined); |
const arVariationen = ref(undefined); |
const arVariationLabel = ref(undefined); |
const arPossibleKeysFiltered = computed(() => { |
let r = []; |
if (!arPossibleKeys.value) return r; |
for (let var_key of arPossibleKeys.value) { |
const arKey = var_key.var_key.split('|'); |
const typedKey = {}; |
for (let i of arKey) { |
const [var_id, vari_id] = i.split(':'); |
typedKey[var_id] = parseInt(vari_id); |
} |
let set = true; |
for (let f in arFilter.value) { |
if (arFilter.value[f] !== 0 && typedKey[f] !== arFilter.value[f]) { |
set = false; |
break; |
} |
} |
if (set) r.push(var_key); |
} |
return r; |
}); |
const getVariantLabel = (var_id) => { |
if (arVariantLabel.value[var_id.toString()] !== undefined) return arVariantLabel.value[var_id.toString()]; |
else ''; |
}; |
const getVariationLabel = (var_id) => { |
if (arVariationLabel.value[var_id.toString()] !== undefined) return arVariationLabel.value[var_id.toString()]; |
else ''; |
}; |
const xhr = (action_do, data, cb_success) => { |
const request = new XMLHttpRequest(); |
data.action_do = action_do; |
request.open('POST', '<?php echo WPSG_URL_WP; ?>wp-admin/?page=wpsg-Admin&action=module&modul=wpsg_mod_productvariants&subaction=combination&noheader=1', true); |
request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); |
request.onload = () => { |
if (request.status >= 200 && request.status < 400) { |
const response = JSON.parse(request.responseText); |
cb_success(response); |
} else { |
console.error('Error: ' + request.statusText); |
} |
}; |
request.onerror = function () { |
console.error('Error: ' + request.statusText); |
}; |
request.send(JSON.stringify(data)); |
}; |
const save = (combination) => { |
xhr('save', { |
var_key: combination.var_key, |
product_id: combination.product_id, |
combination: combination |
}, (response) => { |
for (let i = 0; i < arPossibleKeys.value.length; i++) { |
const var_key = arPossibleKeys.value[i]; |
if (var_key.var_key === response.combination.var_key) { |
arPossibleKeys.value[i] = response.combination; |
} |
} |
}); |
combination.loading = true; |
} |
const updateCombinationData = () => { |
xhr('getCombination', { |
product_id: product_id.value |
}, (response) => { |
arFilter.value = response.arFilter; |
arPossibleKeys.value = response.arPossibleKeys; |
arVariant.value = response.arVariant; |
arVariantLabel.value = response.arVariantLabel; |
arVariationen.value = response.arVariationen; |
arVariationLabel.value = response.arVariationLabel; |
loading.value = false; |
}); |
}; |
const add = (combination) => { |
combination.loaded = true; |
combination.loading = true; |
xhr('add', { |
var_key: combination.var_key, |
product_id: product_id.value |
}, (response) => { |
for (let i = 0; i < arPossibleKeys.value.length; i++) { |
const var_key = arPossibleKeys.value[i]; |
if (var_key.var_key === response.combination.var_key) { |
arPossibleKeys.value[i] = response.combination; |
} |
} |
}); |
}; |
const edit = (combination) => { |
combination.loaded = true; |
combination.loading = true; |
xhr('edit', { |
var_key: combination.var_key, |
product_id: product_id.value |
}, (response) => { |
for (let i = 0; i < arPossibleKeys.value.length; i++) { |
const var_key = arPossibleKeys.value[i]; |
if (var_key.var_key === response.combination.var_key) { |
arPossibleKeys.value[i] = response.combination; |
} |
} |
}); |
}; |
const codeKeyNotSet = (combination) => { |
let r = []; |
for (let code_key in combination.arProductCodes) { |
if (combination.arProductCodes[code_key].set !== true) r.push(code_key); |
} |
return r; |
}; |
const codeKeyAdd = (combination) => { |
const add_code_key = combination.add_code_key; |
if (add_code_key !== undefined && codeKeyNotSet(combination).includes(add_code_key)) { |
combination.arProductCodes[add_code_key].set = true; |
combination.add_code_key = undefined; |
} |
}; |
const codeKeyRemove = (combination, code_key_remove) => { |
combination.arProductCodes[code_key_remove].set = false; |
} |
onMounted(() => { |
// updateCombinationData(); |
}); |
return { |
arFilter, |
arPossibleKeys, |
arVariant, |
arVariantLabel, |
arVariationen, |
arVariationLabel, |
product_id, |
loading, |
getVariantLabel, |
getVariationLabel, |
codeKeyNotSet, codeKeyAdd, codeKeyRemove, |
arPossibleKeysFiltered, |
add, |
edit, |
save, |
updateCombinationData |
}; |
} |
}).mount('#wpsg_mod_productvars_combination'); |
window.wpsg_mod_productvariants = app; |
jQuery(document).ready(function() { |
wpsg_mod_productvariants_show(<?php echo $this->view['data']['id']; ?>); |
20,14 → 412,28 |
} ); |
/* ]]> */</script> |
}); |
<?php } else { ?> |
</script> |
<p><?php echo __('Bitte speichern Sie das Produkt zuerst.', 'wpsg'); ?></p> |
<style> |
<?php } ?> |
#wpsg_mod_productvars_combination { width:100%; position:relative; } |
#wpsg_mod_productvars_combination .top_filter { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); row-gap:1rem; column-gap:1rem; margin-bottom:2rem; } |
#wpsg_mod_productvars_combination .top_filter select { width:100%; } |
#wpsg_mod_productvars_combination .panel-title { display:flex; justify-content:space-between; align-items:center; } |
#wpsg_mod_productvars_combination .panel-title a.url { color:inherit; margin-right:1rem; display:inline-block; } |
#wpsg_mod_productvars_combination .panel-title .glyphicon { cursor:pointer; } |
#wpsg_mod_productvars_combination .panel { margin-bottom:10px; } |
#wpsg_mod_productvars_combination .loading_layer { z-index:10; position:absolute; left:0; top:0; width:100%; height:100%; background-color:rgba(255, 255, 255, 0.5); display:flex; justify-content:center; align-items:center; } |
#wpsg_mod_productvars_combination > .inner { min-height:50px; width:100%; } |
#wpsg_mod_productvars_combination .flex { display:flex; } |
#wpsg_mod_productvars_combination .w-full { width:100%; } |
#wpsg_mod_productvars_combination .justify-end { justify-content:flex-end; } |
#wpsg_mod_productvars_combination .mt-4 { margin-top:1rem; } |
#wpsg_mod_productvars_combination .relative { position:relative; } |
#wpsg_mod_productvars_combination .mt-8 { margin-top:2rem; } |
<a href="<?php echo WPSG_URL_WP; ?>wp-admin/admin.php?page=wpsg-Admin&action=module&modul=wpsg_mod_productvariants"><span class="wpsg-glyphicon glyphicon glyphicon-wrench"></span><?php echo __('Zur Konfiguration der Produktvarianten', 'wpsg'); ?></a> |
</style> |
<?php echo wpsg_drawForm_AdminboxEnd(); ?> |
<?php } |
/mods/mod_productvariants/admin_html.phtml |
---|
210,8 → 210,7 |
} |
function wpsg_mod_productvariants_back() |
{ |
function wpsg_mod_productvariants_back() { |
var product_id = jQuery('#wpsg_mod_productvariants_product_id').val(); |
234,6 → 233,8 |
jQuery('#wpsg_mod_productvariants_dialog .modal-body').html(data); |
if (window.wpsg_mod_productvariants) window.wpsg_mod_productvariants.updateCombinationData(); |
} |
} ); |
241,8 → 242,7 |
} // function wpsg_mod_productvariants_back() |
function wpsg_mod_productvariants_show(product_id) |
{ |
function wpsg_mod_productvariants_show(product_id) { |
jQuery('#wpsg_mod_productvariants_dialog button').prop('disabled', true); |
jQuery('#wpsg_mod_productvariants_dialog .modal-body').html('<img src="<?php echo WPSG_URL; ?>views/gfx/ajax-loader.gif" alt="<?php echo __('Bitte warten ...', 'wpsg'); ?>" />'); |
261,11 → 261,13 |
jQuery('#wpsg_mod_productvariants_dialog .modal-body').html(data); |
jQuery('#wpsg_mod_productvariants_dialog button').prop('disabled', false); |
if (window.wpsg_mod_productvariants) window.wpsg_mod_productvariants.updateCombinationData(); |
} |
} ); |
return false; |
} // function wpsg_mod_productvariants_show() |
} |
</script> |
/mods/mod_paypalapi/checkout2_inner_prebutton.phtml |
---|
0,0 → 1,60 |
<?php |
declare(strict_types=1); |
/** |
* @author: daniel |
* @date: 09.06.24 |
* @time: 12:04 |
*/ |
namespace wpsg; |
?> |
<?php echo GiroPayPalAPI::getInstance()->integrateSDK(); ?> |
<script> |
paypal.PaymentFields({ |
fundingSource: paypal.FUNDING.GIROPAY, |
style: { |
variables: {}, |
rules: {}, |
}, |
onInit: (data, actions) => { |
const form = document.querySelector("form#wpsg_checkout_form"); |
form.addEventListener("submit", (e) => { |
const formData = new FormData(form); |
const paymentSource = formData.get("wpsg[checkout][payment]"); |
if (paymentSource === '10_1') { |
e.preventDefault(); |
actions.validate().then((valid) => { |
if (valid) { |
window.location.href = '<?php echo $this->getUrl(\wpsg_ShopController::URL_BASKET, 'wpsg_mod_paypalapi', 'giroPaySet', [], true); ?>'; |
} |
}); |
} |
}); |
}, |
fields: { |
name: { |
value: "<?php echo ($_SESSION['wpsg']['checkout']['vname']??'').' '.($_SESSION['wpsg']['checkout']['name']??''); ?>" |
}, |
}, |
}).render("#giropay-container"); |
</script> |
/mods/mod_paypalapi/order_done_giropay.phtml |
---|
0,0 → 1,80 |
<?php |
declare(strict_types=1); |
/** |
* @author: daniel |
* @date: 13.06.24 |
* @time: 14:59 |
*/ |
namespace wpsg; |
$client_id = $this->view['clientId']??null; |
?> |
<?php if ($client_id !== null) { ?> |
<p><?php echo __('Die Bestellung ist bei uns eingegangen, bitte begleichen Sie den offenen Betrag mit giroPAy über folgenden Button.', 'wpsg'); ?></p> |
<script src="https://sandbox.paypal.com/sdk/js?client-id=<?php echo $client_id; ?>&components=buttons,payment-fields,marks,funding-eligibility&enable-funding=giropay¤cy=EUR"></script> |
<div id="giropay-btn"></div> |
<script> |
paypal.Buttons({ |
fundingSource: paypal.FUNDING.GIROPAY, |
style: { |
label: "pay", |
}, |
createOrder() { |
return fetch('<?php echo $this->getUrl(\wpsg_ShopController::URL_BASKET, 'wpsg_mod_paypalapi', 'giroPayCreateOrder', [ |
'order_id' => intval($_REQUEST['order_id']) |
], true); ?>', { |
method: "POST", |
headers: { |
"Content-Type": "application/json", |
}, |
body: null, |
}) |
.then((response) => response.json()) |
.then((order) => order.id); |
}, |
onApprove(data) { |
console.log('onApprove'); |
return fetch('<?php echo $this->getUrl(\wpsg_ShopController::URL_BASKET, 'wpsg_mod_paypalapi', 'giroPayApproveOrder', [], true); ?>', { |
method: "POST", |
headers: { |
"Content-Type": "application/json", |
}, |
body: JSON.stringify({ |
orderID: data.orderID |
}) |
}) |
.then((response) => response.json()) |
.then((orderData) => { |
//console.log('Capture result', orderData, JSON.stringify(orderData, null, 2)); |
//const transaction = orderData.purchase_units[0].payments.captures[0]; |
//console.log('Transaction Status:', transaction.status); |
//console.log('Transaction ID:', transaction.id); |
location.reload(); |
}); |
}, |
onCancel(data, actions) { console.log(`Order Canceled - ID: ${data.orderID}`); }, |
onError(err) { console.error(err); } |
}).render("#giropay-btn"); |
</script> |
<?php } else { ?> |
<p><?php echo __('Den Betrag haben wir mittels GiroPay dankend erhalten.', 'wpsg'); ?></p> |
<?php } |
/mods/mod_paypal/settings_edit.phtml |
---|
60,6 → 60,7 |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_paypal_sandbox', __('Sandbox Modus', 'wpsg'), $this->get_option('wpsg_mod_paypal_sandbox'), array('help' => 'wpsg_mod_paypal_sandbox')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_paypal_subject', __('Betreff der Überweisung', 'wpsg'), $this->get_option('wpsg_mod_paypal_subject'), array('help' => 'wpsg_mod_paypal_subject')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_paypal_invoicenumber', __('Formatierung InvoiceNumber', 'wpsg'), $this->get_option('wpsg_mod_paypal_invoicenumber'), array('help' => 'wpsg_mod_paypal_invoicenumber')); ?> |
<br /> |
/mods/mod_gutschein/index.phtml |
---|
101,6 → 101,8 |
<span class="edit"><a title="<?php echo __("Diesen Gutschein bearbeiten", "wpsg"); ?>" href="#" class="wpsg_voucher_edit" onclick="return false;" data-voucher_id="<?php echo $oVoucher->getId(); ?>"><?php echo __("Bearbeiten", "wpsg"); ?></a></span> |
| |
<span class="delete"><a onclick="return confirm('<?php echo __('Sind Sie sich sicher, dass Sie diesen Gutschein löschen möchten?', 'wpsg'); ?>');" title="<?php echo __('Diese Gutschein löschen', 'wpsg'); ?>" href="<?php echo WPSG_URL_WP; ?>wp-admin/admin.php?page=wpsg-Admin&action=module&modul=wpsg_mod_gutschein&subaction=delete&noheader=1&voucher_id=<?php echo $oVoucher->getId(); ?>"><?php echo __('Löschen', 'wpsg'); ?></a></span> |
| |
<span><a title="<?php echo __('Bestellungen anzeigen', 'wpsg'); ?>" href="<?php echo WPSG_URL_WP; ?>wp-admin/admin.php?page=wpsg-Order&filter[status]=-1&filter[voucher_id]=<?php echo $oVoucher->getId(); ?>"><?php echo __('Bestellungen suchen', 'wpsg'); ?></a></span> |
</div> |
</td> |
/mods/mod_prepayment/settings_edit.phtml |
---|
22,4 → 22,3 |
<?php echo wpsg_drawForm_Input('wpsg_mod_prepayment_bank', __('Bank', 'wpsg'), $this->get_option('wpsg_mod_prepayment_bank'), array('help' => 'wpsg_mod_prepayment_bank')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_prepayment_iban', __('IBAN', 'wpsg'), $this->get_option('wpsg_mod_prepayment_iban'), array('help' => 'wpsg_mod_prepayment_iban')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_prepayment_swift', __('BIC-/SWIFT Code', 'wpsg'), $this->get_option('wpsg_mod_prepayment_swift'), array('help' => 'wpsg_mod_prepayment_swift')); ?> |
/mods/mod_deliverynote/order_view_row.phtml |
---|
8,7 → 8,7 |
<tr class="wpsg_<?php echo (($this->view['wpsg_mod_deliverynote']['i'] == 0)?'odd':'even'); ?>"> |
<td align="left" colspan="<?php echo ((sizeof($this->view['arCalculation']['tax']) > 1 || $this->get_option('wpsg_showMwstAlways') == '1')?'5':'4'); ?>"> |
<label style="font-weight:normal; display:flex; flex-direction:row; margin-bottom:0px;"> |
<input checked="checked" type="checkbox" class="wpsg_mod_deliverynote_product" name="wpsg_mod_deliverynote_products[]" value="<?php echo $this->view['wpsg_mod_deliverynote']['product']['product_index']; ?>" style="margin:0px; margin-right:5px;" /> |
<input checked="checked" type="checkbox" class="wpsg_mod_deliverynote_product_i" name="wpsg_mod_deliverynote_products[]" value="<?php echo $this->view['wpsg_mod_deliverynote']['product']['product_index']; ?>" style="margin:0px; margin-right:5px;" /> |
<span> <?php echo __('Auf Lieferschein', 'wpsg'); ?></span> |
</label> |
</td> |
/mods/mod_export/profil.phtml |
---|
67,8 → 67,18 |
<?php } ?> |
<?php if ($this->view['profil']['export_type'] === wpsg_mod_export::TYPE_PRODUCT) { ?> |
<div class="wpsg_mod_export_format wpsg_mod_export_format_<?php echo wpsg_mod_export::FORMAT_CSV; ?>" style="display:<?php echo (($this->view['profil']['format'] == wpsg_mod_export::FORMAT_CSV)?'block':'none'); ?>"> |
<?php echo wpsg_drawForm_Checkbox('csv_pvariants_separated', __('Produkte variantengetrennt exportieren', 'wpsg'), $this->view['profil']['csv_pvariants_separated'], array('label' => __('Optionen', 'wpsg'), 'help' =>'wpsg_csv_pvariants_separated', 'inlineEdit' => true, 'inlineEdit_url' => $inlineEdit_url)); ?> |
</div> |
<?php } ?> |
<div class="wpsg_mod_export_format wpsg_mod_export_format_<?php echo wpsg_mod_export::FORMAT_CSV; ?>" style="display:<?php echo (($this->view['profil']['format'] == wpsg_mod_export::FORMAT_CSV)?'block':'none'); ?>"> |
<?php echo wpsg_drawForm_Checkbox('csv_fieldnames', __('Spaltennamen in erster Zeile', 'wpsg'), $this->view['profil']['csv_fieldnames'], array('inlineEdit' => true, 'inlineEdit_url' => $inlineEdit_url)); ?> |
</div> |
/mods/mod_orderupload/basket_after.phtml |
---|
62,7 → 62,7 |
url: wpsg_ajax.ajaxurl, |
data: { |
action: 'wpsg_mod_orderupload_delete', |
order_id: <?php echo $_SESSION['wpsg']['order_id'] ?>, |
order_id: '<?php echo $_SESSION['wpsg']['order_id'] ?>', |
product_index: product_index, |
product_id: product_id, |
file: file |
/mods/mod_productgroups/index.phtml |
---|
83,6 → 83,7 |
<th class="wpsg_pic_col"></th> |
<th class="wpsg_order col_name" data-order="nr"><?php echo __("Name", 'wpsg'); ?></th> |
<th class="wpsg_order col_template" data-order="template"><?php echo __("Template", 'wpsg'); ?></th> |
<th class="wpsg_order col_pos" data-order="template"><?php echo __("Position", 'wpsg'); ?></th> |
<th class="wpsg_order col_products" data-order="products"><?php echo __("Produkte", 'wpsg'); ?></th> |
</tr> |
</thead> |
123,6 → 124,9 |
<td class="col_template"> |
<?php echo (($pg->template_file == "0")?'Individuelle Produkttemplates':$pg->template_file); ?> |
</td> |
<td class="col_pos"> |
<?php echo $pg->pos; ?> |
</td> |
<td class="col_products"> |
<?php echo $pg->countProducts(); ?> |
</td> |
/produkttemplates/standard.phtml |
---|
12,6 → 12,7 |
/** @var wpsg_product $oProduct */ |
$oProduct = $this->view['oProduct']; |
if (($this->view['data']['product_key']??'') !== '') $oProduct->setProductKey($this->view['data']['product_key']); |
?> |
23,7 → 24,7 |
<div class="wpsg_produkt wpsg_product_name"> |
<?php if (!$this->titleDisplayed) { ?> |
<h1 class="wpsg_producttitle"><?php echo $this->getProductName($this->view['data']['id']); ?></h1> |
<h1 class="wpsg_producttitle"><?php echo $oProduct->getProductName(); ?></h1> |
<h2 class="wpsg_productdetailtitle"><?php echo $this->view['data']['detailname']; ?></h2> |
<?php } ?> |
35,11 → 36,15 |
<div itemscope itemtype="http://schema.org/Product" class="wpsg_produkt wpsg_produkt_<?php echo $this->view['data']['id']; ?>"> |
<meta itemprop="name" content="<?php echo wpsg_hspc($this->getProductName($this->view['data']['id'])); ?>" /> |
<meta itemprop="sku" content="<?php echo wpsg_hspc($oProduct->getProductNr()); ?>" /> |
<meta itemprop="gtin13" content="<?php echo wpsg_hspc($oProduct->getEAN()); ?>" /> |
<meta itemprop="name" content="<?php echo wpsg_hspc($oProduct->getProductName()); ?>" /> |
<meta itemprop="detailname" content="<?php echo wpsg_hspc($this->view['data']['detailname']); ?>" /> |
<?php foreach ($oProduct->getAllProductCodes() as $product_code) { ?> |
<?php if ($product_code['itemprop'] !== null) { ?> |
<meta itemprop="<?php echo $product_code['itemprop']; ?>" content="<?php echo $product_code['code']; ?>" /> |
<?php } ?> |
<?php } ?> |
<?php /* Block für die Produktbilder START */ ?> |
<?php |
63,7 → 68,7 |
<meta itemprop="image" content="<?php echo $att[0]; ?>" /> |
<a <?php if ($arAttachmentIDsAll[$i] != $arAttachmentID) echo 'style="display:none;"'; ?> rel="gallery-wpsg-<?php echo $this->getTemplateIndex(); ?>" title="<?php echo $this->getProductName($this->view['data']['id']); ?>" href="<?php echo $att[0]; ?>" class="thickbox"> |
<a <?php if ($arAttachmentIDsAll[$i] != $arAttachmentID) echo 'style="display:none;"'; ?> rel="gallery-wpsg-<?php echo $this->getTemplateIndex(); ?>" title="<?php echo $oProduct->getProductName(); ?>" href="<?php echo $att[0]; ?>" data-fslightbox="<?php echo $this->getTemplateIndex(); ?>"> |
<?php echo wp_get_attachment_image($arAttachmentIDsAll[$i], array(300, 300), false, array()); ?> |
79,14 → 84,24 |
<?php if ($this->get_option('wpsg_showArticelnumber') == '1') { ?> |
<div class="wpsg_artikelnummer"> |
<?php echo __('Artikelnummer', 'wpsg'); ?>: <span class="wpsg_anr"><?php echo wpsg_hspc($this->view['data']['anr']); ?></span><br /> |
<?php if (wpsg_isSizedInt($this->get_option('wpsg_mod_produktartikel_ean'))) {?> |
<?php echo __('EAN','wpsg');?>:<span class="wpsg_ean"><?php echo wpsg_hspc($this->view['data']['ean']); ?></span><br /> |
<?php echo __('Artikelnummer', 'wpsg'); ?>: <span class="wpsg_anr"><?php echo wpsg_hspc($oProduct->getNr()); ?></span><br /> |
</div> |
<?php } ?> |
<?php if (wpsg_isSizedInt($this->get_option('wpsg_mod_produktartikel_gtin'))) {?> |
<?php echo __('GTIN','wpsg');?>:<span class="wpsg_gtin"><?php echo wpsg_hspc($this->view['data']['gtin']); ?></span><br /> |
<?php }?></div> |
<?php $arProductCodes = $oProduct->getAllProductCodes(); ?> |
<?php if (sizeof($arProductCodes) > 0) { ?> |
<div class="product_code_wrap"> |
<?php foreach ($arProductCodes as $product_code) { ?> |
<?php if ($product_code !== null) { ?> |
<div class="product_code <?php echo $product_code['code_key']; ?>"> |
<span class="label"><?php echo $product_code['label']; ?></span>: <span class="code"><?php echo $product_code['code']; ?></span> |
</div> |
<?php } ?> |
<?php } ?> |
</div> |
<?php } ?> |
<?php /* Abfrage Preisanzeige nur für eingeloggte User aktiv und User eingeloggt START*/ ?> |
<?php if ($this->view['oProduct']->canDisplayPrice()) { ?> |
/warenkorb/checkout2.phtml |
---|
104,8 → 104,12 |
</form> |
<div style="position:fixed; left:0; top:0; width:100vw; height:100vh; background-color:rgba(255, 255, 255, 0.5); display:none;" id="pppl_loading_blocker"></div> |
<script type="text/javascript">/* <![CDATA[ */ |
const el_pppl_loading_blocker = document.getElementById('pppl_loading_blocker'); |
function wpsg_setShipPay(jqElement) |
{ |
122,6 → 126,8 |
jQuery('.shippay_wrap .shippay_item_wrap').bind('click', function() { |
el_pppl_loading_blocker.style.display = 'block'; |
wpsg_setShipPay(jQuery(this)); |
jQuery.ajax( { |
132,7 → 138,11 |
'wpsg_form_data': jQuery('#wpsg_checkout_form').serialize() |
}, |
'async': true, |
'success': function(data) { } |
'success': function(data) { |
location.reload(); |
} |
} ); |
} ); |
/order/backendEdit/editPayShipping.phtml |
---|
51,7 → 51,7 |
?> |
<div id="editPayShipping"> |
<?php wpsg_debug($price_shipping); ?> |
<?php echo wpsg_drawForm_Select('edit_shipping_type', __('Versandart', 'wpsg'), $arShippingSelect,$this->view['data']['type_shipping']); ?> |
<?php echo wpsg_drawForm_Input('edit_shipping_price', __('Kosten', 'wpsg').$price_suffix, $price_shipping); ?> |
/admin/includes.phtml |
---|
31,8 → 31,7 |
<br /> |
<?php echo wpsg_drawForm_Checkbox('wpsg_load_thickbox_js', __('Thickbox einbinden (JavaScript)', 'wpsg'), $this->get_option('wpsg_load_thickbox_js'), array('help' => 'wpsg_load_thickbox')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_load_thickbox_css', __('Thickbox einbinden (Styles)', 'wpsg'), $this->get_option('wpsg_load_thickbox_css'), array('help' => 'wpsg_load_thickbox')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_load_fslightbox_js', __('fsLightbox (Fullscreen Lightbox) einbinden (JavaScript)', 'wpsg'), $this->get_option('wpsg_load_fslightbox_js'), array('help' => 'wpsg_load_fslightbox_js')); ?> |
<br /> |
/mods/mod_productgroups/add.phtml |
---|
69,6 → 69,7 |
<?php echo wpsg_drawForm_Select('template_file', __('Template', 'wpsg'), $this->view['templates'], $this->view['data']['template_file']); ?> |
<?php echo wpsg_drawForm_Select('infopage', __('Info Seite', 'wpsg'), $this->view['pages'], $this->view['data']['infopage']); ?> |
<?php echo wpsg_drawForm_Input('pos', __('Positionsnummer (Sortierung, aufsteigend)', 'wpsg'), $this->view['data']['pos']); ?> |
<div class="form-group form-group-sm "> |
<label class="col-sm-6 control-label"><?php echo __('Produktgruppenbild', 'wpsg'); ?></label> |
/mods/mod_produktartikel/settings_edit.phtml |
---|
21,11 → 21,6 |
<br /> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_produktartikel_ean', __('Darstellung der EAN aktivieren', 'wpsg'), $this->get_option('wpsg_mod_produktartikel_ean'), array('help' => 'wpsg_mod_produktartikel_ean')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_produktartikel_gtin', __('Darstellung der GTIN aktivieren', 'wpsg'), $this->get_option('wpsg_mod_produktartikel_gtin'), array('help' => 'wpsg_mod_produktartikel_gtin')); ?> |
<br /> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_produktartikel_cat', __('Kategorie in Produktübersicht (Backend) anzeigen', 'wpsg'), $this->get_option('wpsg_mod_produktartikel_cat'), array('help' => 'wpsg_mod_produktartikel_cat')); ?> |
<div id="wpsg_mod_produktartikel_cat_1"> |
<?php echo wpsg_drawForm_Checkbox('wpsg_mod_produktartikel_cat_first_level', __('Nur erste Ebene', 'wpsg'), $this->get_option('wpsg_mod_produktartikel_cat_first_level'), array('help' => 'wpsg_mod_produktartikel_cat_first_level')); ?> |
/warenkorb/overview.phtml |
---|
18,7 → 18,7 |
<?php $GLOBALS['step'] = 4; $this->render(WPSG_PATH_VIEW.'/warenkorb/progress.phtml'); ?> |
<?php } ?> |
<form method="post" action="<?php echo $this->getURL(wpsg_ShopController::URL_BASKET); ?>"> |
<form method="post" action="<?php echo $this->getURL(wpsg_ShopController::URL_BASKET); ?>" id="wpsg_form"> |
<h2><?php echo __('Zusammenfassung', 'wpsg'); ?></h2> |
27,7 → 27,7 |
<?php if (!$this->hasMod('wpsg_mod_ordercondition')) { ?> |
<div class="wpsg_agb"> |
<label> |
<input type="checkbox" value="1" name="wpsg[agb]" /> |
<input type="checkbox" value="1" name="wpsg[agb]" required /> |
<?php echo wpsg_translate(__('Ich habe die #1# des Anbieters gelesen und erkläre mit dem Absenden der Bestellung mein Einverständnis. Die #2# habe ich zur Kenntnis genommen.', 'wpsg'), |
'<a target="_blank" href="'.$this->getURL(wpsg_ShopController::URL_AGB).'">'.__('AGB', 'wpsg').'</a>', |
'<a target="_blank" href="'.$this->getURL(wpsg_ShopController::URL_WIDERRUF).'">'.__('Widerrufsbelehrung', 'wpsg').'</a>'); |
/order/product_table.phtml |
---|
49,7 → 49,12 |
<tbody> |
<tr><td colspan="<?php echo $this->view['colspan'] + 1; ?>" style="line-height:2px; height:2px; background-color:#999999; padding:0px;"></td></tr> |
<?php $i = 0; foreach ($arCalculation['product'] as $p) { $i ++; $product_price = $p[$display.'_single']; ?> |
<?php $i = 0; foreach ($arCalculation['product'] as $p) { $i ++; $product_price = $p[$display.'_single']; |
$oProduct = wpsg_product::getInstance(intval($p['product_id'])); |
if (($p['product_key']??'') !== '') $oProduct->setProductKey($p['product_key']); |
?> |
<tr class="wpsg_<?php echo (($i % 2 == 0)?'odd':'even'); ?>"> |
<td colspan="<?php echo $this->view['colspan'] + 1; ?>"> |
62,7 → 67,7 |
echo wp_nonce_url(WPSG_URL_WP.'wp-admin/admin.php?page=wpsg-Produkt&action=edit&edit_id='.$p['product_id'], 'wpsg-product-edit-'.wpsg_getInt($p['product_id'])); |
?>" title="<?php echo __('Zum Produkt', 'wpsg'); ?>"> |
<?php echo wpsg_hspc($this->getProductName($p['product_id'])); ?> |
<?php echo wpsg_hspc($oProduct->getProductName(false)); ?> |
</a> |
<a href="#" class="wpsg-glyphlink-td" title="<?php echo __('Produkt bearbeiten', 'wpsg'); ?>" onclick="return WPSG_BE_Product.editProduct(<?php echo $p['order_product_id']; ?>);"><span class="glyphicon glyphicon-pencil"></span></a> |
<a href="#" class="wpsg-glyphlink-td" title="<?php echo __('Produkt löschen', 'wpsg'); ?>" onclick="return WPSG_BE_Product.removeProduct(<?php echo $p['order_product_id']; ?>);"><span class="glyphicon glyphicon-trash"></span></a> |
/admin/kundendaten_tab3.phtml |
---|
17,6 → 17,7 |
<?php |
echo wpsg_drawForm_Select('wpsg_customerpreset_payment', __('Standard Zahlungsart', 'wpsg'), [ |
'0' => __('Bitte wählen', 'wpsg'), |
'-1' => __('günstigste Zahlungsart', 'wpsg') |
] + $this->view['arPayment'], $this->get_option('wpsg_customerpreset_payment'), array('help' => 'wpsg_customerpreset_payment')); |
/mods/mod_productgroups/show_2.phtml |
---|
50,8 → 50,12 |
if (intval($oProductgroup->__get('infopage')) > 0) echo \get_permalink(intval($oProductgroup->__get('infopage'))); |
else echo $page_url.'show='.$oProductgroup->getId(); |
?>" class="productgroup"> |
?>" class="productgroup <?php |
echo (($oProductgroup->hasActiveDiscount())?'active_discount':''); |
?>"> |
<div class="title"><?php echo $oProductgroup->getLabel(); ?></div> |
<?php echo \wp_get_attachment_image($oProductgroup->getImage(), [462, 462], false, [ |
58,6 → 62,10 |
'class' => 'bg' |
]); ?> |
<?php if ($oProductgroup->hasActiveDiscount()) { ?> |
<div class="badge_overlay"><div class="badge">SALE</div></div> |
<?php } ?> |
</a> |
<?php } ?> |
72,6 → 80,19 |
.wpsg_mod_productgroup_layout2.productgroups > .productgroup .title { z-index:2; border-radius:2px; transition:all 0.3s ease; position:absolute; left:1rem; top:1rem; background-color:#000000; color:#FFFFFF; padding:0 0.5rem; } |
.wpsg_mod_productgroup_layout2.productgroups > .productgroup:hover .title { background-color:#FFFFFF; color:#000000; } |
.wpsg_mod_productgroup_layout2 .productgroup.active_discount { position:relative; } |
.wpsg_mod_productgroup_layout2 .productgroup.active_discount .badge_overlay { position:absolute; left:0; top:0; width:100%; height:100%; overflow:hidden; pointer-events:none; z-index:100; } |
.wpsg_mod_productgroup_layout2 .productgroup.active_discount .badge_overlay .badge { |
margin:0; color:white; padding:3px 10px; font-size:1rem; text-align:center; |
background:#ed1b24; position:absolute; top:0; right:0; transform:translateX(30%) translateY(0%) rotate(45deg); transform-origin:top left; |
} |
.wpsg_mod_productgroup_layout2 .productgroup.active_discount .badge_overlay .badge:before { |
content:''; position:absolute; top:0; right:100%; margin:0 -1px; width:100%; height:100%; background:inherit; min-width:55px; |
} |
.wpsg_mod_productgroup_layout2 .productgroup.active_discount .badge_overlay .badge:after { |
content:''; position:absolute; top:0; left:100%; margin:0 -1px; width:100%; height:100%; background:inherit; min-width:55px; |
} |
@media screen and (min-width:768px) { |
.wpsg_mod_productgroup_layout2.productgroups > .productgroup { padding-top:initial; grid-column:initial; } |
/mods/mod_produktartikel/produkt_edit_allgemein.phtml |
---|
8,10 → 8,3 |
?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_produktartikel[path]', __('URL Path Segment', 'wpsg'), wpsg_getStr($this->view['data']['post_name']), array('help' => 'wpsg_mod_produktartikel_url_path_seg')); ?> |
<?php if (wpsg_isSizedInt($this->get_option('wpsg_mod_produktartikel_ean'))) { ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_produktartikel[ean]', __('EAN', 'wpsg'), wpsg_getStr($this->view['data']['ean']), array('help' => 'wpsg_mod_produktartikel_ean')); ?> |
<?php } ?> |
<?php if (wpsg_isSizedInt($this->get_option('wpsg_mod_produktartikel_gtin'))) { ?> |
<?php echo wpsg_drawForm_Input('wpsg_mod_produktartikel[gtin]', __('GTIN', 'wpsg'), wpsg_getStr($this->view['data']['gtin']), array('help' => 'wpsg_mod_produktartikel_gtin')); ?> |
<?php } ?> |
/produkttemplates/standard3.phtml |
---|
32,7 → 32,7 |
</div> |
<div class="view"> |
<?php foreach ($arAttachmentIDsAll as $k => $image_id) { ?> |
<a class="thickbox" id="<?php echo $this->getTemplateIndex(); ?>_<?php echo $k; ?>" rel="gallery-<?php echo $this->getTemplateIndex(); ?>" href="<?php echo \wp_get_attachment_image_src($image_id, 'full')[0]; ?>"></a> |
<a class="" id="<?php echo $this->getTemplateIndex(); ?>_<?php echo $k; ?>" data-fslightbox="<?php echo $this->getTemplateIndex(); ?>" href="<?php echo \wp_get_attachment_image_src($image_id, 'full')[0]; ?>"></a> |
<?php } ?> |
<div class="wpsg_product_slider"> |
69,13 → 69,22 |
<?php if ($this->get_option('wpsg_showArticelnumber') == '1') { ?> |
<div class="wpsg_artikelnummer"> |
<?php echo __('Artikelnummer', 'wpsg'); ?>: <span class="wpsg_anr"><?php echo wpsg_hspc($this->view['data']['anr']); ?></span><br /> |
<?php if (wpsg_isSizedInt($this->get_option('wpsg_mod_produktartikel_ean'))) {?> |
<?php echo __('EAN','wpsg');?>:<span class="wpsg_ean"><?php echo wpsg_hspc($this->view['data']['ean']); ?></span><br /> |
<?php echo __('Artikelnummer', 'wpsg'); ?>: <span class="wpsg_anr"><?php echo wpsg_hspc($oProduct->getNr()); ?></span><br /> |
</div> |
<?php } ?> |
<?php if (wpsg_isSizedInt($this->get_option('wpsg_mod_produktartikel_gtin'))) {?> |
<?php echo __('GTIN','wpsg');?>:<span class="wpsg_gtin"><?php echo wpsg_hspc($this->view['data']['gtin']); ?></span><br /> |
<?php $arProductCodes = $oProduct->getAllProductCodes(); ?> |
<?php if (sizeof($arProductCodes) > 0) { ?> |
<div class="product_code_wrap"> |
<?php foreach ($arProductCodes as $product_code) { ?> |
<?php if ($product_code !== null) { ?> |
<div class="product_code <?php echo $product_code['code_key']; ?>"> |
<span class="label"><?php echo $product_code['label']; ?></span>: <span class="code"><?php echo $product_code['code']; ?></span> |
</div> |
<?php }?> |
<?php } ?> |
</div> |
<?php } ?> |
/order/index.phtml |
---|
54,6 → 54,8 |
<input id="wpsg_order" type="hidden" name="filter[order]" value="<?php echo @$this->view['arFilter']['order']; ?>" /> |
<input id="wpsg_ascdesc" type="hidden" name="filter[ascdesc]" value="<?php echo @$this->view['arFilter']['ascdesc']; ?>" /> |
<input type="hidden" name="filter[voucher_id]" value="<?php echo intval($this->view['arFilter']['voucher_id']??0); ?>" /> |
<?php echo wpsg_drawForm_Input('filter[s]', __('Suchfeld', 'wpsg'), wpsg_getStr($this->view['arFilter']['s'])); ?> |
<?php echo wpsg_drawForm_Input('filter[k_id]', __('Kunde (ID)', 'wpsg'), wpsg_getStr($this->view['arFilter']['k_id'])); ?> |
<?php echo wpsg_drawForm_Select('filter[payment_key]', __('Zahlungsart', 'wpsg'), $arPaymentKeySelect, wpsg_getStr($this->view['arFilter']['payment_key'])); ?> |
79,7 → 81,7 |
<select name="filter[cdate_m]" class="form-control input-sm"> |
<option value="-1"><?php echo __("Alle", "wpsg"); ?></option> |
<?php for ($i = 1; $i <= 12; $i ++) { ?> |
<option <?php echo ((wpsg_getStr($this->view['arFilter']['cdate_m']) == $i)?'selected="selected"':''); ?> value="<?php echo str_pad($i, 2, '0', STR_PAD_LEFT); ?>"><?php echo strftime("%B", mktime(0, 0, 0, $i, 1, 2000)); ?></option> |
<option <?php echo ((wpsg_getStr($this->view['arFilter']['cdate_m']) == $i)?'selected="selected"':''); ?> value="<?php echo str_pad($i, 2, '0', STR_PAD_LEFT); ?>"><?php echo __(date('F', mktime(0, 0, 0, $i, 1, 2000))); ?></option> |
<?php } ?> |
</select> |
</div> |
489,6 → 491,34 |
}); |
let buttonClicked = false; |
document.getElementById('doaction').addEventListener('click', (event) => { |
if (buttonClicked) { |
event.preventDefault(); |
return false; |
} |
// Button deaktivieren und ausgrauen |
document.getElementById('doaction').style.opacity = '0.5'; |
document.getElementById('doaction').style.pointerEvents = 'none'; |
// Button nach 4 Sekunden wieder aktivieren |
setTimeout(() => { |
document.getElementById('doaction').style.opacity = '1'; |
document.getElementById('doaction').style.pointerEvents = 'auto'; |
buttonClicked = false; |
}, 4000); |
buttonClicked = true; |
return true; |
}); |
</script> |
<div class="multiRechnung_tab" id="multiRechnung_inform" style="padding: 15px 0 15px 0; display:none;"> |
561,6 → 591,35 |
}); |
// let buttonClicked = false; |
// document.getElementById('wpsg_mod_rechnungen_button_submit').addEventListener('click', (event) => { |
// if (buttonClicked) { |
// event.preventDefault(); |
// return false; |
// } |
// // Button deaktivieren und ausgrauen |
// document.getElementById('wpsg_mod_rechnungen_button_submit').style.opacity = '0.5'; |
// document.getElementById('wpsg_mod_rechnungen_button_submit').style.pointerEvents = 'none'; |
// // Button nach 4 Sekunden wieder aktivieren |
// setTimeout(() => { |
// document.getElementById('wpsg_mod_rechnungen_button_submit').style.opacity = '1'; |
// document.getElementById('wpsg_mod_rechnungen_button_submit').style.pointerEvents = 'auto'; |
// buttonClicked = false; |
// }, 4000); |
// buttonClicked = true; |
// return true; |
// }); |
</script> |
</div> |
/css/tiny-slider.-2.9.4.min.css |
---|
0,0 → 1,0 |
.tns-outer{padding:0 !important}.tns-outer [hidden]{display:none !important}.tns-outer [aria-controls],.tns-outer [data-action]{cursor:pointer}.tns-slider{-webkit-transition:all 0s;-moz-transition:all 0s;transition:all 0s}.tns-slider>.tns-item{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tns-horizontal.tns-subpixel{white-space:nowrap}.tns-horizontal.tns-subpixel>.tns-item{display:inline-block;vertical-align:top;white-space:normal}.tns-horizontal.tns-no-subpixel:after{content:'';display:table;clear:both}.tns-horizontal.tns-no-subpixel>.tns-item{float:left}.tns-horizontal.tns-carousel.tns-no-subpixel>.tns-item{margin-right:-100%}.tns-no-calc{position:relative;left:0}.tns-gallery{position:relative;left:0;min-height:1px}.tns-gallery>.tns-item{position:absolute;left:-100%;-webkit-transition:transform 0s, opacity 0s;-moz-transition:transform 0s, opacity 0s;transition:transform 0s, opacity 0s}.tns-gallery>.tns-slide-active{position:relative;left:auto !important}.tns-gallery>.tns-moving{-webkit-transition:all 0.25s;-moz-transition:all 0.25s;transition:all 0.25s}.tns-autowidth{display:inline-block}.tns-lazy-img{-webkit-transition:opacity 0.6s;-moz-transition:opacity 0.6s;transition:opacity 0.6s;opacity:0.6}.tns-lazy-img.tns-complete{opacity:1}.tns-ah{-webkit-transition:height 0s;-moz-transition:height 0s;transition:height 0s}.tns-ovh{overflow:hidden}.tns-visually-hidden{position:absolute;left:-10000em}.tns-transparent{opacity:0;visibility:hidden}.tns-fadeIn{opacity:1;filter:alpha(opacity=100);z-index:0}.tns-normal,.tns-fadeOut{opacity:0;filter:alpha(opacity=0);z-index:-1}.tns-vpfix{white-space:nowrap}.tns-vpfix>div,.tns-vpfix>li{display:inline-block}.tns-t-subp2{margin:0 auto;width:310px;position:relative;height:10px;overflow:hidden}.tns-t-ct{width:2333.3333333%;width:-webkit-calc(100% * 70 / 3);width:-moz-calc(100% * 70 / 3);width:calc(100% * 70 / 3);position:absolute;right:0}.tns-t-ct:after{content:'';display:table;clear:both}.tns-t-ct>div{width:1.4285714%;width:-webkit-calc(100% / 70);width:-moz-calc(100% / 70);width:calc(100% / 70);height:10px;float:left} |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/js/fslightbox.js |
---|
0,0 → 1,0 |
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);var o,i="fslightbox-",r="".concat(i,"styles"),s="".concat(i,"cursor-grabbing"),a="".concat(i,"full-dimension"),c="".concat(i,"flex-centered"),l="".concat(i,"open"),u="".concat(i,"transform-transition"),d="".concat(i,"absoluted"),f="".concat(i,"slide-btn"),p="".concat(f,"-container"),h="".concat(i,"fade-in"),m="".concat(i,"fade-out"),g=h+"-strong",v=m+"-strong",b="".concat(i,"opacity-"),x="".concat(b,"1"),y="".concat(i,"source");function w(e){return(w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function S(e){var t=e.stageIndexes,n=e.core.stageManager,o=e.props.sources.length-1;n.getPreviousSlideIndex=function(){return 0===t.current?o:t.current-1},n.getNextSlideIndex=function(){return t.current===o?0:t.current+1},n.updateStageIndexes=0===o?function(){}:1===o?function(){0===t.current?(t.next=1,delete t.previous):(t.previous=0,delete t.next)}:function(){t.previous=n.getPreviousSlideIndex(),t.next=n.getNextSlideIndex()},n.i=o<=2?function(){return!0}:function(e){var n=t.current;if(0===n&&e===o||n===o&&0===e)return!0;var i=n-e;return-1===i||0===i||1===i}}"object"===("undefined"==typeof document?"undefined":w(document))&&((o=document.createElement("style")).className=r,o.appendChild(document.createTextNode(".fslightbox-absoluted{position:absolute;top:0;left:0}.fslightbox-fade-in{animation:fslightbox-fade-in .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out{animation:fslightbox-fade-out .3s ease}.fslightbox-fade-in-strong{animation:fslightbox-fade-in-strong .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out-strong{animation:fslightbox-fade-out-strong .3s ease}@keyframes fslightbox-fade-in{from{opacity:.65}to{opacity:1}}@keyframes fslightbox-fade-out{from{opacity:.35}to{opacity:0}}@keyframes fslightbox-fade-in-strong{from{opacity:.3}to{opacity:1}}@keyframes fslightbox-fade-out-strong{from{opacity:1}to{opacity:0}}.fslightbox-cursor-grabbing{cursor:grabbing}.fslightbox-full-dimension{width:100%;height:100%}.fslightbox-open{overflow:hidden;height:100%}.fslightbox-flex-centered{display:flex;justify-content:center;align-items:center}.fslightbox-opacity-0{opacity:0!important}.fslightbox-opacity-1{opacity:1!important}.fslightbox-scrollbarfix{padding-right:17px}.fslightbox-transform-transition{transition:transform .3s}.fslightbox-container{font-family:Arial,sans-serif;position:fixed;top:0;left:0;background:linear-gradient(rgba(30,30,30,.9),#000 1810%);touch-action:pinch-zoom;z-index:1000000000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.fslightbox-container *{box-sizing:border-box}.fslightbox-svg-path{transition:fill .15s ease;fill:#ddd}.fslightbox-nav{height:45px;width:100%;position:absolute;top:0;left:0}.fslightbox-slide-number-container{display:flex;justify-content:center;align-items:center;position:relative;height:100%;font-size:15px;color:#d7d7d7;z-index:0;max-width:55px;text-align:left}.fslightbox-slide-number-container .fslightbox-flex-centered{height:100%}.fslightbox-slash{display:block;margin:0 5px;width:1px;height:12px;transform:rotate(15deg);background:#fff}.fslightbox-toolbar{position:absolute;z-index:3;right:0;top:0;height:100%;display:flex;background:rgba(35,35,35,.65)}.fslightbox-toolbar-button{height:100%;width:45px;cursor:pointer}.fslightbox-toolbar-button:hover .fslightbox-svg-path{fill:#fff}.fslightbox-slide-btn-container{display:flex;align-items:center;padding:12px 12px 12px 6px;position:absolute;top:50%;cursor:pointer;z-index:3;transform:translateY(-50%)}@media (min-width:476px){.fslightbox-slide-btn-container{padding:22px 22px 22px 6px}}@media (min-width:768px){.fslightbox-slide-btn-container{padding:30px 30px 30px 6px}}.fslightbox-slide-btn-container:hover .fslightbox-svg-path{fill:#f1f1f1}.fslightbox-slide-btn{padding:9px;font-size:26px;background:rgba(35,35,35,.65)}@media (min-width:768px){.fslightbox-slide-btn{padding:10px}}@media (min-width:1600px){.fslightbox-slide-btn{padding:11px}}.fslightbox-slide-btn-container-previous{left:0}@media (max-width:475.99px){.fslightbox-slide-btn-container-previous{padding-left:3px}}.fslightbox-slide-btn-container-next{right:0;padding-left:12px;padding-right:3px}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-left:22px}}@media (min-width:768px){.fslightbox-slide-btn-container-next{padding-left:30px}}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-right:6px}}.fslightbox-down-event-detector{position:absolute;z-index:1}.fslightbox-slide-swiping-hoverer{z-index:4}.fslightbox-invalid-file-wrapper{font-size:22px;color:#eaebeb;margin:auto}.fslightbox-video{object-fit:cover}.fslightbox-youtube-iframe{border:0}.fslightboxl{display:block;margin:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:67px;height:67px}.fslightboxl div{box-sizing:border-box;display:block;position:absolute;width:54px;height:54px;margin:6px;border:5px solid;border-color:#999 transparent transparent transparent;border-radius:50%;animation:fslightboxl 1.2s cubic-bezier(.5,0,.5,1) infinite}.fslightboxl div:nth-child(1){animation-delay:-.45s}.fslightboxl div:nth-child(2){animation-delay:-.3s}.fslightboxl div:nth-child(3){animation-delay:-.15s}@keyframes fslightboxl{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fslightbox-source{position:relative;z-index:2;opacity:0}")),document.head.appendChild(o));function L(e){var t,n=e.props,o=0,i={};this.getSourceTypeFromLocalStorageByUrl=function(e){return t[e]?t[e]:r(e)},this.handleReceivedSourceTypeForUrl=function(e,n){if(!1===i[n]&&(o--,"invalid"!==e?i[n]=e:delete i[n],0===o)){!function(e,t){for(var n in t)e[n]=t[n]}(t,i);try{localStorage.setItem("fslightbox-types",JSON.stringify(t))}catch(e){}}};var r=function(e){o++,i[e]=!1};if(n.disableLocalStorage)this.getSourceTypeFromLocalStorageByUrl=function(){},this.handleReceivedSourceTypeForUrl=function(){};else{try{t=JSON.parse(localStorage.getItem("fslightbox-types"))}catch(e){}t||(t={},this.getSourceTypeFromLocalStorageByUrl=r)}}function A(e,t,n,o){var i=e.data,r=e.elements.sources,s=n/o,a=0;this.adjustSize=function(){if((a=i.maxSourceWidth/s)<i.maxSourceHeight)return n<i.maxSourceWidth&&(a=o),c();a=o>i.maxSourceHeight?i.maxSourceHeight:o,c()};var c=function(){r[t].style.width=a*s+"px",r[t].style.height=a+"px"}}function C(e,t){var n=this,o=e.collections.sourceSizers,i=e.elements,r=i.sourceAnimationWrappers,s=i.sources,a=e.isl,c=e.resolve;function l(e,n){o[t]=c(A,[t,e,n]),o[t].adjustSize()}this.runActions=function(e,o){a[t]=!0,s[t].classList.add(x),r[t].classList.add(g),r[t].removeChild(r[t].firstChild),l(e,o),n.runActions=l}}function E(e,t){var n,o=this,i=e.elements.sources,r=e.props,s=(0,e.resolve)(C,[t]);this.handleImageLoad=function(e){var t=e.target,n=t.naturalWidth,o=t.naturalHeight;s.runActions(n,o)},this.handleVideoLoad=function(e){var t=e.target,o=t.videoWidth,i=t.videoHeight;n=!0,s.runActions(o,i)},this.handleNotMetaDatedVideoLoad=function(){n||o.handleYoutubeLoad()},this.handleYoutubeLoad=function(){var e=1920,t=1080;r.maxYoutubeDimensions&&(e=r.maxYoutubeDimensions.width,t=r.maxYoutubeDimensions.height),s.runActions(e,t)},this.handleCustomLoad=function(){var e=i[t],n=e.offsetWidth,r=e.offsetHeight;n&&r?s.runActions(n,r):setTimeout(o.handleCustomLoad)}}function F(e,t,n){var o=e.elements.sources,i=e.props.customClasses,r=i[t]?i[t]:"";o[t].className=n+" "+r}function I(e,t){var n=e.elements.sources,o=e.props.customAttributes;for(var i in o[t])n[t].setAttribute(i,o[t][i])}function T(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props.sources;i[t]=document.createElement("img"),F(e,t,y),i[t].src=s[t],i[t].onload=n[t].handleImageLoad,I(e,t),r[t].appendChild(i[t])}function N(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props,a=s.sources,c=s.videosPosters;i[t]=document.createElement("video"),F(e,t,y),i[t].src=a[t],i[t].onloadedmetadata=function(e){n[t].handleVideoLoad(e)},i[t].controls=!0,I(e,t),c[t]&&(i[t].poster=c[t]);var l=document.createElement("source");l.src=a[t],i[t].appendChild(l),setTimeout(n[t].handleNotMetaDatedVideoLoad,3e3),r[t].appendChild(i[t])}function z(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,r=o.sources,s=o.sourceAnimationWrappers,a=e.props.sources;r[t]=document.createElement("iframe"),F(e,t,"".concat(y," ").concat(i,"youtube-iframe"));var c=a[t],l=c.split("?")[1];r[t].src="https://www.youtube.com/embed/".concat(c.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/)[2],"?").concat(l||""),r[t].allowFullscreen=!0,I(e,t),s[t].appendChild(r[t]),n[t].handleYoutubeLoad()}function P(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props.sources;i[t]=s[t],F(e,t,"".concat(i[t].className," ").concat(y)),r[t].appendChild(i[t]),n[t].handleCustomLoad()}function k(e,t){var n=e.elements,o=n.sources,r=n.sourceAnimationWrappers;e.props.sources;o[t]=document.createElement("div"),o[t].className="".concat(i,"invalid-file-wrapper ").concat(c),o[t].innerHTML="Invalid source",r[t].classList.add(g),r[t].removeChild(r[t].firstChild),r[t].appendChild(o[t])}function H(e){var t=e.collections,n=t.sourceLoadHandlers,o=t.sourcesRenderFunctions,i=e.core.sourceDisplayFacade,r=e.resolve;this.runActionsForSourceTypeAndIndex=function(t,s){var a;switch("invalid"!==t&&(n[s]=r(E,[s])),t){case"image":a=T;break;case"video":a=N;break;case"youtube":a=z;break;case"custom":a=P;break;default:a=k}o[s]=function(){return a(e,s)},i.displaySourcesWhichShouldBeDisplayed()}}function W(){var e,t,n,o={isUrlYoutubeOne:function(e){var t=document.createElement("a");return t.href=e,"www.youtube.com"===t.hostname||"youtu.be"===t.hostname},getTypeFromResponseContentType:function(e){return e.slice(0,e.indexOf("/"))}};function i(){if(4!==n.readyState){if(2===n.readyState){var e;switch(o.getTypeFromResponseContentType(n.getResponseHeader("content-type"))){case"image":e="image";break;case"video":e="video";break;default:e="invalid"}n.onreadystatechange=null,n.abort(),t(e)}}else t("invalid")}this.setUrlToCheck=function(t){e=t},this.getSourceType=function(r){if(o.isUrlYoutubeOne(e))return r("youtube");t=r,(n=new XMLHttpRequest).onreadystatechange=i,n.open("GET",e,!0),n.send()}}function R(e,t,n){var o=e.props,i=o.types,r=o.type,s=o.sources,a=e.resolve;this.getTypeSetByClientForIndex=function(e){var t;return i&&i[e]?t=i[e]:r&&(t=r),t},this.retrieveTypeWithXhrForIndex=function(e){var o=a(W);o.setUrlToCheck(s[e]),o.getSourceType((function(o){t.handleReceivedSourceTypeForUrl(o,s[e]),n.runActionsForSourceTypeAndIndex(o,e)}))}}function D(e,t){var n=e.core.stageManager,o=e.elements,i=o.smw,r=o.sourceWrappersContainer,s=e.props,l=0,f=document.createElement("div");function p(e){f.style.transform="translateX(".concat(e+l,"px)"),l=0}function h(){return(1+s.slideDistance)*innerWidth}f.className="".concat(d," ").concat(a," ").concat(c),f.s=function(){f.style.display="flex"},f.h=function(){f.style.display="none"},f.a=function(){f.classList.add(u)},f.d=function(){f.classList.remove(u)},f.n=function(){f.style.removeProperty("transform")},f.v=function(e){return l=e,f},f.ne=function(){p(-h())},f.z=function(){p(0)},f.p=function(){p(h())},n.i(t)||f.h(),i[t]=f,r.appendChild(f),function(e,t){var n=e.elements,o=n.smw,i=n.sourceAnimationWrappers,r=document.createElement("div"),s=document.createElement("div");s.className="fslightboxl";for(var a=0;a<3;a++){var c=document.createElement("div");s.appendChild(c)}r.appendChild(s),o[t].appendChild(r),i[t]=r}(e,t)}function O(e,t,n,o){var r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttributeNS(null,"width",t),r.setAttributeNS(null,"height",t),r.setAttributeNS(null,"viewBox",n);var s=document.createElementNS("http://www.w3.org/2000/svg","path");return s.setAttributeNS(null,"class","".concat(i,"svg-path")),s.setAttributeNS(null,"d",o),r.appendChild(s),e.appendChild(r),r}function M(e,t){var n=document.createElement("div");return n.className="".concat(i,"toolbar-button ").concat(c),n.title=t,e.appendChild(n),n}function j(e,t){var n=document.createElement("div");n.className="".concat(i,"toolbar"),t.appendChild(n),function(e,t){var n=e.componentsServices,o=e.data,i=e.fs,r="M4.5 11H3v4h4v-1.5H4.5V11zM3 7h1.5V4.5H7V3H3v4zm10.5 6.5H11V15h4v-4h-1.5v2.5zM11 3v1.5h2.5V7H15V3h-4z",s=M(t);s.title="Enter fullscreen";var a=O(s,"20px","0 0 18 18",r);n.ofs=function(){o.ifs=!0,s.title="Exit fullscreen",a.setAttributeNS(null,"width","24px"),a.setAttributeNS(null,"height","24px"),a.setAttributeNS(null,"viewBox","0 0 950 1024"),a.firstChild.setAttributeNS(null,"d","M682 342h128v84h-212v-212h84v128zM598 810v-212h212v84h-128v128h-84zM342 342v-128h84v212h-212v-84h128zM214 682v-84h212v212h-84v-128h-128z")},n.xfs=function(){o.ifs=!1,s.title="Enter fullscreen",a.setAttributeNS(null,"width","20px"),a.setAttributeNS(null,"height","20px"),a.setAttributeNS(null,"viewBox","0 0 18 18"),a.firstChild.setAttributeNS(null,"d",r)},s.onclick=i.t}(e,n),function(e,t){var n=M(t,"Close");n.onclick=e.core.lightboxCloser.closeLightbox,O(n,"20px","0 0 24 24","M 4.7070312 3.2929688 L 3.2929688 4.7070312 L 10.585938 12 L 3.2929688 19.292969 L 4.7070312 20.707031 L 12 13.414062 L 19.292969 20.707031 L 20.707031 19.292969 L 13.414062 12 L 20.707031 4.7070312 L 19.292969 3.2929688 L 12 10.585938 L 4.7070312 3.2929688 z")}(e,n)}function X(e){var t=e.props.sources,n=e.elements.container,o=document.createElement("div");o.className="".concat(i,"nav"),n.appendChild(o),j(e,o),t.length>1&&function(e,t){var n=e.componentsServices,o=e.props.sources,r=(e.stageIndexes,document.createElement("div"));r.className="".concat(i,"slide-number-container");var s=document.createElement("div");s.className=c;var a=document.createElement("span");n.setSlideNumber=function(e){return a.innerHTML=e};var l=document.createElement("span");l.className="".concat(i,"slash");var u=document.createElement("div");u.innerHTML=o.length,r.appendChild(s),s.appendChild(a),s.appendChild(l),s.appendChild(u),t.appendChild(r),setTimeout((function(){s.offsetWidth>55&&(r.style.justifyContent="flex-start")}))}(e,o)}function B(e,t,n,o){var i=e.elements.container,r=n.charAt(0).toUpperCase()+n.slice(1),s=document.createElement("div");s.className="".concat(p," ").concat(p,"-").concat(n),s.title="".concat(r," slide"),s.onclick=t,function(e,t){var n=document.createElement("div");n.className="".concat(f," ").concat(c),O(n,"20px","0 0 20 20",t),e.appendChild(n)}(s,o),i.appendChild(s)}function U(e){var t=e.core,n=t.lightboxCloser,o=t.slideChangeFacade,i=e.fs;this.listener=function(e){switch(e.key){case"Escape":n.closeLightbox();break;case"ArrowLeft":o.changeToPrevious();break;case"ArrowRight":o.changeToNext();break;case"F11":e.preventDefault(),i.t()}}}function q(e){var t=e.elements,n=e.sourcePointerProps,o=e.stageIndexes;function i(e,o){t.smw[e].v(n.swipedX)[o]()}this.runActionsForEvent=function(e){var r,a,c;t.container.contains(t.slideSwipingHoverer)||t.container.appendChild(t.slideSwipingHoverer),r=t.container,a=s,(c=r.classList).contains(a)||c.add(a),n.swipedX=e.screenX-n.downScreenX;var l=o.previous,u=o.next;i(o.current,"z"),void 0!==l&&n.swipedX>0?i(l,"ne"):void 0!==u&&n.swipedX<0&&i(u,"p")}}function V(e){var t=e.props.sources,n=e.resolve,o=e.sourcePointerProps,i=n(q);1===t.length?this.listener=function(){o.swipedX=1}:this.listener=function(e){o.isPointering&&i.runActionsForEvent(e)}}function _(e){var t=e.core.slideIndexChanger,n=e.elements.smw,o=e.stageIndexes,i=e.sws;function r(e){var t=n[o.current];t.a(),t[e]()}function s(e,t){void 0!==e&&(n[e].s(),n[e][t]())}this.runPositiveSwipedXActions=function(){var e=o.previous;if(void 0===e)r("z");else{r("p");var n=o.next;t.changeTo(e);var a=o.previous;i.d(a),i.b(n),r("z"),s(a,"ne")}},this.runNegativeSwipedXActions=function(){var e=o.next;if(void 0===e)r("z");else{r("ne");var n=o.previous;t.changeTo(e);var a=o.next;i.d(a),i.b(n),r("z"),s(a,"p")}}}function Y(e,t){e.contains(t)&&e.removeChild(t)}function J(e){var t=e.core.lightboxCloser,n=e.elements,o=e.resolve,i=e.sourcePointerProps,r=o(_);this.runNoSwipeActions=function(){Y(n.container,n.slideSwipingHoverer),i.isSourceDownEventTarget||t.closeLightbox(),i.isPointering=!1},this.runActions=function(){i.swipedX>0?r.runPositiveSwipedXActions():r.runNegativeSwipedXActions(),Y(n.container,n.slideSwipingHoverer),n.container.classList.remove(s),i.isPointering=!1}}function G(e){var t=e.resolve,n=e.sourcePointerProps,o=t(J);this.listener=function(){n.isPointering&&(n.swipedX?o.runActions():o.runNoSwipeActions())}}function $(e){var t=this,n=e.core,o=n.eventsDispatcher,i=n.globalEventsController,r=n.scrollbarRecompensor,s=e.data,a=e.elements,c=e.fs,u=e.props,d=e.sourcePointerProps;this.isLightboxFadingOut=!1,this.runActions=function(){t.isLightboxFadingOut=!0,a.container.classList.add(v),i.removeListeners(),u.exitFullscreenOnClose&&s.ifs&&c.x(),setTimeout((function(){t.isLightboxFadingOut=!1,d.isPointering=!1,a.container.classList.remove(v),document.documentElement.classList.remove(l),r.removeRecompense(),document.body.removeChild(a.container),o.dispatch("onClose")}),270)}}function K(e,t){var n=e.classList;n.contains(t)&&n.remove(t)}function Q(e){var t,n,o;n=(t=e).core.eventsDispatcher,o=t.props,n.dispatch=function(e){o[e]&&o[e]()},function(e){var t=e.componentsServices,n=e.data,o=e.fs,i=["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"];function r(e){for(var t=0;t<i.length;t++)document[e](i[t],s)}function s(){document.fullscreenElement||document.webkitIsFullScreen||document.mozFullScreen||document.msFullscreenElement?t.ofs():t.xfs()}o.o=function(){t.ofs();var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen():e.msRequestFullscreen&&e.msRequestFullscreen()},o.x=function(){t.xfs(),document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},o.t=function(){n.ifs?o.x():o.o()},o.l=function(){r("addEventListener")},o.q=function(){r("removeEventListener")}}(e),function(e){var t=e.core,n=t.globalEventsController,o=t.windowResizeActioner,i=e.fs,r=e.resolve,s=r(U),a=r(V),c=r(G);n.attachListeners=function(){document.addEventListener("pointermove",a.listener),document.addEventListener("pointerup",c.listener),addEventListener("resize",o.runActions),document.addEventListener("keydown",s.listener),i.l()},n.removeListeners=function(){document.removeEventListener("pointermove",a.listener),document.removeEventListener("pointerup",c.listener),removeEventListener("resize",o.runActions),document.removeEventListener("keydown",s.listener),i.q()}}(e),function(e){var t=e.core.lightboxCloser,n=(0,e.resolve)($);t.closeLightbox=function(){n.isLightboxFadingOut||n.runActions()}}(e),function(e){var t=e.data,n=e.core.scrollbarRecompensor;function o(){document.body.offsetHeight>innerHeight&&(document.body.style.marginRight=t.scrollbarWidth+"px")}n.addRecompense=function(){"complete"===document.readyState?o():addEventListener("load",(function(){o(),n.addRecompense=o}))},n.removeRecompense=function(){document.body.style.removeProperty("margin-right")}}(e),function(e){var t=e.core,n=t.slideChangeFacade,o=t.slideIndexChanger,i=t.stageManager;e.props.sources.length>1?(n.changeToPrevious=function(){o.jumpTo(i.getPreviousSlideIndex())},n.changeToNext=function(){o.jumpTo(i.getNextSlideIndex())}):(n.changeToPrevious=function(){},n.changeToNext=function(){})}(e),function(e){var t=e.componentsServices,n=e.core,o=n.slideIndexChanger,i=n.sourceDisplayFacade,r=n.stageManager,s=e.elements,a=s.smw,c=s.sourceAnimationWrappers,l=e.isl,u=e.stageIndexes,d=e.sws;o.changeTo=function(e){u.current=e,r.updateStageIndexes(),t.setSlideNumber(e+1),i.displaySourcesWhichShouldBeDisplayed()},o.jumpTo=function(e){var t=u.previous,n=u.current,i=u.next,s=l[n],f=l[e];o.changeTo(e);for(var p=0;p<a.length;p++)a[p].d();d.d(n),d.c(),requestAnimationFrame((function(){requestAnimationFrame((function(){var e=u.previous,o=u.next;function p(){r.i(n)?n===u.previous?a[n].ne():n===u.next&&a[n].p():(a[n].h(),a[n].n())}s&&c[n].classList.add(m),f&&c[u.current].classList.add(h),d.a(),void 0!==e&&e!==n&&a[e].ne(),a[u.current].n(),void 0!==o&&o!==n&&a[o].p(),d.b(t),d.b(i),l[n]?setTimeout(p,260):p()}))}))}}(e),function(e){var t=e.core.sourcesPointerDown,n=e.elements,o=n.smw,i=n.sources,r=e.sourcePointerProps,s=e.stageIndexes;t.listener=function(e){"VIDEO"!==e.target.tagName&&e.preventDefault(),r.isPointering=!0,r.downScreenX=e.screenX,r.swipedX=0;var t=i[s.current];t&&t.contains(e.target)?r.isSourceDownEventTarget=!0:r.isSourceDownEventTarget=!1;for(var n=0;n<o.length;n++)o[n].d()}}(e),function(e){var t=e.collections.sourcesRenderFunctions,n=e.core.sourceDisplayFacade,o=e.props,i=e.stageIndexes;function r(e){t[e]&&(t[e](),delete t[e])}n.displaySourcesWhichShouldBeDisplayed=function(){if(o.loadOnlyCurrentSource)r(i.current);else for(var e in i)r(i[e])}}(e),function(e){var t=e.core.stageManager,n=e.elements,o=n.smw,i=n.sourceAnimationWrappers,r=e.isl,s=e.stageIndexes,a=e.sws;a.a=function(){for(var e in s)o[s[e]].s()},a.b=function(e){void 0===e||t.i(e)||(o[e].h(),o[e].n())},a.c=function(){for(var e in s)a.d(s[e])},a.d=function(e){if(r[e]){var t=i[e];K(t,g),K(t,h),K(t,m)}}}(e),function(e){var t=e.collections.sourceSizers,n=e.core.windowResizeActioner,o=e.data,i=e.elements.smw,r=e.stageIndexes;n.runActions=function(){innerWidth<992?o.maxSourceWidth=innerWidth:o.maxSourceWidth=.9*innerWidth,o.maxSourceHeight=.9*innerHeight;for(var e=0;e<i.length;e++)i[e].d(),t[e]&&t[e].adjustSize();var n=r.previous,s=r.next;void 0!==n&&i[n].ne(),void 0!==s&&i[s].p()}}(e)}function Z(e){var t=e.componentsServices,n=e.core,o=n.eventsDispatcher,r=n.globalEventsController,s=n.scrollbarRecompensor,c=n.sourceDisplayFacade,u=n.stageManager,f=n.windowResizeActioner,p=e.data,h=e.elements,m=(e.props,e.stageIndexes),v=e.sws;function b(){var t,n;p.i=!0,p.scrollbarWidth=function(){var e=document.createElement("div"),t=e.style,n=document.createElement("div");t.visibility="hidden",t.width="100px",t.msOverflowStyle="scrollbar",t.overflow="scroll",n.style.width="100%",document.body.appendChild(e);var o=e.offsetWidth;e.appendChild(n);var i=n.offsetWidth;return document.body.removeChild(e),o-i}(),Q(e),h.container=document.createElement("div"),h.container.className="".concat(i,"container ").concat(a," ").concat(g),function(e){var t=e.elements;t.slideSwipingHoverer=document.createElement("div"),t.slideSwipingHoverer.className="".concat(i,"slide-swiping-hoverer ").concat(a," ").concat(d)}(e),X(e),function(e){var t=e.core.sourcesPointerDown,n=e.elements,o=e.props.sources,i=document.createElement("div");i.className="".concat(d," ").concat(a),n.container.appendChild(i),i.addEventListener("pointerdown",t.listener),n.sourceWrappersContainer=i;for(var r=0;r<o.length;r++)D(e,r)}(e),e.props.sources.length>1&&(n=(t=e).core.slideChangeFacade,B(t,n.changeToPrevious,"previous","M18.271,9.212H3.615l4.184-4.184c0.306-0.306,0.306-0.801,0-1.107c-0.306-0.306-0.801-0.306-1.107,0L1.21,9.403C1.194,9.417,1.174,9.421,1.158,9.437c-0.181,0.181-0.242,0.425-0.209,0.66c0.005,0.038,0.012,0.071,0.022,0.109c0.028,0.098,0.075,0.188,0.142,0.271c0.021,0.026,0.021,0.061,0.045,0.085c0.015,0.016,0.034,0.02,0.05,0.033l5.484,5.483c0.306,0.307,0.801,0.307,1.107,0c0.306-0.305,0.306-0.801,0-1.105l-4.184-4.185h14.656c0.436,0,0.788-0.353,0.788-0.788S18.707,9.212,18.271,9.212z"),B(t,n.changeToNext,"next","M1.729,9.212h14.656l-4.184-4.184c-0.307-0.306-0.307-0.801,0-1.107c0.305-0.306,0.801-0.306,1.106,0l5.481,5.482c0.018,0.014,0.037,0.019,0.053,0.034c0.181,0.181,0.242,0.425,0.209,0.66c-0.004,0.038-0.012,0.071-0.021,0.109c-0.028,0.098-0.075,0.188-0.143,0.271c-0.021,0.026-0.021,0.061-0.045,0.085c-0.015,0.016-0.034,0.02-0.051,0.033l-5.483,5.483c-0.306,0.307-0.802,0.307-1.106,0c-0.307-0.305-0.307-0.801,0-1.105l4.184-4.185H1.729c-0.436,0-0.788-0.353-0.788-0.788S1.293,9.212,1.729,9.212z")),function(e){for(var t=e.props.sources,n=e.resolve,o=n(L),i=n(H),r=n(R,[o,i]),s=0;s<t.length;s++)if("string"==typeof t[s]){var a=r.getTypeSetByClientForIndex(s);if(a)i.runActionsForSourceTypeAndIndex(a,s);else{var c=o.getSourceTypeFromLocalStorageByUrl(t[s]);c?i.runActionsForSourceTypeAndIndex(c,s):r.retrieveTypeWithXhrForIndex(s)}}else i.runActionsForSourceTypeAndIndex("custom",s)}(e),o.dispatch("onInit")}e.open=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=m.previous,a=m.current,d=m.next;m.current=n,p.i||S(e),u.updateStageIndexes(),p.i?(v.c(),v.a(),v.b(i),v.b(a),v.b(d),o.dispatch("onShow")):b(),c.displaySourcesWhichShouldBeDisplayed(),t.setSlideNumber(n+1),document.body.appendChild(h.container),document.documentElement.classList.add(l),s.addRecompense(),r.attachListeners(),f.runActions(),h.smw[m.current].n(),o.dispatch("onOpen")}}function ee(e,t,n){return(ee=te()?Reflect.construct.bind():function(e,t,n){var o=[null];o.push.apply(o,t);var i=new(Function.bind.apply(e,o));return n&&ne(i,n.prototype),i}).apply(null,arguments)}function te(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function ne(e,t){return(ne=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function oe(e){return function(e){if(Array.isArray(e))return ie(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return ie(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ie(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ie(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function re(){for(var e=document.getElementsByTagName("a"),t=function(t){if(!e[t].hasAttribute("data-fslightbox"))return"continue";var n=e[t].hasAttribute("data-href")?e[t].getAttribute("data-href"):e[t].getAttribute("href");if(!n)return console.warn('The "data-fslightbox" attribute was set without the "href" attribute.'),"continue";var o=e[t].getAttribute("data-fslightbox");fsLightboxInstances[o]||(fsLightboxInstances[o]=new FsLightbox);var i=null;"#"===n.charAt(0)?(i=document.getElementById(n.substring(1)).cloneNode(!0)).removeAttribute("id"):i=n,fsLightboxInstances[o].props.sources.push(i),fsLightboxInstances[o].elements.a.push(e[t]);var r=fsLightboxInstances[o].props.sources.length-1;e[t].onclick=function(e){e.preventDefault(),fsLightboxInstances[o].open(r)},d("types","data-type"),d("videosPosters","data-video-poster"),d("customClasses","data-class"),d("customClasses","data-custom-class");for(var s=["href","data-fslightbox","data-href","data-type","data-video-poster","data-class","data-custom-class"],a=e[t].attributes,c=fsLightboxInstances[o].props.customAttributes,l=0;l<a.length;l++)if(-1===s.indexOf(a[l].name)&&"data-"===a[l].name.substr(0,5)){c[r]||(c[r]={});var u=a[l].name.substr(5);c[r][u]=a[l].value}function d(n,i){e[t].hasAttribute(i)&&(fsLightboxInstances[o].props[n][r]=e[t].getAttribute(i))}},n=0;n<e.length;n++)t(n);var o=Object.keys(fsLightboxInstances);window.fsLightbox=fsLightboxInstances[o[o.length-1]]}window.FsLightbox=function(){var e=this;this.props={sources:[],customAttributes:[],customClasses:[],types:[],videosPosters:[],slideDistance:.3},this.data={isFullscreenOpen:!1,maxSourceWidth:0,maxSourceHeight:0,scrollbarWidth:0},this.isl=[],this.sourcePointerProps={downScreenX:null,isPointering:!1,isSourceDownEventTarget:!1,swipedX:0},this.stageIndexes={},this.elements={a:[],container:null,slideSwipingHoverer:null,smw:[],sourceWrappersContainer:null,sources:[],sourceAnimationWrappers:[]},this.componentsServices={setSlideNumber:function(){}},this.resolve=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return n.unshift(e),ee(t,oe(n))},this.collections={sourceLoadHandlers:[],sourcesRenderFunctions:[],sourceSizers:[]},this.core={eventsDispatcher:{},globalEventsController:{},lightboxCloser:{},lightboxUpdater:{},scrollbarRecompensor:{},slideChangeFacade:{},slideIndexChanger:{},sourcesPointerDown:{},sourceDisplayFacade:{},stageManager:{},windowResizeActioner:{}},this.fs={},this.sws={},Z(this),this.close=function(){return e.core.lightboxCloser.closeLightbox()}},window.fsLightboxInstances={},re(),window.refreshFsLightbox=function(){for(var e in fsLightboxInstances){var t=fsLightboxInstances[e].props;fsLightboxInstances[e]=new FsLightbox,fsLightboxInstances[e].props=t,fsLightboxInstances[e].props.sources=[],fsLightboxInstances[e].elements.a=[]}re()}}])})); |
/produkt/addedit_productcodes.phtml |
---|
0,0 → 1,150 |
<?php |
declare(strict_types=1); |
/** |
* Template für die Anzeige der Produktcodes |
* @author: Daniel Schmitzer (daschmi@daschmi.de) |
* @date: 24.04.23 |
* @time: 13:16 |
*/ |
namespace wpsg; |
?> |
<div class="general-panel-block"> |
<div class="general-panel-general"> |
<?php echo wpsg_drawForm_AdminboxStart(__('Productcodes', 'wpsg')); ?> |
<?php if (intval($this->view['data']['id']) > 0) { |
/** @var \wpsg_product $oProduct */ |
$oProduct = \wpsg_product::getInstance(intval($this->view['data']['id'])); |
$arData = []; |
foreach (\wpsg_product::getProductCodeConfig() as $code_key => $code_data) { |
$product_code = $oProduct->getMeta($code_key, false, ''); |
$arData[$code_key] = [ |
'label' => $code_data['label'], |
'code_key' => $code_key, |
'code' => trim($product_code), |
'set' => trim($product_code) !== '' |
]; |
} |
?> |
<div id="wpsg_mod_productcodes_app"> |
<template v-if="codeKeyNotSet.length > 0"> |
<div class="form-group form-group-sm has-feedback"> |
<label class="col-sm-6 control-label" for="metaean">Code hinzufügen</label> |
<div class="col-sm-6"> |
<div class="wpsg_field_wrap"> |
<select class="form-control input-sm" v-model="add_code_key"> |
<option v-for="(code_key, i) of codeKeyNotSet" :value="code_key">{{data[code_key].label}}</option> |
</select> |
<a @click.stop.prevent="add()" href="#" class="glyphicon glyphicon glyphicon-plus form-control-feedback" aria-hidden="true" style="pointer-events: auto;"></a> |
</div> |
</div> |
<div class="clearfix wpsg_clear"></div> |
</div> |
<hr /> |
</template> |
<div class="code_wrap"> |
<template v-for="(code, i) of data"> |
<div class="form-group form-group-sm has-feedback" v-if="code.set === true"> |
<label class="col-sm-6 control-label" for="metaean">{{code.label}}</label> |
<div class="col-sm-6"> |
<div class="wpsg_field_wrap"> |
<input type="text" class="form-control input-sm" :value="code.code" :name="'meta[' + code.code_key + ']'" /> |
<a @click.stop.prevent="remove(code.code_key)" href="#" class="glyphicon glyphicon glyphicon-trash form-control-feedback" aria-hidden="true" style="pointer-events: auto;"></a> |
</div> |
</div> |
<div class="clearfix wpsg_clear"></div> |
</div> |
<input v-else type="hidden" value="" :name="'meta[' + code.code_key + ']'" /> |
</template> |
</div> |
</div> |
<script type="module"> |
import { ref, createApp, onMounted, computed } from '<?php echo plugin_dir_url(__FILE__); ?>/../../js/vue.esm-browser.js'; |
document.addEventListener('DOMContentLoaded', function() { |
const app = createApp({ |
setup() { |
const data = ref(<?php echo json_encode($arData); ?>); |
const add_code_key = ref(undefined); |
const codeKeyNotSet = computed(() => { |
let r = []; |
for (let c of Object.values(data.value)) { |
if (c.set !== true) r.push(c.code_key); |
} |
return r; |
}); |
const add = () => { |
if (add_code_key.value !== undefined && codeKeyNotSet.value.includes(add_code_key.value)) { |
data.value[add_code_key.value].set = true; |
} |
}; |
const remove = (code_key) => { |
data.value[code_key].set = false; |
}; |
return { |
data, add_code_key, |
codeKeyNotSet, |
add, remove |
}; |
} |
}).mount('#wpsg_mod_productcodes_app'); |
}); |
</script> |
<br /> |
<p class="wpsg_hinweis"> |
<?php if (\wpsg_ShopController::getShop()->hasMod('wpsg_mod_productvariants')) { ?> |
Ist das Produkt ein Variantenprodukt, können die Codes unter Produktvarianten für einzelne Variationen überschrieben werden.<br /> |
<?php } ?> |
Änderungen müssen mit speichern bestätigt werden. |
</p> |
<?php } else { ?> |
<p><?php echo __('Bitte Produkt erst speichern.', 'wpsg'); ?></p> |
<?php } ?> |
<?php echo wpsg_drawForm_AdminboxEnd(); ?> |
</div> |
</div> |
/mods/mod_productgroups/list.phtml |
---|
11,9 → 11,17 |
?> |
<?php $c = 0; foreach ((array)$this->view['data'] as $k => $g) { ?> |
<?php $c = 0; foreach ((array)$this->view['data'] as $k => $g) { |
$oProductgroup = wpsg_productgroup::getInstance(intval($k)); |
?> |
<?php //wpsg_debug($g) ?> |
<div class="wpsg_pgruppen_list_row"> |
<div class="wpsg_pgruppen_list_row <?php |
echo (($oProductgroup->hasActiveDiscount())?'active_discount':''); |
?>"> |
<div class="wpsg_pgruppen_list_titel"> |
<a href="<?php echo WPSG_URL_WP ?>?page_id=<?php echo get_the_ID(); ?>&show=<?php echo $k ?>"> |
<h2><?php echo $g['pgruppe_name'] ?></h2> |
35,6 → 43,7 |
<?php } else { ?> |
<?php if (sizeof($g['produkte'][$i]['bilder']??[]) > 0) { ?> |
<?php $image = array_rand($g['produkte'][$i]['bilder']); ?> |
<?php if ($image >= 0 && is_int($image)) { ?> |
<div class="wpsg_pgruppen_list_image"> |
45,6 → 54,7 |
</div> |
<?php } ?> |
<?php } ?> |
<?php } ?> |
/produkttemplates/standard2.phtml |
---|
10,6 → 10,7 |
// Damit keine Zubehörprodukte ausgegeben werden |
//$this->noReleatedProducts = true; |
/** @var wpsg_product $oProduct */ |
$oProduct = $this->view['oProduct']; |
$var_info = []; |
69,7 → 70,7 |
<?php $att = wp_get_attachment_image_src($arAttachmentIDsAll[$i], array(800, 600), false); ?> |
<a data-index="<?php echo $i; ?>" <?php if ($arAttachmentIDsAll[$i] != $arAttachmentID) echo 'style="display:none;"'; ?> rel="gallery-wpsg-<?php echo $this->getTemplateIndex(); ?>" title="<?php echo $this->getProductName($this->view['data']['id']); ?>" href="<?php echo $att[0]; ?>" class="thickbox bigimg"> |
<a data-index="<?php echo $i; ?>" <?php if ($arAttachmentIDsAll[$i] != $arAttachmentID) echo 'style="display:none;"'; ?> data-fslightbox="<?php echo $this->getTemplateIndex(); ?>" title="<?php echo $this->getProductName($this->view['data']['id']); ?>" href="<?php echo $att[0]; ?>" class="bigimg"> |
<?php echo wp_get_attachment_image($arAttachmentIDsAll[$i], array(300, 300), false, array()); ?> |
85,14 → 86,24 |
<?php if ($this->get_option('wpsg_showArticelnumber') == '1') { ?> |
<div class="wpsg_artikelnummer"> |
<?php echo __('Artikelnummer', 'wpsg'); ?>: <span class="wpsg_anr"><?php echo wpsg_hspc($this->view['data']['anr']); ?></span><br /> |
<?php if (wpsg_isSizedInt($this->get_option('wpsg_mod_produktartikel_ean'))) {?> |
<?php echo __('EAN','wpsg');?>:<span class="wpsg_ean"><?php echo wpsg_hspc($this->view['data']['ean']); ?></span><br /> |
<?php echo __('Artikelnummer', 'wpsg'); ?>: <span class="wpsg_anr"><?php echo wpsg_hspc($oProduct->getNr()); ?></span><br /> |
</div> |
<?php } ?> |
<?php if (wpsg_isSizedInt($this->get_option('wpsg_mod_produktartikel_gtin'))) {?> |
<?php echo __('GTIN','wpsg');?>:<span class="wpsg_gtin"><?php echo wpsg_hspc($this->view['data']['gtin']); ?></span><br /> |
<?php }?></div> |
<?php $arProductCodes = $oProduct->getAllProductCodes(); ?> |
<?php if (sizeof($arProductCodes) > 0) { ?> |
<div class="product_code_wrap"> |
<?php foreach ($arProductCodes as $product_code) { ?> |
<?php if ($product_code !== null) { ?> |
<div class="product_code <?php echo $product_code['code_key']; ?>"> |
<span class="label"><?php echo $product_code['label']; ?></span>: <span class="code"><?php echo $product_code['code']; ?></span> |
</div> |
<?php } ?> |
<?php } ?> |
</div> |
<?php } ?> |
<?php /* Abfrage Preisanzeige nur für eingeloggte User aktiv und User eingeloggt START*/ ?> |
<?php if ($this->view['oProduct']->canDisplayPrice()) { ?> |
/warenkorb/basket.phtml |
---|
6,6 → 6,7 |
//wpsg_debug($this->view['basket']); |
//wpsg_debug($this->view['basket']['arCalculation']); |
//wpsg_debug($_SESSION['wpsg']); |
//wpsg_debug($this->arShipping); |
/css/frontend.css |
---|
36,7 → 36,7 |
.basket_product_wrap .basket_product_row .product_action .title { width: 60%; display:inline-block; margin-top:0.3em; margin-bottom:0.3em; } |
.basket_product_wrap .basket_product_row .product_action .price { width: 39%; display:inline-block; text-align:right; } |
.basket_product_wrap .basket_product_row .product_action .price_total { width: 39%; display:inline-block; font-weight:bold; text-align:right; } |
.basket_product_wrap .basket_product_row .product_info { display:flex; width:100%; justify-content:space-between; align-items:center; } |
.basket_product_wrap .basket_product_row .product_info { display:flex; width:100%; justify-content:space-between; align-items:center; margin-bottom:0.25rem; } |
.basket_product_wrap .basket_product_row .product_upload { } |
.basket_product_wrap .basket_product_row .product_upload .wpsg_mod_orderupload_target { margin-left:15px; flex-grow:1; } |
.basket_product_wrap .basket_product_row .product_upload .wpsg_mod_orderupload_target ul { margin:0px; } |
44,7 → 44,7 |
.basket_product_wrap .basket_product_row .product_upload .wpsg_mod_orderupload_target li a.removeLink { text-decoration:none; box-shadow:none; align-self:center; } |
.basket_product_wrap .basket_product_row .product_upload ul li { list-style:none; } |
.basket_product_wrap .basket_product_row .product_info .titlep { min-width:120px; display:inline-block; margin-top:0.3em; margin-bottom:0.3em; } |
.basket_product_wrap .basket_product_row .product_info .title { width: 30%; display:inline-block; margin-top:0.3em; margin-bottom:0.3em; } |
.basket_product_wrap .basket_product_row .product_info .title { display:inline-block; margin-top:0.3em; margin-bottom:0.3em; } |
.basket_product_wrap .basket_product_row .product_info .valuel { width: 50%; display:inline-block; font-weight:normal; text-align:left; } |
.basket_product_wrap .basket_product_row .product_info .valuer { width: 50%; display:inline-block; font-weight:normal; text-align:right; } |
.basket_product_wrap .basket_product_row .product_info .fulll { width: 80%; display:inline-block; font-weight:normal; text-align:left; } |
78,7 → 78,11 |
.wpsg_basket .wpsg_checkoutbutton { float:right; padding:0.75em 1em; } |
.wpsg_basket .wpsg_cell_gesamtsumme_value { font-weight:bold; } |
.wpsg_basket .wpsg_refreshbutton, .wpsg_basketbutton { float:left; padding:0.75em 1em; } |
.wpsg_checkout2 .wpsg_overviewbutton, |
.wpsg_checkout2 .wpsg_checkoutbutton, |
.wpsg_overview .wpsg_orderbutton, |
.wpsg_overview .wpsg_checkoutbutton, |
.wpsg_basket .wpsg_refreshbutton, .wpsg_checkout2button, .wpsg_basketbutton { float:left; padding:0.75em 1em; } |
.wpsg_basket .wpsg_basket_weiter_shoppen {background:#1a1a1a none repeat scroll 0 0; border:0 none; border-radius:2px; color:#fff; font-weight:700; line-height:1; text-transform:uppercase; padding:0.85em 0.875em 0.78em;} |
.wpsg_basket .product_action_printshop .label { align-self:flex-start; } |
.wpsg_basket .product_action_printshop .files ul li { list-style:none; display:flex; align-items:center; justify-content:flex-end; } |
161,7 → 165,7 |
.wpsg_overview .wpsg_table_wrap .overview_product_row .product_action .price_total { width: 39%; display:inline-block; font-weight:bold; text-align:right; } |
.wpsg_overview .wpsg_table_wrap .overview_product_row .product_info { display:flex; width:100%; justify-content:space-between; align-items:center; } |
.wpsg_overview .wpsg_table_wrap .overview_product_row .product_info .titlep { min-width:120px; display:inline-block; margin-top:0.3em; margin-bottom:0.3em; } |
.wpsg_overview .wpsg_table_wrap .overview_product_row .product_info .title { width: 30%; display:inline-block; margin-top:0.3em; margin-bottom:0.3em; } |
.wpsg_overview .wpsg_table_wrap .overview_product_row .product_info .title { display:inline-block; margin-top:0.3em; margin-bottom:0.3em; } |
.wpsg_overview .wpsg_table_wrap .overview_product_row .product_info .valuel { width: 50%; display:inline-block; font-weight:normal; text-align:left; } |
.wpsg_overview .wpsg_table_wrap .overview_product_row .product_info .valuer { width: 50%; display:inline-block; font-weight:normal; text-align:right; } |
.wpsg_overview .wpsg_table_wrap .overview_product_row .product_info .fulll { width: 80%; display:inline-block; font-weight:normal; text-align:left; } |
239,6 → 243,7 |
/* Produkttemplate */ |
.wpsg_productform { position:relative; } |
.wpsg_productform .wpsg_produkt_wrapper .wpsg_productimages { float:left; margin-right:0.75em; } |
.wpsg_productform img { max-width:100%; height:auto; } |
.wpsg_productform .wpsg_produkt_wrapper .wpsg_produkt_preishinweis { font-size:0.75em; } |
.wpsg_productform .wpsg_produkt_wrapper .wpsg_mod_productview_oldprice, |
.product_wrap .productdetails .oldprice { text-decoration:line-through; } |
250,7 → 255,7 |
.wpsg_productform .wpsg_produkt_wrapper .wpsg_product_informationarea { margin-top:1.5em; margin-bottom:1.5em; } |
.wpsg_productform .wpsg_produkt_wrapper label { font-weight:bold; } |
.wpsg_productform .wpsg_produkt_wrapper .wpsg_product_buttonarea input[type="text"] { width:48%; float:left; box-sizing:border-box; padding:0.7em; line-height:1.5em; font-size:1rem; } |
.wpsg_productform .wpsg_produkt_wrapper .wpsg_product_buttonarea input[type="submit"] { width:48%; float:right; box-sizing: border-box; padding:0.7em; line-height:1.5em; font-size:1rem; border:1px solid transparent; border-radius:3px; } |
.wpsg_productform .wpsg_produkt_wrapper .wpsg_product_buttonarea input[type="submit"] { width:48%; cursor:pointer; float:right; box-sizing: border-box; padding:0.7em; line-height:1.5em; font-size:1rem; border:1px solid transparent; border-radius:3px; } |
.wpsg_productform .wpsg_product_layer { position:absolute; left:0px; top:0px; width:100%; height:100%; background-color:rgba(0, 0, 0, 0.25); padding:0.75em; margin:-0.75em; box-sizing:content-box; } |
.wpsg_productform .wpsg_product_layer img { position:absolute; left:50%; margin-left:-8px; top:50%; margin-top:-5px; } |
.wpsg_productform .wpsg_produkt_produktbilder { max-width:200px; } |
451,7 → 456,7 |
.wpsg_progress:after { border:1px solid #C5C5C5; height:10px; background-color:#F2F2F2; box-sizing:border-box; display:block; width:100%; content:" "; } |
.wpsg_progress span.step { width:25%; display:block; float:left; list-style:none; position:relative; } |
.wpsg_progress span.step > .text { margin-top:30px; text-align:center; width:100%; display:block; } |
.wpsg_progress span.step > .dot { position:absolute; z-index:2; background-color:#C5C5C5; width:20px; height:20px; left:50%; top:0%; margin-left:-15px; margin-top:-5px; border-radius:10px; } |
.wpsg_progress span.step > .dot { position:absolute; z-index:2; background-color:#C5C5C5; width:20px; height:20px; left:50%; top:0%; margin-left:-14px; margin-top:-4px; border-radius:10px; } |
.wpsg_progress span.step:before { border:1px solid #C5C5C5; position:absolute; z-index:2; left:50%; margin-left:-20px; text-align:center; line-height:40px; background-color:#F2F2F2; content:" "; display:block; width:30px; height:30px; border-radius:25px; margin-top:-10px; } |
.wpsg_progress span.step1:before { content:""; } |
.wpsg_progress span.step2:before { content:""; } |
555,4 → 560,30 |
/* wpsg_mod_amazon_v2 */ |
#AmazonPayButton_wrap { text-align:right; margin-bottom:2rem; width:100%; justify-content:flex-end; display:flex; } |
#AmazonPayButton_wrap #AmazonPayButton { width:210px; } |
#AmazonLoginButton_wrap { text-align:right; margin-bottom:2rem; width:100%; justify-content:flex-end; display:flex; } |
#AmazonLoginButton_wrap { text-align:right; margin-bottom:2rem; width:100%; justify-content:flex-end; display:flex; } |
/* wpsg_mod_prepayment - QR-Code auf Bestellabschlussseite */ |
.wpsg_mod_prepayment_info_wrap { display:flex; justify-content:center; flex-direction:column; gap:20px; } |
.wpsg_mod_prepayment_info { display: flex; gap: 20px; border: 1px solid #000000; padding: 20px; } |
.wpsg_mod_prepayment_info h4{ margin: 0; } |
.wpsg_mod_prepayment_info_left { display: flex; flex-direction: column; } |
.wpsg_mod_prepayment_info_left_qrcodeimg { width:240px; height:240px; } |
.wpsg_mod_prepayment_info_left_wrap { display:flex; gap:25%; } |
.wpsg_mod_prepayment_info_left_currency { display:flex; flex-direction:column; } |
.wpsg_mod_prepayment_info_left_amount { display:flex; flex-direction:column; } |
.wpsg_mod_prepayment_girocode { display: flex; gap: 20px; border: 1px solid #000000; padding: 20px;} |
.wpsg_mod_prepayment_girocode h4{ margin: 0; } |
.wpsg_mod_prepayment_girocode_left { display: flex; flex-direction: column; } |
.wpsg_mod_prepayment_girocode_left_qrcodeimg { width:240px; height:240px; } |
.wpsg_mod_prepayment_girocode_left_wrap { display:flex; gap:25%; } |
.wpsg_mod_prepayment_girocode_left_currency { display:flex; flex-direction:column; } |
.wpsg_mod_prepayment_girocode_left_amount { display:flex; flex-direction:column; } |
.wpsg_mod_prepayment_qrrechnung { display: flex; gap: 20px; border: 1px solid #000000; padding: 20px; } |
.wpsg_mod_prepayment_qrrechnung h4{ margin: 0; } |
.wpsg_mod_prepayment_qrrechnung_left { display: flex; flex-direction: column; } |
.wpsg_mod_prepayment_qrrechnung_left_qrcodeimg { width:240px; height:240px; } |
.wpsg_mod_prepayment_qrrechnung_left_wrap { display:flex; gap:25%; } |
.wpsg_mod_prepayment_qrrechnung_left_currency { display:flex; flex-direction:column; } |
.wpsg_mod_prepayment_qrrechnung_left_amount { display:flex; flex-direction:column; } |
/admin/shopdata.phtml |
---|
22,6 → 22,12 |
<?php \wp_nonce_field('wpsg-save-admin-shopdata'); ?> |
<?php |
$countrys = array(); |
$arCountry = wpsg_country::find(); |
foreach ($arCountry as $oCountry) $countrys[$oCountry->getId()] = $oCountry->getName(); |
?> |
<div class="panel panel-default"> |
<div class="panel-heading clearfix"> |
<h3 class="panel-title"><?php echo __('Allgemeine Angaben', 'wpsg'); ?></h3> |
29,6 → 35,7 |
<div class="panel-body"> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_name', __('Name des Shops / Firma', 'wpsg'), $this->get_option('wpsg_shopdata_name'), array('help' => 'wpsg_shopdata_name')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_owner', __('Inhaber des Shops', 'wpsg'), $this->get_option('wpsg_shopdata_owner'), array('help' => 'wpsg_shopdata_owner')); ?> |
<br /> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_tel', __('Telefonnummer', 'wpsg'), $this->get_option('wpsg_shopdata_tel'), array('help' => 'wpsg_shopdata_tel')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_fax', __('Faxnummer', 'wpsg'), $this->get_option('wpsg_shopdata_fax'), array('help' => 'wpsg_shopdata_fax')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_email', __('E-Mail', 'wpsg'), $this->get_option('wpsg_shopdata_email'), array('help' => 'wpsg_shopdata_email')); ?> |
42,16 → 49,10 |
<h3 class="panel-title"><?php echo __('Anschrift', 'wpsg'); ?></h3> |
</div> |
<div class="panel-body"> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_street', __('Straße', 'wpsg'), $this->get_option('wpsg_shopdata_street'), array('help' => 'wpsg_shopdata_street')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_zip', __('Postleitzahl', 'wpsg'), $this->get_option('wpsg_shopdata_zip'), array('help' => 'wpsg_shopdata_zip')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_city', __('Ort', 'wpsg'), $this->get_option('wpsg_shopdata_city'), array('help' => 'wpsg_shopdata_city')); ?> |
<?php echo wpsg_drawForm_Select('wpsg_shopdata_eu', __('Hauptsitz des Shopbetreiber befindet sich:', 'wpsg'), Array( |
wpsg_AdminController::SHOPDATA_EU_GERMANY => __('in Deutschland', 'wpsg'), |
wpsg_AdminController::SHOPDATA_EU_EU => __('innerhalb der EU', 'wpsg'), |
wpsg_AdminController::SHOPDATA_EU_WORLD => __('im europäischen Ausland', 'wpsg') |
), $this->get_option('wpsg_shopdata_eu'), array('help' => 'wpsg_shopdata_eu')); ?> |
<?php echo wpsg_drawForm_Select('wpsg_shopdata_country', __('Land', 'wpsg'), $countrys, $this->get_option('wpsg_shopdata_country'), array('help' => 'wpsg_shopdata_country')); ?> |
</div> |
</div> |
60,15 → 61,16 |
<h3 class="panel-title"><?php echo __('Zweigstelle', 'wpsg'); ?></h3> |
</div> |
<div class="panel-body"> |
<?php echo wpsg_drawForm_Checkbox('wpsg_shopdata_2', __('Zweigstelle vorhanden', 'wpsg'), $this->get_option('wpsg_shopdata_2')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_shopdata_2', __('Zweigstelle vorhanden', 'wpsg'), $this->get_option('wpsg_shopdata_2'), array('help' => 'wpsg_shopdata_2')); ?> |
<div class="wpsg_shopdata_2_activ" style="display:none;"> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_street', __('Straße', 'wpsg'), $this->get_option('wpsg_shopdata_2_street'), array('help' => 'wpsg_shopdata_2_street')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_zip', __('Postleitzahl', 'wpsg'), $this->get_option('wpsg_shopdata_2_zip'), array('help' => 'wpsg_shopdata_2_zip')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_city', __('Ort', 'wpsg'), $this->get_option('wpsg_shopdata_2_city'), array('help' => 'wpsg_shopdata_2_city')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_country', __('Land', 'wpsg'), $this->get_option('wpsg_shopdata_2_country'), array('help' => 'wpsg_shopdata_2_country')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_tel', __('Telefon', 'wpsg'), $this->get_option('wpsg_shopdata_2_tel'), array('help' => 'wpsg_shopdata_2_tel')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_fax', __('Fax', 'wpsg'), $this->get_option('wpsg_shopdata_2_fax'), array('help' => 'wpsg_shopdata_2_fax')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_email', __('E-Mail', 'wpsg'), $this->get_option('wpsg_shopdata_2_email'), array('help' => 'wpsg_shopdata_2_email')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_street', __('Straße', 'wpsg'), $this->get_option('wpsg_shopdata_2_street')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_zip', __('Postleitzahl', 'wpsg'), $this->get_option('wpsg_shopdata_2_zip')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_city', __('Ort', 'wpsg'), $this->get_option('wpsg_shopdata_2_city')); ?> |
<?php echo wpsg_drawForm_Select('wpsg_shopdata_2_country', __('Land', 'wpsg'), $countrys, $this->get_option('wpsg_shopdata_2_country')); ?> |
<br /> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_tel', __('Telefon', 'wpsg'), $this->get_option('wpsg_shopdata_2_tel')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_fax', __('Fax', 'wpsg'), $this->get_option('wpsg_shopdata_2_fax')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_2_email', __('E-Mail', 'wpsg'), $this->get_option('wpsg_shopdata_2_email')); ?> |
</div> |
</div> |
</div> |
78,32 → 80,32 |
<h3 class="panel-title"><?php echo __('Bankdaten', 'wpsg'); ?></h3> |
</div> |
<div class="panel-body"> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_bank_name', __('Name der Bank', 'wpsg'), $this->get_option('wpsg_shopdata_bank_name'), array('help' => 'wpsg_shopdata_bank_name')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_bank_owner', __('Kontoinhaber', 'wpsg'), $this->get_option('wpsg_shopdata_bank_owner'), array('help' => 'wpsg_shopdata_bank_owner')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_bank_iban', __('IBAN Nummer', 'wpsg'), $this->get_option('wpsg_shopdata_bank_iban'), array('help' => 'wpsg_shopdata_bank_iban')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_bank_bic', __('BIC Nummer', 'wpsg'), $this->get_option('wpsg_shopdata_bank_bic'), array('help' => 'wpsg_shopdata_bank_bic')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_bank_qriban', __('QR-IBAN Nummer', 'wpsg'), $this->get_option('wpsg_shopdata_bank_qriban'), array('help' => 'wpsg_shopdata_bank_qriban')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_bank_besr', __('BESR-ID', 'wpsg'), $this->get_option('wpsg_shopdata_bank_besr'), array('help' => 'wpsg_shopdata_bank_besr')); ?> |
</div> |
</div> |
<?php /* only Standort = Ausland */ ?> |
<div class="wpsg_shopdata_eu wpsg_shopdata_eu_<?php echo wpsg_AdminController::SHOPDATA_EU_WORLD; ?>" style="display:<?php echo (($this->get_option('wpsg_shopdata_eu') == wpsg_AdminController::SHOPDATA_EU_WORLD || $this->get_option('wpsg_shopdata_eu') === false)?'block':'none'); ?>;"> |
<div class="panel panel-default"> |
<div class="panel-heading clearfix"> |
<h3 class="panel-title"><?php echo __('EU-Vertreter', 'wpsg'); ?></h3> |
</div> |
<div class="panel-body"> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_name', __('Name des EU-Vertreters', 'wpsg'), $this->get_option('wpsg_shopdata_eu_name'), array('help' => 'wpsg_shopdata_eu_name')); ?> |
<?php echo wpsg_drawForm_Checkbox('wpsg_shopdata_3', __('EU-Vertreter vorhanden', 'wpsg'), $this->get_option('wpsg_shopdata_3'), array('help' => 'wpsg_shopdata_3')); ?> |
<div class="wpsg_shopdata_3_activ" style="display:none;"> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_name', __('Name des EU-Vertreters', 'wpsg'), $this->get_option('wpsg_shopdata_eu_name')); ?> |
<br /> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_street', __('Straße', 'wpsg'), $this->get_option('wpsg_shopdata_eu_street'), array('help' => 'wpsg_shopdata_eu_street')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_zip', __('Postleitzahl', 'wpsg'), $this->get_option('wpsg_shopdata_eu_zip'), array('help' => 'wpsg_shopdata_eu_zip')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_city', __('Stadt', 'wpsg'), $this->get_option('wpsg_shopdata_eu_city'), array('help' => 'wpsg_shopdata_eu_city')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_country', __('Land', 'wpsg'), $this->get_option('wpsg_shopdata_eu_country'), array('help' => 'wpsg_shopdata_eu_country')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_street', __('Straße', 'wpsg'), $this->get_option('wpsg_shopdata_eu_street')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_zip', __('Postleitzahl', 'wpsg'), $this->get_option('wpsg_shopdata_eu_zip')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_city', __('Stadt', 'wpsg'), $this->get_option('wpsg_shopdata_eu_city')); ?> |
<?php echo wpsg_drawForm_Select('wpsg_shopdata_eu_country', __('Land', 'wpsg'), $countrys, $this->get_option('wpsg_shopdata_eu_country')); ?> |
<br /> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_tel', __('Telefonnummer', 'wpsg'), $this->get_option('wpsg_shopdata_eu_tel'), array('help' => 'wpsg_shopdata_eu_tel')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_fax', __('Faxnummer', 'wpsg'), $this->get_option('wpsg_shopdata_eu_fax'), array('help' => 'wpsg_shopdata_eu_fax')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_email', __('E-Mail', 'wpsg'), $this->get_option('wpsg_shopdata_eu_email'), array('help' => 'wpsg_shopdata_eu_email')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_tel', __('Telefonnummer', 'wpsg'), $this->get_option('wpsg_shopdata_eu_tel')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_fax', __('Faxnummer', 'wpsg'), $this->get_option('wpsg_shopdata_eu_fax')); ?> |
<?php echo wpsg_drawForm_Input('wpsg_shopdata_eu_email', __('E-Mail', 'wpsg'), $this->get_option('wpsg_shopdata_eu_email')); ?> |
</div> |
</div> |
</div> |
121,7 → 123,13 |
} ).change(); |
jQuery('#wpsg_shopdata_3').bind('change', function() { |
if (jQuery(this).is(':checked')) jQuery('.wpsg_shopdata_3_activ').show(); |
else jQuery('.wpsg_shopdata_3_activ').hide(); |
} ).change(); |
} ); |
/* ]]> */</script> |
/js/tiny-slider-2.9.2.min.js |
---|
0,0 → 1,0 |
var tns=function(){Object.keys||(Object.keys=function(t){var e=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.push(n);return e}),"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)});var t=window,Oi=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.msRequestAnimationFrame||function(t){return setTimeout(t,16)},e=window,Di=e.cancelAnimationFrame||e.mozCancelAnimationFrame||function(t){clearTimeout(t)};function Hi(){for(var t,e,n,i=arguments[0]||{},a=1,r=arguments.length;a<r;a++)if(null!==(t=arguments[a]))for(e in t)i!==(n=t[e])&&void 0!==n&&(i[e]=n);return i}function ki(t){return 0<=["true","false"].indexOf(t)?JSON.parse(t):t}function Ri(t,e,n,i){if(i)try{t.setItem(e,n)}catch(t){}return n}function Ii(){var t=document,e=t.body;return e||((e=t.createElement("body")).fake=!0),e}var n=document.documentElement;function Pi(t){var e="";return t.fake&&(e=n.style.overflow,t.style.background="",t.style.overflow=n.style.overflow="hidden",n.appendChild(t)),e}function zi(t,e){t.fake&&(t.remove(),n.style.overflow=e,n.offsetHeight)}function Wi(t,e,n,i){"insertRule"in t?t.insertRule(e+"{"+n+"}",i):t.addRule(e,n,i)}function Fi(t){return("insertRule"in t?t.cssRules:t.rules).length}function qi(t,e,n){for(var i=0,a=t.length;i<a;i++)e.call(n,t[i],i)}var i="classList"in document.createElement("_"),ji=i?function(t,e){return t.classList.contains(e)}:function(t,e){return 0<=t.className.indexOf(e)},Vi=i?function(t,e){ji(t,e)||t.classList.add(e)}:function(t,e){ji(t,e)||(t.className+=" "+e)},Gi=i?function(t,e){ji(t,e)&&t.classList.remove(e)}:function(t,e){ji(t,e)&&(t.className=t.className.replace(e,""))};function Qi(t,e){return t.hasAttribute(e)}function Xi(t,e){return t.getAttribute(e)}function r(t){return void 0!==t.item}function Yi(t,e){if(t=r(t)||t instanceof Array?t:[t],"[object Object]"===Object.prototype.toString.call(e))for(var n=t.length;n--;)for(var i in e)t[n].setAttribute(i,e[i])}function Ki(t,e){t=r(t)||t instanceof Array?t:[t];for(var n=(e=e instanceof Array?e:[e]).length,i=t.length;i--;)for(var a=n;a--;)t[i].removeAttribute(e[a])}function Ji(t){for(var e=[],n=0,i=t.length;n<i;n++)e.push(t[n]);return e}function Ui(t,e){"none"!==t.style.display&&(t.style.display="none")}function _i(t,e){"none"===t.style.display&&(t.style.display="")}function Zi(t){return"none"!==window.getComputedStyle(t).display}function $i(e){if("string"==typeof e){var n=[e],i=e.charAt(0).toUpperCase()+e.substr(1);["Webkit","Moz","ms","O"].forEach(function(t){"ms"===t&&"transform"!==e||n.push(t+i)}),e=n}for(var t=document.createElement("fakeelement"),a=(e.length,0);a<e.length;a++){var r=e[a];if(void 0!==t.style[r])return r}return!1}function ta(t,e){var n=!1;return/^Webkit/.test(t)?n="webkit"+e+"End":/^O/.test(t)?n="o"+e+"End":t&&(n=e.toLowerCase()+"end"),n}var a=!1;try{var o=Object.defineProperty({},"passive",{get:function(){a=!0}});window.addEventListener("test",null,o)}catch(t){}var u=!!a&&{passive:!0};function ea(t,e,n){for(var i in e){var a=0<=["touchstart","touchmove"].indexOf(i)&&!n&&u;t.addEventListener(i,e[i],a)}}function na(t,e){for(var n in e){var i=0<=["touchstart","touchmove"].indexOf(n)&&u;t.removeEventListener(n,e[n],i)}}function ia(){return{topics:{},on:function(t,e){this.topics[t]=this.topics[t]||[],this.topics[t].push(e)},off:function(t,e){if(this.topics[t])for(var n=0;n<this.topics[t].length;n++)if(this.topics[t][n]===e){this.topics[t].splice(n,1);break}},emit:function(e,n){n.type=e,this.topics[e]&&this.topics[e].forEach(function(t){t(n,e)})}}}var aa=function(O){O=Hi({container:".slider",mode:"carousel",axis:"horizontal",items:1,gutter:0,edgePadding:0,fixedWidth:!1,autoWidth:!1,viewportMax:!1,slideBy:1,center:!1,controls:!0,controlsPosition:"top",controlsText:["prev","next"],controlsContainer:!1,prevButton:!1,nextButton:!1,nav:!0,navPosition:"top",navContainer:!1,navAsThumbnails:!1,arrowKeys:!1,speed:300,autoplay:!1,autoplayPosition:"top",autoplayTimeout:5e3,autoplayDirection:"forward",autoplayText:["start","stop"],autoplayHoverPause:!1,autoplayButton:!1,autoplayButtonOutput:!0,autoplayResetOnVisibility:!0,animateIn:"tns-fadeIn",animateOut:"tns-fadeOut",animateNormal:"tns-normal",animateDelay:!1,loop:!0,rewind:!1,autoHeight:!1,responsive:!1,lazyload:!1,lazyloadSelector:".tns-lazy-img",touch:!0,mouseDrag:!1,swipeAngle:15,nested:!1,preventActionWhenRunning:!1,preventScrollOnTouch:!1,freezable:!0,onInit:!1,useLocalStorage:!0},O||{});var D=document,h=window,a={ENTER:13,SPACE:32,LEFT:37,RIGHT:39},e={},n=O.useLocalStorage;if(n){var t=navigator.userAgent,i=new Date;try{(e=h.localStorage)?(e.setItem(i,i),n=e.getItem(i)==i,e.removeItem(i)):n=!1,n||(e={})}catch(t){n=!1}n&&(e.tnsApp&&e.tnsApp!==t&&["tC","tPL","tMQ","tTf","t3D","tTDu","tTDe","tADu","tADe","tTE","tAE"].forEach(function(t){e.removeItem(t)}),localStorage.tnsApp=t)}var r,o,u,l,s,c,f,y=e.tC?ki(e.tC):Ri(e,"tC",function(){var t=document,e=Ii(),n=Pi(e),i=t.createElement("div"),a=!1;e.appendChild(i);try{for(var r,o="(10px * 10)",u=["calc"+o,"-moz-calc"+o,"-webkit-calc"+o],l=0;l<3;l++)if(r=u[l],i.style.width=r,100===i.offsetWidth){a=r.replace(o,"");break}}catch(t){}return e.fake?zi(e,n):i.remove(),a}(),n),g=e.tPL?ki(e.tPL):Ri(e,"tPL",function(){var t,e=document,n=Ii(),i=Pi(n),a=e.createElement("div"),r=e.createElement("div"),o="";a.className="tns-t-subp2",r.className="tns-t-ct";for(var u=0;u<70;u++)o+="<div></div>";return r.innerHTML=o,a.appendChild(r),n.appendChild(a),t=Math.abs(a.getBoundingClientRect().left-r.children[67].getBoundingClientRect().left)<2,n.fake?zi(n,i):a.remove(),t}(),n),H=e.tMQ?ki(e.tMQ):Ri(e,"tMQ",(o=document,u=Ii(),l=Pi(u),s=o.createElement("div"),c=o.createElement("style"),f="@media all and (min-width:1px){.tns-mq-test{position:absolute}}",c.type="text/css",s.className="tns-mq-test",u.appendChild(c),u.appendChild(s),c.styleSheet?c.styleSheet.cssText=f:c.appendChild(o.createTextNode(f)),r=window.getComputedStyle?window.getComputedStyle(s).position:s.currentStyle.position,u.fake?zi(u,l):s.remove(),"absolute"===r),n),d=e.tTf?ki(e.tTf):Ri(e,"tTf",$i("transform"),n),v=e.t3D?ki(e.t3D):Ri(e,"t3D",function(t){if(!t)return!1;if(!window.getComputedStyle)return!1;var e,n=document,i=Ii(),a=Pi(i),r=n.createElement("p"),o=9<t.length?"-"+t.slice(0,-9).toLowerCase()+"-":"";return o+="transform",i.insertBefore(r,null),r.style[t]="translate3d(1px,1px,1px)",e=window.getComputedStyle(r).getPropertyValue(o),i.fake?zi(i,a):r.remove(),void 0!==e&&0<e.length&&"none"!==e}(d),n),x=e.tTDu?ki(e.tTDu):Ri(e,"tTDu",$i("transitionDuration"),n),p=e.tTDe?ki(e.tTDe):Ri(e,"tTDe",$i("transitionDelay"),n),b=e.tADu?ki(e.tADu):Ri(e,"tADu",$i("animationDuration"),n),m=e.tADe?ki(e.tADe):Ri(e,"tADe",$i("animationDelay"),n),C=e.tTE?ki(e.tTE):Ri(e,"tTE",ta(x,"Transition"),n),w=e.tAE?ki(e.tAE):Ri(e,"tAE",ta(b,"Animation"),n),M=h.console&&"function"==typeof h.console.warn,T=["container","controlsContainer","prevButton","nextButton","navContainer","autoplayButton"],E={};if(T.forEach(function(t){if("string"==typeof O[t]){var e=O[t],n=D.querySelector(e);if(E[t]=e,!n||!n.nodeName)return void(M&&console.warn("Can't find",O[t]));O[t]=n}}),!(O.container.children.length<1)){var k=O.responsive,R=O.nested,I="carousel"===O.mode;if(k){0 in k&&(O=Hi(O,k[0]),delete k[0]);var A={};for(var N in k){var L=k[N];L="number"==typeof L?{items:L}:L,A[N]=L}k=A,A=null}if(I||function t(e){for(var n in e)I||("slideBy"===n&&(e[n]="page"),"edgePadding"===n&&(e[n]=!1),"autoHeight"===n&&(e[n]=!1)),"responsive"===n&&t(e[n])}(O),!I){O.axis="horizontal",O.slideBy="page",O.edgePadding=!1;var P=O.animateIn,z=O.animateOut,B=O.animateDelay,W=O.animateNormal}var S,F,q="horizontal"===O.axis,j=D.createElement("div"),V=D.createElement("div"),G=O.container,Q=G.parentNode,X=G.outerHTML,Y=G.children,K=Y.length,J=sn(),U=!1;k&&Bn(),I&&(G.className+=" tns-vpfix");var _,Z,$,tt,et,nt,it,at,rt=O.autoWidth,ot=vn("fixedWidth"),ut=vn("edgePadding"),lt=vn("gutter"),st=fn(),ct=vn("center"),ft=rt?1:Math.floor(vn("items")),dt=vn("slideBy"),vt=O.viewportMax||O.fixedWidthViewportWidth,pt=vn("arrowKeys"),mt=vn("speed"),ht=O.rewind,yt=!ht&&O.loop,gt=vn("autoHeight"),xt=vn("controls"),bt=vn("controlsText"),Ct=vn("nav"),wt=vn("touch"),Mt=vn("mouseDrag"),Tt=vn("autoplay"),Et=vn("autoplayTimeout"),At=vn("autoplayText"),Nt=vn("autoplayHoverPause"),Lt=vn("autoplayResetOnVisibility"),Bt=(at=document.createElement("style"),it&&at.setAttribute("media",it),document.querySelector("head").appendChild(at),at.sheet?at.sheet:at.styleSheet),St=O.lazyload,Ot=(O.lazyloadSelector,[]),Dt=yt?(et=function(){{if(rt||ot&&!vt)return K-1;var t=ot?"fixedWidth":"items",e=[];if((ot||O[t]<K)&&e.push(O[t]),k)for(var n in k){var i=k[n][t];i&&(ot||i<K)&&e.push(i)}return e.length||e.push(0),Math.ceil(ot?vt/Math.min.apply(null,e):Math.max.apply(null,e))}}(),nt=I?Math.ceil((5*et-K)/2):4*et-K,nt=Math.max(et,nt),dn("edgePadding")?nt+1:nt):0,Ht=I?K+2*Dt:K+Dt,kt=!(!ot&&!rt||yt),Rt=ot?ni():null,It=!I||!yt,Pt=q?"left":"top",zt="",Wt="",Ft=ot?function(){return ct&&!yt?K-1:Math.ceil(-Rt/(ot+lt))}:rt?function(){for(var t=Ht;t--;)if(_[t]>=-Rt)return t}:function(){return ct&&I&&!yt?K-1:yt||I?Math.max(0,Ht-Math.ceil(ft)):Ht-1},qt=on(vn("startIndex")),jt=qt,Vt=(rn(),0),Gt=rt?null:Ft(),Qt=O.preventActionWhenRunning,Xt=O.swipeAngle,Yt=!Xt||"?",Kt=!1,Jt=O.onInit,Ut=new ia,_t=" tns-slider tns-"+O.mode,Zt=G.id||(tt=window.tnsId,window.tnsId=tt?tt+1:1,"tns"+window.tnsId),$t=vn("disable"),te=!1,ee=O.freezable,ne=!(!ee||rt)&&Ln(),ie=!1,ae={click:fi,keydown:function(t){t=xi(t);var e=[a.LEFT,a.RIGHT].indexOf(t.keyCode);0<=e&&(0===e?Ee.disabled||fi(t,-1):Ae.disabled||fi(t,1))}},re={click:function(t){if(Kt){if(Qt)return;si()}var e=bi(t=xi(t));for(;e!==Se&&!Qi(e,"data-nav");)e=e.parentNode;if(Qi(e,"data-nav")){var n=ke=Number(Xi(e,"data-nav")),i=ot||rt?n*K/De:n*ft,a=ve?n:Math.min(Math.ceil(i),K-1);ci(a,t),Re===n&&(qe&&hi(),ke=-1)}},keydown:function(t){t=xi(t);var e=D.activeElement;if(!Qi(e,"data-nav"))return;var n=[a.LEFT,a.RIGHT,a.ENTER,a.SPACE].indexOf(t.keyCode),i=Number(Xi(e,"data-nav"));0<=n&&(0===n?0<i&&gi(Be[i-1]):1===n?i<De-1&&gi(Be[i+1]):ci(ke=i,t))}},oe={mouseover:function(){qe&&(vi(),je=!0)},mouseout:function(){je&&(di(),je=!1)}},ue={visibilitychange:function(){D.hidden?qe&&(vi(),Ge=!0):Ge&&(di(),Ge=!1)}},le={keydown:function(t){t=xi(t);var e=[a.LEFT,a.RIGHT].indexOf(t.keyCode);0<=e&&fi(t,0===e?-1:1)}},se={touchstart:Ti,touchmove:Ei,touchend:Ai,touchcancel:Ai},ce={mousedown:Ti,mousemove:Ei,mouseup:Ai,mouseleave:Ai},fe=dn("controls"),de=dn("nav"),ve=!!rt||O.navAsThumbnails,pe=dn("autoplay"),me=dn("touch"),he=dn("mouseDrag"),ye="tns-slide-active",ge="tns-complete",xe={load:function(t){zn(bi(t))},error:function(t){e=bi(t),Vi(e,"failed"),Wn(e);var e}},be="force"===O.preventScrollOnTouch;if(fe)var Ce,we,Me=O.controlsContainer,Te=O.controlsContainer?O.controlsContainer.outerHTML:"",Ee=O.prevButton,Ae=O.nextButton,Ne=O.prevButton?O.prevButton.outerHTML:"",Le=O.nextButton?O.nextButton.outerHTML:"";if(de)var Be,Se=O.navContainer,Oe=O.navContainer?O.navContainer.outerHTML:"",De=rt?K:Li(),He=0,ke=-1,Re=ln(),Ie=Re,Pe="tns-nav-active",ze="Carousel Page ",We=" (Current Slide)";if(pe)var Fe,qe,je,Ve,Ge,Qe="forward"===O.autoplayDirection?1:-1,Xe=O.autoplayButton,Ye=O.autoplayButton?O.autoplayButton.outerHTML:"",Ke=["<span class='tns-visually-hidden'>"," animation</span>"];if(me||he)var Je,Ue,_e={},Ze={},$e=!1,tn=q?function(t,e){return t.x-e.x}:function(t,e){return t.y-e.y};rt||an($t||ne),d&&(Pt=d,zt="translate",v?(zt+=q?"3d(":"3d(0px, ",Wt=q?", 0px, 0px)":", 0px)"):(zt+=q?"X(":"Y(",Wt=")")),I&&(G.className=G.className.replace("tns-vpfix","")),function(){dn("gutter");j.className="tns-outer",V.className="tns-inner",j.id=Zt+"-ow",V.id=Zt+"-iw",""===G.id&&(G.id=Zt);_t+=g||rt?" tns-subpixel":" tns-no-subpixel",_t+=y?" tns-calc":" tns-no-calc",rt&&(_t+=" tns-autowidth");_t+=" tns-"+O.axis,G.className+=_t,I?((S=D.createElement("div")).id=Zt+"-mw",S.className="tns-ovh",j.appendChild(S),S.appendChild(V)):j.appendChild(V);if(gt){var t=S||V;t.className+=" tns-ah"}if(Q.insertBefore(j,G),V.appendChild(G),qi(Y,function(t,e){Vi(t,"tns-item"),t.id||(t.id=Zt+"-item"+e),!I&&W&&Vi(t,W),Yi(t,{"aria-hidden":"true",tabindex:"-1"})}),Dt){for(var e=D.createDocumentFragment(),n=D.createDocumentFragment(),i=Dt;i--;){var a=i%K,r=Y[a].cloneNode(!0);if(Ki(r,"id"),n.insertBefore(r,n.firstChild),I){var o=Y[K-1-a].cloneNode(!0);Ki(o,"id"),e.appendChild(o)}}G.insertBefore(e,G.firstChild),G.appendChild(n),Y=G.children}}(),function(){if(!I)for(var t=qt,e=qt+Math.min(K,ft);t<e;t++){var n=Y[t];n.style.left=100*(t-qt)/ft+"%",Vi(n,P),Gi(n,W)}q&&(g||rt?(Wi(Bt,"#"+Zt+" > .tns-item","font-size:"+h.getComputedStyle(Y[0]).fontSize+";",Fi(Bt)),Wi(Bt,"#"+Zt,"font-size:0;",Fi(Bt))):I&&qi(Y,function(t,e){var n;t.style.marginLeft=(n=e,y?y+"("+100*n+"% / "+Ht+")":100*n/Ht+"%")}));if(H){if(x){var i=S&&O.autoHeight?xn(O.speed):"";Wi(Bt,"#"+Zt+"-mw",i,Fi(Bt))}i=pn(O.edgePadding,O.gutter,O.fixedWidth,O.speed,O.autoHeight),Wi(Bt,"#"+Zt+"-iw",i,Fi(Bt)),I&&(i=q&&!rt?"width:"+mn(O.fixedWidth,O.gutter,O.items)+";":"",x&&(i+=xn(mt)),Wi(Bt,"#"+Zt,i,Fi(Bt))),i=q&&!rt?hn(O.fixedWidth,O.gutter,O.items):"",O.gutter&&(i+=yn(O.gutter)),I||(x&&(i+=xn(mt)),b&&(i+=bn(mt))),i&&Wi(Bt,"#"+Zt+" > .tns-item",i,Fi(Bt))}else{Gn(),V.style.cssText=pn(ut,lt,ot,gt),I&&q&&!rt&&(G.style.width=mn(ot,lt,ft));var i=q&&!rt?hn(ot,lt,ft):"";lt&&(i+=yn(lt)),i&&Wi(Bt,"#"+Zt+" > .tns-item",i,Fi(Bt))}if(k&&H)for(var a in k){a=parseInt(a);var r=k[a],i="",o="",u="",l="",s="",c=rt?null:vn("items",a),f=vn("fixedWidth",a),d=vn("speed",a),v=vn("edgePadding",a),p=vn("autoHeight",a),m=vn("gutter",a);x&&S&&vn("autoHeight",a)&&"speed"in r&&(o="#"+Zt+"-mw{"+xn(d)+"}"),("edgePadding"in r||"gutter"in r)&&(u="#"+Zt+"-iw{"+pn(v,m,f,d,p)+"}"),I&&q&&!rt&&("fixedWidth"in r||"items"in r||ot&&"gutter"in r)&&(l="width:"+mn(f,m,c)+";"),x&&"speed"in r&&(l+=xn(d)),l&&(l="#"+Zt+"{"+l+"}"),("fixedWidth"in r||ot&&"gutter"in r||!I&&"items"in r)&&(s+=hn(f,m,c)),"gutter"in r&&(s+=yn(m)),!I&&"speed"in r&&(x&&(s+=xn(d)),b&&(s+=bn(d))),s&&(s="#"+Zt+" > .tns-item{"+s+"}"),(i=o+u+l+s)&&Bt.insertRule("@media (min-width: "+a/16+"em) {"+i+"}",Bt.cssRules.length)}}(),Cn();var en=yt?I?function(){var t=Vt,e=Gt;t+=dt,e-=dt,ut?(t+=1,e-=1):ot&&(st+lt)%(ot+lt)&&(e-=1),Dt&&(e<qt?qt-=K:qt<t&&(qt+=K))}:function(){if(Gt<qt)for(;Vt+K<=qt;)qt-=K;else if(qt<Vt)for(;qt<=Gt-K;)qt+=K}:function(){qt=Math.max(Vt,Math.min(Gt,qt))},nn=I?function(){var e,n,i,a,t,r,o,u,l,s,c;ti(G,""),x||!mt?(ri(),mt&&Zi(G)||si()):(e=G,n=Pt,i=zt,a=Wt,t=ii(),r=mt,o=si,u=Math.min(r,10),l=0<=t.indexOf("%")?"%":"px",t=t.replace(l,""),s=Number(e.style[n].replace(i,"").replace(a,"").replace(l,"")),c=(t-s)/r*u,setTimeout(function t(){r-=u,s+=c,e.style[n]=i+s+l+a,0<r?setTimeout(t,u):o()},u)),q||Ni()}:function(){Ot=[];var t={};t[C]=t[w]=si,na(Y[jt],t),ea(Y[qt],t),oi(jt,P,z,!0),oi(qt,W,P),C&&w&&mt&&Zi(G)||si()};return{version:"2.9.2",getInfo:Si,events:Ut,goTo:ci,play:function(){Tt&&!qe&&(mi(),Ve=!1)},pause:function(){qe&&(hi(),Ve=!0)},isOn:U,updateSliderHeight:Xn,refresh:Cn,destroy:function(){if(Bt.disabled=!0,Bt.ownerNode&&Bt.ownerNode.remove(),na(h,{resize:An}),pt&&na(D,le),Me&&na(Me,ae),Se&&na(Se,re),na(G,oe),na(G,ue),Xe&&na(Xe,{click:yi}),Tt&&clearInterval(Fe),I&&C){var t={};t[C]=si,na(G,t)}wt&&na(G,se),Mt&&na(G,ce);var r=[X,Te,Ne,Le,Oe,Ye];for(var e in T.forEach(function(t,e){var n="container"===t?j:O[t];if("object"==typeof n){var i=!!n.previousElementSibling&&n.previousElementSibling,a=n.parentNode;n.outerHTML=r[e],O[t]=i?i.nextElementSibling:a.firstElementChild}}),T=P=z=B=W=q=j=V=G=Q=X=Y=K=F=J=rt=ot=ut=lt=st=ft=dt=vt=pt=mt=ht=yt=gt=Bt=St=_=Ot=Dt=Ht=kt=Rt=It=Pt=zt=Wt=Ft=qt=jt=Vt=Gt=Xt=Yt=Kt=Jt=Ut=_t=Zt=$t=te=ee=ne=ie=ae=re=oe=ue=le=se=ce=fe=de=ve=pe=me=he=ye=ge=xe=Z=xt=bt=Me=Te=Ee=Ae=Ce=we=Ct=Se=Oe=Be=De=He=ke=Re=Ie=Pe=ze=We=Tt=Et=Qe=At=Nt=Xe=Ye=Lt=Ke=Fe=qe=je=Ve=Ge=_e=Ze=Je=$e=Ue=tn=wt=Mt=null,this)"rebuild"!==e&&(this[e]=null);U=!1},rebuild:function(){return aa(Hi(O,E))}}}function an(t){t&&(xt=Ct=wt=Mt=pt=Tt=Nt=Lt=!1)}function rn(){for(var t=I?qt-Dt:qt;t<0;)t+=K;return t%K+1}function on(t){return t=t?Math.max(0,Math.min(yt?K-1:K-ft,t)):0,I?t+Dt:t}function un(t){for(null==t&&(t=qt),I&&(t-=Dt);t<0;)t+=K;return Math.floor(t%K)}function ln(){var t,e=un();return t=ve?e:ot||rt?Math.ceil((e+1)*De/K-1):Math.floor(e/ft),!yt&&I&&qt===Gt&&(t=De-1),t}function sn(){return h.innerWidth||D.documentElement.clientWidth||D.body.clientWidth}function cn(t){return"top"===t?"afterbegin":"beforeend"}function fn(){var t=ut?2*ut-lt:0;return function t(e){var n,i,a=D.createElement("div");return e.appendChild(a),i=(n=a.getBoundingClientRect()).right-n.left,a.remove(),i||t(e.parentNode)}(Q)-t}function dn(t){if(O[t])return!0;if(k)for(var e in k)if(k[e][t])return!0;return!1}function vn(t,e){if(null==e&&(e=J),"items"===t&&ot)return Math.floor((st+lt)/(ot+lt))||1;var n=O[t];if(k)for(var i in k)e>=parseInt(i)&&t in k[i]&&(n=k[i][t]);return"slideBy"===t&&"page"===n&&(n=vn("items")),I||"slideBy"!==t&&"items"!==t||(n=Math.floor(n)),n}function pn(t,e,n,i,a){var r="";if(void 0!==t){var o=t;e&&(o-=e),r=q?"margin: 0 "+o+"px 0 "+t+"px;":"margin: "+t+"px 0 "+o+"px 0;"}else if(e&&!n){var u="-"+e+"px";r="margin: 0 "+(q?u+" 0 0":"0 "+u+" 0")+";"}return!I&&a&&x&&i&&(r+=xn(i)),r}function mn(t,e,n){return t?(t+e)*Ht+"px":y?y+"("+100*Ht+"% / "+n+")":100*Ht/n+"%"}function hn(t,e,n){var i;if(t)i=t+e+"px";else{I||(n=Math.floor(n));var a=I?Ht:n;i=y?y+"(100% / "+a+")":100/a+"%"}return i="width:"+i,"inner"!==R?i+";":i+" !important;"}function yn(t){var e="";!1!==t&&(e=(q?"padding-":"margin-")+(q?"right":"bottom")+": "+t+"px;");return e}function gn(t,e){var n=t.substring(0,t.length-e).toLowerCase();return n&&(n="-"+n+"-"),n}function xn(t){return gn(x,18)+"transition-duration:"+t/1e3+"s;"}function bn(t){return gn(b,17)+"animation-duration:"+t/1e3+"s;"}function Cn(){if(dn("autoHeight")||rt||!q){var t=G.querySelectorAll("img");qi(t,function(t){var e=t.src;e&&e.indexOf("data:image")<0?(ea(t,xe),t.src="",t.src=e,Vi(t,"loading")):St||zn(t)}),Oi(function(){jn(Ji(t),function(){Z=!0})}),!rt&&q&&(t=Fn(qt,Math.min(qt+ft-1,Ht-1))),St?wn():Oi(function(){jn(Ji(t),wn)})}else I&&ai(),Tn(),En()}function wn(){if(rt){var e=yt?qt:K-1;!function t(){Y[e-1].getBoundingClientRect().right.toFixed(2)===Y[e].getBoundingClientRect().left.toFixed(2)?Mn():setTimeout(function(){t()},16)}()}else Mn()}function Mn(){q&&!rt||(Yn(),rt?(Rt=ni(),ee&&(ne=Ln()),Gt=Ft(),an($t||ne)):Ni()),I&&ai(),Tn(),En()}function Tn(){if(Kn(),j.insertAdjacentHTML("afterbegin",'<div class="tns-liveregion tns-visually-hidden" aria-live="polite" aria-atomic="true">slide <span class="current">'+Rn()+"</span> of "+K+"</div>"),$=j.querySelector(".tns-liveregion .current"),pe){var t=Tt?"stop":"start";Xe?Yi(Xe,{"data-action":t}):O.autoplayButtonOutput&&(j.insertAdjacentHTML(cn(O.autoplayPosition),'<button data-action="'+t+'">'+Ke[0]+t+Ke[1]+At[0]+"</button>"),Xe=j.querySelector("[data-action]")),Xe&&ea(Xe,{click:yi}),Tt&&(mi(),Nt&&ea(G,oe),Lt&&ea(G,ue))}if(de){if(Se)Yi(Se,{"aria-label":"Carousel Pagination"}),qi(Be=Se.children,function(t,e){Yi(t,{"data-nav":e,tabindex:"-1","aria-label":ze+(e+1),"aria-controls":Zt})});else{for(var e="",n=ve?"":'style="display:none"',i=0;i<K;i++)e+='<button data-nav="'+i+'" tabindex="-1" aria-controls="'+Zt+'" '+n+' aria-label="'+ze+(i+1)+'"></button>';e='<div class="tns-nav" aria-label="Carousel Pagination">'+e+"</div>",j.insertAdjacentHTML(cn(O.navPosition),e),Se=j.querySelector(".tns-nav"),Be=Se.children}if(Bi(),x){var a=x.substring(0,x.length-18).toLowerCase(),r="transition: all "+mt/1e3+"s";a&&(r="-"+a+"-"+r),Wi(Bt,"[aria-controls^="+Zt+"-item]",r,Fi(Bt))}Yi(Be[Re],{"aria-label":ze+(Re+1)+We}),Ki(Be[Re],"tabindex"),Vi(Be[Re],Pe),ea(Se,re)}fe&&(Me||Ee&&Ae||(j.insertAdjacentHTML(cn(O.controlsPosition),'<div class="tns-controls" aria-label="Carousel Navigation" tabindex="0"><button data-controls="prev" tabindex="-1" aria-controls="'+Zt+'">'+bt[0]+'</button><button data-controls="next" tabindex="-1" aria-controls="'+Zt+'">'+bt[1]+"</button></div>"),Me=j.querySelector(".tns-controls")),Ee&&Ae||(Ee=Me.children[0],Ae=Me.children[1]),O.controlsContainer&&Yi(Me,{"aria-label":"Carousel Navigation",tabindex:"0"}),(O.controlsContainer||O.prevButton&&O.nextButton)&&Yi([Ee,Ae],{"aria-controls":Zt,tabindex:"-1"}),(O.controlsContainer||O.prevButton&&O.nextButton)&&(Yi(Ee,{"data-controls":"prev"}),Yi(Ae,{"data-controls":"next"})),Ce=Un(Ee),we=Un(Ae),$n(),Me?ea(Me,ae):(ea(Ee,ae),ea(Ae,ae))),Sn()}function En(){if(I&&C){var t={};t[C]=si,ea(G,t)}wt&&ea(G,se,O.preventScrollOnTouch),Mt&&ea(G,ce),pt&&ea(D,le),"inner"===R?Ut.on("outerResized",function(){Nn(),Ut.emit("innerLoaded",Si())}):(k||ot||rt||gt||!q)&&ea(h,{resize:An}),gt&&("outer"===R?Ut.on("innerLoaded",qn):$t||qn()),Pn(),$t?Hn():ne&&Dn(),Ut.on("indexChanged",Vn),"inner"===R&&Ut.emit("innerLoaded",Si()),"function"==typeof Jt&&Jt(Si()),U=!0}function An(t){Oi(function(){Nn(xi(t))})}function Nn(t){if(U){"outer"===R&&Ut.emit("outerResized",Si(t)),J=sn();var e,n=F,i=!1;k&&(Bn(),(e=n!==F)&&Ut.emit("newBreakpointStart",Si(t)));var a,r,o,u,l=ft,s=$t,c=ne,f=pt,d=xt,v=Ct,p=wt,m=Mt,h=Tt,y=Nt,g=Lt,x=qt;if(e){var b=ot,C=gt,w=bt,M=ct,T=At;if(!H)var E=lt,A=ut}if(pt=vn("arrowKeys"),xt=vn("controls"),Ct=vn("nav"),wt=vn("touch"),ct=vn("center"),Mt=vn("mouseDrag"),Tt=vn("autoplay"),Nt=vn("autoplayHoverPause"),Lt=vn("autoplayResetOnVisibility"),e&&($t=vn("disable"),ot=vn("fixedWidth"),mt=vn("speed"),gt=vn("autoHeight"),bt=vn("controlsText"),At=vn("autoplayText"),Et=vn("autoplayTimeout"),H||(ut=vn("edgePadding"),lt=vn("gutter"))),an($t),st=fn(),q&&!rt||$t||(Yn(),q||(Ni(),i=!0)),(ot||rt)&&(Rt=ni(),Gt=Ft()),(e||ot)&&(ft=vn("items"),dt=vn("slideBy"),(r=ft!==l)&&(ot||rt||(Gt=Ft()),en())),e&&$t!==s&&($t?Hn():function(){if(!te)return;if(Bt.disabled=!1,G.className+=_t,ai(),yt)for(var t=Dt;t--;)I&&_i(Y[t]),_i(Y[Ht-t-1]);if(!I)for(var e=qt,n=qt+K;e<n;e++){var i=Y[e],a=e<qt+ft?P:W;i.style.left=100*(e-qt)/ft+"%",Vi(i,a)}On(),te=!1}()),ee&&(e||ot||rt)&&(ne=Ln())!==c&&(ne?(ri(ii(on(0))),Dn()):(!function(){if(!ie)return;ut&&H&&(V.style.margin="");if(Dt)for(var t="tns-transparent",e=Dt;e--;)I&&Gi(Y[e],t),Gi(Y[Ht-e-1],t);On(),ie=!1}(),i=!0)),an($t||ne),Tt||(Nt=Lt=!1),pt!==f&&(pt?ea(D,le):na(D,le)),xt!==d&&(xt?Me?_i(Me):(Ee&&_i(Ee),Ae&&_i(Ae)):Me?Ui(Me):(Ee&&Ui(Ee),Ae&&Ui(Ae))),Ct!==v&&(Ct?_i(Se):Ui(Se)),wt!==p&&(wt?ea(G,se,O.preventScrollOnTouch):na(G,se)),Mt!==m&&(Mt?ea(G,ce):na(G,ce)),Tt!==h&&(Tt?(Xe&&_i(Xe),qe||Ve||mi()):(Xe&&Ui(Xe),qe&&hi())),Nt!==y&&(Nt?ea(G,oe):na(G,oe)),Lt!==g&&(Lt?ea(D,ue):na(D,ue)),e){if(ot===b&&ct===M||(i=!0),gt!==C&&(gt||(V.style.height="")),xt&&bt!==w&&(Ee.innerHTML=bt[0],Ae.innerHTML=bt[1]),Xe&&At!==T){var N=Tt?1:0,L=Xe.innerHTML,B=L.length-T[N].length;L.substring(B)===T[N]&&(Xe.innerHTML=L.substring(0,B)+At[N])}}else ct&&(ot||rt)&&(i=!0);if((r||ot&&!rt)&&(De=Li(),Bi()),(a=qt!==x)?(Ut.emit("indexChanged",Si()),i=!0):r?a||Vn():(ot||rt)&&(Pn(),Kn(),kn()),r&&!I&&function(){for(var t=qt+Math.min(K,ft),e=Ht;e--;){var n=Y[e];qt<=e&&e<t?(Vi(n,"tns-moving"),n.style.left=100*(e-qt)/ft+"%",Vi(n,P),Gi(n,W)):n.style.left&&(n.style.left="",Vi(n,W),Gi(n,P)),Gi(n,z)}setTimeout(function(){qi(Y,function(t){Gi(t,"tns-moving")})},300)}(),!$t&&!ne){if(e&&!H&&(gt===autoheightTem&&mt===speedTem||Gn(),ut===A&<===E||(V.style.cssText=pn(ut,lt,ot,mt,gt)),q)){I&&(G.style.width=mn(ot,lt,ft));var S=hn(ot,lt,ft)+yn(lt);u=Fi(o=Bt)-1,"deleteRule"in o?o.deleteRule(u):o.removeRule(u),Wi(Bt,"#"+Zt+" > .tns-item",S,Fi(Bt))}gt&&qn(),i&&(ai(),jt=qt)}e&&Ut.emit("newBreakpointEnd",Si(t))}}function Ln(){if(!ot&&!rt)return K<=(ct?ft-(ft-1)/2:ft);var t=ot?(ot+lt)*K:_[K],e=ut?st+2*ut:st+lt;return ct&&(e-=ot?(st-ot)/2:(st-(_[qt+1]-_[qt]-lt))/2),t<=e}function Bn(){for(var t in F=0,k)(t=parseInt(t))<=J&&(F=t)}function Sn(){!Tt&&Xe&&Ui(Xe),!Ct&&Se&&Ui(Se),xt||(Me?Ui(Me):(Ee&&Ui(Ee),Ae&&Ui(Ae)))}function On(){Tt&&Xe&&_i(Xe),Ct&&Se&&_i(Se),xt&&(Me?_i(Me):(Ee&&_i(Ee),Ae&&_i(Ae)))}function Dn(){if(!ie){if(ut&&(V.style.margin="0px"),Dt)for(var t="tns-transparent",e=Dt;e--;)I&&Vi(Y[e],t),Vi(Y[Ht-e-1],t);Sn(),ie=!0}}function Hn(){if(!te){if(Bt.disabled=!0,G.className=G.className.replace(_t.substring(1),""),Ki(G,["style"]),yt)for(var t=Dt;t--;)I&&Ui(Y[t]),Ui(Y[Ht-t-1]);if(q&&I||Ki(V,["style"]),!I)for(var e=qt,n=qt+K;e<n;e++){var i=Y[e];Ki(i,["style"]),Gi(i,P),Gi(i,W)}Sn(),te=!0}}function kn(){var t=Rn();$.innerHTML!==t&&($.innerHTML=t)}function Rn(){var t=In(),e=t[0]+1,n=t[1]+1;return e===n?e+"":e+" to "+n}function In(t){null==t&&(t=ii());var n,i,a,r=qt;if(ct||ut?(rt||ot)&&(i=-(parseFloat(t)+ut),a=i+st+2*ut):rt&&(i=_[qt],a=i+st),rt)_.forEach(function(t,e){e<Ht&&((ct||ut)&&t<=i+.5&&(r=e),.5<=a-t&&(n=e))});else{if(ot){var e=ot+lt;ct||ut?(r=Math.floor(i/e),n=Math.ceil(a/e-1)):n=r+Math.ceil(st/e)-1}else if(ct||ut){var o=ft-1;if(ct?(r-=o/2,n=qt+o/2):n=qt+o,ut){var u=ut*ft/st;r-=u,n+=u}r=Math.floor(r),n=Math.ceil(n)}else n=r+ft-1;r=Math.max(r,0),n=Math.min(n,Ht-1)}return[r,n]}function Pn(){St&&!$t&&Fn.apply(null,In()).forEach(function(t){if(!ji(t,ge)){var e={};e[C]=function(t){t.stopPropagation()},ea(t,e),ea(t,xe),t.src=Xi(t,"data-src");var n=Xi(t,"data-srcset");n&&(t.srcset=n),Vi(t,"loading")}})}function zn(t){Vi(t,"loaded"),Wn(t)}function Wn(t){Vi(t,"tns-complete"),Gi(t,"loading"),na(t,xe)}function Fn(t,e){for(var n=[];t<=e;)qi(Y[t].querySelectorAll("img"),function(t){n.push(t)}),t++;return n}function qn(){var t=Fn.apply(null,In());Oi(function(){jn(t,Xn)})}function jn(n,t){return Z?t():(n.forEach(function(t,e){ji(t,ge)&&n.splice(e,1)}),n.length?void Oi(function(){jn(n,t)}):t())}function Vn(){Pn(),Kn(),kn(),$n(),function(){if(Ct&&(Re=0<=ke?ke:ln(),ke=-1,Re!==Ie)){var t=Be[Ie],e=Be[Re];Yi(t,{tabindex:"-1","aria-label":ze+(Ie+1)}),Gi(t,Pe),Yi(e,{"aria-label":ze+(Re+1)+We}),Ki(e,"tabindex"),Vi(e,Pe),Ie=Re}}()}function Gn(){I&>&&(S.style[x]=mt/1e3+"s")}function Qn(t,e){for(var n=[],i=t,a=Math.min(t+e,Ht);i<a;i++)n.push(Y[i].offsetHeight);return Math.max.apply(null,n)}function Xn(){var t=gt?Qn(qt,ft):Qn(Dt,K),e=S||V;e.style.height!==t&&(e.style.height=t+"px")}function Yn(){_=[0];var n=q?"left":"top",i=q?"right":"bottom",a=Y[0].getBoundingClientRect()[n];qi(Y,function(t,e){e&&_.push(t.getBoundingClientRect()[n]-a),e===Ht-1&&_.push(t.getBoundingClientRect()[i]-a)})}function Kn(){var t=In(),n=t[0],i=t[1];qi(Y,function(t,e){n<=e&&e<=i?Qi(t,"aria-hidden")&&(Ki(t,["aria-hidden","tabindex"]),Vi(t,ye)):Qi(t,"aria-hidden")||(Yi(t,{"aria-hidden":"true",tabindex:"-1"}),Gi(t,ye))})}function Jn(t){return t.nodeName.toLowerCase()}function Un(t){return"button"===Jn(t)}function _n(t){return"true"===t.getAttribute("aria-disabled")}function Zn(t,e,n){t?e.disabled=n:e.setAttribute("aria-disabled",n.toString())}function $n(){if(xt&&!ht&&!yt){var t=Ce?Ee.disabled:_n(Ee),e=we?Ae.disabled:_n(Ae),n=qt<=Vt,i=!ht&&Gt<=qt;n&&!t&&Zn(Ce,Ee,!0),!n&&t&&Zn(Ce,Ee,!1),i&&!e&&Zn(we,Ae,!0),!i&&e&&Zn(we,Ae,!1)}}function ti(t,e){x&&(t.style[x]=e)}function ei(t){return null==t&&(t=qt),rt?(st-(ut?lt:0)-(_[t+1]-_[t]-lt))/2:ot?(st-ot)/2:(ft-1)/2}function ni(){var t=st+(ut?lt:0)-(ot?(ot+lt)*Ht:_[Ht]);return ct&&!yt&&(t=ot?-(ot+lt)*(Ht-1)-ei():ei(Ht-1)-_[Ht-1]),0<t&&(t=0),t}function ii(t){var e;if(null==t&&(t=qt),q&&!rt)if(ot)e=-(ot+lt)*t,ct&&(e+=ei());else{var n=d?Ht:ft;ct&&(t-=ei()),e=100*-t/n}else e=-_[t],ct&&rt&&(e+=ei());return kt&&(e=Math.max(e,Rt)),e+=!q||rt||ot?"px":"%"}function ai(t){ti(G,"0s"),ri(t)}function ri(t){null==t&&(t=ii()),G.style[Pt]=zt+t+Wt}function oi(t,e,n,i){var a=t+ft;yt||(a=Math.min(a,Ht));for(var r=t;r<a;r++){var o=Y[r];i||(o.style.left=100*(r-qt)/ft+"%"),B&&p&&(o.style[p]=o.style[m]=B*(r-t)/1e3+"s"),Gi(o,e),Vi(o,n),i&&Ot.push(o)}}function ui(t,e){It&&en(),(qt!==jt||e)&&(Ut.emit("indexChanged",Si()),Ut.emit("transitionStart",Si()),gt&&qn(),qe&&t&&0<=["click","keydown"].indexOf(t.type)&&hi(),Kt=!0,nn())}function li(t){return t.toLowerCase().replace(/-/g,"")}function si(t){if(I||Kt){if(Ut.emit("transitionEnd",Si(t)),!I&&0<Ot.length)for(var e=0;e<Ot.length;e++){var n=Ot[e];n.style.left="",m&&p&&(n.style[m]="",n.style[p]=""),Gi(n,z),Vi(n,W)}if(!t||!I&&t.target.parentNode===G||t.target===G&&li(t.propertyName)===li(Pt)){if(!It){var i=qt;en(),qt!==i&&(Ut.emit("indexChanged",Si()),ai())}"inner"===R&&Ut.emit("innerLoaded",Si()),Kt=!1,jt=qt}}}function ci(t,e){if(!ne)if("prev"===t)fi(e,-1);else if("next"===t)fi(e,1);else{if(Kt){if(Qt)return;si()}var n=un(),i=0;if("first"===t?i=-n:"last"===t?i=I?K-ft-n:K-1-n:("number"!=typeof t&&(t=parseInt(t)),isNaN(t)||(e||(t=Math.max(0,Math.min(K-1,t))),i=t-n)),!I&&i&&Math.abs(i)<ft){var a=0<i?1:-1;i+=Vt<=qt+i-K?K*a:2*K*a*-1}qt+=i,I&&yt&&(qt<Vt&&(qt+=K),Gt<qt&&(qt-=K)),un(qt)!==un(jt)&&ui(e)}}function fi(t,e){if(Kt){if(Qt)return;si()}var n;if(!e){for(var i=bi(t=xi(t));i!==Me&&[Ee,Ae].indexOf(i)<0;)i=i.parentNode;var a=[Ee,Ae].indexOf(i);0<=a&&(n=!0,e=0===a?-1:1)}if(ht){if(qt===Vt&&-1===e)return void ci("last",t);if(qt===Gt&&1===e)return void ci("first",t)}e&&(qt+=dt*e,rt&&(qt=Math.floor(qt)),ui(n||t&&"keydown"===t.type?t:null))}function di(){Fe=setInterval(function(){fi(null,Qe)},Et),qe=!0}function vi(){clearInterval(Fe),qe=!1}function pi(t,e){Yi(Xe,{"data-action":t}),Xe.innerHTML=Ke[0]+t+Ke[1]+e}function mi(){di(),Xe&&pi("stop",At[1])}function hi(){vi(),Xe&&pi("start",At[0])}function yi(){qe?(hi(),Ve=!0):(mi(),Ve=!1)}function gi(t){t.focus()}function xi(t){return Ci(t=t||h.event)?t.changedTouches[0]:t}function bi(t){return t.target||h.event.srcElement}function Ci(t){return 0<=t.type.indexOf("touch")}function wi(t){t.preventDefault?t.preventDefault():t.returnValue=!1}function Mi(){return a=Ze.y-_e.y,r=Ze.x-_e.x,t=Math.atan2(a,r)*(180/Math.PI),e=Xt,n=!1,i=Math.abs(90-Math.abs(t)),90-e<=i?n="horizontal":i<=e&&(n="vertical"),n===O.axis;var t,e,n,i,a,r}function Ti(t){if(Kt){if(Qt)return;si()}Tt&&qe&&vi(),$e=!0,Ue&&(Di(Ue),Ue=null);var e=xi(t);Ut.emit(Ci(t)?"touchStart":"dragStart",Si(t)),!Ci(t)&&0<=["img","a"].indexOf(Jn(bi(t)))&&wi(t),Ze.x=_e.x=e.clientX,Ze.y=_e.y=e.clientY,I&&(Je=parseFloat(G.style[Pt].replace(zt,"")),ti(G,"0s"))}function Ei(t){if($e){var e=xi(t);Ze.x=e.clientX,Ze.y=e.clientY,I?Ue||(Ue=Oi(function(){!function t(e){if(!Yt)return void($e=!1);Di(Ue);$e&&(Ue=Oi(function(){t(e)}));"?"===Yt&&(Yt=Mi());if(Yt){!be&&Ci(e)&&(be=!0);try{e.type&&Ut.emit(Ci(e)?"touchMove":"dragMove",Si(e))}catch(t){}var n=Je,i=tn(Ze,_e);if(!q||ot||rt)n+=i,n+="px";else{var a=d?i*ft*100/((st+lt)*Ht):100*i/(st+lt);n+=a,n+="%"}G.style[Pt]=zt+n+Wt}}(t)})):("?"===Yt&&(Yt=Mi()),Yt&&(be=!0)),be&&t.preventDefault()}}function Ai(i){if($e){Ue&&(Di(Ue),Ue=null),I&&ti(G,""),$e=!1;var t=xi(i);Ze.x=t.clientX,Ze.y=t.clientY;var a=tn(Ze,_e);if(Math.abs(a)){if(!Ci(i)){var n=bi(i);ea(n,{click:function t(e){wi(e),na(n,{click:t})}})}I?Ue=Oi(function(){if(q&&!rt){var t=-a*ft/(st+lt);t=0<a?Math.floor(t):Math.ceil(t),qt+=t}else{var e=-(Je+a);if(e<=0)qt=Vt;else if(e>=_[Ht-1])qt=Gt;else for(var n=0;n<Ht&&e>=_[n];)e>_[qt=n]&&a<0&&(qt+=1),n++}ui(i,a),Ut.emit(Ci(i)?"touchEnd":"dragEnd",Si(i))}):Yt&&fi(i,0<a?-1:1)}}"auto"===O.preventScrollOnTouch&&(be=!1),Xt&&(Yt="?"),Tt&&!qe&&di()}function Ni(){(S||V).style.height=_[qt+ft]-_[qt]+"px"}function Li(){var t=ot?(ot+lt)*K/st:K/ft;return Math.min(Math.ceil(t),K)}function Bi(){if(Ct&&!ve&&De!==He){var t=He,e=De,n=_i;for(De<He&&(t=De,e=He,n=Ui);t<e;)n(Be[t]),t++;He=De}}function Si(t){return{container:G,slideItems:Y,navContainer:Se,navItems:Be,controlsContainer:Me,hasControls:fe,prevButton:Ee,nextButton:Ae,items:ft,slideBy:dt,cloneCount:Dt,slideCount:K,slideCountNew:Ht,index:qt,indexCached:jt,displayIndex:rn(),navCurrentIndex:Re,navCurrentIndexCached:Ie,pages:De,pagesCached:He,sheet:Bt,isOn:U,event:t||{}}}M&&console.warn("No slides found in",O.container)};return aa}(); |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/produkt/index.phtml |
---|
201,14 → 201,6 |
<th class="wpsg_order" data-order="cat"><?php echo __('Kategorie', 'wpsg'); ?></th> |
<?php } ?> |
<?php if ($this->hasMod('wpsg_mod_produktartikel') && $this->get_option('wpsg_mod_produktartikel_gtin') == '1') { ?> |
<th class="wpsg_order" data-order="gtin-nr"><?php echo __("GTIN", "wpsg"); ?></th> |
<?php } ?> |
<?php if ($this->hasMod('wpsg_mod_produktartikel') && $this->get_option('wpsg_mod_produktartikel_ean') == '1') { ?> |
<th class="wpsg_order" data-order="ean-nr"><?php echo __("EAN", "wpsg"); ?></th> |
<?php } ?> |
<?php if ($this->hasMod('wpsg_mod_deliverytime') && $this->get_option('wpsg_mod_deliverytime_productindex') == '1') { ?> |
<th class="wpsg_order" data-order="deliverytime"><?php echo __("Lieferzeit", 'wpsg'); ?></th> |
<?php } ?> |
336,12 → 328,6 |
?> |
</td> |
<?php } ?> |
<?php if ($this->hasMod('wpsg_mod_produktartikel') && $this->get_option('wpsg_mod_produktartikel_gtin') == '1') { ?> |
<td><?php echo wpsg_hspc($d['gtin']); ?></td> |
<?php } ?> |
<?php if ($this->hasMod('wpsg_mod_produktartikel') && $this->get_option('wpsg_mod_produktartikel_ean') == '1') { ?> |
<td><?php echo wpsg_hspc($d['ean']); ?></td> |
<?php } ?> |
<?php if ($this->hasMod('wpsg_mod_deliverytime') && $this->get_option('wpsg_mod_deliverytime_productindex') == '1') { ?> |
<td> |
<?php if ($this->callMod('wpsg_mod_deliverytime', 'isStoreProduct', array($oProduct->getProductKey()))) { ?> |
/js/vue-3.2.47.global.min.js |
---|
0,0 → 1,15 |
var Vue=function(r){"use strict";function e(e,t){const n=Object.create(null);var r=e.split(",");for(let e=0;e<r.length;e++)n[r[e]]=!0;return t?e=>!!n[e.toLowerCase()]:e=>!!n[e]}const x={[1]:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"HYDRATE_EVENTS",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT","-1":"HOISTED","-2":"BAIL"},S={[1]:"STABLE",2:"DYNAMIC",3:"FORWARDED"};const i=e("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt"),d=2;function a(t){if(ae(t)){const o={};for(let e=0;e<t.length;e++){var n=t[e],r=(ce(n)?k:a)(n);if(r)for(const i in r)o[i]=r[i]}return o}return ce(t)||re(t)?t:void 0}const u=/;(?![^(]*\))/g,p=/:([^]+)/,C=/\/\*.*?\*\//gs;function k(e){const n={};return e.replace(C,"").split(u).forEach(e=>{if(e){const t=e.split(p);1<t.length&&(n[t[0].trim()]=t[1].trim())}}),n}function T(t){let n="";if(ce(t))n=t;else if(ae(t))for(let e=0;e<t.length;e++){var r=T(t[e]);r&&(n+=r+" ")}else if(re(t))for(const e in t)t[e]&&(n+=e+" ");return n.trim()}const n=e("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"),N=e("svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view");var O=e("area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr");const F=e("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function M(e){return!!e||""===e}function j(e,t){if(e===t)return!0;let n=Q(e),r=Q(t);if(n||r)return!(!n||!r)&&e.getTime()===t.getTime();if(n=pe(e),r=pe(t),n||r)return e===t;if(n=ae(e),r=ae(t),n||r)return!(!n||!r)&&function(t,n){if(t.length!==n.length)return!1;let r=!0;for(let e=0;r&&e<t.length;e++)r=j(t[e],n[e]);return r}(e,t);if(n=re(e),r=re(t),n||r){if(!n||!r)return!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const s in e){var o=e.hasOwnProperty(s),i=t.hasOwnProperty(s);if(o&&!i||!o&&i||!j(e[s],t[s]))return!1}}return String(e)===String(t)}function V(e,t){return e.findIndex(e=>j(e,t))}const L=(e,t)=>t&&t.__v_isRef?L(e,t.value):Z(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n])=>(e[t+" =>"]=n,e),{})}:X(t)?{[`Set(${t.size})`]:[...t.values()]}:!re(t)||ae(t)||ve(t)?t:String(t),E=Object.freeze({}),le=Object.freeze([]),te=()=>{},z=()=>!1,W=/^on[^a-z]/,K=e=>W.test(e),G=e=>e.startsWith("onUpdate:"),$=Object.assign,J=(e,t)=>{t=e.indexOf(t);-1<t&&e.splice(t,1)},Y=Object.prototype.hasOwnProperty,A=(e,t)=>Y.call(e,t),ae=Array.isArray,Z=e=>"[object Map]"===fe(e),X=e=>"[object Set]"===fe(e),Q=e=>"[object Date]"===fe(e),ne=e=>"function"==typeof e,ce=e=>"string"==typeof e,pe=e=>"symbol"==typeof e,re=e=>null!==e&&"object"==typeof e,de=e=>re(e)&&ne(e.then)&&ne(e.catch),ee=Object.prototype.toString,fe=e=>ee.call(e),he=e=>fe(e).slice(8,-1),ve=e=>"[object Object]"===fe(e),me=e=>ce(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,ge=e(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ye=e("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo");var be=t=>{const n=Object.create(null);return e=>{return n[e]||(n[e]=t(e))}};const _e=/-(\w)/g,R=be(e=>e.replace(_e,(e,t)=>t?t.toUpperCase():"")),we=/\B([A-Z])/g,v=be(e=>e.replace(we,"-$1").toLowerCase()),xe=be(e=>e.charAt(0).toUpperCase()+e.slice(1)),Se=be(e=>e?"on"+xe(e):""),Ce=(e,t)=>!Object.is(e,t),ke=(t,n)=>{for(let e=0;e<t.length;e++)t[e](n)},Te=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Ee=e=>{var t=parseFloat(e);return isNaN(t)?e:t},Ne=e=>{var t=ce(e)?Number(e):NaN;return isNaN(t)?e:t};let Oe;const $e=()=>Oe=Oe||("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{});function Ae(e,...t){console.warn("[Vue warn] "+e,...t)}let b;class Re{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=b,!e&&b&&(this.index=(b.scopes||(b.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){var t=b;try{return b=this,e()}finally{b=t}}else Ae("cannot run an inactive effect scope.")}on(){b=this}off(){b=this.parent}stop(n){if(this._active){let e,t;for(e=0,t=this.effects.length;e<t;e++)this.effects[e].stop();for(e=0,t=this.cleanups.length;e<t;e++)this.cleanups[e]();if(this.scopes)for(e=0,t=this.scopes.length;e<t;e++)this.scopes[e].stop(!0);if(!this.detached&&this.parent&&!n){const r=this.parent.scopes.pop();r&&r!==this&&((this.parent.scopes[this.index]=r).index=this.index)}this.parent=void 0,this._active=!1}}}function Ie(e,t=b){t&&t.active&&t.effects.push(e)}function Pe(){return b}const Fe=e=>{const t=new Set(e);return t.w=0,t.n=0,t},Me=e=>0<(e.w&Be),je=e=>0<(e.n&Be),Ve=new WeakMap;let Le=0,Be=1;const Ue=30;let s;const De=Symbol("iterate"),He=Symbol("Map key iterate");class ze{constructor(e,t=null,n){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,Ie(this,n)}run(){if(!this.active)return this.fn();let e=s;for(var t=Ke;e;){if(e===this)return;e=e.parent}try{if(this.parent=s,s=this,Ke=!0,Be=1<<++Le,Le<=Ue){var n=[this["deps"]][0];if(n.length)for(let e=0;e<n.length;e++)n[e].w|=Be}else We(this);return this.fn()}finally{if(Le<=Ue){var r=this;const o=r["deps"];if(o.length){let t=0;for(let e=0;e<o.length;e++){const i=o[e];Me(i)&&!je(i)?i.delete(r):o[t++]=i,i.w&=~Be,i.n&=~Be}o.length=t}}Be=1<<--Le,s=this.parent,Ke=t,this.parent=void 0,this.deferStop&&this.stop()}}stop(){s===this?this.deferStop=!0:this.active&&(We(this),this.onStop&&this.onStop(),this.active=!1)}}function We(t){const n=t["deps"];if(n.length){for(let e=0;e<n.length;e++)n[e].delete(t);n.length=0}}let Ke=!0;const Ge=[];function Je(){Ge.push(Ke),Ke=!1}function qe(){var e=Ge.pop();Ke=void 0===e||e}function f(n,r,o){if(Ke&&s){let e=Ve.get(n),t=(e||Ve.set(n,e=new Map),e.get(o));t||e.set(o,t=Fe());n={effect:s,target:n,type:r,key:o};Ye(t,n)}}function Ye(e,t){let n=!1;Le<=Ue?je(e)||(e.n|=Be,n=!Me(e)):n=!e.has(s),n&&(e.add(s),s.deps.push(e),s.onTrack&&s.onTrack(Object.assign({effect:s},t)))}function Ze(e,t,r,o,i,s){const l=Ve.get(e);if(l){let n=[];if("clear"===t)n=[...l.values()];else if("length"===r&&ae(e)){const a=Number(o);l.forEach((e,t)=>{("length"===t||t>=a)&&n.push(e)})}else switch(void 0!==r&&n.push(l.get(r)),t){case"add":ae(e)?me(r)&&n.push(l.get("length")):(n.push(l.get(De)),Z(e)&&n.push(l.get(He)));break;case"delete":ae(e)||(n.push(l.get(De)),Z(e)&&n.push(l.get(He)));break;case"set":Z(e)&&n.push(l.get(De))}t={target:e,type:t,key:r,newValue:o,oldValue:i,oldTarget:s};if(1===n.length)n[0]&&Xe(n[0],t);else{const c=[];for(const u of n)u&&c.push(...u);Xe(Fe(c),t)}}}function Xe(e,t){e=ae(e)?e:[...e];for(const n of e)n.computed&&Qe(n,t);for(const r of e)r.computed||Qe(r,t)}function Qe(e,t){e===s&&!e.allowRecurse||(e.onTrigger&&e.onTrigger($({effect:e},t)),e.scheduler?e.scheduler():e.run())}const et=e("__proto__,__v_isRef,__isVue"),tt=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>"arguments"!==e&&"caller"!==e).map(e=>Symbol[e]).filter(pe));var nt,be=at(),rt=at(!1,!0),t=at(!0),ot=at(!0,!0);const it=st();function st(){const e={};return["includes","indexOf","lastIndexOf"].forEach(r=>{e[r]=function(...e){const n=m(this);for(let e=0,t=this.length;e<t;e++)f(n,"get",e+"");var t=n[r](...e);return-1===t||!1===t?n[r](...e.map(m)):t}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...e){Je();e=m(this)[t].apply(this,e);return qe(),e}}),e}function lt(e){const t=m(this);return f(t,"has",e),t.hasOwnProperty(e)}function at(o=!1,i=!1){return function(e,t,n){if("__v_isReactive"===t)return!o;if("__v_isReadonly"===t)return o;if("__v_isShallow"===t)return i;if("__v_raw"===t&&n===(o?i?Bt:Lt:i?Vt:jt).get(e))return e;var r=ae(e);if(!o){if(r&&A(it,t))return Reflect.get(it,t,n);if("hasOwnProperty"===t)return lt}n=Reflect.get(e,t,n);return(pe(t)?tt.has(t):et(t))?n:(o||f(e,"get",t),i?n:q(n)?r&&me(t)?n:n.value:re(n)?(o?Ht:Ut)(n):n)}}function ct(l=!1){return function(e,t,n,r){let o=e[t];if(Gt(o)&&q(o)&&!q(n))return!1;if(!l&&(Jt(n)||Gt(n)||(o=m(o),n=m(n)),!ae(e)&&q(o)&&!q(n)))return o.value=n,!0;var i=ae(e)&&me(t)?Number(t)<e.length:A(e,t),s=Reflect.set(e,t,n,r);return e===m(r)&&(i?Ce(n,o)&&Ze(e,"set",t,n,o):Ze(e,"add",t,n)),s}}const ut={get:be,set:ct(),deleteProperty:function(e,t){var n=A(e,t),r=e[t],o=Reflect.deleteProperty(e,t);return o&&n&&Ze(e,"delete",t,void 0,r),o},has:function(e,t){var n=Reflect.has(e,t);return pe(t)&&tt.has(t)||f(e,"has",t),n},ownKeys:function(e){return f(e,"iterate",ae(e)?"length":De),Reflect.ownKeys(e)}},pt={get:t,set(e,t){return Ae(`Set operation on key "${String(t)}" failed: target is readonly.`,e),!0},deleteProperty(e,t){return Ae(`Delete operation on key "${String(t)}" failed: target is readonly.`,e),!0}},dt=$({},ut,{get:rt,set:ct(!0)}),ft=$({},pt,{get:ot}),ht=e=>e,vt=e=>Reflect.getPrototypeOf(e);function mt(e,t,n=!1,r=!1){var o=m(e=e.__v_raw),i=m(t);n||(t!==i&&f(o,"get",t),f(o,"get",i));const s=vt(o)["has"],l=r?ht:n?Xt:Zt;return s.call(o,t)?l(e.get(t)):s.call(o,i)?l(e.get(i)):void(e!==o&&e.get(t))}function gt(e,t=!1){const n=this.__v_raw;var r=m(n),o=m(e);return t||(e!==o&&f(r,"has",e),f(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function yt(e,t=!1){return e=e.__v_raw,t||f(m(e),"iterate",De),Reflect.get(e,"size",e)}function bt(e){e=m(e);const t=m(this),n=vt(t);return n.has.call(t,e)||(t.add(e),Ze(t,"add",e,e)),this}function _t(e,t){t=m(t);const n=m(this),{has:r,get:o}=vt(n);let i=r.call(n,e);i?Mt(n,r,e):(e=m(e),i=r.call(n,e));var s=o.call(n,e);return n.set(e,t),i?Ce(t,s)&&Ze(n,"set",e,t,s):Ze(n,"add",e,t),this}function wt(e){const t=m(this),{has:n,get:r}=vt(t);let o=n.call(t,e);o?Mt(t,n,e):(e=m(e),o=n.call(t,e));var i=r?r.call(t,e):void 0,s=t.delete(e);return o&&Ze(t,"delete",e,void 0,i),s}function xt(){const e=m(this);var t=0!==e.size,n=new(Z(e)?Map:Set)(e),r=e.clear();return t&&Ze(e,"clear",void 0,void 0,n),r}function St(s,l){return function(n,r){const o=this,e=o.__v_raw;var t=m(e);const i=l?ht:s?Xt:Zt;return s||f(t,"iterate",De),e.forEach((e,t)=>n.call(r,i(e),i(t),o))}}function Ct(l,a,c){return function(...e){const t=this.__v_raw;var n=m(t),r=Z(n);const o="entries"===l||l===Symbol.iterator&&r;r="keys"===l&&r;const i=t[l](...e),s=c?ht:a?Xt:Zt;return a||f(n,"iterate",r?He:De),{next(){var{value:e,done:t}=i.next();return t?{value:e,done:t}:{value:o?[s(e[0]),s(e[1])]:s(e),done:t}},[Symbol.iterator](){return this}}}}function kt(t){return function(...e){e=e[0]?`on key "${e[0]}" `:"";return console.warn(xe(t)+` operation ${e}failed: target is readonly.`,m(this)),"delete"!==t&&this}}function Tt(){const t={get(e){return mt(this,e)},get size(){return yt(this)},has:gt,add:bt,set:_t,delete:wt,clear:xt,forEach:St(!1,!1)},n={get(e){return mt(this,e,!1,!0)},get size(){return yt(this)},has:gt,add:bt,set:_t,delete:wt,clear:xt,forEach:St(!1,!0)},r={get(e){return mt(this,e,!0)},get size(){return yt(this,!0)},has(e){return gt.call(this,e,!0)},add:kt("add"),set:kt("set"),delete:kt("delete"),clear:kt("clear"),forEach:St(!0,!1)},o={get(e){return mt(this,e,!0,!0)},get size(){return yt(this,!0)},has(e){return gt.call(this,e,!0)},add:kt("add"),set:kt("set"),delete:kt("delete"),clear:kt("clear"),forEach:St(!0,!0)},e=["keys","values","entries",Symbol.iterator];return e.forEach(e=>{t[e]=Ct(e,!1,!1),r[e]=Ct(e,!0,!1),n[e]=Ct(e,!1,!0),o[e]=Ct(e,!0,!0)}),[t,r,n,o]}const[Et,Nt,Ot,$t]=Tt();function At(r,e){const o=e?r?$t:Ot:r?Nt:Et;return(e,t,n)=>"__v_isReactive"===t?!r:"__v_isReadonly"===t?r:"__v_raw"===t?e:Reflect.get(A(o,t)&&t in e?o:e,t,n)}const Rt={get:At(!1,!1)},It={get:At(!1,!0)},Pt={get:At(!0,!1)},Ft={get:At(!0,!0)};function Mt(e,t,n){var r=m(n);r!==n&&t.call(e,r)&&(n=he(e),console.warn(`Reactive ${n} contains both the raw and reactive `+`versions of the same object${"Map"===n?" as keys":""}, `+"which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible."))}const jt=new WeakMap,Vt=new WeakMap,Lt=new WeakMap,Bt=new WeakMap;function Ut(e){return Gt(e)?e:Wt(e,!1,ut,Rt,jt)}function Dt(e){return Wt(e,!1,dt,It,Vt)}function Ht(e){return Wt(e,!0,pt,Pt,Lt)}function zt(e){return Wt(e,!0,ft,Ft,Bt)}function Wt(e,t,n,r,o){if(!re(e))return console.warn("value cannot be made reactive: "+String(e)),e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;t=o.get(e);if(t)return t;t=function(e){if(e.__v_skip||!Object.isExtensible(e))return 0;switch(he(e)){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(e);if(0===t)return e;t=new Proxy(e,2===t?r:n);return o.set(e,t),t}function Kt(e){return Gt(e)?Kt(e.__v_raw):!(!e||!e.__v_isReactive)}function Gt(e){return!(!e||!e.__v_isReadonly)}function Jt(e){return!(!e||!e.__v_isShallow)}function qt(e){return Kt(e)||Gt(e)}function m(e){var t=e&&e.__v_raw;return t?m(t):e}function Yt(e){return Te(e,"__v_skip",!0),e}const Zt=e=>re(e)?Ut(e):e,Xt=e=>re(e)?Ht(e):e;function Qt(e){Ke&&s&&Ye((e=m(e)).dep||(e.dep=Fe()),{target:e,type:"get",key:"value"})}function en(e,t){var n=(e=m(e)).dep;n&&Xe(n,{target:e,type:"set",key:"value",newValue:t})}function q(e){return!(!e||!0!==e.__v_isRef)}function tn(e){return nn(e,!1)}function nn(e,t){return q(e)?e:new rn(e,t)}class rn{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:m(e),this._value=t?e:Zt(e)}get value(){return Qt(this),this._value}set value(e){var t=this.__v_isShallow||Jt(e)||Gt(e);e=t?e:m(e),Ce(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Zt(e),en(this,e))}}function on(e){return q(e)?e.value:e}const sn={get:(e,t,n)=>on(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return q(o)&&!q(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function ln(e){return Kt(e)?e:new Proxy(e,sn)}class an{constructor(e){this.dep=void 0,this.__v_isRef=!0;var{get:e,set:t}=e(()=>Qt(this),()=>en(this));this._get=e,this._set=t}get value(){return this._get()}set value(e){this._set(e)}}class cn{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0}get value(){var e=this._object[this._key];return void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return e=m(this._object),t=this._key,null==(e=Ve.get(e))?void 0:e.get(t);var e,t}}function un(e,t,n){var r=e[t];return q(r)?r:new cn(e,t,n)}class pn{constructor(e,t,n,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[nt]=!1,this._dirty=!0,this.effect=new ze(e,()=>{this._dirty||(this._dirty=!0,en(this))}),(this.effect.computed=this).effect.active=this._cacheable=!r,this.__v_isReadonly=n}get value(){const e=m(this);return Qt(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}const dn=[];function fn(e){dn.push(e)}function hn(){dn.pop()}function oe(e,...t){Je();const n=dn.length?dn[dn.length-1].component:null;var r=n&&n.appContext.config.warnHandler;const o=function(){let e=dn[dn.length-1];if(!e)return[];const t=[];for(;e;){const r=t[0];r&&r.vnode===e?r.recurseCount++:t.push({vnode:e,recurseCount:0});var n=e.component&&e.component.parent;e=n&&n.vnode}return t}();if(r)gn(r,n,11,[e+t.join(""),n&&n.proxy,o.map(({vnode:e})=>`at <${cs(n,e.type)}>`).join("\n"),o]);else{const i=["[Vue warn]: "+e,...t];o.length&&i.push(` |
`,...function(e){const r=[];return e.forEach((e,t)=>{var n;r.push(...0===t?[]:[` |
`],...({vnode:t,recurseCount:e}=[e][0],e=0<e?`... (${e} recursive calls)`:"",n=!!t.component&&null==t.component.parent,n=" at <"+cs(t.component,t.type,n),e=">"+e,t.props?[n,...function(t){const n=[],e=Object.keys(t);e.slice(0,3).forEach(e=>{n.push(...function e(t,n,r){return ce(n)?(n=JSON.stringify(n),r?n:[t+"="+n]):"number"==typeof n||"boolean"==typeof n||null==n?r?n:[t+"="+n]:q(n)?(n=e(t,m(n.value),!0),r?n:[t+"=Ref<",n,">"]):ne(n)?[t+"=fn"+(n.name?`<${n.name}>`:"")]:(n=m(n),r?n:[t+"=",n])}(e,t[e]))}),3<e.length&&n.push(" ...");return n}(t.props),e]:[n+e]))}),r}(o)),console.warn(...i)}qe()}function vn(e,t){void 0!==e&&("number"!=typeof e?oe(t+" is not a valid number - "+`got ${JSON.stringify(e)}.`):isNaN(e)&&oe(t+" is NaN - the duration expression might be incorrect."))}const mn={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",[0]:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function gn(e,t,n,r){let o;try{o=r?e(...r):e()}catch(e){bn(e,t,n)}return o}function yn(t,n,r,o){if(ne(t)){const e=gn(t,n,r,o);return e&&de(e)&&e.catch(e=>{bn(e,n,r)}),e}const i=[];for(let e=0;e<t.length;e++)i.push(yn(t[e],n,r,o));return i}function bn(t,n,r,e=!0){var o=n?n.vnode:null;if(n){let e=n.parent;for(var i=n.proxy,s=mn[r];e;){const l=e.ec;if(l)for(let e=0;e<l.length;e++)if(!1===l[e](t,i,s))return;e=e.parent}n=n.appContext.config.errorHandler;if(n)return void gn(n,null,10,[t,i,s])}var[n,r,o,e=!0]=[t,r,o,e];if(r=mn[r],o&&fn(o),oe("Unhandled error"+(r?" during execution of "+r:"")),o&&hn(),e)throw n;console.error(n)}let _n=!(nt="__v_isReadonly"),wn=!1;const l=[];let xn=0;const Sn=[];let Cn=null,kn=0;const Tn=Promise.resolve();let En=null;const Nn=100;function On(e){const t=En||Tn;return e?t.then(this?e.bind(this):e):t}function $n(e){l.length&&l.includes(e,_n&&e.allowRecurse?xn+1:xn)||(null==e.id?l.push(e):l.splice(function(e){let t=xn+1,n=l.length;for(;t<n;){var r=t+n>>>1;Fn(l[r])<e?t=1+r:n=r}return t}(e.id),0,e),An())}function An(){_n||wn||(wn=!0,En=Tn.then(jn))}function Rn(e){ae(e)?Sn.push(...e):Cn&&Cn.includes(e,e.allowRecurse?kn+1:kn)||Sn.push(e),An()}function In(e,t=_n?xn+1:0){for(e=e||new Map;t<l.length;t++){const n=l[t];n&&n.pre&&(Vn(e,n)||(l.splice(t,1),t--,n()))}}function Pn(e){if(Sn.length){var t=[...new Set(Sn)];if(Sn.length=0,Cn)Cn.push(...t);else{for(Cn=t,e=e||new Map,Cn.sort((e,t)=>Fn(e)-Fn(t)),kn=0;kn<Cn.length;kn++)Vn(e,Cn[kn])||Cn[kn]();Cn=null,kn=0}}}const Fn=e=>null==e.id?1/0:e.id,Mn=(e,t)=>{var n=Fn(e)-Fn(t);if(0==n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function jn(e){wn=!1,_n=!0,e=e||new Map,l.sort(Mn);try{for(xn=0;xn<l.length;xn++){var t=l[xn];!t||!1===t.active||Vn(e,t)||gn(t,null,14)}}finally{xn=0,l.length=0,Pn(e),_n=!1,En=null,(l.length||Sn.length)&&jn(e)}}function Vn(e,t){if(e.has(t)){var n,r=e.get(t);if(r>Nn)return oe(`Maximum recursive updates exceeded${(n=(n=t.ownerInstance)&&as(n.type))?` in component <${n}>`:""}. `+"This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function."),!0;e.set(t,r+1)}else e.set(t,1)}let Ln=!1;const Bn=new Set,Un=($e().__VUE_HMR_RUNTIME__={createRecord:Wn(Dn),rerender:Wn(function(e,t){const n=Un.get(e);n&&(n.initialDef.render=t,[...n.instances].forEach(e=>{t&&(e.render=t,Hn(e.type).render=t),e.renderCache=[],Ln=!0,e.update(),Ln=!1}))}),reload:Wn(function(e,t){var n=Un.get(e);if(n){t=Hn(t),zn(n.initialDef,t);const o=[...n.instances];for(const i of o){var r=Hn(i.type);Bn.has(r)||(r!==n.initialDef&&zn(r,t),Bn.add(r)),i.appContext.optionsCache.delete(i.type),i.ceReload?(Bn.add(r),i.ceReload(t.styles),Bn.delete(r)):i.parent?$n(i.parent.update):i.appContext.reload?i.appContext.reload():"undefined"!=typeof window?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}Rn(()=>{for(const e of o)Bn.delete(Hn(e.type))})}})},new Map);function Dn(e,t){return!Un.has(e)&&(Un.set(e,{initialDef:Hn(t),instances:new Set}),!0)}function Hn(e){return us(e)?e.__vccOpts:e}function zn(e,t){$(e,t);for(const n in e)"__file"===n||n in t||delete e[n]}function Wn(n){return(e,t)=>{try{return n(e,t)}catch(e){console.error(e),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}r.devtools=void 0;let Kn=[],Gn=!1;function Jn(e,...t){r.devtools?r.devtools.emit(e,...t):Gn||Kn.push({event:e,args:t})}function qn(e,t){if(r.devtools=e,r.devtools)r.devtools.enabled=!0,Kn.forEach(({event:e,args:t})=>r.devtools.emit(e,...t)),Kn=[];else if("undefined"==typeof window||!window.HTMLElement||null!=(e=null==(e=window.navigator)?void 0:e.userAgent)&&e.includes("jsdom"))Gn=!0,Kn=[];else{const n=t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[];n.push(e=>{qn(e,t)}),setTimeout(()=>{r.devtools||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Gn=!0,Kn=[])},3e3)}}const Yn=er("component:added"),Zn=er("component:updated"),Xn=er("component:removed"),Qn=e=>{r.devtools&&"function"==typeof r.devtools.cleanupBuffer&&!r.devtools.cleanupBuffer(e)&&Xn(e)};function er(t){return e=>{Jn(t,e.appContext.app,e.uid,e.parent?e.parent.uid:void 0,e)}}const tr=rr("perf:start"),nr=rr("perf:end");function rr(r){return(e,t,n)=>{Jn(r,e.appContext.app,e.uid,e,t,n)}}function or(r,o,...i){if(!r.isUnmounted){var s=r.vnode.props||E,{emitsOptions:l,propsOptions:[a]}=r;if(l)if(o in l){const u=l[o];ne(u)&&!u(...i)&&oe(`Invalid event arguments: event validation failed for event "${o}".`)}else a&&Se(o)in a||oe(`Component emitted event "${o}" but it is neither declared in `+`the emits option nor as an "${Se(o)}" prop.`);let e=i;var c,l=o.startsWith("update:"),a=l&&o.slice(7),a=(a&&a in s&&({number:a,trim:c}=s[`${"modelValue"===a?"model":a}Modifiers`]||E,c&&(e=i.map(e=>ce(e)?e.trim():e)),a&&(e=i.map(Ee))),c=e,Jn("component:emit",r.appContext.app,r,o,c),o.toLowerCase());a!==o&&s[Se(a)]&&oe(`Event "${a}" is emitted in component `+cs(r,r.type)+` but the handler is registered for "${o}". `+"Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. "+`You should probably use "${v(o)}" instead of "${o}".`);let t,n=s[t=Se(o)]||s[t=Se(R(o))];(n=!n&&l?s[t=Se(v(o))]:n)&&yn(n,r,6,e);i=s[t+"Once"];if(i){if(r.emitted){if(r.emitted[t])return}else r.emitted={};r.emitted[t]=!0,yn(i,r,6,e)}}}function ir(e,t){return e&&K(t)&&(t=t.slice(2).replace(/Once$/,""),A(e,t[0].toLowerCase()+t.slice(1))||A(e,v(t))||A(e,t))}let h=null,sr=null;function lr(e){var t=h;return h=e,sr=e&&e.type.__scopeId||null,t}function ar(r,o=h,e){if(!o)return r;if(r._n)return r;const i=(...e)=>{i._d&&Ci(-1);var t=lr(o);let n;try{n=r(...e)}finally{lr(t),i._d&&Ci(1)}return Zn(o),n};return i._n=!0,i._c=!0,i._d=!0,i}let cr=!1;function ur(){cr=!0}function pr(t){const{type:e,vnode:n,proxy:r,withProxy:o,props:i,propsOptions:[s],slots:l,attrs:a,emit:c,render:u,renderCache:p,data:d,setupState:f,ctx:h,inheritAttrs:v}=t;let m,g;var y=lr(t);cr=!1;try{if(4&n.shapeFlag){var b=o||r;m=Vi(u.call(b,b,p,i,f,d,h)),g=a}else{const u=e;a===i&&ur(),m=Vi(1<u.length?u(i,{get attrs(){return ur(),a},slots:l,emit:c}):u(i,null)),g=e.props?a:hr(a)}}catch(e){_i.length=0,bn(e,t,1),m=P(se)}let _=m,w=void 0;if(0<m.patchFlag&&2048&m.patchFlag&&([_,w]=dr(m)),g&&!1!==v){const S=Object.keys(g);b=_["shapeFlag"];if(S.length)if(7&b)s&&S.some(G)&&(g=vr(g,s)),_=Fi(_,g);else if(!cr&&_.type!==se){var x=Object.keys(a);const C=[],k=[];for(let e=0,t=x.length;e<t;e++){const T=x[e];K(T)?G(T)||C.push(T[2].toLowerCase()+T.slice(3)):k.push(T)}k.length&&oe("Extraneous non-props attributes ("+k.join(", ")+") were passed to component but could not be automatically inherited because component renders fragment or text root nodes."),C.length&&oe("Extraneous non-emits event listeners ("+C.join(", ")+') were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.')}}return n.dirs&&(mr(_)||oe("Runtime directive used on component with non-element root node. The directives will not function as intended."),(_=Fi(_)).dirs=_.dirs?_.dirs.concat(n.dirs):n.dirs),n.transition&&(mr(_)||oe("Component inside <Transition> renders non-element root node that cannot be animated."),_.transition=n.transition),w?w(_):m=_,lr(y),m}const dr=t=>{const n=t.children,r=t.dynamicChildren;var e=fr(n);if(!e)return[t,void 0];const o=n.indexOf(e),i=r?r.indexOf(e):-1;return[Vi(e),e=>{n[o]=e,r&&(-1<i?r[i]=e:0<e.patchFlag&&(t.dynamicChildren=[...r,e]))}]};function fr(t){let n;for(let e=0;e<t.length;e++){var r=t[e];if(!Ei(r))return;if(r.type!==se||"v-if"===r.children){if(n)return;n=r}}return n}const hr=e=>{let t;for(const n in e)"class"!==n&&"style"!==n&&!K(n)||((t=t||{})[n]=e[n]);return t},vr=(e,t)=>{const n={};for(const r in e)G(r)&&r.slice(9)in t||(n[r]=e[r]);return n},mr=e=>7&e.shapeFlag||e.type===se;function gr(t,n,r){var o=Object.keys(n);if(o.length!==Object.keys(t).length)return!0;for(let e=0;e<o.length;e++){var i=o[e];if(n[i]!==t[i]&&!ir(r,i))return!0}return!1}function yr({vnode:e,parent:t},n){for(;t&&t.subTree===e;)(e=t.vnode).el=n,t=t.parent}const br=e=>e.__isSuspense;be={name:"Suspense",__isSuspense:!0,process(e,t,n,r,o,i,s,l,a,c){if(null!=e){var[e,u,p,d,f,h,v,m,{p:g,um:y,o:{createElement:b}}]=[e,t,n,r,o,s,l,a,c];const _=u.suspense=e.suspense,w=((_.vnode=u).el=e.el,u.ssContent),x=u.ssFallback,{activeBranch:S,pendingBranch:C,isInFallback:k,isHydrating:T}=_;if(C)Ni(_.pendingBranch=w,C)?(g(C,w,_.hiddenContainer,null,f,_,h,v,m),_.deps<=0?_.resolve():k&&(g(S,x,p,d,f,null,h,v,m),kr(_,x))):(_.pendingId++,T?(_.isHydrating=!1,_.activeBranch=C):y(C,f,_),_.deps=0,_.effects.length=0,_.hiddenContainer=b("div"),k?(g(null,w,_.hiddenContainer,null,f,_,h,v,m),_.deps<=0?_.resolve():(g(S,x,p,d,f,null,h,v,m),kr(_,x))):S&&Ni(w,S)?(g(S,w,p,d,f,_,h,v,m),_.resolve(!0)):(g(null,w,_.hiddenContainer,null,f,_,h,v,m),_.deps<=0&&_.resolve()));else if(S&&Ni(w,S))g(S,w,p,d,f,_,h,v,m),kr(_,w);else if(_r(u,"onPending"),_.pendingBranch=w,_.pendingId++,g(null,w,_.hiddenContainer,null,f,_,h,v,m),_.deps<=0)_.resolve();else{const{timeout:E,pendingId:N}=_;0<E?setTimeout(()=>{_.pendingId===N&&_.fallback(x)},E):0===E&&_.fallback(x)}}else{e=t;y=n;b=r;p=o;d=i;u=s;g=l;f=a;h=c;const{p:O,o:{createElement:$}}=h,A=$("div"),R=e.suspense=xr(e,d,p,y,A,b,u,g,f,h);O(null,R.pendingBranch=e.ssContent,A,null,p,R,u,g),0<R.deps?(_r(e,"onPending"),_r(e,"onFallback"),O(null,e.ssFallback,y,b,p,null,u,g),kr(R,e.ssFallback)):R.resolve()}},hydrate:function(e,t,n,r,o,i,s,l,a){const c=t.suspense=xr(t,r,n,e.parentNode,document.createElement("div"),null,o,i,s,l,!0),u=a(e,c.pendingBranch=t.ssContent,n,c,i,s);0===c.deps&&c.resolve();return u},create:xr,normalize:function(e){var{shapeFlag:t,children:n}=e,t=32&t;e.ssContent=Sr(t?n.default:n),e.ssFallback=t?Sr(n.fallback):P(se)}};function _r(e,t){const n=e.props&&e.props[t];ne(n)&&n()}let wr=!1;function xr(e,t,n,r,o,i,s,c,u,l,a=!1){wr||(wr=!0,console[console.info?"info":"log"]("<Suspense> is an experimental feature and its API will likely change."));const{p,m:d,um:f,n:h,o:{parentNode:v,remove:m}}=l;l=e.props?Ne(e.props.timeout):void 0;vn(l,"Suspense timeout");const g={vnode:e,parent:t,parentComponent:n,isSVG:s,container:r,hiddenContainer:o,anchor:i,deps:0,pendingId:0,timeout:"number"==typeof l?l:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:a,isUnmounted:!1,effects:[],resolve(t=!1){if(!t&&!g.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(g.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.");const{vnode:e,activeBranch:n,pendingBranch:r,pendingId:o,effects:i,parentComponent:s,container:l}=g;if(g.isHydrating)g.isHydrating=!1;else if(!t){t=n&&r.transition&&"out-in"===r.transition.mode;t&&(n.transition.afterLeave=()=>{o===g.pendingId&&d(r,l,e,0)});let e=g["anchor"];n&&(e=h(n),f(n,s,g,!0)),t||d(r,l,e,0)}kr(g,r),g.pendingBranch=null,g.isInFallback=!1;let a=g.parent,c=!1;for(;a;){if(a.pendingBranch){a.effects.push(...i),c=!0;break}a=a.parent}c||Rn(i),g.effects=[],_r(e,"onResolve")},fallback(e){if(g.pendingBranch){const{vnode:r,activeBranch:o,parentComponent:i,container:s,isSVG:l}=g,a=(_r(r,"onFallback"),h(o));var t=()=>{g.isInFallback&&(p(null,e,s,a,i,null,l,c,u),kr(g,e))},n=e.transition&&"out-in"===e.transition.mode;n&&(o.transition.afterLeave=t),g.isInFallback=!0,f(o,i,null,!0),n||t()}},move(e,t,n){g.activeBranch&&d(g.activeBranch,e,t,n),g.container=e},next(){return g.activeBranch&&h(g.activeBranch)},registerDep(n,r){const o=!!g.pendingBranch,i=(o&&g.deps++,n.vnode.el);n.asyncDep.catch(e=>{bn(e,n,0)}).then(e=>{if(!n.isUnmounted&&!g.isUnmounted&&g.pendingId===n.suspenseId){n.asyncResolved=!0;const t=n["vnode"];fn(t),Xi(n,e,!1),i&&(t.el=i);e=!i&&n.subTree.el;r(n,t,v(i||n.subTree.el),i?null:h(n.subTree),g,s,u),e&&m(e),yr(n,t.el),hn(),o&&0==--g.deps&&g.resolve()}})},unmount(e,t){g.isUnmounted=!0,g.activeBranch&&f(g.activeBranch,n,e,t),g.pendingBranch&&f(g.pendingBranch,n,e,t)}};return g}function Sr(t){let e;var n;return ne(t)&&((n=Si&&t._c)&&(t._d=!1,wi()),t=t(),n&&(t._d=!0,e=c,xi())),ae(t)&&((n=fr(t))||oe("<Suspense> slots expect a single root node."),t=n),t=Vi(t),e&&!t.dynamicChildren&&(t.dynamicChildren=e.filter(e=>e!==t)),t}function Cr(e,t){t&&t.pendingBranch?ae(e)?t.effects.push(...e):t.effects.push(e):Rn(e)}function kr(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e;e=n.el=t.el;r&&r.subTree===n&&(r.vnode.el=e,yr(r,e))}function Tr(t,n){if(_){let e=_.provides;var r=_.parent&&_.parent.provides;(e=r===e?_.provides=Object.create(r):e)[t]=n}else oe("provide() can only be used inside setup().")}function Er(e,t,n=!1){var r,o=_||h;if(o)return(r=null==o.parent?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides)&&e in r?r[e]:1<arguments.length?n&&ne(t)?t.call(o.proxy):t:void oe(`injection "${String(e)}" not found.`);oe("inject() can only be used inside setup() or functional components.")}function Nr(e,t){return Ar(e,null,Object.assign(Object.assign({},t),{flush:"post"}))}const Or={};function $r(e,t,n){return ne(t)||oe("`watch(fn, options?)` signature has been moved to a separate API. Use `watchEffect(fn, options?)` instead. `watch` now only supports `watch(source, cb, options?) signature."),Ar(e,t,n)}function Ar(e,t,{immediate:n,deep:r,flush:o,onTrack:i,onTrigger:s}=E){t||(void 0!==n&&oe('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),void 0!==r&&oe('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'));const l=e=>{oe("Invalid watch source: ",e,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},a=b===(null===_||void 0===_?void 0:_.scope)?_:null;let c,u=!1,p=!1;if(q(e)?(c=()=>e.value,u=Jt(e)):Kt(e)?(c=()=>e,r=!0):ae(e)?(p=!0,u=e.some(e=>Kt(e)||Jt(e)),c=()=>e.map(e=>q(e)?e.value:Kt(e)?Ir(e):ne(e)?gn(e,a,2):void l(e))):ne(e)?c=t?()=>gn(e,a,2):()=>{if(!a||!a.isUnmounted)return d&&d(),yn(e,a,3,[f])}:(c=te,l(e)),t&&r){const y=c;c=()=>Ir(y())}let d,f=e=>{d=g.onStop=()=>{gn(e,a,4)}},h=p?new Array(e.length).fill(Or):Or;const v=()=>{if(g.active)if(t){const e=g.run();(r||u||(p?e.some((e,t)=>Ce(e,h[t])):Ce(e,h)))&&(d&&d(),yn(t,a,3,[e,h===Or?void 0:p&&h[0]===Or?[]:h,f]),h=e)}else g.run()};v.allowRecurse=!!t;let m;m="sync"===o?v:"post"===o?()=>I(v,a&&a.suspense):(v.pre=!0,a&&(v.id=a.uid),()=>$n(v));const g=new ze(c,m);g.onTrack=i,g.onTrigger=s,t?n?v():h=g.run():"post"===o?I(g.run.bind(g),a&&a.suspense):g.run();return()=>{g.stop(),a&&a.scope&&J(a.scope.effects,g)}}function Rr(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}function Ir(t,n){if(!re(t)||t.__v_skip)return t;if((n=n||new Set).has(t))return t;if(n.add(t),q(t))Ir(t.value,n);else if(ae(t))for(let e=0;e<t.length;e++)Ir(t[e],n);else if(X(t)||Z(t))t.forEach(e=>{Ir(e,n)});else if(ve(t))for(const e in t)Ir(t[e],n);return t}function Pr(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return eo(()=>{e.isMounted=!0}),ro(()=>{e.isUnmounting=!0}),e}t=[Function,Array];const Fr={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:t,onEnter:t,onAfterEnter:t,onEnterCancelled:t,onBeforeLeave:t,onLeave:t,onAfterLeave:t,onLeaveCancelled:t,onBeforeAppear:t,onAppear:t,onAfterAppear:t,onAppearCancelled:t},setup(p,{slots:e}){const d=Wi(),f=Pr();let h;return()=>{var n=e.default&&Ur(e.default(),!0);if(n&&n.length){let t=n[0];if(1<n.length){let e=!1;for(const c of n)if(c.type!==se){if(e){oe("<transition> can only be used on a single element or component. Use <transition-group> for lists.");break}t=c,e=!0}}var n=m(p),r=n["mode"];if(r&&"in-out"!==r&&"out-in"!==r&&"default"!==r&&oe("invalid <transition> mode: "+r),f.isLeaving)return Vr(t);var o=Lr(t);if(!o)return Vr(t);const s=jr(o,n,f,d);Br(o,s);var i=d.subTree;const l=i&&Lr(i);let e=!1;const a=o.type["getTransitionKey"];if(a&&(i=a(),void 0===h?h=i:i!==h&&(h=i,e=!0)),l&&l.type!==se&&(!Ni(o,l)||e)){const u=jr(l,n,f,d);if(Br(l,u),"out-in"===r)return f.isLeaving=!0,u.afterLeave=()=>{(f.isLeaving=!1)!==d.update.active&&d.update()},Vr(t);"in-out"===r&&o.type!==se&&(u.delayLeave=(e,t,n)=>{const r=Mr(f,l);r[String(l.key)]=l,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete s.delayedLeave},s.delayedLeave=n})}return t}}}};function Mr(e,t){const n=e["leavingVNodes"];let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function jr(i,t,s,n){const{appear:l,mode:e,persisted:r=!1,onBeforeEnter:o,onEnter:a,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:p,onLeave:d,onAfterLeave:f,onLeaveCancelled:h,onBeforeAppear:v,onAppear:m,onAfterAppear:g,onAppearCancelled:y}=t,b=String(i.key),_=Mr(s,i),w=(e,t)=>{e&&yn(e,n,9,t)},x=(e,t)=>{const n=t[1];w(e,t),ae(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},S={mode:e,persisted:r,beforeEnter(e){let t=o;if(!s.isMounted){if(!l)return;t=v||o}e._leaveCb&&e._leaveCb(!0);const n=_[b];n&&Ni(i,n)&&n.el._leaveCb&&n.el._leaveCb(),w(t,[e])},enter(t){let e=a,n=c,r=u;if(!s.isMounted){if(!l)return;e=m||a,n=g||c,r=y||u}let o=!1;var i=t._enterCb=e=>{o||(o=!0,e?w(r,[t]):w(n,[t]),S.delayedLeave&&S.delayedLeave(),t._enterCb=void 0)};e?x(e,[t,i]):i()},leave(t,n){const r=String(i.key);if(t._enterCb&&t._enterCb(!0),s.isUnmounting)return n();w(p,[t]);let o=!1;var e=t._leaveCb=e=>{o||(o=!0,n(),e?w(h,[t]):w(f,[t]),t._leaveCb=void 0,_[r]===i&&delete _[r])};_[r]=i,d?x(d,[t,e]):e()},clone(e){return jr(e,t,s,n)}};return S}function Vr(e){if(Wr(e))return(e=Fi(e)).children=null,e}function Lr(e){return Wr(e)?e.children?e.children[0]:void 0:e}function Br(e,t){6&e.shapeFlag&&e.component?Br(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ur(t,n=!1,r){let o=[],i=0;for(let e=0;e<t.length;e++){var s=t[e],l=null==r?s.key:String(r)+String(null!=s.key?s.key:e);s.type===ie?(128&s.patchFlag&&i++,o=o.concat(Ur(s.children,n,l))):!n&&s.type===se||o.push(null!=l?Fi(s,{key:l}):s)}if(1<i)for(let e=0;e<o.length;e++)o[e].patchFlag=-2;return o}function Dr(e){return ne(e)?{setup:e,name:e.name}:e}const Hr=e=>!!e.type.__asyncLoader;function zr(e,t){var{ref:n,props:r,children:o,ce:i}=t.vnode;const s=P(e,r,o);return s.ref=n,s.ce=i,delete t.vnode.ce,s}const Wr=e=>e.type.__isKeepAlive;rt={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(l,{slots:a}){const r=Wi(),e=r.ctx,c=new Map,u=new Set;let p=null;r.__v_cache=c;const s=r.suspense,{p:d,m:f,um:t,o:{createElement:n}}=e["renderer"],o=n("div");function i(e){Yr(e),t(e,r,s,!0)}function h(n){c.forEach((e,t)=>{e=as(e.type);!e||n&&n(e)||v(t)})}function v(e){var t=c.get(e);p&&Ni(t,p)?p&&Yr(p):i(t),c.delete(e),u.delete(e)}e.activate=(t,e,n,r,o)=>{const i=t.component;f(t,e,n,0,s),d(i.vnode,t,e,n,i,s,r,t.slotScopeIds,o),I(()=>{i.isDeactivated=!1,i.a&&ke(i.a);var e=t.props&&t.props.onVnodeMounted;e&&Di(e,i.parent,t)},s),Yn(i)},e.deactivate=t=>{const n=t.component;f(t,o,null,1,s),I(()=>{n.da&&ke(n.da);var e=t.props&&t.props.onVnodeUnmounted;e&&Di(e,n.parent,t),n.isDeactivated=!0},s),Yn(n)},$r(()=>[l.include,l.exclude],([t,n])=>{t&&h(e=>Kr(t,e)),n&&h(e=>!Kr(n,e))},{flush:"post",deep:!0});let m=null;var g=()=>{null!=m&&c.set(m,Zr(r.subTree))};return eo(g),no(g),ro(()=>{c.forEach(e=>{var{subTree:t,suspense:n}=r,t=Zr(t);if(e.type===t.type&&e.key===t.key)return Yr(t),void((t=t.component.da)&&I(t,n));i(e)})}),()=>{if(m=null,!a.default)return null;var e=a.default();const t=e[0];if(1<e.length)return oe("KeepAlive should contain exactly one component child."),p=null,e;if(!(Ei(t)&&(4&t.shapeFlag||128&t.shapeFlag)))return p=null,t;let n=Zr(t);var e=n.type,r=as(Hr(n)?n.type.__asyncResolved||{}:e),{include:o,exclude:i,max:s}=l;if(o&&(!r||!Kr(o,r))||i&&r&&Kr(i,r))return p=n,t;o=null==n.key?e:n.key,i=c.get(o);return n.el&&(n=Fi(n),128&t.shapeFlag&&(t.ssContent=n)),m=o,i?(n.el=i.el,n.component=i.component,n.transition&&Br(n,n.transition),n.shapeFlag|=512,u.delete(o),u.add(o)):(u.add(o),s&&u.size>parseInt(s,10)&&v(u.values().next().value)),n.shapeFlag|=256,p=n,br(t.type)?t:n}}};function Kr(e,t){return ae(e)?e.some(e=>Kr(e,t)):ce(e)?e.split(",").includes(t):(n=e,"[object RegExp]"===fe(n)&&e.test(t));var n}function Gr(e,t){qr(e,"a",t)}function Jr(e,t){qr(e,"da",t)}function qr(t,n,r=_){var o=t.__wdc||(t.__wdc=()=>{let e=r;for(;e;){if(e.isDeactivated)return;e=e.parent}return t()});if(Xr(n,o,r),r){let e=r.parent;for(;e&&e.parent;)Wr(e.parent.vnode)&&!function(e,t,n,r){const o=Xr(t,e,r,!0);oo(()=>{J(r[t],o)},n)}(o,n,r,e),e=e.parent}}function Yr(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Zr(e){return 128&e.shapeFlag?e.ssContent:e}function Xr(t,n,r=_,e=!1){if(r){const i=r[t]||(r[t]=[]);var o=n.__weh||(n.__weh=(...e)=>{if(!r.isUnmounted)return Je(),Ki(r),e=yn(n,r,t,e),Gi(),qe(),e});return e?i.unshift(o):i.push(o),o}oe(Se(mn[t].replace(/ hook$/,""))+" is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.")}ot=n=>(t,e=_)=>(!Zi||"sp"===n)&&Xr(n,(...e)=>t(...e),e);const Qr=ot("bm"),eo=ot("m"),to=ot("bu"),no=ot("u"),ro=ot("bum"),oo=ot("um"),io=ot("sp"),so=ot("rtg"),lo=ot("rtc");function ao(e,t=_){Xr("ec",e,t)}function co(e){ye(e)&&oe("Do not use built-in directive ids as custom directive id: "+e)}function uo(t,n,r,o){var i=t.dirs,s=n&&n.dirs;for(let e=0;e<i.length;e++){const a=i[e];s&&(a.oldValue=s[e].value);var l=a.dir[o];l&&(Je(),yn(l,r,8,[t.el,a,t,n]),qe())}}const po="components";const fo=Symbol();function ho(e,t,n=!0,r=!1){var o=h||_;if(o){var i=o.type;if(e===po){var s=as(i,!1);if(s&&(s===t||s===R(t)||s===xe(R(t))))return i}s=vo(o[e]||i[e],t)||vo(o.appContext[e],t);return!s&&r?i:(n&&!s&&(o=e===po?"\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.":"",oe(`Failed to resolve ${e.slice(0,-1)}: `+t+o)),s)}oe(`resolve${xe(e.slice(0,-1))} `+"can only be used in render() or setup().")}function vo(e,t){return e&&(e[t]||e[R(t)]||e[xe(R(t))])}const mo=e=>e?Yi(e)?is(e)||e.proxy:mo(e.parent):null,go=$(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>zt(e.props),$attrs:e=>zt(e.attrs),$slots:e=>zt(e.slots),$refs:e=>zt(e.refs),$parent:e=>mo(e.parent),$root:e=>mo(e.root),$emit:e=>e.emit,$options:e=>ko(e),$forceUpdate:e=>e.f||(e.f=()=>$n(e.update)),$nextTick:e=>e.n||(e.n=On.bind(e.proxy)),$watch:e=>function(e,t,n){const r=this.proxy;var o=ce(e)?e.includes(".")?Rr(r,e):()=>r[e]:e.bind(r,r);let i;return ne(t)?i=t:(i=t.handler,n=t),t=_,Ki(this),o=Ar(o,i.bind(r),n),t?Ki(t):Gi(),o}.bind(e)}),yo=e=>"_"===e||"$"===e,bo=(e,t)=>e!==E&&!e.__isScriptSetup&&A(e,t),_o={get({_:e},t){const{ctx:n,setupState:r,data:o,props:i,accessCache:s,type:l,appContext:a}=e;if("__isVue"===t)return!0;if("$"!==t[0]){var c=s[t];if(void 0!==c)switch(c){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(bo(r,t))return s[t]=1,r[t];if(o!==E&&A(o,t))return s[t]=2,o[t];if((c=e.propsOptions[0])&&A(c,t))return s[t]=3,i[t];if(n!==E&&A(n,t))return s[t]=4,n[t];xo&&(s[t]=0)}}const u=go[t];let p,d;return u?("$attrs"===t&&(f(e,"get",t),ur()),u(e)):(p=l.__cssModules)&&(p=p[t])?p:n!==E&&A(n,t)?(s[t]=4,n[t]):(d=a.config.globalProperties,A(d,t)?d[t]:void(!h||ce(t)&&0===t.indexOf("__v")||(o!==E&&yo(t[0])&&A(o,t)?oe(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved `+'character ("$" or "_") and is not proxied on the render context.'):e===h&&oe(`Property ${JSON.stringify(t)} was accessed during render `+"but is not defined on instance."))))},set({_:e},t,n){const{data:r,setupState:o,ctx:i}=e;return bo(o,t)?(o[t]=n,!0):o.__isScriptSetup&&A(o,t)?(oe(`Cannot mutate <script setup> binding "${t}" from Options API.`),!1):r!==E&&A(r,t)?(r[t]=n,!0):A(e.props,t)?(oe(`Attempting to mutate prop "${t}". Props are readonly.`),!1):"$"===t[0]&&t.slice(1)in e?(oe(`Attempting to mutate public property "${t}". `+"Properties starting with $ are reserved and readonly."),!1):(t in e.appContext.config.globalProperties?Object.defineProperty(i,t,{enumerable:!0,configurable:!0,value:n}):i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:i}},s){return!!n[s]||e!==E&&A(e,s)||bo(t,s)||(n=i[0])&&A(n,s)||A(r,s)||A(go,s)||A(o.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:A(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)},ownKeys:e=>(oe("Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead."),Reflect.ownKeys(e))},wo=$({},_o,{get(e,t){if(t!==Symbol.unscopables)return _o.get(e,t,e)},has(e,t){var n="_"!==t[0]&&!i(t);return!n&&_o.has(e,t)&&oe(`Property ${JSON.stringify(t)} should not start with _ which is a reserved prefix for Vue internals.`),n}});let xo=!0;function So(e){var t=ko(e);const n=e.proxy;var r=e.ctx;xo=!1,t.beforeCreate&&Co(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:s,watch:l,provide:a,inject:c,created:u,beforeMount:p,mounted:d,beforeUpdate:M,updated:j,activated:V,deactivated:L,beforeUnmount:B,unmounted:U,render:f,renderTracked:D,renderTriggered:H,errorCaptured:z,serverPrefetch:W,expose:h,inheritAttrs:v,components:m,directives:g}=t,y=function(){const n=Object.create(null);return(e,t)=>{n[t]?oe(`${e} property "${t}" is already defined in ${n[t]}.`):n[t]=e}}();var[t]=e.propsOptions;if(t)for(const C in t)y("Props",C);if(c){var[b,_,K=te,G=!1]=[c,r,y,e.appContext.config.unwrapInjectedRef];for(const k in b=ae(b)?Oo(b):b){var w=b[k];let t;q(t=re(w)?"default"in w?Er(w.from||k,w.default,!0):Er(w.from||k):Er(w))?G?Object.defineProperty(_,k,{enumerable:!0,configurable:!0,get:()=>t.value,set:e=>t.value=e}):(oe(`injected property "${k}" is a ref and will be auto-unwrapped `+"and no longer needs `.value` in the next minor release. To opt-in to the new behavior now, set `app.config.unwrapInjectedRef = true` (this config is temporary and will not be needed in the future.)"),_[k]=t):_[k]=t,K("Inject",k)}}if(s)for(const T in s){const E=s[T];ne(E)?(Object.defineProperty(r,T,{value:E.bind(n),configurable:!0,enumerable:!0,writable:!0}),y("Methods",T)):oe(`Method "${T}" has type "${typeof E}" in the component definition. `+"Did you reference the function correctly?")}if(o){ne(o)||oe("The data option must be a function. Plain object usage is no longer supported.");const N=o.call(n,n);if(de(N)&&oe("data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>."),re(N)){e.data=Ut(N);for(const O in N)y("Data",O),yo(O[0])||Object.defineProperty(r,O,{configurable:!0,enumerable:!0,get:()=>N[O],set:te})}else oe("data() should return an object.")}if(xo=!0,i)for(const $ in i){const A=i[$];var x=ne(A)?A.bind(n,n):ne(A.get)?A.get.bind(n,n):te,J=(x===te&&oe(`Computed property "${$}" has no getter.`),!ne(A)&&ne(A.set)?A.set.bind(n):()=>{oe(`Write operation failed: computed property "${$}" is readonly.`)});const R=ps({get:x,set:J});Object.defineProperty(r,$,{enumerable:!0,configurable:!0,get:()=>R.value,set:e=>R.value=e}),y("Computed",$)}if(l)for(const I in l)!function t(e,n,r,o){const i=o.includes(".")?Rr(r,o):()=>r[o];if(ce(e)){const s=n[e];ne(s)?$r(i,s):oe(`Invalid watch handler specified by key "${e}"`,s)}else if(ne(e))$r(i,e.bind(r));else if(re(e))if(ae(e))e.forEach(e=>t(e,n,r,o));else{const l=ne(e.handler)?e.handler.bind(r):n[e.handler];ne(l)?$r(i,l,e):oe(`Invalid watch handler specified by key "${e.handler}"`,l)}else oe(`Invalid watch option: "${o}"`,e)}(l[I],r,n,I);if(a){const P=ne(a)?a.call(n):a;Reflect.ownKeys(P).forEach(e=>{Tr(e,P[e])})}function S(t,e){ae(e)?e.forEach(e=>t(e.bind(n))):e&&t(e.bind(n))}if(u&&Co(u,e,"c"),S(Qr,p),S(eo,d),S(to,M),S(no,j),S(Gr,V),S(Jr,L),S(ao,z),S(lo,D),S(so,H),S(ro,B),S(oo,U),S(io,W),ae(h))if(h.length){const F=e.exposed||(e.exposed={});h.forEach(t=>{Object.defineProperty(F,t,{get:()=>n[t],set:e=>n[t]=e})})}else e.exposed||(e.exposed={});f&&e.render===te&&(e.render=f),null!=v&&(e.inheritAttrs=v),m&&(e.components=m),g&&(e.directives=g)}function Co(e,t,n){yn(ae(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function ko(e){var t=e.type,{mixins:n,extends:r}=t;const{mixins:o,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext;e=i.get(t);let l;return e?l=e:o.length||n||r?(l={},o.length&&o.forEach(e=>To(l,e,s,!0)),To(l,t,s)):l=t,re(t)&&i.set(t,l),l}function To(t,e,n,r=!1){const{mixins:o,extends:i}=e;i&&To(t,i,n,!0),o&&o.forEach(e=>To(t,e,n,!0));for(const s in e)if(r&&"expose"===s)oe('"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.');else{const l=Eo[s]||n&&n[s];t[s]=l?l(t[s],e[s]):e[s]}return t}const Eo={data:No,props:$o,emits:$o,methods:$o,computed:$o,beforeCreate:o,created:o,beforeMount:o,mounted:o,beforeUpdate:o,updated:o,beforeDestroy:o,beforeUnmount:o,destroyed:o,unmounted:o,activated:o,deactivated:o,errorCaptured:o,serverPrefetch:o,components:$o,directives:$o,watch:function(e,t){if(!e)return t;if(!t)return e;const n=$(Object.create(null),e);for(const r in t)n[r]=o(e[r],t[r]);return n},provide:No,inject:function(e,t){return $o(Oo(e),Oo(t))}};function No(e,t){return t?e?function(){return $(ne(e)?e.call(this,this):e,ne(t)?t.call(this,this):t)}:t:e}function Oo(t){if(ae(t)){const n={};for(let e=0;e<t.length;e++)n[t[e]]=t[e];return n}return t}function o(e,t){return e?[...new Set([].concat(e,t))]:t}function $o(e,t){return e?$($(Object.create(null),e),t):t}function Ao(t,n,r,e){const{props:o,attrs:i,vnode:{patchFlag:s}}=t;var l=m(o),[a]=t.propsOptions;let c=!1;if(function(e){for(;e;){if(e.type.__hmrId)return 1;e=e.parent}}(t)||!(e||0<s)||16&s){Ro(t,n,o,i)&&(c=!0);let e;for(const f in l)n&&(A(n,f)||(e=v(f))!==f&&A(n,e))||(a?!r||void 0===r[f]&&void 0===r[e]||(o[f]=Io(a,l,f,void 0,t,!0)):delete o[f]);if(i!==l)for(const h in i)n&&A(n,h)||(delete i[h],c=!0)}else if(8&s){var u=t.vnode.dynamicProps;for(let e=0;e<u.length;e++){var p,d=u[e];ir(t.emitsOptions,d)||(p=n[d],!a||A(i,d)?p!==i[d]&&(i[d]=p,c=!0):(d=R(d),o[d]=Io(a,l,d,p,t,!1)))}}c&&Ze(t,"set","$attrs"),Vo(n||{},o,t)}function Ro(t,n,r,o){const[i,s]=t.propsOptions;let l=!1,a;if(n)for(var c in n)if(!ge(c)){var u=n[c];let e;i&&A(i,e=R(c))?s&&s.includes(e)?(a=a||{})[e]=u:r[e]=u:ir(t.emitsOptions,c)||c in o&&u===o[c]||(o[c]=u,l=!0)}if(s){var p=m(r),d=a||E;for(let e=0;e<s.length;e++){var f=s[e];r[f]=Io(i,p,f,d[f],t,!A(d,f))}}return l}function Io(e,t,n,r,o,i){e=e[n];if(null!=e){var s=A(e,"default");if(s&&void 0===r){const l=e.default;if(e.type!==Function&&ne(l)){const a=o["propsDefaults"];n in a?r=a[n]:(Ki(o),r=a[n]=l.call(null,t),Gi())}else r=l}e[0]&&(i&&!s?r=!1:!e[1]||""!==r&&r!==v(n)||(r=!0))}return r}function Po(e){if("$"!==e[0])return 1;oe(`Invalid prop name: "${e}" is a reserved property.`)}function Fo(e){var t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:null===e?"null":""}function Mo(e,t){return Fo(e)===Fo(t)}function jo(t,e){return ae(e)?e.findIndex(e=>Mo(e,t)):ne(e)&&Mo(e,t)?0:-1}function Vo(e,t,n){var r=m(t),o=n.propsOptions[0];for(const s in o){var i=o[s];null!=i&&!function(e,n,t,r){const{type:o,required:i,validator:s}=t;if(i&&r)oe('Missing required prop: "'+e+'"');else if(null!=n||t.required){if(null!=o&&!0!==o){let t=!1;var l=ae(o)?o:[o];const u=[];for(let e=0;e<l.length&&!t;e++){var{valid:a,expectedType:c}=function(e,t){let n;const r=Fo(t);{var o;Lo(r)?(o=typeof e,(n=o===r.toLowerCase())||"object"!=o||(n=e instanceof t)):n="Object"===r?re(e):"Array"===r?ae(e):"null"===r?null===e:e instanceof t}return{valid:n,expectedType:r}}(n,l[e]);u.push(c||""),t=a}if(!t)return oe(function(e,t,n){let r=`Invalid prop: type check failed for prop "${e}".`+" Expected "+n.map(xe).join(" | ");var e=n[0],o=he(t),i=Bo(t,e),t=Bo(t,o);1===n.length&&Uo(e)&&!function(e){return e.some(e=>"boolean"===e.toLowerCase())}([e,o])&&(r+=" with value "+i);r+=`, got ${o} `,Uo(o)&&(r+=`with value ${t}.`);return r}(e,n,u))}s&&!s(n)&&oe('Invalid prop: custom validator check failed for prop "'+e+'".')}}(s,r[s],i,!A(e,s)&&!A(e,v(s)))}}const Lo=e("String,Number,Boolean,Function,Symbol,BigInt");function Bo(e,t){return"String"===t?`"${e}"`:"Number"===t?""+Number(e):""+e}function Uo(t){return["string","number","boolean"].some(e=>t.toLowerCase()===e)}const Do=e=>"_"===e[0]||"$stable"===e,Ho=e=>ae(e)?e.map(Vi):[Vi(e)],zo=(e,t,n)=>{var r=e._ctx;for(const i in e)if(!Do(i)){var o=e[i];if(ne(o))t[i]=((t,n,e)=>{if(n._n)return n;const r=ar((...e)=>(_&&oe(`Slot "${t}" invoked outside of the render function: `+"this will not track dependencies used in the slot. Invoke the slot function inside the render function instead."),Ho(n(...e))),e);return r._c=!1,r})(i,o,r);else if(null!=o){oe(`Non-function value encountered for slot "${i}". `+"Prefer function slots for better performance.");const s=Ho(o);t[i]=()=>s}}},Wo=(e,t)=>{Wr(e.vnode)||oe("Non-function value encountered for default slot. Prefer function slots for better performance.");const n=Ho(t);e.slots.default=()=>n},Ko=(e,t)=>{var n;32&e.vnode.shapeFlag?(n=t._)?(e.slots=m(t),Te(t,"_",n)):zo(t,e.slots={}):(e.slots={},t&&Wo(e,t)),Te(e.slots,$i,1)},Go=(e,t,n)=>{const{vnode:r,slots:o}=e;let i=!0,s=E;var l;if(32&r.shapeFlag?((l=t._)?Ln?$(o,t):n&&1===l?i=!1:($(o,t),n||1!==l||delete o._):(i=!t.$stable,zo(t,o)),s=t):t&&(Wo(e,t),s={default:1}),i)for(const a in o)Do(a)||a in s||delete o[a]};function Jo(){return{app:null,config:{isNativeTag:z,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let qo=0;function Yo(u,p){return function(i,s=null){ne(i)||(i=Object.assign({},i)),null==s||re(s)||(oe("root props passed to app.mount() must be an object."),s=null);const l=Jo(),n=new Set;let a=!1;const c=l.app={_uid:qo++,_component:i,_props:s,_container:null,_context:l,_instance:null,version:gs,get config(){return l.config},set config(e){oe("app.config cannot be replaced. Modify individual options instead.")},use(e,...t){return n.has(e)?oe("Plugin has already been applied to target app."):e&&ne(e.install)?(n.add(e),e.install(c,...t)):ne(e)?(n.add(e),e(c,...t)):oe('A plugin must either be a function or an object with an "install" function.'),c},mixin(e){return l.mixins.includes(e)?oe("Mixin has already been applied to target app"+(e.name?": "+e.name:"")):l.mixins.push(e),c},component(e,t){return qi(e,l.config),t?(l.components[e]&&oe(`Component "${e}" has already been registered in target app.`),l.components[e]=t,c):l.components[e]},directive(e,t){return co(e),t?(l.directives[e]&&oe(`Directive "${e}" has already been registered in target app.`),l.directives[e]=t,c):l.directives[e]},mount(e,t,n){if(!a){e.__vue_app__&&oe("There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling `app.unmount()` first.");const o=P(i,s);return(o.appContext=l).reload=()=>{u(Fi(o),e,n)},t&&p?p(o,e):u(o,e,n),a=!0,((c._container=e).__vue_app__=c)._instance=o.component,t=c,r=gs,Jn("app:init",t,r,{Fragment:ie,Text:yi,Comment:se,Static:bi}),is(o.component)||o.component.proxy}var r;oe("App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. `const createMyApp = () => createApp(App)`")},unmount(){a?(u(null,c._container),c._instance=null,Jn("app:unmount",c),delete c._container.__vue_app__):oe("Cannot unmount an app that is not mounted.")},provide(e,t){return e in l.provides&&oe(`App already provides property with key "${String(e)}". `+"It will be overwritten with the new value."),l.provides[e]=t,c}};return c}}function Zo(t,n,r,o,i=!1){if(ae(t))t.forEach((e,t)=>Zo(e,n&&(ae(n)?n[t]:n),r,o,i));else if(!Hr(o)||i){const s=4&o.shapeFlag?is(o.component)||o.component.proxy:o.el,l=i?null:s,{i:a,r:c}=t;if(a){const u=n&&n.r,p=a.refs===E?a.refs={}:a.refs,d=a.setupState;if(null!=u&&u!==c&&(ce(u)?(p[u]=null,A(d,u)&&(d[u]=null)):q(u)&&(u.value=null)),ne(c))gn(c,a,12,[l,p]);else{const f=ce(c),h=q(c);var e;f||h?(e=()=>{if(t.f){const e=f?(A(d,c)?d:p)[c]:c.value;i?ae(e)&&J(e,s):ae(e)?e.includes(s)||e.push(s):f?(p[c]=[s],A(d,c)&&(d[c]=p[c])):(c.value=[s],t.k&&(p[t.k]=c.value))}else f?(p[c]=l,A(d,c)&&(d[c]=l)):h?(c.value=l,t.k&&(p[t.k]=l)):oe("Invalid template ref type:",c,`(${typeof c})`)},l?(e.id=-1,I(e,r)):e()):oe("Invalid template ref type:",c,`(${typeof c})`)}}else oe("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.")}}let Xo=!1;const Qo=e=>/svg/.test(e.namespaceURI)&&"foreignObject"!==e.tagName,ei=e=>8===e.nodeType;function ti(m){const{mt:g,p,o:{patchProp:h,createText:y,nextSibling:b,parentNode:_,remove:v,insert:w,createComment:l}}=m;const x=(t,n,e,r,o,i=!1)=>{const s=ei(t)&&"["===t.data;var l=()=>T(t,n,e,r,o,s),{type:a,ref:c,shapeFlag:u,patchFlag:p}=n;let d=t.nodeType,f=(n.el=t,-2===p&&(i=!1,n.dynamicChildren=null),null);switch(a){case yi:f=3!==d?""===n.children?(w(n.el=y(""),_(t),t),t):l():(t.data!==n.children&&(Xo=!0,oe("Hydration text mismatch:\n- Client: "+JSON.stringify(t.data)+` |
- Server: `+JSON.stringify(n.children)),t.data=n.children),b(t));break;case se:f=8!==d||s?l():b(t);break;case bi:if(s&&(t=b(t),d=t.nodeType),1===d||3===d){f=t;var h=!n.children.length;for(let e=0;e<n.staticCount;e++)h&&(n.children+=1===f.nodeType?f.outerHTML:f.data),e===n.staticCount-1&&(n.anchor=f),f=b(f);return s?b(f):f}l();break;case ie:f=s?k(t,n,e,r,o,i):l();break;default:if(1&u)f=1!==d||n.type.toLowerCase()!==t.tagName.toLowerCase()?l():S(t,n,e,r,o,i);else if(6&u){n.slotScopeIds=o;var v=_(t);if(g(n,v,null,e,r,Qo(v),i),(f=(s?E:b)(t))&&ei(f)&&"teleport end"===f.data&&(f=b(f)),Hr(n)){let e;s?(e=P(ie)).anchor=f?f.previousSibling:v.lastChild:e=3===t.nodeType?ji(""):P("div"),e.el=t,n.component.subTree=e}}else 64&u?f=8!==d?l():n.type.hydrate(t,n,e,r,o,i,m,C):128&u?f=n.type.hydrate(t,n,e,r,Qo(_(t)),o,i,m,x):oe("Invalid HostVNode type:",a,`(${typeof a})`)}return null!=c&&Zo(c,null,r,n),f},S=(n,r,o,i,s,l)=>{l=l||!!r.dynamicChildren;const{type:e,props:t,patchFlag:a,shapeFlag:c,dirs:u}=r;var p="input"===e&&u||"option"===e;{if(u&&uo(r,null,o,"created"),t)if(p||!l||48&a)for(const f in t)(p&&f.endsWith("value")||K(f)&&!ge(f))&&h(n,f,null,t[f],!1,void 0,o);else t.onClick&&h(n,"onClick",null,t.onClick,!1,void 0,o);let e;if((e=t&&t.onVnodeBeforeMount)&&Di(e,o,r),u&&uo(r,null,o,"beforeMount"),((e=t&&t.onVnodeMounted)||u)&&Cr(()=>{e&&Di(e,o,r),u&&uo(r,null,o,"mounted")},i),16&c&&(!t||!t.innerHTML&&!t.textContent)){let e=C(n.firstChild,r,n,o,i,s,l),t=!1;for(;e;){Xo=!0,t||(oe(`Hydration children mismatch in <${r.type}>: `+"server rendered element contains more child nodes than client vdom."),t=!0);var d=e;e=e.nextSibling,v(d)}}else 8&c&&n.textContent!==r.children&&(Xo=!0,oe(`Hydration text content mismatch in <${r.type}>: |
`+`- Client: ${n.textContent} |
`+"- Server: "+r.children),n.textContent=r.children)}return n.nextSibling},C=(t,e,n,r,o,i,s)=>{s=s||!!e.dynamicChildren;const l=e.children;var a=l.length;let c=!1;for(let e=0;e<a;e++){var u=s?l[e]:l[e]=Vi(l[e]);t?t=x(t,u,r,o,i,s):u.type===yi&&!u.children||(Xo=!0,c||(oe(`Hydration children mismatch in <${n.tagName.toLowerCase()}>: `+"server rendered element contains fewer child nodes than client vdom."),c=!0),p(null,u,n,null,r,o,Qo(n),i))}return t},k=(e,t,n,r,o,i)=>{var s=t["slotScopeIds"],s=(s&&(o=o?o.concat(s):s),_(e)),e=C(b(e),t,s,n,r,o,i);return e&&ei(e)&&"]"===e.data?b(t.anchor=e):(Xo=!0,w(t.anchor=l("]"),s,e),e)},T=(e,t,n,r,o,i)=>{if(Xo=!0,oe(`Hydration node mismatch: |
- Client vnode:`,t.type,` |
- Server rendered DOM:`,e,3===e.nodeType?"(text)":ei(e)&&"["===e.data?"(start of fragment)":""),t.el=null,i)for(var s=E(e);;){const l=b(e);if(!l||l===s)break;v(l)}const l=b(e);i=_(e);return v(e),p(null,t,i,l,n,r,Qo(i),o),l},E=e=>{let t=0;for(;e;)if((e=b(e))&&ei(e)&&("["===e.data&&t++,"]"===e.data)){if(0===t)return b(e);t--}return e};return[(e,t)=>{if(!t.hasChildNodes())return oe("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),p(null,e,t),Pn(),void(t._vnode=e);Xo=!1,x(t.firstChild,e,null,null,null),Pn(),t._vnode=e,Xo&&console.error("Hydration completed but contains mismatches.")},x]}let ni,ri;function oi(e,t){e.appContext.config.performance&&si()&&ri.mark(`vue-${t}-`+e.uid),tr(e,t,(si()?ri:Date).now())}function ii(e,t){var n,r;e.appContext.config.performance&&si()&&(r=(n=`vue-${t}-`+e.uid)+":end",ri.mark(r),ri.measure(`<${cs(e,e.type)}> `+t,n,r),ri.clearMarks(n),ri.clearMarks(r)),nr(e,t,(si()?ri:Date).now())}function si(){return void 0!==ni||("undefined"!=typeof window&&window.performance?(ni=!0,ri=window.performance):ni=!1),ni}const I=Cr;function li(e){return ci(e)}function ai(e){return ci(e,ti)}function ci(e,t){const n=$e(),{insert:V,remove:d,patchProp:b,createElement:g,createText:L,createComment:o,setText:B,setElementText:C,parentNode:y,nextSibling:U,setScopeId:s=te,insertStaticContent:D}=(n.__VUE__=!0,qn(n.__VUE_DEVTOOLS_GLOBAL_HOOK__,n),e),N=(r,o,i,s=null,l=null,a=null,c=!1,u=null,p=!Ln&&!!o.dynamicChildren)=>{if(r!==o){r&&!Ni(r,o)&&(s=Y(r),q(r,l,a,!0),r=null),-2===o.patchFlag&&(p=!1,o.dynamicChildren=null);const{type:O,ref:$,shapeFlag:A}=o;switch(O){case yi:var e=r,t=o,n=i,d=s;if(e==null)V(t.el=L(t.children),n,d);else{const R=t.el=e.el;if(t.children!==e.children)B(R,t.children)}break;case se:H(r,o,i,s);break;case bi:if(null==r)n=o,d=i,e=s,t=c,[n.el,n.anchor]=D(n.children,d,e,t,n.el,n.anchor);else{var f=r,h=o,v=i,m=c;if(h.children!==f.children){const I=U(f.anchor);z(f);[h.el,h.anchor]=D(h.children,v,I,m)}else{h.el=f.el;h.anchor=f.anchor}}break;case ie:{v=r;m=o;h=i;f=s;var g=l;var y=a;var b=c;var _=u;var w=p;const P=m.el=v?v.el:L(""),F=m.anchor=v?v.anchor:L("");let{patchFlag:e,dynamicChildren:t,slotScopeIds:n}=m;if(Ln||e&2048){e=0;w=false;t=null}if(n)_=_?_.concat(n):n;if(v==null){V(P,h,f);V(F,h,f);W(m.children,h,F,g,y,b,_,w)}else if(e>0&&e&64&&t&&v.dynamicChildren){K(v.dynamicChildren,t,h,g,y,b,_);if(g&&g.type.__hmrId)pi(v,m);else if(m.key!=null||g&&m===g.subTree)pi(v,m,true)}else J(v,m,h,F,g,y,b,_,w)}break;default:if(1&A){var g=r,y=o,b=i,_=s,w=l,x=a,S=c,C=u,k=p;if(S=S||y.type==="svg",g==null)X(y,b,_,w,x,S,C,k);else Q(g,y,w,x,S,C,k)}else if(6&A){var x=r,S=o,C=i,k=s,T=l,M=a,E=c,j=u,N=p;if(S.slotScopeIds=j,x==null)if(S.shapeFlag&512)T.ctx.activate(S,C,k,E,N);else G(S,C,k,T,M,E,N);else ee(x,S,N)}else 64&A||128&A?O.process(r,o,i,s,l,a,c,u,p,Z):oe("Invalid VNode type:",O,`(${typeof O})`)}null!=$&&l&&Zo($,r&&r.ref,a,o||r,!o)}},H=(e,t,n,r)=>{null==e?V(t.el=o(t.children||""),n,r):t.el=e.el},z=({el:e,anchor:t})=>{for(var n;e&&e!==t;)n=U(e),d(e),e=n;d(t)},X=(e,t,n,r,o,i,s,l)=>{let a,c;const{type:u,props:p,shapeFlag:d,transition:f,dirs:h}=e;if(a=e.el=g(e.type,i,p&&p.is,p),8&d?C(a,e.children):16&d&&W(e.children,a,null,r,o,i&&"foreignObject"!==u,s,l),h&&uo(e,null,r,"created"),_(a,e,e.scopeId,s,r),p){for(const m in p)"value"===m||ge(m)||b(a,m,null,p[m],i,e.children,r,o,T);"value"in p&&b(a,"value",null,p.value),(c=p.onVnodeBeforeMount)&&Di(c,r,e)}Object.defineProperty(a,"__vnode",{value:e,enumerable:!1}),Object.defineProperty(a,"__vueParentComponent",{value:r,enumerable:!1}),h&&uo(e,null,r,"beforeMount");const v=(!o||!o.pendingBranch)&&f&&!f.persisted;v&&f.beforeEnter(a),V(a,t,n),((c=p&&p.onVnodeMounted)||v||h)&&I(()=>{c&&Di(c,r,e),v&&f.enter(a),h&&uo(e,null,r,"mounted")},o)},_=(t,n,r,o,i)=>{if(r&&s(t,r),o)for(let e=0;e<o.length;e++)s(t,o[e]);if(i){let e=i.subTree;n===(e=0<e.patchFlag&&2048&e.patchFlag?fr(e.children)||e:e)&&(r=i.vnode,_(t,r,r.scopeId,r.slotScopeIds,i.parent))}},W=(t,n,r,o,i,s,l,a,c=0)=>{for(let e=c;e<t.length;e++){var u=t[e]=(a?Li:Vi)(t[e]);N(null,u,n,r,o,i,s,l,a)}},Q=(t,e,n,r,o,i,s)=>{var l=e.el=t.el;let{patchFlag:a,dynamicChildren:c,dirs:u}=e;a|=16&t.patchFlag;var p=t.props||E,d=e.props||E;let f;n&&ui(n,!1),(f=d.onVnodeBeforeUpdate)&&Di(f,n,e,t),u&&uo(e,t,n,"beforeUpdate"),n&&ui(n,!0),Ln&&(a=0,s=!1,c=null);var h=o&&"foreignObject"!==e.type;if(c?(K(t.dynamicChildren,c,l,n,r,h,i),n&&n.type.__hmrId&&pi(t,e)):s||J(t,e,l,null,n,r,h,i,!1),0<a){if(16&a)w(l,e,p,d,n,r,o);else if(2&a&&p.class!==d.class&&b(l,"class",null,d.class,o),4&a&&b(l,"style",p.style,d.style,o),8&a){var v=e.dynamicProps;for(let e=0;e<v.length;e++){var m=v[e],g=p[m],y=d[m];y===g&&"value"!==m||b(l,m,g,y,o,t.children,n,r,T)}}1&a&&t.children!==e.children&&C(l,e.children)}else s||null!=c||w(l,e,p,d,n,r,o);((f=d.onVnodeUpdated)||u)&&I(()=>{f&&Di(f,n,e,t),u&&uo(e,t,n,"updated")},r)},K=(t,n,r,o,i,s,l)=>{for(let e=0;e<n.length;e++){var a=t[e],c=n[e],u=a.el&&(a.type===ie||!Ni(a,c)||70&a.shapeFlag)?y(a.el):r;N(a,c,u,null,o,i,s,l,!0)}},w=(e,t,n,r,o,i,s)=>{if(n!==r){if(n!==E)for(const c in n)ge(c)||c in r||b(e,c,n[c],null,s,t.children,o,i,T);for(const u in r){var l,a;ge(u)||(l=r[u])!==(a=n[u])&&"value"!==u&&b(e,u,a,l,s,t.children,o,i,T)}"value"in r&&b(e,"value",n.value,r.value)}},G=(e,t,n,r,o,i,s)=>{const l=e.component=function(e,t,n){const r=e.type,o=(t||e).appContext||Hi,i={uid:zi++,vnode:e,type:r,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,scope:new Re(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:function n(e,r,t=!1){const o=r.propsCache;var i=o.get(e);if(i)return i;var s=e.props;const l={},a=[];let c=!1;if(ne(e)||(i=e=>{c=!0;var[e,t]=n(e,r,!0);$(l,e),t&&a.push(...t)},!t&&r.mixins.length&&r.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)),!s&&!c)return re(e)&&o.set(e,le),le;if(ae(s))for(let e=0;e<s.length;e++){ce(s[e])||oe("props must be strings when using array syntax.",s[e]);var u=R(s[e]);Po(u)&&(l[u]=E)}else if(s){re(s)||oe("invalid props options",s);for(const h in s){var p=R(h);if(Po(p)){var d,f=s[h];const v=l[p]=ae(f)||ne(f)?{type:f}:Object.assign({},f);v&&(f=jo(Boolean,v.type),d=jo(String,v.type),v[0]=-1<f,v[1]=d<0||f<d,(-1<f||A(v,"default"))&&a.push(p))}}}t=[l,a];return re(e)&&o.set(e,t),t}(r,o),emitsOptions:function t(e,n,r=!1){const o=n.emitsCache;var i=o.get(e);if(void 0!==i)return i;const s=e.emits;let l={},a=!1;return ne(e)||(i=e=>{(e=t(e,n,!0))&&(a=!0,$(l,e))},!r&&n.mixins.length&&n.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)),s||a?(ae(s)?s.forEach(e=>l[e]=null):$(l,s),re(e)&&o.set(e,l),l):(re(e)&&o.set(e,null),null)}(r,o),emit:null,emitted:null,propsDefaults:E,inheritAttrs:r.inheritAttrs,ctx:E,data:E,props:E,attrs:E,slots:E,refs:E,setupState:E,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};i.ctx=function(t){const n={};return Object.defineProperty(n,"_",{configurable:!0,enumerable:!1,get:()=>t}),Object.keys(go).forEach(e=>{Object.defineProperty(n,e,{configurable:!0,enumerable:!1,get:()=>go[e](t),set:te})}),n}(i),i.root=t?t.root:i,i.emit=or.bind(null,i),e.ce&&e.ce(i);return i}(e,r,o);if(l.type.__hmrId){r=l;var a=r.type.__hmrId;let e=Un.get(a);e||(Dn(a,r.type),e=Un.get(a)),e.instances.add(r)}fn(e),oi(l,"mount"),Wr(e)&&(l.ctx.renderer=Z),oi(l,"init");var[a,r=!1]=[l],{props:c,children:u}=(Zi=r,a.vnode),p=Yi(a),c=(function(e,t,n,r=!1){const o={};var i={};Te(i,$i,1),e.propsDefaults=Object.create(null),Ro(e,t,o,i);for(const s in e.propsOptions[0])s in o||(o[s]=void 0);Vo(t||{},o,e),n?e.props=r?o:Dt(o):e.type.props?e.props=o:e.props=i,e.attrs=i}(a,c,p,r),Ko(a,u),p?function(t,n){var e=t.type;e.name&&qi(e.name,t.appContext.config);if(e.components){var r=Object.keys(e.components);for(let e=0;e<r.length;e++)qi(r[e],t.appContext.config)}if(e.directives){var o=Object.keys(e.directives);for(let e=0;e<o.length;e++)co(o[e])}e.compilerOptions&&ns()&&oe('"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.');t.accessCache=Object.create(null),t.proxy=Yt(new Proxy(t.ctx,_o)),function(t){const{ctx:n,propsOptions:[e]}=t;e&&Object.keys(e).forEach(e=>{Object.defineProperty(n,e,{enumerable:!0,configurable:!0,get:()=>t.props[e],set:te})})}(t);var i=e["setup"];if(i){var s=t.setupContext=1<i.length?os(t):null;Ki(t),Je();const l=gn(i,t,0,[zt(t.props),s]);if(qe(),Gi(),de(l)){if(l.then(Gi,Gi),n)return l.then(e=>{Xi(t,e,n)}).catch(e=>{bn(e,t,0)});t.asyncDep=l,t.suspense||oe(`Component <${null!=(i=e.name)?i:"Anonymous"}>: setup function returned a promise, but no `+"<Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.")}else Xi(t,l,n)}else rs(t,n)}(a,r):void 0);if(Zi=!1,ii(l,"init"),l.asyncDep)return o&&o.registerDep(l,f),void(e.el||(u=l.subTree=P(se),H(null,u,t,n)));f(l,e,t,n,o,i,s),hn(),ii(l,"mount")},ee=(e,t,n)=>{const r=t.component=e.component;!function(e,t,n){var{props:r,children:e,component:o}=e,{props:i,children:s,patchFlag:l}=t,a=o.emitsOptions;if((e||s)&&Ln)return 1;if(t.dirs||t.transition)return 1;if(!(n&&0<=l))return!(!e&&!s||s&&s.$stable)||r!==i&&(r?!i||gr(r,i,a):i);if(1024&l)return 1;if(16&l)return r?gr(r,i,a):i;if(8&l){var c=t.dynamicProps;for(let e=0;e<c.length;e++){var u=c[e];if(i[u]!==r[u]&&!ir(a,u))return 1}}}(e,t,n)?(t.el=e.el,r.vnode=t):r.asyncDep&&!r.asyncResolved?(fn(t),x(r,t,n),hn()):(r.next=t,e=r.update,(e=l.indexOf(e))>xn&&l.splice(e,1),r.update())},f=(p,d,f,h,v,m,g)=>{const e=p.effect=new ze(()=>{if(p.isMounted){let{next:e,bu:t,u:n,parent:r,vnode:o}=p;var s=e;let i;fn(e||p.vnode),ui(p,!1),e?(e.el=o.el,x(p,e,g)):e=o,t&&ke(t),(i=e.props&&e.props.onVnodeBeforeUpdate)&&Di(i,r,e,o),ui(p,!0),oi(p,"render");var l=pr(p),a=(ii(p,"render"),p.subTree);p.subTree=l,oi(p,"patch"),N(a,l,y(a.el),Y(a),p,v,m),ii(p,"patch"),e.el=l.el,null===s&&yr(p,l.el),n&&I(n,v),(i=e.props&&e.props.onVnodeUpdated)&&I(()=>Di(i,r,e,o),v),Zn(p),hn()}else{let e;const{el:t,props:n}=d,{bm:r,m:o,parent:i}=p;a=Hr(d);if(ui(p,!1),r&&ke(r),!a&&(e=n&&n.onVnodeBeforeMount)&&Di(e,i,d),ui(p,!0),t&&S){const c=()=>{oi(p,"render"),p.subTree=pr(p),ii(p,"render"),oi(p,"hydrate"),S(t,p.subTree,p,v,null),ii(p,"hydrate")};a?d.type.__asyncLoader().then(()=>!p.isUnmounted&&c()):c()}else{oi(p,"render");s=p.subTree=pr(p);ii(p,"render"),oi(p,"patch"),N(null,s,f,h,p,v,m),ii(p,"patch"),d.el=s.el}if(o&&I(o,v),!a&&(e=n&&n.onVnodeMounted)){const u=d;I(()=>Di(e,i,u),v)}(256&d.shapeFlag||i&&Hr(i.vnode)&&256&i.vnode.shapeFlag)&&p.a&&I(p.a,v),p.isMounted=!0,Yn(p),d=f=h=null}},()=>$n(t),p.scope),t=p.update=()=>e.run();t.id=p.uid,ui(p,!0),e.onTrack=p.rtc?e=>ke(p.rtc,e):void 0,e.onTrigger=p.rtg?e=>ke(p.rtg,e):void 0,t.ownerInstance=p,t()},x=(e,t,n)=>{var r=(t.component=e).vnode.props;e.vnode=t,e.next=null,Ao(e,t.props,r,n),Go(e,t.children,n),Je(),In(),qe()},J=(e,t,n,r,o,i,s,l,a=!1)=>{var c=e&&e.children,e=e?e.shapeFlag:0,u=t.children,{patchFlag:t,shapeFlag:p}=t;if(0<t){if(128&t)return void k(c,u,n,r,o,i,s,l,a);if(256&t){{var d=c;var f=u;var h=n;t=r;var v=o;var m=i;var g=s;var y=l;var b=a;d=d||le,f=f||le;const _=d.length,w=f.length,x=Math.min(_,w);let e;for(e=0;e<x;e++){const S=f[e]=b?Li(f[e]):Vi(f[e]);N(d[e],S,h,null,v,m,g,y,b)}if(_>w)T(d,v,m,true,false,x);else W(f,h,t,v,m,g,y,b,x)}return}}8&p?(16&e&&T(c,o,i),u!==c&&C(n,u)):16&e?16&p?k(c,u,n,r,o,i,s,l,a):T(c,o,i,!0):(8&e&&C(n,""),16&p&&W(u,n,r,o,i,s,l,a))},k=(e,i,s,l,a,c,u,p,d)=>{let f=0;var h=i.length;let v=e.length-1,m=h-1;for(;f<=v&&f<=m;){var t=e[f],n=i[f]=(d?Li:Vi)(i[f]);if(!Ni(t,n))break;N(t,n,s,null,a,c,u,p,d),f++}for(;f<=v&&f<=m;){var r=e[v],o=i[m]=(d?Li:Vi)(i[m]);if(!Ni(r,o))break;N(r,o,s,null,a,c,u,p,d),v--,m--}if(f>v){if(f<=m)for(var g=m+1,y=g<h?i[g].el:l;f<=m;)N(null,i[f]=(d?Li:Vi)(i[f]),s,y,a,c,u,p,d),f++}else if(f>m)for(;f<=v;)q(e[f],a,c,!0),f++;else{var g=f,b=f;const T=new Map;for(f=b;f<=m;f++){var _=i[f]=(d?Li:Vi)(i[f]);null!=_.key&&(T.has(_.key)&&oe("Duplicate keys found during update:",JSON.stringify(_.key),"Make sure keys are unique."),T.set(_.key,f))}let t,n=0;var w=m-b+1;let r=!1,o=0;const E=new Array(w);for(f=0;f<w;f++)E[f]=0;for(f=g;f<=v;f++){var x=e[f];if(n>=w)q(x,a,c,!0);else{let e;if(null!=x.key)e=T.get(x.key);else for(t=b;t<=m;t++)if(0===E[t-b]&&Ni(x,i[t])){e=t;break}void 0===e?q(x,a,c,!0):(E[e-b]=f+1,e>=o?o=e:r=!0,N(x,i[e],s,null,a,c,u,p,d),n++)}}var S=r?function(e){const t=e.slice(),n=[0];let r,o,i,s,l;var a=e.length;for(r=0;r<a;r++){var c=e[r];if(0!==c)if(o=n[n.length-1],e[o]<c)t[r]=o,n.push(r);else{for(i=0,s=n.length-1;i<s;)l=i+s>>1,e[n[l]]<c?i=1+l:s=l;c<e[n[i]]&&(0<i&&(t[r]=n[i-1]),n[i]=r)}}i=n.length,s=n[i-1];for(;0<i--;)n[i]=s,s=t[s];return n}(E):le;for(t=S.length-1,f=w-1;0<=f;f--){var C=b+f,k=i[C],C=C+1<h?i[C+1].el:l;0===E[f]?N(null,k,s,C,a,c,u,p,d):r&&(t<0||f!==S[t]?O(k,s,C,2):t--)}}},O=(e,t,n,r,o=null)=>{const{el:i,type:s,transition:l,children:a,shapeFlag:c}=e;if(6&c)O(e.component.subTree,t,n,r);else if(128&c)e.suspense.move(t,n,r);else if(64&c)s.move(e,t,n,Z);else if(s===ie){V(i,t,n);for(let e=0;e<a.length;e++)O(a[e],t,n,r);V(e.anchor,t,n)}else if(s===bi){for(var u,[{el:p,anchor:d},f,h]=[e,t,n];p&&p!==d;)u=U(p),V(p,f,h),p=u;V(d,f,h)}else if(2!==r&&1&c&&l)if(0===r)l.beforeEnter(i),V(i,t,n),I(()=>l.enter(i),o);else{const{leave:v,delayLeave:m,afterLeave:g}=l,y=()=>V(i,t,n);e=()=>{v(i,()=>{y(),g&&g()})};m?m(i,y,e):e()}else V(i,t,n)},q=(t,n,r,o=!1,i=!1)=>{var{type:s,props:l,ref:a,children:c,dynamicChildren:u,shapeFlag:p,patchFlag:d,dirs:f}=t;if(null!=a&&Zo(a,null,r,t,!0),256&p)n.ctx.deactivate(t);else{const h=1&p&&f;a=!Hr(t);let e;if(a&&(e=l&&l.onVnodeBeforeUnmount)&&Di(e,n,t),6&p)m(t.component,r,o);else{if(128&p)return void t.suspense.unmount(r,o);h&&uo(t,null,n,"beforeUnmount"),64&p?t.type.remove(t,n,r,i,Z,o):u&&(s!==ie||0<d&&64&d)?T(u,n,r,!1,!0):(s===ie&&384&d||!i&&16&p)&&T(c,n,r),o&&v(t)}(a&&(e=l&&l.onVnodeUnmounted)||h)&&I(()=>{e&&Di(e,n,t),h&&uo(t,null,n,"unmounted")},r)}},v=e=>{const{type:t,el:n,anchor:r,transition:o}=e;if(t===ie)if(0<e.patchFlag&&2048&e.patchFlag&&o&&!o.persisted)e.children.forEach(e=>{e.type===se?d(e.el):v(e)});else{var i=n;var s=r;var l;for(;i!==s;)l=U(i),d(i),i=l;d(s)}else if(t===bi)z(e);else{const c=()=>{d(n),o&&!o.persisted&&o.afterLeave&&o.afterLeave()};if(1&e.shapeFlag&&o&&!o.persisted){const{leave:u,delayLeave:p}=o;var a=()=>u(n,c);p?p(e.el,c,a):a()}else c()}},m=(e,t,n)=>{var r;e.type.__hmrId&&(r=e,Un.get(r.type.__hmrId).instances.delete(r));const{bum:o,scope:i,update:s,subTree:l,um:a}=e;o&&ke(o),i.stop(),s&&(s.active=!1,q(l,e,t,n)),a&&I(a,t),I(()=>{e.isUnmounted=!0},t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve()),Qn(e)},T=(t,n,r,o=!1,i=!1,s=0)=>{for(let e=s;e<t.length;e++)q(t[e],n,r,o,i)},Y=e=>6&e.shapeFlag?Y(e.component.subTree):128&e.shapeFlag?e.suspense.next():U(e.anchor||e.el);var r=(e,t,n)=>{null==e?t._vnode&&q(t._vnode,null,null,!0):N(t._vnode||null,e,t,null,null,null,n),In(),Pn(),t._vnode=e};const Z={p:N,um:q,m:O,r:v,mt:G,mc:W,pc:J,pbc:K,n:Y,o:e};let i,S;return t&&([i,S]=t(Z)),{render:r,hydrate:i,createApp:Yo(r,i)}}function ui({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function pi(e,t,n=!1){var r=e.children;const o=t.children;if(ae(r)&&ae(o))for(let t=0;t<r.length;t++){var i=r[t];let e=o[t];1&e.shapeFlag&&!e.dynamicChildren&&((e.patchFlag<=0||32===e.patchFlag)&&((e=o[t]=Li(o[t])).el=i.el),n||pi(i,e)),e.type===yi&&(e.el=i.el),e.type!==se||e.el||(e.el=i.el)}}const di=e=>e.__isTeleport,fi=e=>e&&(e.disabled||""===e.disabled),hi=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,vi=(e,t)=>{var n=e&&e.to;return ce(n)?t?((t=t(n))||oe(`Failed to locate Teleport target with selector "${n}". `+"Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree."),t):(oe("Current renderer does not support string target for Teleports. (missing querySelector renderer option)"),null):(n||fi(e)||oe("Invalid Teleport target: "+n),n)};function mi(e,t,n,{o:{insert:r},m:o},i=2){0===i&&r(e.targetAnchor,t,n);var{el:e,anchor:s,shapeFlag:l,children:a,props:c}=e,i=2===i;if(i&&r(e,t,n),(!i||fi(c))&&16&l)for(let e=0;e<a.length;e++)o(a[e],t,n,2);i&&r(s,t,n)}t={__isTeleport:!0,process(e,t,n,r,o,i,s,l,a,c){const{mc:u,pc:p,pbc:d,o:{insert:f,querySelector:h,createText:v,createComment:m}}=c;var g,y,b,_,w,x=fi(t.props);let{shapeFlag:S,children:C,dynamicChildren:k}=t;Ln&&(a=!1,k=null),null==e?(b=t.el=m("teleport start"),g=t.anchor=m("teleport end"),f(b,n,r),f(g,n,r),b=t.target=vi(t.props,h),r=t.targetAnchor=v(""),b?(f(r,b),s=s||hi(b)):x||oe("Invalid Teleport target on mount:",b,`(${typeof b})`),y=(e,t)=>{16&S&&u(C,e,t,o,i,s,l,a)},x?y(n,g):b&&y(b,r)):(t.el=e.el,g=t.anchor=e.anchor,y=t.target=e.target,b=t.targetAnchor=e.targetAnchor,w=(r=fi(e.props))?n:y,_=r?g:b,s=s||hi(y),k?(d(e.dynamicChildren,k,w,o,i,s,l),pi(e,t,!0)):a||p(e,t,w,_,o,i,s,l,!1),x?r||mi(t,n,g,c,1):(t.props&&t.props.to)!==(e.props&&e.props.to)?(w=t.target=vi(t.props,h))?mi(t,w,null,c,0):oe("Invalid Teleport target on update:",y,`(${typeof y})`):r&&mi(t,y,b,c,1)),gi(t)},remove(e,t,n,r,{um:o,o:{remove:i}},s){var{shapeFlag:e,children:l,anchor:a,targetAnchor:c,target:u,props:p}=e;if(u&&i(c),(s||!fi(p))&&(i(a),16&e))for(let e=0;e<l.length;e++){var d=l[e];o(d,t,n,!0,!!d.dynamicChildren)}},move:mi,hydrate:function(t,n,r,o,i,s,{o:{nextSibling:l,parentNode:e,querySelector:a}},c){const u=n.target=vi(n.props,a);if(u){a=u._lpa||u.firstChild;if(16&n.shapeFlag)if(fi(n.props))n.anchor=c(l(t),n,e(t),r,o,i,s),n.targetAnchor=a;else{n.anchor=l(t);let e=a;for(;e;)if((e=l(e))&&8===e.nodeType&&"teleport anchor"===e.data){n.targetAnchor=e,u._lpa=n.targetAnchor&&l(n.targetAnchor);break}c(a,n,u,r,o,i,s)}gi(n)}return n.anchor&&l(n.anchor)}};function gi(t){const n=t.ctx;if(n&&n.ut){let e=t.children[0].el;for(;e!==t.targetAnchor;)1===e.nodeType&&e.setAttribute("data-v-owner",n.uid),e=e.nextSibling;n.ut()}}const ie=Symbol("Fragment"),yi=Symbol("Text"),se=Symbol("Comment"),bi=Symbol("Static"),_i=[];let c=null;function wi(e=!1){_i.push(c=e?null:[])}function xi(){_i.pop(),c=_i[_i.length-1]||null}let Si=1;function Ci(e){Si+=e}function ki(e){return e.dynamicChildren=0<Si?c||le:null,xi(),0<Si&&c&&c.push(e),e}function Ti(e,t,n,r,o){return ki(P(e,t,n,r,o,!0))}function Ei(e){return!!e&&!0===e.__v_isVNode}function Ni(e,t){return 6&t.shapeFlag&&Bn.has(t.type)?(e.shapeFlag&=-257,void(t.shapeFlag&=-513)):e.type===t.type&&e.key===t.key}let Oi;const $i="__vInternal",Ai=({key:e})=>null!=e?e:null,Ri=({ref:e,ref_key:t,ref_for:n})=>null!=e?ce(e)||q(e)||ne(e)?{i:h,r:e,k:t,f:!!n}:e:null;function Ii(e,t=null,n=null,r=0,o=null,i=e===ie?0:1,s=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ai(t),ref:t&&Ri(t),scopeId:sr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:h};return l?(Bi(a,n),128&i&&e.normalize(a)):n&&(a.shapeFlag|=ce(n)?8:16),a.key!=a.key&&oe("VNode created with invalid key (NaN). VNode type:",a.type),0<Si&&!s&&c&&(0<a.patchFlag||6&i)&&32!==a.patchFlag&&c.push(a),a}const P=(...e)=>{var[e,n=null,t=null,r=0,o=null,i=!1]=[...Oi?Oi(e,h):e];if(e&&e!==fo||(e||oe(`Invalid vnode type when creating vnode: ${e}.`),e=se),Ei(e)){const l=Fi(e,n,!0);return t&&Bi(l,t),0<Si&&!i&&c&&(6&l.shapeFlag?c[c.indexOf(e)]=l:c.push(l)),l.patchFlag|=-2,l}if(us(e)&&(e=e.__vccOpts),n){let{class:e,style:t}=n=Pi(n);e&&!ce(e)&&(n.class=T(e)),re(t)&&(qt(t)&&!ae(t)&&(t=$({},t)),n.style=a(t))}var s=ce(e)?1:br(e)?128:di(e)?64:re(e)?4:ne(e)?2:0;return 4&s&&qt(e)&&oe("Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with `markRaw` or using `shallowRef` instead of `ref`.",` |
Component that was made reactive: `,e=m(e)),Ii(e,n,t,r,o,s,i,!0)};function Pi(e){return e?qt(e)||$i in e?$({},e):e:null}function Fi(e,t,n=!1){const{props:r,ref:o,patchFlag:i,children:s}=e;var l=t?Ui(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Ai(l),ref:t&&t.ref?n&&o?ae(o)?o.concat(Ri(t)):[o,Ri(t)]:Ri(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:-1===i&&ae(s)?s.map(Mi):s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ie?-1===i?16:16|i:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Fi(e.ssContent),ssFallback:e.ssFallback&&Fi(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Mi(e){const t=Fi(e);return ae(e.children)&&(t.children=e.children.map(Mi)),t}function ji(e=" ",t=0){return P(yi,null,e,t)}function Vi(e){return null==e||"boolean"==typeof e?P(se):ae(e)?P(ie,null,e.slice()):"object"==typeof e?Li(e):P(yi,null,String(e))}function Li(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:Fi(e)}function Bi(e,t){let n=0;var r=e["shapeFlag"];if(null==t)t=null;else if(ae(t))n=16;else if("object"==typeof t){if(65&r){const i=t.default;return void(i&&(i._c&&(i._d=!1),Bi(e,i()),i._c&&(i._d=!0)))}n=32;var o=t._;o||$i in t?3===o&&h&&(1===h.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=h}else ne(t)?(t={default:t,_ctx:h},n=32):(t=String(t),64&r?(n=16,t=[ji(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ui(...t){const n={};for(let e=0;e<t.length;e++){var r=t[e];for(const i in r)if("class"===i)n.class!==r.class&&(n.class=T([n.class,r.class]));else if("style"===i)n.style=a([n.style,r.style]);else if(K(i)){const s=n[i];var o=r[i];!o||s===o||ae(s)&&s.includes(o)||(n[i]=s?[].concat(s,o):o)}else""!==i&&(n[i]=r[i])}return n}function Di(e,t,n,r=null){yn(e,t,7,[n,r])}const Hi=Jo();let zi=0;let _=null;const Wi=()=>_||h,Ki=e=>{(_=e).scope.on()},Gi=()=>{_&&_.scope.off(),_=null},Ji=e("slot,component");function qi(e,t){const n=t.isNativeTag||z;(Ji(e)||n(e))&&oe("Do not use built-in or reserved HTML elements as component id: "+e)}function Yi(e){return 4&e.vnode.shapeFlag}let Zi=!1;function Xi(e,t,n){if(ne(t))e.render=t;else if(re(t)){Ei(t)&&oe("setup() should not return VNodes directly - return a render function instead."),e.devtoolsRawSetupState=t,e.setupState=ln(t);{var r=e;const{ctx:o,setupState:i}=r;Object.keys(m(i)).forEach(e=>{i.__isScriptSetup||(yo(e[0])?oe(`setup() return property ${JSON.stringify(e)} should not start with "$" or "_" `+"which are reserved prefixes for Vue internals."):Object.defineProperty(o,e,{enumerable:!0,configurable:!0,get:()=>i[e],set:te}))})}}else void 0!==t&&oe("setup() should return an object. Received: "+(null===t?"null":typeof t));rs(e,n)}let Qi,es;function ts(e){Qi=e,es=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,wo))}}const ns=()=>!Qi;function rs(e,t){const n=e.type;var r,o,i,s,l;e.render||(t||!Qi||n.render||(r=n.template||ko(e).template)&&(oi(e,"compile"),{isCustomElement:l,compilerOptions:o}=e.appContext.config,{delimiters:i,compilerOptions:s}=n,l=$($({isCustomElement:l,delimiters:i},o),s),n.render=Qi(r,l),ii(e,"compile")),e.render=n.render||te,es&&es(e)),Ki(e),Je(),So(e),qe(),Gi(),n.render||e.render!==te||t||(!Qi&&n.template?oe('Component provided template option but runtime compilation is not supported in this build of Vue. Use "vue.global.js" instead.'):oe("Component is missing template or render function."))}function os(r){let e;return Object.freeze({get attrs(){return e=e||(n=r,new Proxy(n.attrs,{get(e,t){return ur(),f(n,"get","$attrs"),e[t]},set(){return oe("setupContext.attrs is readonly."),!1},deleteProperty(){return oe("setupContext.attrs is readonly."),!1}}));var n},get slots(){return zt(r.slots)},get emit(){return(e,...t)=>r.emit(e,...t)},expose:t=>{if(r.exposed&&oe("expose() should be called only once per setup()."),null!=t){let e=typeof t;"object"===e&&(ae(t)?e="array":q(t)&&(e="ref")),"object"!==e&&oe(`expose() should be passed a plain object, received ${e}.`)}r.exposed=t||{}}})}function is(n){if(n.exposed)return n.exposeProxy||(n.exposeProxy=new Proxy(ln(Yt(n.exposed)),{get(e,t){return t in e?e[t]:t in go?go[t](n):void 0},has(e,t){return t in e||t in go}}))}const ss=/(?:^|[-_])(\w)/g,ls=e=>e.replace(ss,e=>e.toUpperCase()).replace(/[-_]/g,"");function as(e,t=!0){return ne(e)?e.displayName||e.name:e.name||t&&e.__name}function cs(e,n,t=!1){let r=as(n);var o;return!(r=!r&&n.__file&&(o=n.__file.match(/([^/\\]+)\.\w+$/))?o[1]:r)&&e&&e.parent&&(o=e=>{for(const t in e)if(e[t]===n)return t},r=o(e.components||e.parent.type.components)||o(e.appContext.components)),r?ls(r):t?"App":"Anonymous"}function us(e){return ne(e)&&"__vccOpts"in e}const ps=(n,r)=>{{var[n,r,o=!1]=[n,r,Zi];let e,t;var i=ne(n);t=i?(e=n,()=>{console.warn("Write operation failed: computed value is readonly")}):(e=n.get,n.set);const s=new pn(e,t,i||!t,o);return r&&!o&&(s.effect.onTrack=r.onTrack,s.effect.onTrigger=r.onTrigger),s}},ds=e=>oe(e+"() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.");function fs(){const e=Wi();return e||oe("useContext() called without active instance."),e.setupContext||(e.setupContext=os(e))}function hs(e,t,n){var r=arguments.length;return 2===r?re(t)&&!ae(t)?Ei(t)?P(e,null,[t]):P(e,t):P(e,null,t):(3<r?n=Array.prototype.slice.call(arguments,2):3===r&&Ei(n)&&(n=[n]),P(e,t,n))}ot=Symbol("ssrContext");function vs(){if("undefined"!=typeof window){const t={style:"color:#3ba776"},i={style:"color:#0b1bc9"},s={style:"color:#b62e24"},l={style:"color:#9d288c"};var e={header(e){return re(e)?e.__isVue?["div",t,"VueInstance"]:q(e)?["div",{},["span",t,function(e){if(Jt(e))return"ShallowRef";if(e.effect)return"ComputedRef";return"Ref"}(e)],"<",n(e.value),">"]:Kt(e)?["div",{},["span",t,Jt(e)?"ShallowReactive":"Reactive"],"<",n(e),">"+(Gt(e)?" (readonly)":"")]:Gt(e)?["div",{},["span",t,Jt(e)?"ShallowReadonly":"Readonly"],"<",n(e),">"]:null:null},hasBody(e){return e&&e.__isVue},body(e){if(e&&e.__isVue)return["div",{},...function(e){const t=[];e.type.props&&e.props&&t.push(r("props",m(e.props)));e.setupState!==E&&t.push(r("setup",e.setupState));e.data!==E&&t.push(r("data",m(e.data)));var n=o(e,"computed");n&&t.push(r("computed",n));n=o(e,"inject");n&&t.push(r("injected",n));return t.push(["div",{},["span",{style:l.style+";opacity:0.66"},"$ (internal): "],["object",{object:e}]]),t}(e.$)]}};function r(e,t){return t=$({},t),Object.keys(t).length?["div",{style:"line-height:1.25em;margin-bottom:0.6em"},["div",{style:"color:#476582"},e],["div",{style:"padding-left:1.25em"},...Object.keys(t).map(e=>["div",{},["span",l,e+": "],n(t[e],!1)])]]:["span",{}]}function n(e,t=!0){return"number"==typeof e?["span",i,e]:"string"==typeof e?["span",s,JSON.stringify(e)]:"boolean"==typeof e?["span",l,e]:re(e)?["object",{object:t?m(e):e}]:["span",s,String(e)]}function o(e,t){var n=e.type;if(!ne(n)){const r={};for(const o in e.ctx)!function t(e,n,r){const o=e[r];if(ae(o)&&o.includes(n)||re(o)&&n in o)return!0;if(e.extends&&t(e.extends,n,r))return!0;if(e.mixins&&e.mixins.some(e=>t(e,n,r)))return!0}(n,o,t)||(r[o]=e.ctx[o]);return r}}window.devtoolsFormatters?window.devtoolsFormatters.push(e):window.devtoolsFormatters=[e]}}function ms(e,t){var n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e<n.length;e++)if(Ce(n[e],t[e]))return!1;return 0<Si&&c&&c.push(e),!0}const gs="3.2.47";const ys="undefined"!=typeof document?document:null,bs=ys&&ys.createElement("template");var _s={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?ys.createElementNS("http://www.w3.org/2000/svg",e):ys.createElement(e,n?{is:n}:void 0);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>ys.createTextNode(e),createComment:e=>ys.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ys.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){var s=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling)){for(;;)if(t.insertBefore(o.cloneNode(!0),n),o===i||!(o=o.nextSibling))break}else{bs.innerHTML=r?`<svg>${e}</svg>`:e;const a=bs.content;if(r){for(var l=a.firstChild;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};const ws=/[^\\];\s*$/,xs=/\s*!important$/;function Ss(t,n,e){var r;ae(e)?e.forEach(e=>Ss(t,n,e)):(null==e&&(e=""),ws.test(e)&&oe(`Unexpected semicolon at the end of '${n}' style value: '${e}'`),n.startsWith("--")?t.setProperty(n,e):(r=function(t,n){var e=ks[n];if(e)return e;let r=R(n);if("filter"!==r&&r in t)return ks[n]=r;r=xe(r);for(let e=0;e<Cs.length;e++){var o=Cs[e]+r;if(o in t)return ks[n]=o}return n}(t,n),xs.test(e)?t.setProperty(v(r),e.replace(xs,""),"important"):t[r]=e))}const Cs=["Webkit","Moz","ms"],ks={};const Ts="http://www.w3.org/1999/xlink";function Es(e,t,n,r){e.addEventListener(t,n,r)}function Ns(e,t,n,r,o=null){const i=e._vei||(e._vei={}),s=i[t];var l,a;r&&s?s.value=r:([l,a]=function(t){let n;if(Os.test(t)){n={};let e;for(;e=t.match(Os);)t=t.slice(0,t.length-e[0].length),n[e[0].toLowerCase()]=!0}var e=":"===t[2]?t.slice(3):v(t.slice(2));return[e,n]}(t),r?Es(e,l,i[t]=function(e,t){const n=e=>{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();yn(function(e,t){{if(ae(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(t=>e=>!e._stopped&&t&&t(e))}return t}}(e,n.value),t,5,[e])};return n.value=e,n.attached=Rs(),n}(r,o),a):s&&(r=s,e.removeEventListener(l,r,a),i[t]=void 0))}const Os=/(?:Once|Passive|Capture)$/;let $s=0;const As=Promise.resolve(),Rs=()=>$s||(As.then(()=>$s=0),$s=Date.now());const Is=/^on[a-z]/;function Ps(e,t){const n=Dr(e);class r extends Fs{constructor(e){super(n,e,t)}}return r.def=n,r}class Fs extends("undefined"!=typeof HTMLElement?HTMLElement:class{}){constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):(this.shadowRoot&&oe("Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use `defineSSRCustomElement`."),this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,On(()=>{this._connected||(Ol(null,this.shadowRoot),this._instance=null)})}_resolveDef(){this._resolved=!0;for(let e=0;e<this.attributes.length;e++)this._setAttr(this.attributes[e].name);new MutationObserver(e=>{for(const t of e)this._setAttr(t.attributeName)}).observe(this,{attributes:!0});const t=(e,t=!1)=>{var{props:n,styles:r}=e;let o;if(n&&!ae(n))for(const s in n){var i=n[s];(i===Number||i&&i.type===Number)&&(s in this._props&&(this._props[s]=Ne(this._props[s])),(o=o||Object.create(null))[R(s)]=!0)}this._numberProps=o,t&&this._resolveProps(e),this._applyStyles(r),this._update()},e=this._def.__asyncLoader;e?e().then(e=>t(e,!0)):t(this._def)}_resolveProps(e){e=e.props;const t=ae(e)?e:Object.keys(e||{});for(const n of Object.keys(this))"_"!==n[0]&&t.includes(n)&&this._setProp(n,this[n],!0,!1);for(const r of t.map(R))Object.defineProperty(this,r,{get(){return this._getProp(r)},set(e){this._setProp(r,e)}})}_setAttr(e){let t=this.getAttribute(e);e=R(e);this._numberProps&&this._numberProps[e]&&(t=Ne(t)),this._setProp(e,t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!0){t!==this._props[e]&&(this._props[e]=t,r&&this._instance&&this._update(),n&&(!0===t?this.setAttribute(v(e),""):"string"==typeof t||"number"==typeof t?this.setAttribute(v(e),t+""):t||this.removeAttribute(v(e))))}_update(){Ol(this._createVNode(),this.shadowRoot)}_createVNode(){const e=P(this._def,$({},this._props));return this._instance||(e.ce=e=>{(this._instance=e).isCE=!0,e.ceReload=e=>{this._styles&&(this._styles.forEach(e=>this.shadowRoot.removeChild(e)),this._styles.length=0),this._applyStyles(e),this._instance=null,this._update()};const n=(e,t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};e.emit=(e,...t)=>{n(e,t),v(e)!==e&&n(v(e),t)};let t=this;for(;t=t&&(t.parentNode||t.host);)if(t instanceof Fs){e.parent=t._instance,e.provides=t._instance.provides;break}}),e}_applyStyles(e){e&&e.forEach(e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t),(this._styles||(this._styles=[])).push(t)})}}function Ms(e,t){if(1===e.nodeType){const n=e.style;for(const r in t)n.setProperty("--"+r,t[r])}}const js="transition",Vs="animation";var Ls=(e,{slots:t})=>hs(Fr,zs(e),t);Ls.displayName="Transition";const Bs={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};var Us=Ls.props=$({},Fr.props,Bs);const Ds=(e,t=[])=>{ae(e)?e.forEach(e=>e(...t)):e&&e(...t)},Hs=e=>!!e&&(ae(e)?e.some(e=>1<e.length):1<e.length);function zs(e){const t={};for(const E in e)E in Bs||(t[E]=e[E]);if(!1===e.css)return t;const{name:n="v",type:i,duration:r,enterFromClass:s=n+"-enter-from",enterActiveClass:o=n+"-enter-active",enterToClass:l=n+"-enter-to",appearFromClass:a=s,appearActiveClass:c=o,appearToClass:u=l,leaveFromClass:p=n+"-leave-from",leaveActiveClass:d=n+"-leave-active",leaveToClass:f=n+"-leave-to"}=e;var h=null==(h=r)?null:re(h)?[Ws(h.enter),Ws(h.leave)]:[h=Ws(h),h];const v=h&&h[0],m=h&&h[1],{onBeforeEnter:g,onEnter:y,onEnterCancelled:b,onLeave:_,onLeaveCancelled:w,onBeforeAppear:x=g,onAppear:S=y,onAppearCancelled:C=b}=t,k=(e,t,n)=>{Gs(e,t?u:l),Gs(e,t?c:o),n&&n()},T=(e,t)=>{e._isLeaving=!1,Gs(e,p),Gs(e,f),Gs(e,d),t&&t()};h=o=>(e,t)=>{const n=o?S:y,r=()=>k(e,o,t);Ds(n,[e,r]),Js(()=>{Gs(e,o?a:s),Ks(e,o?u:l),Hs(n)||Ys(e,i,v,r)})};return $(t,{onBeforeEnter(e){Ds(g,[e]),Ks(e,s),Ks(e,o)},onBeforeAppear(e){Ds(x,[e]),Ks(e,a),Ks(e,c)},onEnter:h(!1),onAppear:h(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>T(e,t);Ks(e,p),el(),Ks(e,d),Js(()=>{e._isLeaving&&(Gs(e,p),Ks(e,f),Hs(_)||Ys(e,i,m,n))}),Ds(_,[e,n])},onEnterCancelled(e){k(e,!1),Ds(b,[e])},onAppearCancelled(e){k(e,!0),Ds(C,[e])},onLeaveCancelled(e){T(e),Ds(w,[e])}})}function Ws(e){e=Ne(e);return vn(e,"<transition> explicit duration"),e}function Ks(t,e){e.split(/\s+/).forEach(e=>e&&t.classList.add(e)),(t._vtc||(t._vtc=new Set)).add(e)}function Gs(t,e){e.split(/\s+/).forEach(e=>e&&t.classList.remove(e));const n=t["_vtc"];n&&(n.delete(e),n.size||(t._vtc=void 0))}function Js(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let qs=0;function Ys(t,e,n,r){const o=t._endId=++qs,i=()=>{o===t._endId&&r()};if(n)return setTimeout(i,n);const{type:s,timeout:l,propCount:a}=Zs(t,e);if(!s)return r();const c=s+"end";let u=0;const p=()=>{t.removeEventListener(c,d),i()},d=e=>{e.target===t&&++u>=a&&p()};setTimeout(()=>{u<a&&p()},l+1),t.addEventListener(c,d)}function Zs(e,t){const n=window.getComputedStyle(e);var e=e=>(n[e]||"").split(", "),r=e(js+"Delay"),o=e(js+"Duration"),r=Xs(r,o),i=e(Vs+"Delay"),s=e(Vs+"Duration"),i=Xs(i,s);let l=null,a=0,c=0;t===js?0<r&&(l=js,a=r,c=o.length):t===Vs?0<i&&(l=Vs,a=i,c=s.length):(a=Math.max(r,i),l=0<a?i<r?js:Vs:null,c=l?(l===js?o:s).length:0);t=l===js&&/\b(transform|all)(,|$)/.test(e(js+"Property").toString());return{type:l,timeout:a,propCount:c,hasTransform:t}}function Xs(n,e){for(;n.length<e.length;)n=n.concat(n);return Math.max(...e.map((e,t)=>Qs(e)+Qs(n[t])))}function Qs(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function el(){document.body.offsetHeight}const tl=new WeakMap,nl=new WeakMap;Us={name:"TransitionGroup",props:$({},Us,{tag:String,moveClass:String}),setup(i,{slots:o}){const s=Wi(),l=Pr();let a,c;return no(()=>{if(a.length){const o=i.moveClass||`${i.name||"v"}-move`;if(function(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach(e=>{e.split(/\s+/).forEach(e=>e&&r.classList.remove(e))});n.split(/\s+/).forEach(e=>e&&r.classList.add(e)),r.style.display="none";const o=1===t.nodeType?t:t.parentNode,i=(o.appendChild(r),Zs(r))["hasTransform"];return o.removeChild(r),i}(a[0].el,s.vnode.el,o)){a.forEach(rl),a.forEach(ol);const e=a.filter(il);el(),e.forEach(e=>{const t=e.el,n=t.style,r=(Ks(t,o),n.transform=n.webkitTransform=n.transitionDuration="",t._moveCb=e=>{e&&e.target!==t||e&&!/transform$/.test(e.propertyName)||(t.removeEventListener("transitionend",r),t._moveCb=null,Gs(t,o))});t.addEventListener("transitionend",r)})}}}),()=>{var e=m(i),t=zs(e),e=e.tag||ie;a=c,c=o.default?Ur(o.default()):[];for(let e=0;e<c.length;e++){var n=c[e];null!=n.key?Br(n,jr(n,t,l,s)):oe("<TransitionGroup> children must be keyed.")}if(a)for(let e=0;e<a.length;e++){const r=a[e];Br(r,jr(r,t,l,s)),tl.set(r,r.el.getBoundingClientRect())}return P(e,null,c)}}};function rl(e){const t=e.el;t._moveCb&&t._moveCb(),t._enterCb&&t._enterCb()}function ol(e){nl.set(e,e.el.getBoundingClientRect())}function il(e){var t=tl.get(e),n=nl.get(e),r=t.left-n.left,t=t.top-n.top;if(r||t){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${r}px,${t}px)`,o.transitionDuration="0s",e}}const sl=e=>{const t=e.props["onUpdate:modelValue"]||!1;return ae(t)?e=>ke(t,e):t};function ll(e){e.target.composing=!0}function al(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const cl={created(t,{modifiers:{lazy:e,trim:n,number:r}},o){t._assign=sl(o);const i=r||o.props&&"number"===o.props.type;Es(t,e?"change":"input",e=>{if(!e.target.composing){let e=t.value;n&&(e=e.trim()),i&&(e=Ee(e)),t._assign(e)}}),n&&Es(t,"change",()=>{t.value=t.value.trim()}),e||(Es(t,"compositionstart",ll),Es(t,"compositionend",al),Es(t,"change",al))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:o}},i){if(e._assign=sl(i),!e.composing){if(document.activeElement===e&&"range"!==e.type){if(n)return;if(r&&e.value.trim()===t)return;if((o||"number"===e.type)&&Ee(e.value)===t)return}i=null==t?"":t;e.value!==i&&(e.value=i)}}},ul={deep:!0,created(a,e,t){a._assign=sl(t),Es(a,"change",()=>{const e=a._modelValue;var t=vl(a),n=a.checked;const r=a._assign;if(ae(e)){var o=V(e,t),i=-1!==o;if(n&&!i)r(e.concat(t));else if(!n&&i){const s=[...e];s.splice(o,1),r(s)}}else if(X(e)){const l=new Set(e);n?l.add(t):l.delete(t),r(l)}else r(ml(a,n))})},mounted:pl,beforeUpdate(e,t,n){e._assign=sl(n),pl(e,t,n)}};function pl(e,{value:t,oldValue:n},r){e._modelValue=t,ae(t)?e.checked=-1<V(t,r.props.value):X(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=j(t,ml(e,!0)))}const dl={created(e,{value:t},n){e.checked=j(t,n.props.value),e._assign=sl(n),Es(e,"change",()=>{e._assign(vl(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e._assign=sl(r),t!==n&&(e.checked=j(t,r.props.value))}},fl={deep:!0,created(t,{value:e,modifiers:{number:n}},r){const o=X(e);Es(t,"change",()=>{var e=Array.prototype.filter.call(t.options,e=>e.selected).map(e=>n?Ee(vl(e)):vl(e));t._assign(t.multiple?o?new Set(e):e:e[0])}),t._assign=sl(r)},mounted(e,{value:t}){hl(e,t)},beforeUpdate(e,t,n){e._assign=sl(n)},updated(e,{value:t}){hl(e,t)}};function hl(n,r){var o=n.multiple;if(!o||ae(r)||X(r)){for(let e=0,t=n.options.length;e<t;e++){const s=n.options[e];var i=vl(s);if(o)ae(r)?s.selected=-1<V(r,i):s.selected=r.has(i);else if(j(vl(s),r))return void(n.selectedIndex!==e&&(n.selectedIndex=e))}o||-1===n.selectedIndex||(n.selectedIndex=-1)}else oe("<select multiple v-model> expects an Array or Set value for its binding, "+`but got ${Object.prototype.toString.call(r).slice(8,-1)}.`)}function vl(e){return"_value"in e?e._value:e.value}function ml(e,t){var n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}var gl={created(e,t,n){yl(e,t,n,null,"created")},mounted(e,t,n){yl(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){yl(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){yl(e,t,n,r,"updated")}};function yl(e,t,n,r,o){const i=function(e,t){switch(e){case"SELECT":return fl;case"TEXTAREA":return cl;default:switch(t){case"checkbox":return ul;case"radio":return dl;default:return cl}}}(e.tagName,n.props&&n.props.type)[o];i&&i(e,t,n,r)}const bl=["ctrl","shift","alt","meta"],_l={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(t,n)=>bl.some(e=>t[e+"Key"]&&!n.includes(e))};const wl={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"};var xl={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):Sl(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Sl(e,!0),r.enter(e)):r.leave(e,()=>{Sl(e,!1)}):Sl(e,t))},beforeUnmount(e,{value:t}){Sl(e,t)}};function Sl(e,t){e.style.display=t?e._vod:"none"}const Cl=$({patchProp:(e,n,r,o,t=!1,i,s,l,a)=>{if("class"===n)f=o,h=t,v=(d=e)._vtc,null==(f=v?(f?[f,...v]:[...v]).join(" "):f)?d.removeAttribute("class"):h?d.setAttribute("class",f):d.className=f;else if("style"===n){v=e;h=r;var c=o;const m=v.style;d=ce(c);if(c&&!d){if(h&&!ce(h))for(const g in h)null==c[g]&&Ss(m,g,"");for(const y in c)Ss(m,y,c[y])}else{f=m.display;d?h!==c&&(m.cssText=c):h&&v.removeAttribute("style"),"_vod"in v&&(m.display=f)}}else if(K(n))G(n)||Ns(e,n,0,o,s);else if("."===n[0]?(n=n.slice(1),1):"^"===n[0]?(n=n.slice(1),0):function(e,t,n,r){if(r)return"innerHTML"===t||"textContent"===t||!!(t in e&&Is.test(t)&&ne(n));if("spellcheck"===t||"draggable"===t||"translate"===t)return;if("form"===t)return;if("list"===t&&"INPUT"===e.tagName)return;if("type"===t&&"TEXTAREA"===e.tagName)return;if(Is.test(t)&&ce(n))return;return t in e}(e,n,o,t)){r=e;var u=n;var p=o;if("innerHTML"===u||"textContent"===u)return void(i&&a(i,s,l),r[u]=null==p?"":p);if("value"===u&&"PROGRESS"!==r.tagName&&!r.tagName.includes("-"))return void(a=null==(r._value=p)?"":p,r.value===a&&"OPTION"!==r.tagName||(r.value=a),null==p&&r.removeAttribute(u));let t=!1;""!==p&&null!=p||("boolean"==(i=typeof r[u])?p=M(p):null==p&&"string"==i?(p="",t=!0):"number"==i&&(p=0,t=!0));try{r[u]=p}catch(e){t||oe(`Failed setting prop "${u}" on <${r.tagName.toLowerCase()}>: `+`value ${p} is invalid.`,e)}t&&r.removeAttribute(u)}else"true-value"===n?e._trueValue=o:"false-value"===n&&(e._falseValue=o),s=e,l=n,a=o,(i=t)&&l.startsWith("xlink:")?null==a?s.removeAttributeNS(Ts,l.slice(6,l.length)):s.setAttributeNS(Ts,l,a):(i=F(l),null==a||i&&!M(a)?s.removeAttribute(l):s.setAttribute(l,i?"":a));var d,f,h,v}},_s);let kl,Tl=!1;function El(){return kl=kl||li(Cl)}function Nl(){return kl=Tl?kl:ai(Cl),Tl=!0,kl}const Ol=(...e)=>{El().render(...e)},$l=(...e)=>{Nl().hydrate(...e)};function Al(e){Object.defineProperty(e.config,"isNativeTag",{value:e=>n(e)||N(e),writable:!1})}function Rl(e){if(ns()){const t=e.config.isCustomElement,n=(Object.defineProperty(e.config,"isCustomElement",{get(){return t},set(){oe("The `isCustomElement` config option is deprecated. Use `compilerOptions.isCustomElement` instead.")}}),e.config.compilerOptions),r='The `compilerOptions` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, `compilerOptions` must be passed to `@vue/compiler-dom` in the build setup instead.\n- For vue-loader: pass it via vue-loader\'s `compilerOptions` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-dom';Object.defineProperty(e.config,"compilerOptions",{get(){return oe(r),n},set(){oe(r)}})}}function Il(e){var t;return ce(e)?((t=document.querySelector(e))||oe(`Failed to mount app: mount target selector "${e}" returned null.`),t):(window.ShadowRoot&&e instanceof window.ShadowRoot&&"closed"===e.mode&&oe('mounting on a ShadowRoot with `{mode: "closed"}` may lead to unpredictable bugs'),e)}_s=te;function Pl(e){throw e}function Fl(e){console.warn("[Vue warn] "+e.message)}function B(e,t,n,r){n=(n||Ml)[e]+(r||"");const o=new SyntaxError(String(n));return o.code=e,o.loc=t,o}const Ml={[0]:"Illegal comment.",1:"CDATA section is allowed only in XML context.",2:"Duplicate attribute.",3:"End tag cannot have attributes.",4:"Illegal '/' in tags.",5:"Unexpected EOF in tag.",6:"Unexpected EOF in CDATA section.",7:"Unexpected EOF in comment.",8:"Unexpected EOF in script.",9:"Unexpected EOF in tag.",10:"Incorrectly closed comment.",11:"Incorrectly opened comment.",12:"Illegal tag name. Use '<' to print '<'.",13:"Attribute value was expected.",14:"End tag name was expected.",15:"Whitespace was expected.",16:"Unexpected '\x3c!--' in comment.",17:"Attribute name cannot contain U+0022 (\"), U+0027 ('), and U+003C (<).",18:"Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).",19:"Attribute name cannot start with '='.",21:"'<?' is allowed only in XML context.",20:"Unexpected null character.",22:"Illegal '/' in tags.",23:"Invalid end tag.",24:"Element is missing end tag.",25:"Interpolation end sign was not found.",27:"End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.",26:"Legal directive name was expected.",28:"v-if/v-else-if is missing expression.",29:"v-if/else branches must use unique keys.",30:"v-else/v-else-if has no adjacent v-if or v-else-if.",31:"v-for is missing expression.",32:"v-for has invalid expression.",33:"<template v-for> key should be placed on the <template> tag.",34:"v-bind is missing expression.",35:"v-on is missing expression.",36:"Unexpected custom directive on <slot> outlet.",37:"Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.",38:"Duplicate slot names found. ",39:"Extraneous children found when component already has explicitly named default slot. These children will be ignored.",40:"v-slot can only be used on components or <template> tags.",41:"v-model is missing expression.",42:"v-model value must be a valid JavaScript member expression.",43:"v-model cannot be used on v-for or v-slot scope variables because they are not writable.",44:`v-model cannot be used on a prop, because local prop bindings are not writable. |
Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,45:"Error parsing JavaScript expression: ",46:"<KeepAlive> expects exactly one child component.",47:'"prefixIdentifiers" option is not supported in this build of compiler.',48:"ES module mode is not supported in this build of compiler.",49:'"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.',50:'"scopeId" option is only supported in module mode.',51:""},jl=Symbol("Fragment"),Vl=Symbol("Teleport"),Ll=Symbol("Suspense"),Bl=Symbol("KeepAlive"),Ul=Symbol("BaseTransition"),Dl=Symbol("openBlock"),Hl=Symbol("createBlock"),zl=Symbol("createElementBlock"),Wl=Symbol("createVNode"),Kl=Symbol("createElementVNode"),Gl=Symbol("createCommentVNode"),Jl=Symbol("createTextVNode"),ql=Symbol("createStaticVNode"),Yl=Symbol("resolveComponent"),Zl=Symbol("resolveDynamicComponent"),Xl=Symbol("resolveDirective");var Ql=Symbol("resolveFilter");const ea=Symbol("withDirectives"),ta=Symbol("renderList"),na=Symbol("renderSlot"),ra=Symbol("createSlots"),oa=Symbol("toDisplayString"),ia=Symbol("mergeProps"),sa=Symbol("normalizeClass"),la=Symbol("normalizeStyle"),aa=Symbol("normalizeProps"),ca=Symbol("guardReactiveProps"),ua=Symbol("toHandlers"),pa=Symbol("camelize");var da=Symbol("capitalize");const fa=Symbol("toHandlerKey"),ha=Symbol("setBlockTracking");var va=Symbol("pushScopeId"),ma=Symbol("popScopeId");const ga=Symbol("withCtx");var ya=Symbol("unref"),ba=Symbol("isRef");const _a=Symbol("withMemo"),wa=Symbol("isMemoSame"),xa={[jl]:"Fragment",[Vl]:"Teleport",[Ll]:"Suspense",[Bl]:"KeepAlive",[Ul]:"BaseTransition",[Dl]:"openBlock",[Hl]:"createBlock",[zl]:"createElementBlock",[Wl]:"createVNode",[Kl]:"createElementVNode",[Gl]:"createCommentVNode",[Jl]:"createTextVNode",[ql]:"createStaticVNode",[Yl]:"resolveComponent",[Zl]:"resolveDynamicComponent",[Xl]:"resolveDirective",[Ql]:"resolveFilter",[ea]:"withDirectives",[ta]:"renderList",[na]:"renderSlot",[ra]:"createSlots",[oa]:"toDisplayString",[ia]:"mergeProps",[sa]:"normalizeClass",[la]:"normalizeStyle",[aa]:"normalizeProps",[ca]:"guardReactiveProps",[ua]:"toHandlers",[pa]:"camelize",[da]:"capitalize",[fa]:"toHandlerKey",[ha]:"setBlockTracking",[va]:"pushScopeId",[ma]:"popScopeId",[ga]:"withCtx",[ya]:"unref",[ba]:"isRef",[_a]:"withMemo",[wa]:"isMemoSame"};const Sa={source:"",start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}};function Ca(e,t,n,r,o,i,s,l=!1,a=!1,c=!1,u=Sa){return e&&(l?(e.helper(Dl),e.helper(Za(e.inSSR,c))):e.helper(Ya(e.inSSR,c)),s&&e.helper(ea)),{type:13,tag:t,props:n,children:r,patchFlag:o,dynamicProps:i,directives:s,isBlock:l,disableTracking:a,isComponent:c,loc:u}}function ka(e,t=Sa){return{type:17,loc:t,elements:e}}function Ta(e,t=Sa){return{type:15,loc:t,properties:e}}function U(e,t){return{type:16,loc:Sa,key:ce(e)?D(e,!0):e,value:t}}function D(e,t=!1,n=Sa,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function Ea(e,t=Sa){return{type:8,loc:t,children:e}}function H(e,t=[],n=Sa){return{type:14,loc:n,callee:e,arguments:t}}function Na(e,t=void 0,n=!1,r=!1,o=Sa){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:o}}function Oa(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:Sa}}const $a=e=>4===e.type&&e.isStatic,Aa=(e,t)=>e===t||e===v(t);function Ra(e){return Aa(e,"Teleport")?Vl:Aa(e,"Suspense")?Ll:Aa(e,"KeepAlive")?Bl:Aa(e,"BaseTransition")?Ul:void 0}const Ia=/^\d|[^\$\w]/,Pa=e=>!Ia.test(e),Fa=/[A-Za-z_$\xA0-\uFFFF]/,Ma=/[\.\?\w$\xA0-\uFFFF]/,ja=/\s+[.[]\s*|\s*[.[]\s+/g;const Va=t=>{t=t.trim().replace(ja,e=>e.trim());let n=0,r=[],o=0,i=0,s=null;for(let e=0;e<t.length;e++){var l=t.charAt(e);switch(n){case 0:if("["===l)r.push(n),n=1,o++;else if("("===l)r.push(n),n=2,i++;else if(!(0===e?Fa:Ma).test(l))return!1;break;case 1:"'"===l||'"'===l||"`"===l?(r.push(n),n=3,s=l):"["===l?o++:"]"!==l||--o||(n=r.pop());break;case 2:if("'"===l||'"'===l||"`"===l)r.push(n),n=3,s=l;else if("("===l)i++;else if(")"===l){if(e===t.length-1)return!1;--i||(n=r.pop())}break;case 3:l===s&&(n=r.pop(),s=null)}}return!o&&!i};function La(e,t,n){const r={source:e.source.slice(t,t+n),start:Ba(e.start,e.source,t),end:e.end};return null!=n&&(r.end=Ba(e.start,e.source,t+n)),r}function Ba(e,t,n=t.length){return Ua($({},e),t,n)}function Ua(e,t,n=t.length){let r=0,o=-1;for(let e=0;e<n;e++)10===t.charCodeAt(e)&&(r++,o=e);return e.offset+=n,e.line+=r,e.column=-1===o?e.column+n:n-o,e}function Da(e,t){if(!e)throw new Error(t||"unexpected compiler condition")}function Ha(t,n,r=!1){for(let e=0;e<t.props.length;e++){var o=t.props[e];if(7===o.type&&(r||o.exp)&&(ce(n)?o.name===n:n.test(o.name)))return o}}function za(t,n,r=!1,o=!1){for(let e=0;e<t.props.length;e++){var i=t.props[e];if(6===i.type){if(!r&&i.name===n&&(i.value||o))return i}else if("bind"===i.name&&(i.exp||o)&&Wa(i.arg,n))return i}}function Wa(e,t){return e&&$a(e)&&e.content===t}function Ka(e){return 5===e.type||2===e.type}function Ga(e){return 7===e.type&&"slot"===e.name}function Ja(e){return 1===e.type&&3===e.tagType}function qa(e){return 1===e.type&&2===e.tagType}function Ya(e,t){return e||t?Wl:Kl}function Za(e,t){return e||t?Hl:zl}const Xa=new Set([aa,ca]);function Qa(e,t,n){let r,o=13===e.type?e.props:e.arguments[2],i=[],s;var l;if(o&&!ce(o)&&14===o.type&&(l=function e(t,n=[]){if(t&&!ce(t)&&14===t.type){var r=t.callee;if(!ce(r)&&Xa.has(r))return e(t.arguments[0],n.concat(t))}return[t,n]}(o),o=l[0],i=l[1],s=i[i.length-1]),null==o||ce(o))r=Ta([t]);else if(14===o.type){const a=o.arguments[0];ce(a)||15!==a.type?o.callee===ua?r=H(n.helper(ia),[Ta([t]),o]):o.arguments.unshift(Ta([t])):ec(t,a)||a.properties.unshift(t),r=r||o}else 15===o.type?(ec(t,o)||o.properties.unshift(t),r=o):(r=H(n.helper(ia),[Ta([t]),o]),s&&s.callee===ca&&(s=i[i.length-2]));13===e.type?s?s.arguments[0]=r:e.props=r:s?s.arguments[0]=r:e.arguments[2]=r}function ec(e,t){let n=!1;if(4===e.key.type){const r=e.key.content;n=t.properties.some(e=>4===e.key.type&&e.key.content===r)}return n}function tc(n,e){return`_${e}_`+n.replace(/[^\w]/g,(e,t)=>"-"===e?"_":n.charCodeAt(t).toString())}function nc(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(Ya(r,e.isComponent)),t(Dl),t(Za(r,e.isComponent)))}const rc=/&(gt|lt|amp|apos|quot);/g,oc={gt:">",lt:"<",amp:"&",apos:"'",quot:'"'},ic={delimiters:["{{","}}"],getNamespace:()=>0,getTextMode:()=>0,isVoidTag:z,isPreTag:z,isCustomElement:z,decodeEntities:e=>e.replace(rc,(e,t)=>oc[t]),onError:Pl,onWarn:Fl,comments:!0};function sc(e,t={}){var e=function(e,t){const n=$({},ic);let r;for(r in t)n[r]=(void 0===t[r]?ic:t)[r];return{options:n,column:1,line:1,offset:0,originalSource:e,source:e,inPre:!1,inVPre:!1,onWarn:n.onWarn}}(e,t),t=hc(e);return[e,t=Sa]=[lc(e,0,[]),vc(e,t)],{type:0,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:0,temps:0,codegenNode:void 0,loc:t}}function lc(n,e,r){var o=mc(r),i=o?o.ns:0;const s=[];for(;!function(e,t,n){var r=e.source;switch(t){case 0:if(g(r,"</"))for(let e=n.length-1;0<=e;--e)if(bc(r,n[e].tag))return 1;break;case 1:case 2:var o=mc(n);if(o&&bc(r,o.tag))return 1;break;case 3:if(g(r,"]]>"))return 1}return!r}(n,e,r);){var l=n.source;let t=void 0;if(0===e||1===e)if(!n.inVPre&&g(l,n.options.delimiters[0]))t=function(e,t){var[n,r]=e.options.delimiters,o=e.source.indexOf(r,n.length);if(-1===o)return void w(e,25);const i=hc(e),s=(y(e,n.length),hc(e)),l=hc(e),a=o-n.length,c=e.source.slice(0,a),u=fc(e,a,t),p=u.trim(),d=u.indexOf(p);0<d&&Ua(s,c,d);o=a-(u.length-p.length-d);return Ua(l,c,o),y(e,r.length),{type:5,content:{type:4,isStatic:!1,constType:0,content:p,loc:vc(e,s,l)},loc:vc(e,i)}}(n,e);else if(0===e&&"<"===l[0])if(1===l.length)w(n,5,1);else if("!"===l[1])t=g(l,"\x3c!--")?function(n){var e=hc(n);let r;var o=/--(\!)?>/.exec(n.source);if(o){o.index<=3&&w(n,0),o[1]&&w(n,10),r=n.source.slice(4,o.index);const i=n.source.slice(0,o.index);let e=1,t=0;for(;-1!==(t=i.indexOf("\x3c!--",e));)y(n,t-e+1),t+4<i.length&&w(n,16),e=t+1;y(n,o.index+o[0].length-e+1)}else r=n.source.slice(4),y(n,n.source.length),w(n,7);return{type:3,content:r,loc:vc(n,e)}}(n):g(l,"<!DOCTYPE")?cc(n):g(l,"<![CDATA[")?0!==i?function(e,t){y(e,9);t=lc(e,3,t);0===e.source.length?w(e,6):y(e,3);return t}(n,r):(w(n,1),cc(n)):(w(n,11),cc(n));else if("/"===l[1])if(2===l.length)w(n,5,2);else{if(">"===l[2]){w(n,14,2),y(n,3);continue}if(/[a-z]/i.test(l[2])){w(n,23),pc(n,1,o);continue}w(n,12,2),t=cc(n)}else/[a-z]/i.test(l[1])?t=function(e,t){const n=e.inPre,r=e.inVPre,o=mc(t),i=pc(e,0,o),s=e.inPre&&!n,l=e.inVPre&&!r;if(i.isSelfClosing||e.options.isVoidTag(i.tag))return s&&(e.inPre=!1),l&&(e.inVPre=!1),i;t.push(i);var a=e.options.getTextMode(i,o),a=lc(e,a,t);t.pop(),i.children=a,bc(e.source,i.tag)?pc(e,1,o):(w(e,24,0,i.loc.start),0===e.source.length&&"script"===i.tag.toLowerCase()&&(t=a[0])&&g(t.loc.source,"\x3c!--")&&w(e,8));i.loc=vc(e,i.loc.start),s&&(e.inPre=!1);l&&(e.inVPre=!1);return i}(n,r):"?"===l[1]?(w(n,21,1),t=cc(n)):w(n,12,1);if(t=t||function(t,e){var n=3===e?["]]>"]:["<",t.options.delimiters[0]];let r=t.source.length;for(let e=0;e<n.length;e++){var o=t.source.indexOf(n[e],1);-1!==o&&r>o&&(r=o)}var i=hc(t),e=fc(t,r,e);return{type:2,content:e,loc:vc(t,i)}}(n,e),ae(t))for(let e=0;e<t.length;e++)ac(s,t[e]);else ac(s,t)}let t=!1;if(2!==e&&1!==e){var a,c,u="preserve"!==n.options.whitespace;for(let e=0;e<s.length;e++){const p=s[e];2===p.type?n.inPre?p.content=p.content.replace(/\r\n/g,"\n"):/[^\t\r\n\f ]/.test(p.content)?u&&(p.content=p.content.replace(/[\t\r\n\f ]+/g," ")):(a=s[e-1],c=s[e+1],!a||!c||u&&(3===a.type&&3===c.type||3===a.type&&1===c.type||1===a.type&&3===c.type||1===a.type&&1===c.type&&/[\r\n]/.test(p.content))?(t=!0,s[e]=null):p.content=" "):3!==p.type||n.options.comments||(t=!0,s[e]=null)}if(n.inPre&&o&&n.options.isPreTag(o.tag)){const d=s[0];d&&2===d.type&&(d.content=d.content.replace(/^\r?\n/,""))}}return t?s.filter(Boolean):s}function ac(e,t){if(2===t.type){const n=mc(e);if(n&&2===n.type&&n.loc.end.offset===t.loc.start.offset)return n.content+=t.content,n.loc.end=t.loc.end,void(n.loc.source+=t.loc.source)}e.push(t)}function cc(e){var t=hc(e),n="?"===e.source[1]?1:2;let r;var o=e.source.indexOf(">");return-1===o?(r=e.source.slice(n),y(e,e.source.length)):(r=e.source.slice(n,o),y(e,o+1)),{type:3,content:r,loc:vc(e,t)}}const uc=e("if,else,else-if,for,slot");function pc(t,e,n){var r=hc(t),o=/^<\/?([a-z][^\t\r\n\f />]*)/i.exec(t.source),i=o[1],n=t.options.getNamespace(i,n),o=(y(t,o[0].length),gc(t),hc(t)),s=t.source;t.options.isPreTag(i)&&(t.inPre=!0);let l=dc(t,e),a=(0===e&&!t.inVPre&&l.some(e=>7===e.type&&"pre"===e.name)&&(t.inVPre=!0,$(t,o),t.source=s,l=dc(t,e).filter(e=>"v-pre"!==e.name)),!1);if(0===t.source.length?w(t,9):(a=g(t.source,"/>"),1===e&&a&&w(t,4),y(t,a?2:1)),1!==e){let e=0;return t.inVPre||("slot"===i?e=2:"template"===i?l.some(e=>7===e.type&&uc(e.name))&&(e=3):function(e,t,n){const r=n.options;if(r.isCustomElement(e))return;if("component"===e||/^[A-Z]/.test(e)||Ra(e)||r.isBuiltInComponent&&r.isBuiltInComponent(e)||r.isNativeTag&&!r.isNativeTag(e))return 1;for(let e=0;e<t.length;e++){const o=t[e];if(6===o.type){if("is"===o.name&&o.value&&o.value.content.startsWith("vue:"))return 1}else{if("is"===o.name)return 1;"bind"===o.name&&Wa(o.arg,"is")}}}(i,l,t)&&(e=1)),{type:1,ns:n,tag:i,tagType:e,props:l,isSelfClosing:a,children:[],loc:vc(t,r),codegenNode:void 0}}}function dc(e,t){const n=[];for(var r=new Set;0<e.source.length&&!g(e.source,">")&&!g(e.source,"/>");)if(g(e.source,"/"))w(e,22),y(e,1),gc(e);else{1===t&&w(e,3);const o=function(r,e){const o=hc(r),i=/^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(r.source),s=i[0];e.has(s)&&w(r,2);e.add(s),"="===s[0]&&w(r,19);{const n=/["'<]/g;for(var t;t=n.exec(s);)w(r,17,t.index)}y(r,s.length);let l=void 0;/^[\t\r\n\f ]*=/.test(r.source)&&(gc(r),y(r,1),gc(r),(l=function(e){var t=hc(e);let n;var r=e.source[0],o='"'===r||"'"===r;if(o){y(e,1);r=e.source.indexOf(r);-1===r?n=fc(e,e.source.length,4):(n=fc(e,r,4),y(e,1))}else{var i,s=/^[^\t\r\n\f >]+/.exec(e.source);if(!s)return;const l=/["'<=`]/g;for(;i=l.exec(s[0]);)w(e,18,i.index);n=fc(e,s[0].length,4)}return{content:n,isQuoted:o,loc:vc(e,t)}}(r))||w(r,13));const a=vc(r,o);if(!r.inVPre&&/^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(s)){const i=/(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(s);var e=g(s,"."),c=i[1]||(e||g(s,":")?"bind":g(s,"@")?"on":"slot");let n;if(i[2]){var u="slot"===c,p=s.lastIndexOf(i[2]);const a=vc(r,yc(r,o,p),yc(r,o,p+i[2].length+(u&&i[3]||"").length));let e=i[2],t=!0;e.startsWith("[")?(t=!1,e=e.endsWith("]")?e.slice(1,e.length-1):(w(r,27),e.slice(1))):u&&(e+=i[3]||""),n={type:4,content:e,isStatic:t,constType:t?3:0,loc:a}}if(l&&l.isQuoted){const f=l.loc;f.start.offset++,f.start.column++,f.end=Ba(f.start,l.content),f.source=f.source.slice(1,-1)}const d=i[3]?i[3].slice(1).split("."):[];return e&&d.push("prop"),{type:7,name:c,exp:l&&{type:4,content:l.content,isStatic:!1,constType:0,loc:l.loc},arg:n,modifiers:d,loc:a}}!r.inVPre&&g(s,"v-")&&w(r,26);return{type:6,name:s,value:l&&{type:2,content:l.content,loc:l.loc},loc:a}}(e,r);6===o.type&&o.value&&"class"===o.name&&(o.value.content=o.value.content.replace(/\s+/g," ").trim()),0===t&&n.push(o),/^[^\t\r\n\f />]/.test(e.source)&&w(e,15),gc(e)}return n}function fc(e,t,n){const r=e.source.slice(0,t);return y(e,t),2!==n&&3!==n&&r.includes("&")?e.options.decodeEntities(r,4===n):r}function hc(e){var{column:e,line:t,offset:n}=e;return{column:e,line:t,offset:n}}function vc(e,t,n){return{start:t,end:n=n||hc(e),source:e.originalSource.slice(t.offset,n.offset)}}function mc(e){return e[e.length-1]}function g(e,t){return e.startsWith(t)}function y(e,t){const n=e["source"];Ua(e,n,t),e.source=n.slice(t)}function gc(e){var t=/^[\t\r\n\f ]+/.exec(e.source);t&&y(e,t[0].length)}function yc(e,t,n){return Ba(t,e.originalSource.slice(t.offset,n),n)}function w(e,t,n,r=hc(e)){n&&(r.offset+=n,r.column+=n),e.options.onError(B(t,{start:r,end:r,source:""}))}function bc(e,t){return g(e,"</")&&e.slice(2,2+t.length).toLowerCase()===t.toLowerCase()&&/[\t\r\n\f />]/.test(e[2+t.length]||">")}function _c(e,t){!function t(e,n,r=!1){const o=e["children"];const i=o.length;let s=0;for(let e=0;e<o.length;e++){const l=o[e];if(1===l.type&&0===l.tagType){const a=r?0:xc(l,n);if(0<a){if(2<=a){l.codegenNode.patchFlag="-1 /* HOISTED */",l.codegenNode=n.hoist(l.codegenNode),s++;continue}}else{const c=l.codegenNode;if(13===c.type){const u=Tc(c);if((!u||512===u||1===u)&&2<=Cc(l,n)){const p=kc(l);p&&(c.props=n.hoist(p))}c.dynamicProps&&(c.dynamicProps=n.hoist(c.dynamicProps))}}}if(1===l.type){const d=1===l.tagType;d&&n.scopes.vSlot++,t(l,n),d&&n.scopes.vSlot--}else if(11===l.type)t(l,n,1===l.children.length);else if(9===l.type)for(let e=0;e<l.branches.length;e++)t(l.branches[e],n,1===l.branches[e].children.length)}s&&n.transformHoist&&n.transformHoist(o,n,e);s&&s===i&&1===e.type&&0===e.tagType&&e.codegenNode&&13===e.codegenNode.type&&ae(e.codegenNode.children)&&(e.codegenNode.children=n.hoist(ka(e.codegenNode.children)))}(e,t,wc(e,e.children[0]))}function wc(e,t){e=e.children;return 1===e.length&&1===t.type&&!qa(t)}function xc(n,r){const o=r["constantCache"];switch(n.type){case 1:if(0!==n.tagType)return 0;var e=o.get(n);if(void 0!==e)return e;const a=n.codegenNode;if(13!==a.type)return 0;if(a.isBlock&&"svg"!==n.tag&&"foreignObject"!==n.tag)return 0;if(Tc(a))return o.set(n,0),0;{let t=3;e=Cc(n,r);if(0===e)return o.set(n,0),0;e<t&&(t=e);for(let e=0;e<n.children.length;e++){var i=xc(n.children[e],r);if(0===i)return o.set(n,0),0;i<t&&(t=i)}if(1<t)for(let e=0;e<n.props.length;e++){var s=n.props[e];if(7===s.type&&"bind"===s.name&&s.exp){s=xc(s.exp,r);if(0===s)return o.set(n,0),0;s<t&&(t=s)}}if(a.isBlock){for(let e=0;e<n.props.length;e++)if(7===n.props[e].type)return o.set(n,0),0;r.removeHelper(Dl),r.removeHelper(Za(r.inSSR,a.isComponent)),a.isBlock=!1,r.helper(Ya(r.inSSR,a.isComponent))}return o.set(n,t),t}case 2:case 3:return 3;case 9:case 11:case 10:return 0;case 5:case 12:return xc(n.content,r);case 4:return n.constType;case 8:let t=3;for(let e=0;e<n.children.length;e++){var l=n.children[e];if(!ce(l)&&!pe(l)){l=xc(l,r);if(0===l)return 0;l<t&&(t=l)}}return t;default:return 0}}const Sc=new Set([sa,la,aa,ca]);function Cc(e,n){let r=3;e=kc(e);if(e&&15===e.type){var o=e["properties"];for(let t=0;t<o.length;t++){var{key:i,value:s}=o[t],i=xc(i,n);if(0===i)return i;i<r&&(r=i);let e;if(0===(e=4===s.type?xc(s,n):14===s.type?function e(t,n){if(14===t.type&&!ce(t.callee)&&Sc.has(t.callee)){if(4===(t=t.arguments[0]).type)return xc(t,n);if(14===t.type)return e(t,n)}return 0}(s,n):0))return e;e<r&&(r=e)}}return r}function kc(e){e=e.codegenNode;if(13===e.type)return e.props}function Tc(e){e=e.patchFlag;return e?parseInt(e,10):void 0}function Ec(e,{filename:t="",prefixIdentifiers:n=!1,hoistStatic:r=!1,cacheHandlers:o=!1,nodeTransforms:i=[],directiveTransforms:s={},transformHoist:l=null,isBuiltInComponent:a=te,isCustomElement:c=te,expressionPlugins:u=[],scopeId:p=null,slotted:d=!0,ssr:f=!1,inSSR:h=!1,ssrCssVars:v="",bindingMetadata:m=E,inline:g=!1,isTS:y=!1,onError:b=Pl,onWarn:_=Fl,compatConfig:w}){t=t.replace(/\?.*$/,"").match(/([^/\\]+)\.\w+$/);const x={selfName:t&&xe(R(t[1])),prefixIdentifiers:n,hoistStatic:r,cacheHandlers:o,nodeTransforms:i,directiveTransforms:s,transformHoist:l,isBuiltInComponent:a,isCustomElement:c,expressionPlugins:u,scopeId:p,slotted:d,ssr:f,inSSR:h,ssrCssVars:v,bindingMetadata:m,inline:g,isTS:y,onError:b,onWarn:_,compatConfig:w,root:e,helpers:new Map,components:new Set,directives:new Set,hoists:[],imports:[],constantCache:new Map,temps:0,cached:0,identifiers:Object.create(null),scopes:{vFor:0,vSlot:0,vPre:0,vOnce:0},parent:null,currentNode:e,childIndex:0,inVOnce:!1,helper(e){var t=x.helpers.get(e)||0;return x.helpers.set(e,t+1),e},removeHelper(e){var t=x.helpers.get(e);t&&((t=t-1)?x.helpers.set(e,t):x.helpers.delete(e))},helperString(e){return"_"+xa[x.helper(e)]},replaceNode(e){if(!x.currentNode)throw new Error("Node being replaced is already removed.");if(!x.parent)throw new Error("Cannot replace root node.");x.parent.children[x.childIndex]=x.currentNode=e},removeNode(e){if(!x.parent)throw new Error("Cannot remove root node.");const t=x.parent.children;var n=e?t.indexOf(e):x.currentNode?x.childIndex:-1;if(n<0)throw new Error("node being removed is not a child of current parent");e&&e!==x.currentNode?x.childIndex>n&&(x.childIndex--,x.onNodeRemoved()):(x.currentNode=null,x.onNodeRemoved()),x.parent.children.splice(n,1)},onNodeRemoved:()=>{},addIdentifiers(e){},removeIdentifiers(e){},hoist(e){ce(e)&&(e=D(e)),x.hoists.push(e);const t=D("_hoisted_"+x.hoists.length,!1,e.loc,2);return t.hoisted=e,t},cache(e,t=!1){return[e,t,n=!1]=[x.cached++,e,t],{type:20,index:e,value:t,isVNode:n,loc:Sa};var n}};return x}function Nc(e,n){const t=Ec(e,n);if(Oc(e,t),n.hoistStatic&&_c(e,t),!n.ssr){n=e;var r=t;const s=r["helper"],l=n["children"];if(1===l.length){var o,i=l[0];wc(n,i)&&i.codegenNode?(13===(o=i.codegenNode).type&&nc(o,r),n.codegenNode=o):n.codegenNode=i}else if(1<l.length){let e=64,t=x[64];1===l.filter(e=>3!==e.type).length&&(e|=2048,t+=", "+x[2048]),n.codegenNode=Ca(r,s(jl),void 0,n.children,e+` /* ${t} */`,void 0,void 0,!0,void 0,!1)}}e.helpers=new Set([...t.helpers.keys()]),e.components=[...t.components],e.directives=[...t.directives],e.imports=t.imports,e.hoists=t.hoists,e.temps=t.temps,e.cached=t.cached}function Oc(t,n){n.currentNode=t;const r=n["nodeTransforms"],o=[];for(let e=0;e<r.length;e++){var i=r[e](t,n);if(i&&(ae(i)?o.push(...i):o.push(i)),!n.currentNode)return;t=n.currentNode}switch(t.type){case 3:n.ssr||n.helper(Gl);break;case 5:n.ssr||n.helper(oa);break;case 9:for(let e=0;e<t.branches.length;e++)Oc(t.branches[e],n);break;case 10:case 11:case 1:case 0:{var s=t;var l=n;let e=0;for(var a=()=>{e--};e<s.children.length;e++){var c=s.children[e];ce(c)||(l.parent=s,l.childIndex=e,l.onNodeRemoved=a,Oc(c,l))}}}n.currentNode=t;let e=o.length;for(;e--;)o[e]()}function $c(t,s){const l=ce(t)?e=>e===t:e=>t.test(e);return(t,n)=>{if(1===t.type){const o=t["props"];if(3!==t.tagType||!o.some(Ga)){const i=[];for(let e=0;e<o.length;e++){var r=o[e];7===r.type&&l(r.name)&&(o.splice(e,1),e--,(r=s(t,r,n))&&i.push(r))}return i}}}}const Ac="/*#__PURE__*/",Rc=e=>xa[e]+": _"+xa[e];function Ic(e,{mode:t="function",prefixIdentifiers:n="module"===t,sourceMap:r=!1,filename:o="template.vue.html",scopeId:i=null,optimizeImports:s=!1,runtimeGlobalName:l="Vue",runtimeModuleName:a="vue",ssrRuntimeModuleName:c="vue/server-renderer",ssr:u=!1,isTS:p=!1,inSSR:d=!1}){const f={mode:t,prefixIdentifiers:n,sourceMap:r,filename:o,scopeId:i,optimizeImports:s,runtimeGlobalName:l,runtimeModuleName:a,ssrRuntimeModuleName:c,ssr:u,isTS:p,inSSR:d,source:e.loc.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper(e){return"_"+xa[e]},push(e,t){f.code+=e},indent(){h(++f.indentLevel)},deindent(e=!1){e?--f.indentLevel:h(--f.indentLevel)},newline(){h(f.indentLevel)}};function h(e){f.push("\n"+" ".repeat(e))}return f}function Pc(t,e={}){const n=Ic(t,e),{mode:r,push:o,prefixIdentifiers:i,indent:s,deindent:l,newline:a,ssr:c}=(e.onContextCreated&&e.onContextCreated(n),n),u=Array.from(t.helpers);var e=0<u.length,p=!i&&"module"!==r,d=n;{var f=t;const{push:m,newline:g,runtimeGlobalName:y}=d,b=y,_=Array.from(f.helpers);0<_.length&&(m(`const _Vue = ${b} |
`),f.hoists.length&&(h=[Wl,Kl,Gl,Jl,ql].filter(e=>_.includes(e)).map(Rc).join(", "),m(`const { ${h} } = _Vue |
`)));(function(t,n){if(t.length){n.pure=!0;const{push:o,newline:i}=n;i();for(let e=0;e<t.length;e++){var r=t[e];r&&(o(`const _hoisted_${e+1} = `),ue(r,n),i())}n.pure=!1}})(f.hoists,d),g(),m("return ")}var h=c?"ssrRender":"render";const v=c?["_ctx","_push","_parent","_attrs"]:["_ctx","_cache"];f=v.join(", ");if(o(`function ${h}(${f}) {`),s(),p&&(o("with (_ctx) {"),s(),e&&(o(`const { ${u.map(Rc).join(", ")} } = _Vue`),o(` |
`),a())),t.components.length&&(Fc(t.components,"component",n),(t.directives.length||0<t.temps)&&a()),t.directives.length&&(Fc(t.directives,"directive",n),0<t.temps&&a()),0<t.temps){o("let ");for(let e=0;e<t.temps;e++)o(`${0<e?", ":""}_temp`+e)}return(t.components.length||t.directives.length||t.temps)&&(o(` |
`),a()),c||o("return "),t.codegenNode?ue(t.codegenNode,n):o("null"),p&&(l(),o("}")),l(),o("}"),{ast:t,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}function Fc(n,r,{helper:e,push:o,newline:i,isTS:s}){var l=e("component"===r?Yl:Xl);for(let t=0;t<n.length;t++){let e=n[t];var a=e.endsWith("__self");o(`const ${tc(e=a?e.slice(0,-6):e,r)} = ${l}(${JSON.stringify(e)}${a?", true":""})`+(s?"!":"")),t<n.length-1&&i()}}function Mc(e,t){var n=3<e.length||e.some(e=>ae(e)||!function(e){return ce(e)||4===e.type||2===e.type||5===e.type||8===e.type}(e));t.push("["),n&&t.indent(),jc(e,t,n),n&&t.deindent(),t.push("]")}function jc(t,n,r=!1,o=!0){const{push:i,newline:s}=n;for(let e=0;e<t.length;e++){var l=t[e];ce(l)?i(l):(ae(l)?Mc:ue)(l,n),e<t.length-1&&(r?(o&&i(","),s()):o&&i(", "))}}function ue(e,t){if(ce(e))t.push(e);else if(pe(e))t.push(t.helper(e));else switch(e.type){case 1:case 9:case 11:Da(null!=e.codegenNode,"Codegen node is missing for element/if/for node. Apply appropriate transforms first."),ue(e.codegenNode,t);break;case 2:n=e,t.push(JSON.stringify(n.content),n);break;case 4:Vc(e,t);break;case 5:{var n=e;var r=t;const{push:d,helper:f,pure:h}=r;h&&d(Ac);d(f(oa)+"("),ue(n.content,r),d(")")}break;case 12:ue(e.codegenNode,t);break;case 8:Lc(e,t);break;case 3:{r=e;var o=t;const{push:v,helper:V,pure:L}=o;L&&v(Ac);v(`${V(Gl)}(${JSON.stringify(r.content)})`,r)}break;case 13:{o=e;var i=t;const{push:m,helper:g,pure:B}=i,{tag:U,props:D,children:H,patchFlag:z,dynamicProps:W,directives:y,isBlock:b,disableTracking:K,isComponent:G}=o;y&&m(g(ea)+"(");b&&m(`(${g(Dl)}(${K?"true":""}), `);B&&m(Ac);var s=(b?Za:Ya)(i.inSSR,G);m(g(s)+"(",o),jc(function(e){let t=e.length;for(;t--&&null==e[t];);return e.slice(0,t+1).map(e=>e||"null")}([U,D,H,z,W]),i),m(")"),b&&m(")");y&&(m(", "),ue(y,i),m(")"))}break;case 14:{s=e;i=t;const{push:_,helper:J,pure:q}=i,Y=ce(s.callee)?s.callee:J(s.callee);q&&_(Ac);_(Y+"(",s),jc(s.arguments,i),_(")")}break;case 15:{var l=e;var a=t;const{push:w,indent:Z,deindent:X,newline:Q}=a,x=l["properties"];if(x.length){var c=1<x.length||x.some(e=>4!==e.value.type);w(c?"{":"{ "),c&&Z();for(let e=0;e<x.length;e++){var{key:M,value:j}=x[e];!function(e,t){const n=t["push"];8===e.type?(n("["),Lc(e,t),n("]")):e.isStatic?(t=Pa(e.content)?e.content:JSON.stringify(e.content),n(t,e)):n(`[${e.content}]`,e)}(M,a),w(": "),ue(j,a),e<x.length-1&&(w(","),Q())}c&&X(),w(c?"}":" }")}else w("{}",l)}break;case 17:Mc(e.elements,t);break;case 18:{c=e;l=t;const{push:S,indent:ee,deindent:te}=l,{params:C,returns:k,body:T,newline:E,isSlot:N}=c;N&&S(`_${xa[ga]}(`);S("(",c),ae(C)?jc(C,l):C&&ue(C,l);S(") => "),(E||T)&&(S("{"),ee());k?(E&&S("return "),(ae(k)?Mc:ue)(k,l)):T&&ue(T,l);(E||T)&&(te(),S("}"));N&&S(")")}break;case 19:{var u=e;var p=t;const{test:O,consequent:ne,alternate:$,newline:A}=u,{push:R,indent:re,deindent:oe,newline:ie}=p;4===O.type?((u=!Pa(O.content))&&R("("),Vc(O,p),u&&R(")")):(R("("),ue(O,p),R(")"));A&&re(),p.indentLevel++,A||R(" "),R("? "),ue(ne,p),p.indentLevel--,A&&ie(),A||R(" "),R(": ");u=19===$.type;u||p.indentLevel++;ue($,p),u||p.indentLevel--;A&&oe(!0)}break;case 20:{u=e;p=t;const{push:I,helper:P,indent:se,deindent:le,newline:F}=p;I(`_cache[${u.index}] || (`),u.isVNode&&(se(),I(P(ha)+"(-1),"),F());I(`_cache[${u.index}] = `),ue(u.value,p),u.isVNode&&(I(","),F(),I(P(ha)+"(1),"),F(),I(`_cache[${u.index}]`),le());I(")")}break;case 21:jc(e.body,t,!0,!1);break;case 22:case 23:case 24:case 25:case 26:case 10:break;default:Da(!1,"unhandled codegen node type: "+e.type)}}function Vc(e,t){var{content:n,isStatic:r}=e;t.push(r?JSON.stringify(n):n,e)}function Lc(t,n){for(let e=0;e<t.children.length;e++){var r=t.children[e];ce(r)?n.push(r):ue(r,n)}}const Bc=new RegExp("\\b"+"arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b")+"\\b"),Uc=/'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;function Dc(n,r,e=!1,o=!1){const i=n.content;if(i.trim())try{new Function(o?` ${i} `:"return "+(e?`(${i}) => {}`:`(${i})`))}catch(e){let t=e.message;o=i.replace(Uc,"").match(Bc);o&&(t=`avoid using JavaScript keyword as property name: "${o[0]}"`),r.onError(B(45,n.loc,void 0,t))}}const Hc=(t,n)=>{if(5===t.type)t.content=zc(t.content,n);else if(1===t.type)for(let e=0;e<t.props.length;e++){const i=t.props[e];var r,o;7===i.type&&"for"!==i.name&&(r=i.exp,o=i.arg,!r||4!==r.type||"on"===i.name&&o||(i.exp=zc(r,n,"slot"===i.name)),o&&4===o.type&&!o.isStatic&&(i.arg=zc(o,n)))}};function zc(e,t,n=!1,r=!1,o=Object.create(t.identifiers)){return Dc(e,t,n,r),e}const Wc=$c(/^(if|else|else-if)$/,(e,t,l)=>{var n=e,r=t,o=l,i=(t,n,r)=>{const e=l.parent.children;let o=e.indexOf(t),i=0;for(;0<=o--;){var s=e[o];s&&9===s.type&&(i+=s.branches.length)}return()=>{if(r)t.codegenNode=Gc(n,i,l);else{const e=function(e){for(;;)if(19===e.type){if(19!==e.alternate.type)return e;e=e.alternate}else 20===e.type&&(e=e.value)}(t.codegenNode);e.alternate=Gc(n,i+t.branches.length-1,l)}}};if("else"===r.name||r.exp&&r.exp.content.trim()||(s=(r.exp||n).loc,o.onError(B(28,r.loc)),r.exp=D("true",!1,s)),r.exp&&Dc(r.exp,o),"if"===r.name){var s=Kc(n,r),e={type:9,loc:n.loc,branches:[s]};if(o.replaceNode(e),i)return i(e,s,!0)}else{const a=o.parent.children,c=[];let e=a.indexOf(n);for(;-1<=e--;){const u=a[e];if(u&&3===u.type)o.removeNode(u),c.unshift(u);else{if(!u||2!==u.type||u.content.trim().length){if(u&&9===u.type){"else-if"===r.name&&void 0===u.branches[u.branches.length-1].condition&&o.onError(B(30,n.loc)),o.removeNode();const p=Kc(n,r);!c.length||o.parent&&1===o.parent.type&&Aa(o.parent.tag,"transition")||(p.children=[...c,...p.children]);{const f=p.userKey;f&&u.branches.forEach(({userKey:e})=>{!function(e,t){if(!e||e.type!==t.type)return;if(6===e.type){if(e.value.content!==t.value.content)return}else{e=e.exp,t=t.exp;if(e.type!==t.type)return;if(4!==e.type||e.isStatic!==t.isStatic||e.content!==t.content)return}return 1}(e,f)||o.onError(B(29,p.userKey.loc))})}u.branches.push(p);const d=i&&i(u,p,!1);Oc(p,o),d&&d(),o.currentNode=null}else o.onError(B(30,n.loc));break}o.removeNode(u)}}}});function Kc(e,t){var n=3===e.tagType;return{type:10,loc:e.loc,condition:"else"===t.name?void 0:t.exp,children:n&&!Ha(e,"for")?e.children:[e],userKey:za(e,"key"),isTemplateIf:n}}function Gc(e,t,n){return e.condition?Oa(e.condition,Jc(e,t,n),H(n.helper(Gl),['"v-if"',"true"])):Jc(e,t,n)}function Jc(n,r,o){const i=o["helper"];r=U("key",D(""+r,!1,Sa,2));const s=n["children"];var e,t,l=s[0];if(1===s.length&&1===l.type)return e=l.codegenNode,13===(t=14===(t=e).type&&t.callee===_a?t.arguments[1].returns:t).type&&nc(t,o),Qa(t,r,o),e;if(1===s.length&&11===l.type)return Qa(t=l.codegenNode,r,o),t;{let e=64,t=x[64];return n.isTemplateIf||1!==s.filter(e=>3!==e.type).length||(e|=2048,t+=", "+x[2048]),Ca(o,i(jl),Ta([r]),s,e+` /* ${t} */`,void 0,void 0,!0,!1,!1,n.loc)}}const qc=$c("for",(d,e,f)=>{const{helper:h,removeHelper:v}=f;var t=d,n=f,r=i=>{const s=H(h(ta),[i.source]),l=Ja(d),a=Ha(d,"memo");var e=za(d,"key");const c=e&&(6===e.type?D(e.value.content,!0):e.exp),u=e?U("key",c):null,p=4===i.source.type&&0<i.source.constType;e=p?64:e?128:256;return i.codegenNode=Ca(f,h(jl),void 0,s,e+` /* ${x[e]} */`,void 0,void 0,!0,!p,!1,d.loc),()=>{let e;var t=i["children"],n=(l&&d.children.some(e=>{if(1===e.type){e=za(e,"key");if(e)return f.onError(B(33,e.loc)),!0}}),1!==t.length||1!==t[0].type),r=qa(d)?d:l&&1===d.children.length&&qa(d.children[0])?d.children[0]:null;if(r?(e=r.codegenNode,l&&u&&Qa(e,u,f)):n?e=Ca(f,h(jl),u?Ta([u]):void 0,d.children,64+` /* ${x[64]} */`,void 0,void 0,!0,void 0,!1):(e=t[0].codegenNode,l&&u&&Qa(e,u,f),e.isBlock!==!p&&(e.isBlock?(v(Dl),v(Za(f.inSSR,e.isComponent))):v(Ya(f.inSSR,e.isComponent))),e.isBlock=!p,e.isBlock?(h(Dl),h(Za(f.inSSR,e.isComponent))):h(Ya(f.inSSR,e.isComponent))),a){const o=Na(tu(i.parseResult,[D("_cached")]));o.body={type:21,body:[Ea(["const _memo = (",a.exp,")"]),Ea(["if (_cached",...c?[" && _cached.key === ",c]:[],` && ${f.helperString(wa)}(_cached, _memo)) return _cached`]),Ea(["const _item = ",e]),D("_item.memo = _memo"),D("return _item")],loc:Sa},s.arguments.push(o,D("_cache"),D(String(f.cached++)))}else s.arguments.push(Na(tu(i.parseResult),e,!0))}};if(e.exp){var o=Qc(e.exp,n);if(o){const c=n["scopes"];var{source:i,value:s,key:l,index:a}=o,i={type:11,loc:e.loc,source:i,valueAlias:s,keyAlias:l,objectIndexAlias:a,parseResult:o,children:Ja(t)?t.children:[t]};n.replaceNode(i),c.vFor++;const u=r&&r(i);return()=>{c.vFor--,u&&u()}}n.onError(B(32,e.loc))}else n.onError(B(31,e.loc))});const Yc=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Zc=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Xc=/^\(|\)$/g;function Qc(n,r){var o=n.loc;const i=n.content;n=i.match(Yc);if(n){const[,e,a]=n,c={source:eu(o,a.trim(),i.indexOf(a,e.length)),value:void 0,key:void 0,index:void 0};Dc(c.source,r);let t=e.trim().replace(Xc,"").trim();n=e.indexOf(t);const u=t.match(Zc);if(u){t=t.replace(Zc,"").trim();var s,l=u[1].trim();let e;l&&(e=i.indexOf(l,n+t.length),c.key=eu(o,l,e),Dc(c.key,r,!0)),!u[2]||(s=u[2].trim())&&(c.index=eu(o,s,i.indexOf(s,c.key?e+l.length:n+t.length)),Dc(c.index,r,!0))}return t&&(c.value=eu(o,t,n),Dc(c.value,r,!0)),c}}function eu(e,t,n){return D(t,!1,La(e,n,t.length))}function tu({value:t,key:n,index:r},o=[]){{var i=[t,n,r,...o];let e=i.length;for(;e--&&!i[e];);return i.slice(0,e+1).map((e,t)=>e||D("_".repeat(t+1),!1))}}const nu=D("undefined",!1),ru=(e,t)=>{if(1===e.type&&(1===e.tagType||3===e.tagType)){e=Ha(e,"slot");if(e)return e.exp,t.scopes.vSlot++,()=>{t.scopes.vSlot--}}},ou=(e,t,n)=>Na(e,t,!1,!0,t.length?t[0].loc:n);function iu(e,r,o=ou){r.helper(ga);const{children:i,loc:n}=e,s=[],l=[];let a=0<r.scopes.vSlot||0<r.scopes.vFor;var t,c=Ha(e,"slot",!0);c&&({arg:t,exp:w}=c,t&&!$a(t)&&(a=!0),s.push(U(t||D("default",!0),o(w,i,n))));let u=!1,p=!1;const d=[],f=new Set;let h=0;for(let n=0;n<i.length;n++){var v=i[n];let t;if(Ja(v)&&(t=Ha(v,"slot",!0))){if(c){r.onError(B(37,t.loc));break}u=!0;var{children:m,loc:g}=v,{arg:y=D("default",!0),exp:b,loc:_}=t;let e;$a(y)?e=y?y.content:"default":a=!0;b=o(b,m,g);if(m=Ha(v,"if"))a=!0,l.push(Oa(m.exp,su(y,b,h++),nu));else if(g=Ha(v,/^else(-if)?$/,!0)){let e=n,t;for(;e--&&3===(t=i[e]).type;);if(t&&Ja(t)&&Ha(t,"if")){i.splice(n,1),n--;let e=l[l.length-1];for(;19===e.alternate.type;)e=e.alternate;e.alternate=g.exp?Oa(g.exp,su(y,b,h++),nu):su(y,b,h++)}else r.onError(B(30,g.loc))}else if(m=Ha(v,"for")){a=!0;g=m.parseResult||Qc(m.exp,r);g?l.push(H(r.helper(ta),[g.source,Na(tu(g),su(y,b),!0)])):r.onError(B(32,m.loc))}else{if(e){if(f.has(e)){r.onError(B(38,_));continue}f.add(e),"default"===e&&(p=!0)}s.push(U(y,b))}}else 3!==v.type&&d.push(v)}c||(t=(e,t)=>{return U("default",o(e,t,n))},u?d.length&&d.some(e=>function e(t){if(2!==t.type&&12!==t.type)return!0;return 2===t.type?!!t.content.trim():e(t.content)}(e))&&(p?r.onError(B(39,d[0].loc)):s.push(t(void 0,d))):s.push(t(void 0,i)));var w=a?2:function t(n){for(let e=0;e<n.length;e++){const r=n[e];switch(r.type){case 1:if(2===r.tagType||t(r.children))return!0;break;case 9:if(t(r.branches))return!0;break;case 10:case 11:if(t(r.children))return!0}}return!1}(e.children)?3:1;let x=Ta(s.concat(U("_",D(w+` /* ${S[w]} */`,!1))),n);return{slots:x=l.length?H(r.helper(ra),[x,ka(l)]):x,hasDynamicSlots:a}}function su(e,t,n){const r=[U("name",e),U("fn",t)];return null!=n&&r.push(U("key",D(String(n),!0))),Ta(r)}const lu=new WeakMap,au=(h,v)=>function(){if(1===(h=v.currentNode).type&&(0===h.tagType||1===h.tagType)){var{tag:a,props:c}=h,u=1===h.tagType,p=u?function(e,t,n=!1){let r=e["tag"];const o=pu(r),i=za(e,"is");if(i)if(o){var s=6===i.type?i.value&&D(i.value.content,!0):i.exp;if(s)return H(t.helper(Zl),[s])}else 6===i.type&&i.value.content.startsWith("vue:")&&(r=i.value.content.slice(4));s=!o&&Ha(e,"is");if(s&&s.exp)return H(t.helper(Zl),[s.exp]);e=Ra(r)||t.isBuiltInComponent(r);if(e)return n||t.helper(e),e;return t.helper(Yl),t.components.add(r),tc(r,"component")}(h,v):`"${a}"`,d=re(p)&&p.callee===Zl;let e,t,n,r=0,o,i,s,l=d||p===Vl||p===Ll||!u&&("svg"===a||"foreignObject"===a);if(0<c.length){var a=cu(h,v,void 0,u,d);e=a.props,r=a.patchFlag,i=a.dynamicPropNames;const f=a.directives;s=f&&f.length?ka(f.map(e=>{{var t=v;const n=[],r=lu.get(e);if(r?n.push(t.helperString(r)):(t.helper(Xl),t.directives.add(e.name),n.push(tc(e.name,"directive"))),t=e.loc,e.exp&&n.push(e.exp),e.arg&&(e.exp||n.push("void 0"),n.push(e.arg)),Object.keys(e.modifiers).length){e.arg||(e.exp||n.push("void 0"),n.push("void 0"));const o=D("true",!1,t);n.push(Ta(e.modifiers.map(e=>U(e,o)),t))}return ka(n,e.loc)}})):void 0,a.shouldUseBlock&&(l=!0)}0<h.children.length&&(p===Bl&&(l=!0,r|=1024,1<h.children.length&&v.onError(B(46,{start:h.children[0].loc.start,end:h.children[h.children.length-1].loc.end,source:""}))),u&&p!==Vl&&p!==Bl?({slots:c,hasDynamicSlots:d}=iu(h,v),t=c,d&&(r|=1024)):t=1===h.children.length&&p!==Vl?((d=5===(c=(a=h.children[0]).type)||8===c)&&0===xc(a,v)&&(r|=1),d||2===c?a:h.children):h.children),0!==r&&(n=r<0?r+` /* ${x[r]} */`:(d=Object.keys(x).map(Number).filter(e=>0<e&&r&e).map(e=>x[e]).join(", "),r+` /* ${d} */`),i&&i.length&&(o=function(n){let r="[";for(let e=0,t=n.length;e<t;e++)r+=JSON.stringify(n[e]),e<t-1&&(r+=", ");return r+"]"}(i))),h.codegenNode=Ca(v,p,e,t,n,o,s,!!l,!1,u,h.loc)}};function cu(t,o,n=t.props,r,M,i=!1){const{tag:s,loc:l,children:j}=t;let a=[];const c=[],u=[];var p=0<j.length;let d=!1,e=0,f=!1,h=!1,v=!1,m=!1,g=!1,V=!1;const y=[];var b=e=>{a.length&&(c.push(Ta(uu(a),l)),a=[]),e&&c.push(e)},L=({key:e,value:t})=>{if($a(e)){const n=e.content;e=K(n);!e||r&&!M||"onclick"===n.toLowerCase()||"onUpdate:modelValue"===n||ge(n)||(m=!0),e&&ge(n)&&(V=!0),20===t.type||(4===t.type||8===t.type)&&0<xc(t,o)||("ref"===n?f=!0:"class"===n?h=!0:"style"===n?v=!0:"key"===n||y.includes(n)||y.push(n),!r||"class"!==n&&"style"!==n||y.includes(n)||y.push(n))}else g=!0};for(let e=0;e<n.length;e++){var _=n[e];if(6===_.type){const{loc:O,name:$,value:A}=_;"ref"===$&&(f=!0,0<o.scopes.vFor&&a.push(U(D("ref_for",!0),D("true")))),"is"===$&&(pu(s)||A&&A.content.startsWith("vue:"))||a.push(U(D($,!0,La(O,0,$.length)),D(A?A.content:"",!0,A?A.loc:O)))}else{var{name:w,arg:x,exp:S,loc:C}=_,k="bind"===w,T="on"===w;if("slot"===w)r||o.onError(B(40,C));else if("once"!==w&&"memo"!==w&&!("is"===w||k&&Wa(x,"is")&&pu(s)||T&&i))if((k&&Wa(x,"key")||T&&p&&Wa(x,"vue:before-update"))&&(d=!0),k&&Wa(x,"ref")&&0<o.scopes.vFor&&a.push(U(D("ref_for",!0),D("true"))),x||!k&&!T){const R=o.directiveTransforms[w];if(R){const{props:n,needRuntime:I}=R(_,t,o);i||n.forEach(L),T&&x&&!$a(x)?b(Ta(n,l)):a.push(...n),I&&(u.push(_),pe(I)&&lu.set(_,I))}else ye(w)||(u.push(_),p&&(d=!0))}else g=!0,S?k?(b(),c.push(S)):b({type:14,loc:C,callee:o.helper(ua),arguments:r?[S]:[S,"true"]}):o.onError(B(k?34:35,C))}}let E=void 0;if(c.length?(b(),E=1<c.length?H(o.helper(ia),c,l):c[0]):a.length&&(E=Ta(uu(a),l)),g?e|=16:(h&&!r&&(e|=2),v&&!r&&(e|=4),y.length&&(e|=8),m&&(e|=32)),d||0!==e&&32!==e||!(f||V||0<u.length)||(e|=512),!o.inSSR&&E)switch(E.type){case 15:let t=-1,n=-1,r=!1;for(let e=0;e<E.properties.length;e++){var N=E.properties[e].key;$a(N)?"class"===N.content?t=e:"style"===N.content&&(n=e):N.isHandlerKey||(r=!0)}const P=E.properties[t],F=E.properties[n];r?E=H(o.helper(aa),[E]):(P&&!$a(P.value)&&(P.value=H(o.helper(sa),[P.value])),F&&(v||4===F.value.type&&"["===F.value.content.trim()[0]||17===F.value.type)&&(F.value=H(o.helper(la),[F.value])));break;case 14:break;default:E=H(o.helper(aa),[H(o.helper(ca),[E])])}return{props:E,directives:u,patchFlag:e,dynamicPropNames:y,shouldUseBlock:d}}function uu(t){const n=new Map,r=[];for(let e=0;e<t.length;e++){var o,i=t[e];8!==i.key.type&&i.key.isStatic?(o=i.key.content,(s=n.get(o))?"style"!==o&&"class"!==o&&!K(o)||(l=i,17===(s=s).value.type?s.value.elements.push(l.value):s.value=ka([s.value,l.value],s.loc)):(n.set(o,i),r.push(i))):r.push(i)}var s,l;return r}function pu(e){return"component"===e||"Component"===e}const du=(t,n)=>{if(qa(t)){var{children:r,loc:o}=t,{slotName:i,slotProps:s}=function(t,e){let n='"default"',r=void 0;const o=[];for(let e=0;e<t.props.length;e++){const l=t.props[e];6===l.type?l.value&&("name"===l.name?n=JSON.stringify(l.value.content):(l.name=R(l.name),o.push(l))):"bind"===l.name&&Wa(l.arg,"name")?l.exp&&(n=l.exp):("bind"===l.name&&l.arg&&$a(l.arg)&&(l.arg.content=R(l.arg.content)),o.push(l))}{var i,s;0<o.length&&({props:i,directives:s}=cu(t,e,o,!1,!1),r=i,s.length&&e.onError(B(36,s[0].loc)))}return{slotName:n,slotProps:r}}(t,n);const l=[n.prefixIdentifiers?"_ctx.$slots":"$slots",i,"{}","undefined","true"];let e=2;s&&(l[2]=s,e=3),r.length&&(l[3]=Na([],r,!1,!1,o),e=4),n.scopeId&&!n.slotted&&(e=5),l.splice(e),t.codegenNode=H(n.helper(na),l,o)}};const fu=/^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,hu=(e,t,n,r)=>{var{loc:o,modifiers:i,arg:s}=e;e.exp||i.length||n.onError(B(35,o));let l;if(4===s.type)if(s.isStatic){let e=s.content;e.startsWith("vue:")&&(e="vnode-"+e.slice(4));i=0!==t.tagType||e.startsWith("vnode")||!/[A-Z]/.test(e)?Se(R(e)):"on:"+e;l=D(i,!0,s.loc)}else l=Ea([n.helperString(fa)+"(",s,")"]);else(l=s).children.unshift(n.helperString(fa)+"("),l.children.push(")");let a=e.exp;a&&!a.content.trim()&&(a=void 0);t=n.cacheHandlers&&!a&&!n.inVOnce;a&&(s=!((i=Va(a.content))||fu.test(a.content)),e=a.content.includes(";"),Dc(a,n,!1,e),(s||t&&i)&&(a=Ea([`${s?"$event":"(...args)"} => `+(e?"{":"("),a,e?"}":")"])));let c={props:[U(l,a||D("() => {}",!1,o))]};return r&&(c=r(c)),t&&(c.props[0].value=n.cache(c.props[0].value)),c.props.forEach(e=>e.key.isHandlerKey=!0),c},vu=(e,t,n)=>{const{exp:r,modifiers:o,loc:i}=e,s=e.arg;return 4!==s.type?(s.children.unshift("("),s.children.push(') || ""')):s.isStatic||(s.content=s.content+' || ""'),o.includes("camel")&&(4===s.type?s.isStatic?s.content=R(s.content):s.content=`${n.helperString(pa)}(${s.content})`:(s.children.unshift(n.helperString(pa)+"("),s.children.push(")"))),n.inSSR||(o.includes("prop")&&mu(s,"."),o.includes("attr")&&mu(s,"^")),!r||4===r.type&&!r.content.trim()?(n.onError(B(34,i)),{props:[U(s,D("",!0,i))]}):{props:[U(s,r)]}},mu=(e,t)=>{4===e.type?e.isStatic?e.content=t+e.content:e.content=`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},gu=(l,a)=>{if(0===l.type||1===l.type||11===l.type||10===l.type)return()=>{const n=l.children;let r=void 0,e=!1;for(let t=0;t<n.length;t++){var o=n[t];if(Ka(o)){e=!0;for(let e=t+1;e<n.length;e++){var i=n[e];if(!Ka(i)){r=void 0;break}(r=r||(n[t]=Ea([o],o.loc))).children.push(" + ",i),n.splice(e,1),e--}}}if(e&&(1!==n.length||0!==l.type&&(1!==l.type||0!==l.tagType||l.props.find(e=>7===e.type&&!a.directiveTransforms[e.name]))))for(let e=0;e<n.length;e++){var t=n[e];if(Ka(t)||8===t.type){const s=[];2===t.type&&" "===t.content||s.push(t),a.ssr||0!==xc(t,a)||s.push(1+` /* ${x[1]} */`),n[e]={type:12,content:t,loc:t.loc,codegenNode:H(a.helper(Jl),s)}}}}},yu=new WeakSet,bu=(e,t)=>{if(1===e.type&&Ha(e,"once",!0)&&!yu.has(e)&&!t.inVOnce)return yu.add(e),t.inVOnce=!0,t.helper(ha),()=>{t.inVOnce=!1;const e=t.currentNode;e.codegenNode&&(e.codegenNode=t.cache(e.codegenNode,!0))}},_u=(e,t,n)=>{var{exp:r,arg:o}=e;if(!r)return n.onError(B(41,e.loc)),wu();var i=r.loc.source;const s=4===r.type?r.content:i;i=n.bindingMetadata[i];if("props"===i||"props-aliased"===i)return n.onError(B(44,r.loc)),wu();if(!s.trim()||!Va(s))return n.onError(B(42,r.loc)),wu();var i=o||D("modelValue",!0),l=o?$a(o)?"onUpdate:"+R(o.content):Ea(['"onUpdate:" + ',o]):"onUpdate:modelValue",n=Ea([(n.isTS?"($event: any)":"$event")+" => ((",r,") = $event)"]);const a=[U(i,e.exp),U(l,n)];return e.modifiers.length&&1===t.tagType&&(r=e.modifiers.map(e=>(Pa(e)?e:JSON.stringify(e))+": true").join(", "),i=o?$a(o)?o.content+"Modifiers":Ea([o,' + "Modifiers"']):"modelModifiers",a.push(U(i,D(`{ ${r} }`,!1,e.loc,2)))),wu(a)};function wu(e=[]){return{props:e}}const xu=new WeakSet,Su=(t,n)=>{if(1===t.type){const r=Ha(t,"memo");if(r&&!xu.has(t))return xu.add(t),()=>{var e=t.codegenNode||n.currentNode.codegenNode;e&&13===e.type&&(1!==t.tagType&&nc(e,n),t.codegenNode=H(n.helper(_a),[r.exp,Na(void 0,e),"_cache",String(n.cached++)]))}}};function Cu(e,t={}){const n=t.onError||Pl;var r="module"===t.mode,r=(!0===t.prefixIdentifiers?n(B(47)):r&&n(B(48)),t.cacheHandlers&&n(B(49)),t.scopeId&&!r&&n(B(50)),ce(e)?sc(e,t):e),[e,o]=[[bu,Wc,Su,qc,Hc,du,au,ru,gu],{on:hu,bind:vu,model:_u}];return Nc(r,$({},t,{prefixIdentifiers:!1,nodeTransforms:[...e,...t.nodeTransforms||[]],directiveTransforms:$({},o,t.directiveTransforms||{})})),Pc(r,$({},t,{prefixIdentifiers:!1}))}var ku;const Tu=Symbol("vModelRadio"),Eu=Symbol("vModelCheckbox"),Nu=Symbol("vModelText"),Ou=Symbol("vModelSelect"),$u=Symbol("vModelDynamic"),Au=Symbol("vOnModifiersGuard"),Ru=Symbol("vOnKeysGuard"),Iu=Symbol("vShow"),Pu=Symbol("Transition"),Fu=Symbol("TransitionGroup");ku={[Tu]:"vModelRadio",[Eu]:"vModelCheckbox",[Nu]:"vModelText",[Ou]:"vModelSelect",[$u]:"vModelDynamic",[Au]:"withModifiers",[Ru]:"withKeys",[Iu]:"vShow",[Pu]:"Transition",[Fu]:"TransitionGroup"},Object.getOwnPropertySymbols(ku).forEach(e=>{xa[e]=ku[e]});let Mu;const ju=e("style,iframe,script,noscript",!0),Vu={isVoidTag:O,isNativeTag:e=>n(e)||N(e),isPreTag:e=>"pre"===e,decodeEntities:function(e,t=!1){return Mu=Mu||document.createElement("div"),t?(Mu.innerHTML=`<div foo="${e.replace(/"/g,""")}">`,Mu.children[0].getAttribute("foo")):(Mu.innerHTML=e,Mu.textContent)},isBuiltInComponent:e=>Aa(e,"Transition")?Pu:Aa(e,"TransitionGroup")?Fu:void 0,getNamespace(e,t){let n=t?t.ns:0;if(t&&2===n)if("annotation-xml"===t.tag){if("svg"===e)return 1;t.props.some(e=>6===e.type&&"encoding"===e.name&&null!=e.value&&("text/html"===e.value.content||"application/xhtml+xml"===e.value.content))&&(n=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&"mglyph"!==e&&"malignmark"!==e&&(n=0);else!t||1!==n||"foreignObject"!==t.tag&&"desc"!==t.tag&&"title"!==t.tag||(n=0);if(0===n){if("svg"===e)return 1;if("math"===e)return 2}return n},getTextMode({tag:e,ns:t}){if(0===t){if("textarea"===e||"title"===e)return 1;if(ju(e))return 2}return 0}};function Lu(e,t){return B(e,t,Bu)}const Bu={[51]:"v-html is missing expression.",52:"v-html will override element children.",53:"v-text is missing expression.",54:"v-text will override element children.",55:"v-model can only be used on <input>, <textarea> and <select> elements.",56:"v-model argument is not supported on plain elements.",57:"v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.",58:"Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.",59:"v-show is missing expression.",60:"<Transition> expects exactly one child element or component.",61:"Tags with side effect (<script> and <style>) are ignored in client component templates."};const Uu=e("passive,once,capture"),Du=e("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),Hu=e("left,right"),zu=e("onkeyup,onkeydown,onkeypress",!0),Wu=(e,t)=>{return $a(e)&&"onclick"===e.content.toLowerCase()?D(t,!0):4!==e.type?Ea(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e};function Ku(e){e=e.children=e.children.filter(e=>3!==e.type&&!(2===e.type&&!e.content.trim()));const t=e[0];return 1!==e.length||11===t.type||9===t.type&&t.branches.some(Ku)}const Gu=(e,t)=>{1!==e.type||0!==e.tagType||"script"!==e.tag&&"style"!==e.tag||(t.onError(Lu(61,e.loc)),t.removeNode())},Ju=[n=>{1===n.type&&n.props.forEach((e,t)=>{6===e.type&&"style"===e.name&&e.value&&(n.props[t]={type:7,name:"bind",arg:D("style",!0,e.loc),exp:((e,t)=>{const n=k(e);return D(JSON.stringify(n),false,t,3)})(e.value.content,e.loc),modifiers:[],loc:e.loc})})},(n,r)=>{if(1===n.type&&1===n.tagType&&r.isBuiltInComponent(n.tag)===Pu)return()=>{if(n.children.length){Ku(n)&&r.onError(Lu(60,{start:n.children[0].loc.start,end:n.children[n.children.length-1].loc.end,source:""}));var e=n.children[0];if(1===e.type)for(const t of e.props)7===t.type&&"show"===t.name&&n.props.push({type:6,name:"persisted",value:void 0,loc:n.loc})}}}],qu={cloak:()=>({props:[]}),html:(e,t,n)=>{var{exp:e,loc:r}=e;return e||n.onError(Lu(51,r)),t.children.length&&(n.onError(Lu(52,r)),t.children.length=0),{props:[U(D("innerHTML",!0,r),e||D("",!0))]}},text:(e,t,n)=>{var{exp:e,loc:r}=e;return e||n.onError(Lu(53,r)),t.children.length&&(n.onError(Lu(54,r)),t.children.length=0),{props:[U(D("textContent",!0),e?0<xc(e,n)?e:H(n.helperString(oa),[e],r):D("",!0))]}},model:(n,r,o)=>{const i=_u(n,r,o);if(!i.props.length||1===r.tagType)return i;function s(){var e=za(r,"value");e&&o.onError(Lu(58,e.loc))}n.arg&&o.onError(Lu(56,n.arg.loc));var l=r["tag"],a=o.isCustomElement(l);if("input"===l||"textarea"===l||"select"===l||a){let e=Nu,t=!1;if("input"===l||a){a=za(r,"type");if(a){if(7===a.type)e=$u;else if(a.value)switch(a.value.content){case"radio":e=Tu;break;case"checkbox":e=Eu;break;case"file":t=!0,o.onError(Lu(57,n.loc));break;default:s()}}else r.props.some(e=>!(7!==e.type||"bind"!==e.name||e.arg&&4===e.arg.type&&e.arg.isStatic))?e=$u:s()}else"select"===l?e=Ou:s();t||(i.needRuntime=o.helper(e))}else o.onError(Lu(55,n.loc));return i.props=i.props.filter(e=>!(4===e.key.type&&"modelValue"===e.key.content)),i},on:(l,e,a)=>hu(l,e,a,e=>{var t=l["modifiers"];if(!t.length)return e;let{key:n,value:r}=e.props[0];const{keyModifiers:o,nonKeyModifiers:i,eventOptionModifiers:s}=((t,n)=>{const r=[],o=[],i=[];for(let e=0;e<n.length;e++){var s=n[e];Uu(s)?i.push(s):Hu(s)?$a(t)?(zu(t.content)?r:o).push(s):(r.push(s),o.push(s)):(Du(s)?o:r).push(s)}return{keyModifiers:r,nonKeyModifiers:o,eventOptionModifiers:i}})(n,t,l.loc);return i.includes("right")&&(n=Wu(n,"onContextmenu")),i.includes("middle")&&(n=Wu(n,"onMouseup")),i.length&&(r=H(a.helper(Au),[r,JSON.stringify(i)])),!o.length||$a(n)&&!zu(n.content)||(r=H(a.helper(Ru),[r,JSON.stringify(o)])),s.length&&(e=s.map(xe).join(""),n=$a(n)?D(""+n.content+e,!0):Ea(["(",n,`) + "${e}"`])),{props:[U(n,r)]}}),show:(e,t,n)=>{var{exp:e,loc:r}=e;return e||n.onError(Lu(59,r)),{props:[],needRuntime:n.helper(Iu)}}};console.info("You are running a development build of Vue.\nMake sure to use the production build (*.prod.js) when deploying for production."),vs();const Yu=Object.create(null);function Zu(n,e){if(!ce(n)){if(!n.nodeType)return oe("invalid template option: ",n),te;n=n.innerHTML}var t=n,r=Yu[t];if(r)return r;"#"===n[0]&&((r=document.querySelector(n))||oe("Template element not found or is empty: "+n),n=r?r.innerHTML:"");const o=$({hoistStatic:!0,onError:i,onWarn:e=>i(e,!0)},e);o.isCustomElement||"undefined"==typeof customElements||(o.isCustomElement=e=>!!customElements.get(e));[r,e={}]=[n,o],r=Cu(r,$({},Vu,e,{nodeTransforms:[Gu,...Ju,...e.nodeTransforms||[]],directiveTransforms:$({},qu,e.directiveTransforms||{}),transformHoist:null})).code;function i(e,t=!1){t=t?e.message:"Template compilation error: "+e.message,e=e.loc&&function(e,n=0,r=e.length){let o=e.split(/(\r?\n)/);var i,s,l,a,c=o.filter((e,t)=>t%2==1);o=o.filter((e,t)=>t%2==0);let u=0;const p=[];for(let t=0;t<o.length;t++)if((u+=o[t].length+(c[t]&&c[t].length||0))>=n){for(let e=t-d;e<=t+d||r>u;e++)e<0||e>=o.length||(i=e+1,p.push(""+i+" ".repeat(Math.max(3-String(i).length,0))+"| "+o[e]),i=o[e].length,s=c[e]&&c[e].length||0,e===t?(a=n-(u-(i+s)),l=Math.max(1,r>u?i-a:r-n),p.push(" | "+" ".repeat(a)+"^".repeat(l))):e>t&&(r>u&&(a=Math.max(Math.min(r-u,i),1),p.push(" | "+"^".repeat(a))),u+=i+s));break}return p.join("\n")}(n,e.loc.start.offset,e.loc.end.offset);oe(e?t+` |
`+e:t)}const s=new Function(r)();return s._rc=!0,Yu[t]=s}return ts(Zu),r.BaseTransition=Fr,r.Comment=se,r.EffectScope=Re,r.Fragment=ie,r.KeepAlive=rt,r.ReactiveEffect=ze,r.Static=bi,r.Suspense=be,r.Teleport=t,r.Text=yi,r.Transition=Ls,r.TransitionGroup=Us,r.VueElement=Fs,r.assertNumber=vn,r.callWithAsyncErrorHandling=yn,r.callWithErrorHandling=gn,r.camelize=R,r.capitalize=xe,r.cloneVNode=Fi,r.compatUtils=null,r.compile=Zu,r.computed=ps,r.createApp=(...e)=>{const r=El().createApp(...e),o=(Al(r),Rl(r),r)["mount"];return r.mount=e=>{const t=Il(e);if(t){const n=r._component;ne(n)||n.render||n.template||(n.template=t.innerHTML),t.innerHTML="";e=o(t,!1,t instanceof SVGElement);return t instanceof Element&&(t.removeAttribute("v-cloak"),t.setAttribute("data-v-app","")),e}},r},r.createBlock=Ti,r.createCommentVNode=function(e="",t=!1){return t?(wi(),Ti(se,null,e)):P(se,null,e)},r.createElementBlock=function(e,t,n,r,o,i){return ki(Ii(e,t,n,r,o,i,!0))},r.createElementVNode=Ii,r.createHydrationRenderer=ai,r.createPropsRestProxy=function(e,t){var n={};for(const r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n},r.createRenderer=li,r.createSSRApp=(...e)=>{const t=Nl().createApp(...e),n=(Al(t),Rl(t),t)["mount"];return t.mount=e=>{e=Il(e);if(e)return n(e,!0,e instanceof SVGElement)},t},r.createSlots=function(t,n){for(let e=0;e<n.length;e++){const r=n[e];if(ae(r))for(let e=0;e<r.length;e++)t[r[e].name]=r[e].fn;else r&&(t[r.name]=r.key?(...e)=>{const t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return t},r.createStaticVNode=function(e,t){const n=P(bi,null,e);return n.staticCount=t,n},r.createTextVNode=ji,r.createVNode=P,r.customRef=function(e){return new an(e)},r.defineAsyncComponent=function(e){const{loader:n,loadingComponent:i,errorComponent:s,delay:l=200,timeout:a,suspensible:c=!0,onError:r}=e=ne(e)?{loader:e}:e;let u=null,p,o=0;const d=()=>{let t;return u||(t=u=n().catch(n=>{if(n=n instanceof Error?n:new Error(String(n)),r)return new Promise((e,t)=>{r(n,()=>e((o++,u=null,d())),()=>t(n),o+1)});throw n}).then(e=>{if(t!==u&&u)return u;if(e||oe("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),!(e=e&&(e.__esModule||"Module"===e[Symbol.toStringTag])?e.default:e)||re(e)||ne(e))return p=e;throw new Error("Invalid async component load result: "+e)}))};return Dr({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return p},setup(){const t=_;if(p)return()=>zr(p,t);const n=e=>{u=null,bn(e,t,13,!s)};if(c&&t.suspense)return d().then(e=>()=>zr(e,t)).catch(e=>(n(e),()=>s?P(s,{error:e}):null));const r=tn(!1),o=tn(),e=tn(!!l);return l&&setTimeout(()=>{e.value=!1},l),null!=a&&setTimeout(()=>{var e;r.value||o.value||(e=new Error(`Async component timed out after ${a}ms.`),n(e),o.value=e)},a),d().then(()=>{r.value=!0,t.parent&&Wr(t.parent.vnode)&&$n(t.parent.update)}).catch(e=>{n(e),o.value=e}),()=>r.value&&p?zr(p,t):o.value&&s?P(s,{error:o.value}):i&&!e.value?P(i):void 0}})},r.defineComponent=Dr,r.defineCustomElement=Ps,r.defineEmits=function(){return ds("defineEmits"),null},r.defineExpose=function(e){ds("defineExpose")},r.defineProps=function(){return ds("defineProps"),null},r.defineSSRCustomElement=e=>Ps(e,$l),r.effect=function(e,t){e.effect&&(e=e.effect.fn);const n=new ze(e),r=(t&&($(n,t),t.scope&&Ie(n,t.scope)),t&&t.lazy||n.run(),n.run.bind(n));return r.effect=n,r},r.effectScope=function(e){return new Re(e)},r.getCurrentInstance=Wi,r.getCurrentScope=Pe,r.getTransitionRawChildren=Ur,r.guardReactiveProps=Pi,r.h=hs,r.handleError=bn,r.hydrate=$l,r.initCustomFormatter=vs,r.initDirectivesForSSR=_s,r.inject=Er,r.isMemoSame=ms,r.isProxy=qt,r.isReactive=Kt,r.isReadonly=Gt,r.isRef=q,r.isRuntimeOnly=ns,r.isShallow=Jt,r.isVNode=Ei,r.markRaw=Yt,r.mergeDefaults=function(e,t){const n=ae(e)?e.reduce((e,t)=>(e[t]={},e),{}):e;for(const r in t){const o=n[r];o?ae(o)||ne(o)?n[r]={type:o,default:t[r]}:o.default=t[r]:null===o?n[r]={default:t[r]}:oe(`props default key "${r}" has no corresponding declaration.`)}return n},r.mergeProps=Ui,r.nextTick=On,r.normalizeClass=T,r.normalizeProps=function(e){if(!e)return null;var{class:t,style:n}=e;return t&&!ce(t)&&(e.class=T(t)),n&&(e.style=a(n)),e},r.normalizeStyle=a,r.onActivated=Gr,r.onBeforeMount=Qr,r.onBeforeUnmount=ro,r.onBeforeUpdate=to,r.onDeactivated=Jr,r.onErrorCaptured=ao,r.onMounted=eo,r.onRenderTracked=lo,r.onRenderTriggered=so,r.onScopeDispose=function(e){b?b.cleanups.push(e):Ae("onScopeDispose() is called when there is no active effect scope to be associated with.")},r.onServerPrefetch=io,r.onUnmounted=oo,r.onUpdated=no,r.openBlock=wi,r.popScopeId=function(){sr=null},r.provide=Tr,r.proxyRefs=ln,r.pushScopeId=function(e){sr=e},r.queuePostFlushCb=Rn,r.reactive=Ut,r.readonly=Ht,r.ref=tn,r.registerRuntimeCompiler=ts,r.render=Ol,r.renderList=function(n,r,e,t){let o;const i=e&&e[t];if(ae(n)||ce(n)){o=new Array(n.length);for(let e=0,t=n.length;e<t;e++)o[e]=r(n[e],e,void 0,i&&i[e])}else if("number"==typeof n){Number.isInteger(n)||oe(`The v-for range expect an integer value but got ${n}.`),o=new Array(n);for(let e=0;e<n;e++)o[e]=r(e+1,e,void 0,i&&i[e])}else if(re(n))if(n[Symbol.iterator])o=Array.from(n,(e,t)=>r(e,t,void 0,i&&i[t]));else{var s=Object.keys(n);o=new Array(s.length);for(let e=0,t=s.length;e<t;e++){var l=s[e];o[e]=r(n[l],l,e,i&&i[e])}}else o=[];return e&&(e[t]=o),o},r.renderSlot=function(e,t,n={},r,o){if(h.isCE||h.parent&&Hr(h.parent)&&h.parent.isCE)return"default"!==t&&(n.name=t),P("slot",n,r&&r());let i=e[t];i&&1<i.length&&(oe("SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template."),i=()=>[]),i&&i._c&&(i._d=!1),wi();var s=i&&function t(e){return e.some(e=>!Ei(e)||e.type!==se&&!(e.type===ie&&!t(e.children)))?e:null}(i(n));const l=Ti(ie,{key:n.key||s&&s.key||"_"+t},s||(r?r():[]),s&&1===e._?64:-2);return!o&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),i&&i._c&&(i._d=!0),l},r.resolveComponent=function(e,t){return ho(po,e,!0,t)||e},r.resolveDirective=function(e){return ho("directives",e)},r.resolveDynamicComponent=function(e){return ce(e)?ho(po,e,!1)||e:e||fo},r.resolveFilter=null,r.resolveTransitionHooks=jr,r.setBlockTracking=Ci,r.setDevtoolsHook=qn,r.setTransitionHooks=Br,r.shallowReactive=Dt,r.shallowReadonly=zt,r.shallowRef=function(e){return nn(e,!0)},r.ssrContextKey=ot,r.ssrUtils=null,r.stop=function(e){e.effect.stop()},r.toDisplayString=e=>ce(e)?e:null==e?"":ae(e)||re(e)&&(e.toString===ee||!ne(e.toString))?JSON.stringify(e,L,2):String(e),r.toHandlerKey=Se,r.toHandlers=function(e,t){const n={};if(!re(e))return oe("v-on with no argument expects an object value."),n;for(const r in e)n[t&&/[A-Z]/.test(r)?"on:"+r:Se(r)]=e[r];return n},r.toRaw=m,r.toRef=un,r.toRefs=function(e){qt(e)||console.warn("toRefs() expects a reactive object but received a plain one.");const t=ae(e)?new Array(e.length):{};for(const n in e)t[n]=un(e,n);return t},r.transformVNodeArgs=function(e){Oi=e},r.triggerRef=function(e){en(e,e.value)},r.unref=on,r.useAttrs=function(){return fs().attrs},r.useCssModule=function(e=0){return oe("useCssModule() is not supported in the global build."),E},r.useCssVars=function(n){const r=Wi();if(r){const t=r.ut=(t=n(r.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${r.uid}"]`)).forEach(e=>Ms(e,t))},o=()=>{var e=n(r.proxy);!function t(n,r){if(128&n.shapeFlag){const e=n.suspense;n=e.activeBranch,e.pendingBranch&&!e.isHydrating&&e.effects.push(()=>{t(e.activeBranch,r)})}for(;n.component;)n=n.component.subTree;if(1&n.shapeFlag&&n.el)Ms(n.el,r);else if(n.type===ie)n.children.forEach(e=>t(e,r));else if(n.type===bi){let{el:e,anchor:t}=n;for(;e&&(Ms(e,r),e!==t);)e=e.nextSibling}}(r.subTree,e),t(e)};Nr(o),eo(()=>{const e=new MutationObserver(o);e.observe(r.subTree.el.parentNode,{childList:!0}),oo(()=>e.disconnect())})}else oe("useCssVars is called without current active component instance.")},r.useSSRContext=()=>{oe("useSSRContext() is not supported in the global build.")},r.useSlots=function(){return fs().slots},r.useTransitionState=Pr,r.vModelCheckbox=ul,r.vModelDynamic=gl,r.vModelRadio=dl,r.vModelSelect=fl,r.vModelText=cl,r.vShow=xl,r.version=gs,r.warn=oe,r.watch=$r,r.watchEffect=function(e,t){return Ar(e,null,t)},r.watchPostEffect=Nr,r.watchSyncEffect=function(e,t){return Ar(e,null,Object.assign(Object.assign({},t),{flush:"sync"}))},r.withAsyncContext=function(e){const t=Wi();t||oe("withAsyncContext called without active current instance. This is likely a bug.");let n=e();return Gi(),[n=de(n)?n.catch(e=>{throw Ki(t),e}):n,()=>Ki(t)]},r.withCtx=ar,r.withDefaults=function(e,t){return ds("withDefaults"),null},r.withDirectives=function(e,i){var t=h;if(null===t)return oe("withDirectives can only be used inside render functions."),e;var s=is(t)||t.proxy;const l=e.dirs||(e.dirs=[]);for(let o=0;o<i.length;o++){let[e,t,n,r=E]=i[o];e&&((e=ne(e)?{mounted:e,updated:e}:e).deep&&Ir(t),l.push({dir:e,instance:s,value:t,oldValue:void 0,arg:n,modifiers:r}))}return e},r.withKeys=(n,r)=>e=>{if("key"in e){const t=v(e.key);return r.some(e=>e===t||wl[e]===t)?n(e):void 0}},r.withMemo=function(e,t,n,r){var o=n[r];if(o&&ms(o,e))return o;const i=t();return i.memo=e.slice(),n[r]=i},r.withModifiers=(r,o)=>(t,...e)=>{for(let e=0;e<o.length;e++){const n=_l[o[e]];if(n&&n(t,o))return}return r(t,...e)},r.withScopeId=e=>ar,Object.defineProperty(r,"__esModule",{value:!0}),r}({}); |
/mailtemplates/html/customer.phtml |
---|
169,16 → 169,32 |
require_once WPSG_PATH_LIB.'phpgirocode.class.php'; |
if (isset($this->view['mod_prepayment']['subject'])) { |
if (isset($this->view['mod_prepayment']['subject']) && ($this->get_option('wpsg_mod_prepayment_qrcode') == true)) { |
if (in_array('kundenmail.phtml', $this->arTemplateStack)) { |
echo $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 3, PhpGirocode::OUTPUT_FILE)); |
if ($this->get_option('wpsg_mod_prepayment_qrcode_country') == '0') { |
$qrcodes = array(); |
$qrcodes = $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['wpsg_mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 3, PhpGirocode::OUTPUT_FILE, $this->get_option('wpsg_mod_prepayment_qrcode_country'), $this->view['basket'])); |
foreach ($qrcodes as $qr) echo $qr; |
} else if ($this->get_option('wpsg_mod_prepayment_qrcode_country') == '1') { |
echo $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 3, PhpGirocode::OUTPUT_FILE, $this->get_option('wpsg_mod_prepayment_qrcode_country'), $this->view['basket'])); |
} else if ($this->get_option('wpsg_mod_prepayment_qrcode_country') == '2') { |
echo $this->callMod('wpsg_mod_prepayment', 'genQRCode', array($this->view['o_id'], $this->view['mod_prepayment']['subject'], $this->view['basket']['sum']['preis_gesamt_brutto'], 3, PhpGirocode::OUTPUT_FILE, $this->get_option('wpsg_mod_prepayment_qrcode_country'), $this->view['basket'])); |
} |
} |
} |
?> |
/js/vue.esm-browser.js |
---|
0,0 → 1,15386 |
function makeMap(str, expectsLowerCase) { |
const map = /* @__PURE__ */ Object.create(null); |
const list = str.split(","); |
for (let i = 0; i < list.length; i++) { |
map[list[i]] = true; |
} |
return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val]; |
} |
const EMPTY_OBJ = Object.freeze({}) ; |
const EMPTY_ARR = Object.freeze([]) ; |
const NOOP = () => { |
}; |
const NO = () => false; |
const onRE = /^on[^a-z]/; |
const isOn = (key) => onRE.test(key); |
const isModelListener = (key) => key.startsWith("onUpdate:"); |
const extend = Object.assign; |
const remove = (arr, el) => { |
const i = arr.indexOf(el); |
if (i > -1) { |
arr.splice(i, 1); |
} |
}; |
const hasOwnProperty$1 = Object.prototype.hasOwnProperty; |
const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); |
const isArray = Array.isArray; |
const isMap = (val) => toTypeString(val) === "[object Map]"; |
const isSet = (val) => toTypeString(val) === "[object Set]"; |
const isDate = (val) => toTypeString(val) === "[object Date]"; |
const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; |
const isFunction = (val) => typeof val === "function"; |
const isString = (val) => typeof val === "string"; |
const isSymbol = (val) => typeof val === "symbol"; |
const isObject = (val) => val !== null && typeof val === "object"; |
const isPromise = (val) => { |
return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); |
}; |
const objectToString = Object.prototype.toString; |
const toTypeString = (value) => objectToString.call(value); |
const toRawType = (value) => { |
return toTypeString(value).slice(8, -1); |
}; |
const isPlainObject = (val) => toTypeString(val) === "[object Object]"; |
const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; |
const isReservedProp = /* @__PURE__ */ makeMap( |
// the leading comma is intentional so empty string "" is also included |
",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" |
); |
const isBuiltInDirective = /* @__PURE__ */ makeMap( |
"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" |
); |
const cacheStringFunction = (fn) => { |
const cache = /* @__PURE__ */ Object.create(null); |
return (str) => { |
const hit = cache[str]; |
return hit || (cache[str] = fn(str)); |
}; |
}; |
const camelizeRE = /-(\w)/g; |
const camelize = cacheStringFunction((str) => { |
return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); |
}); |
const hyphenateRE = /\B([A-Z])/g; |
const hyphenate = cacheStringFunction( |
(str) => str.replace(hyphenateRE, "-$1").toLowerCase() |
); |
const capitalize = cacheStringFunction((str) => { |
return str.charAt(0).toUpperCase() + str.slice(1); |
}); |
const toHandlerKey = cacheStringFunction((str) => { |
const s = str ? `on${capitalize(str)}` : ``; |
return s; |
}); |
const hasChanged = (value, oldValue) => !Object.is(value, oldValue); |
const invokeArrayFns = (fns, arg) => { |
for (let i = 0; i < fns.length; i++) { |
fns[i](arg); |
} |
}; |
const def = (obj, key, value) => { |
Object.defineProperty(obj, key, { |
configurable: true, |
enumerable: false, |
value |
}); |
}; |
const looseToNumber = (val) => { |
const n = parseFloat(val); |
return isNaN(n) ? val : n; |
}; |
const toNumber = (val) => { |
const n = isString(val) ? Number(val) : NaN; |
return isNaN(n) ? val : n; |
}; |
let _globalThis; |
const getGlobalThis = () => { |
return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); |
}; |
const PatchFlagNames = { |
[1]: `TEXT`, |
[2]: `CLASS`, |
[4]: `STYLE`, |
[8]: `PROPS`, |
[16]: `FULL_PROPS`, |
[32]: `HYDRATE_EVENTS`, |
[64]: `STABLE_FRAGMENT`, |
[128]: `KEYED_FRAGMENT`, |
[256]: `UNKEYED_FRAGMENT`, |
[512]: `NEED_PATCH`, |
[1024]: `DYNAMIC_SLOTS`, |
[2048]: `DEV_ROOT_FRAGMENT`, |
[-1]: `HOISTED`, |
[-2]: `BAIL` |
}; |
const slotFlagsText = { |
[1]: "STABLE", |
[2]: "DYNAMIC", |
[3]: "FORWARDED" |
}; |
const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console"; |
const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); |
const range = 2; |
function generateCodeFrame(source, start = 0, end = source.length) { |
let lines = source.split(/(\r?\n)/); |
const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); |
lines = lines.filter((_, idx) => idx % 2 === 0); |
let count = 0; |
const res = []; |
for (let i = 0; i < lines.length; i++) { |
count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); |
if (count >= start) { |
for (let j = i - range; j <= i + range || end > count; j++) { |
if (j < 0 || j >= lines.length) |
continue; |
const line = j + 1; |
res.push( |
`${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` |
); |
const lineLength = lines[j].length; |
const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; |
if (j === i) { |
const pad = start - (count - (lineLength + newLineSeqLength)); |
const length = Math.max( |
1, |
end > count ? lineLength - pad : end - start |
); |
res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); |
} else if (j > i) { |
if (end > count) { |
const length = Math.max(Math.min(end - count, lineLength), 1); |
res.push(` | ` + "^".repeat(length)); |
} |
count += lineLength + newLineSeqLength; |
} |
} |
break; |
} |
} |
return res.join("\n"); |
} |
function normalizeStyle(value) { |
if (isArray(value)) { |
const res = {}; |
for (let i = 0; i < value.length; i++) { |
const item = value[i]; |
const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); |
if (normalized) { |
for (const key in normalized) { |
res[key] = normalized[key]; |
} |
} |
} |
return res; |
} else if (isString(value) || isObject(value)) { |
return value; |
} |
} |
const listDelimiterRE = /;(?![^(]*\))/g; |
const propertyDelimiterRE = /:([^]+)/; |
const styleCommentRE = /\/\*[^]*?\*\//g; |
function parseStringStyle(cssText) { |
const ret = {}; |
cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { |
if (item) { |
const tmp = item.split(propertyDelimiterRE); |
tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); |
} |
}); |
return ret; |
} |
function normalizeClass(value) { |
let res = ""; |
if (isString(value)) { |
res = value; |
} else if (isArray(value)) { |
for (let i = 0; i < value.length; i++) { |
const normalized = normalizeClass(value[i]); |
if (normalized) { |
res += normalized + " "; |
} |
} |
} else if (isObject(value)) { |
for (const name in value) { |
if (value[name]) { |
res += name + " "; |
} |
} |
} |
return res.trim(); |
} |
function normalizeProps(props) { |
if (!props) |
return null; |
let { class: klass, style } = props; |
if (klass && !isString(klass)) { |
props.class = normalizeClass(klass); |
} |
if (style) { |
props.style = normalizeStyle(style); |
} |
return props; |
} |
const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; |
const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; |
const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; |
const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); |
const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); |
const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); |
const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; |
const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); |
function includeBooleanAttr(value) { |
return !!value || value === ""; |
} |
function looseCompareArrays(a, b) { |
if (a.length !== b.length) |
return false; |
let equal = true; |
for (let i = 0; equal && i < a.length; i++) { |
equal = looseEqual(a[i], b[i]); |
} |
return equal; |
} |
function looseEqual(a, b) { |
if (a === b) |
return true; |
let aValidType = isDate(a); |
let bValidType = isDate(b); |
if (aValidType || bValidType) { |
return aValidType && bValidType ? a.getTime() === b.getTime() : false; |
} |
aValidType = isSymbol(a); |
bValidType = isSymbol(b); |
if (aValidType || bValidType) { |
return a === b; |
} |
aValidType = isArray(a); |
bValidType = isArray(b); |
if (aValidType || bValidType) { |
return aValidType && bValidType ? looseCompareArrays(a, b) : false; |
} |
aValidType = isObject(a); |
bValidType = isObject(b); |
if (aValidType || bValidType) { |
if (!aValidType || !bValidType) { |
return false; |
} |
const aKeysCount = Object.keys(a).length; |
const bKeysCount = Object.keys(b).length; |
if (aKeysCount !== bKeysCount) { |
return false; |
} |
for (const key in a) { |
const aHasKey = a.hasOwnProperty(key); |
const bHasKey = b.hasOwnProperty(key); |
if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { |
return false; |
} |
} |
} |
return String(a) === String(b); |
} |
function looseIndexOf(arr, val) { |
return arr.findIndex((item) => looseEqual(item, val)); |
} |
const toDisplayString = (val) => { |
return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); |
}; |
const replacer = (_key, val) => { |
if (val && val.__v_isRef) { |
return replacer(_key, val.value); |
} else if (isMap(val)) { |
return { |
[`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => { |
entries[`${key} =>`] = val2; |
return entries; |
}, {}) |
}; |
} else if (isSet(val)) { |
return { |
[`Set(${val.size})`]: [...val.values()] |
}; |
} else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { |
return String(val); |
} |
return val; |
}; |
function warn$1(msg, ...args) { |
console.warn(`[Vue warn] ${msg}`, ...args); |
} |
let activeEffectScope; |
class EffectScope { |
constructor(detached = false) { |
this.detached = detached; |
/** |
* @internal |
*/ |
this._active = true; |
/** |
* @internal |
*/ |
this.effects = []; |
/** |
* @internal |
*/ |
this.cleanups = []; |
this.parent = activeEffectScope; |
if (!detached && activeEffectScope) { |
this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( |
this |
) - 1; |
} |
} |
get active() { |
return this._active; |
} |
run(fn) { |
if (this._active) { |
const currentEffectScope = activeEffectScope; |
try { |
activeEffectScope = this; |
return fn(); |
} finally { |
activeEffectScope = currentEffectScope; |
} |
} else { |
warn$1(`cannot run an inactive effect scope.`); |
} |
} |
/** |
* This should only be called on non-detached scopes |
* @internal |
*/ |
on() { |
activeEffectScope = this; |
} |
/** |
* This should only be called on non-detached scopes |
* @internal |
*/ |
off() { |
activeEffectScope = this.parent; |
} |
stop(fromParent) { |
if (this._active) { |
let i, l; |
for (i = 0, l = this.effects.length; i < l; i++) { |
this.effects[i].stop(); |
} |
for (i = 0, l = this.cleanups.length; i < l; i++) { |
this.cleanups[i](); |
} |
if (this.scopes) { |
for (i = 0, l = this.scopes.length; i < l; i++) { |
this.scopes[i].stop(true); |
} |
} |
if (!this.detached && this.parent && !fromParent) { |
const last = this.parent.scopes.pop(); |
if (last && last !== this) { |
this.parent.scopes[this.index] = last; |
last.index = this.index; |
} |
} |
this.parent = void 0; |
this._active = false; |
} |
} |
} |
function effectScope(detached) { |
return new EffectScope(detached); |
} |
function recordEffectScope(effect, scope = activeEffectScope) { |
if (scope && scope.active) { |
scope.effects.push(effect); |
} |
} |
function getCurrentScope() { |
return activeEffectScope; |
} |
function onScopeDispose(fn) { |
if (activeEffectScope) { |
activeEffectScope.cleanups.push(fn); |
} else { |
warn$1( |
`onScopeDispose() is called when there is no active effect scope to be associated with.` |
); |
} |
} |
const createDep = (effects) => { |
const dep = new Set(effects); |
dep.w = 0; |
dep.n = 0; |
return dep; |
}; |
const wasTracked = (dep) => (dep.w & trackOpBit) > 0; |
const newTracked = (dep) => (dep.n & trackOpBit) > 0; |
const initDepMarkers = ({ deps }) => { |
if (deps.length) { |
for (let i = 0; i < deps.length; i++) { |
deps[i].w |= trackOpBit; |
} |
} |
}; |
const finalizeDepMarkers = (effect) => { |
const { deps } = effect; |
if (deps.length) { |
let ptr = 0; |
for (let i = 0; i < deps.length; i++) { |
const dep = deps[i]; |
if (wasTracked(dep) && !newTracked(dep)) { |
dep.delete(effect); |
} else { |
deps[ptr++] = dep; |
} |
dep.w &= ~trackOpBit; |
dep.n &= ~trackOpBit; |
} |
deps.length = ptr; |
} |
}; |
const targetMap = /* @__PURE__ */ new WeakMap(); |
let effectTrackDepth = 0; |
let trackOpBit = 1; |
const maxMarkerBits = 30; |
let activeEffect; |
const ITERATE_KEY = Symbol("iterate" ); |
const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate" ); |
class ReactiveEffect { |
constructor(fn, scheduler = null, scope) { |
this.fn = fn; |
this.scheduler = scheduler; |
this.active = true; |
this.deps = []; |
this.parent = void 0; |
recordEffectScope(this, scope); |
} |
run() { |
if (!this.active) { |
return this.fn(); |
} |
let parent = activeEffect; |
let lastShouldTrack = shouldTrack; |
while (parent) { |
if (parent === this) { |
return; |
} |
parent = parent.parent; |
} |
try { |
this.parent = activeEffect; |
activeEffect = this; |
shouldTrack = true; |
trackOpBit = 1 << ++effectTrackDepth; |
if (effectTrackDepth <= maxMarkerBits) { |
initDepMarkers(this); |
} else { |
cleanupEffect(this); |
} |
return this.fn(); |
} finally { |
if (effectTrackDepth <= maxMarkerBits) { |
finalizeDepMarkers(this); |
} |
trackOpBit = 1 << --effectTrackDepth; |
activeEffect = this.parent; |
shouldTrack = lastShouldTrack; |
this.parent = void 0; |
if (this.deferStop) { |
this.stop(); |
} |
} |
} |
stop() { |
if (activeEffect === this) { |
this.deferStop = true; |
} else if (this.active) { |
cleanupEffect(this); |
if (this.onStop) { |
this.onStop(); |
} |
this.active = false; |
} |
} |
} |
function cleanupEffect(effect2) { |
const { deps } = effect2; |
if (deps.length) { |
for (let i = 0; i < deps.length; i++) { |
deps[i].delete(effect2); |
} |
deps.length = 0; |
} |
} |
function effect(fn, options) { |
if (fn.effect instanceof ReactiveEffect) { |
fn = fn.effect.fn; |
} |
const _effect = new ReactiveEffect(fn); |
if (options) { |
extend(_effect, options); |
if (options.scope) |
recordEffectScope(_effect, options.scope); |
} |
if (!options || !options.lazy) { |
_effect.run(); |
} |
const runner = _effect.run.bind(_effect); |
runner.effect = _effect; |
return runner; |
} |
function stop(runner) { |
runner.effect.stop(); |
} |
let shouldTrack = true; |
const trackStack = []; |
function pauseTracking() { |
trackStack.push(shouldTrack); |
shouldTrack = false; |
} |
function resetTracking() { |
const last = trackStack.pop(); |
shouldTrack = last === void 0 ? true : last; |
} |
function track(target, type, key) { |
if (shouldTrack && activeEffect) { |
let depsMap = targetMap.get(target); |
if (!depsMap) { |
targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); |
} |
let dep = depsMap.get(key); |
if (!dep) { |
depsMap.set(key, dep = createDep()); |
} |
const eventInfo = { effect: activeEffect, target, type, key } ; |
trackEffects(dep, eventInfo); |
} |
} |
function trackEffects(dep, debuggerEventExtraInfo) { |
let shouldTrack2 = false; |
if (effectTrackDepth <= maxMarkerBits) { |
if (!newTracked(dep)) { |
dep.n |= trackOpBit; |
shouldTrack2 = !wasTracked(dep); |
} |
} else { |
shouldTrack2 = !dep.has(activeEffect); |
} |
if (shouldTrack2) { |
dep.add(activeEffect); |
activeEffect.deps.push(dep); |
if (activeEffect.onTrack) { |
activeEffect.onTrack( |
extend( |
{ |
effect: activeEffect |
}, |
debuggerEventExtraInfo |
) |
); |
} |
} |
} |
function trigger(target, type, key, newValue, oldValue, oldTarget) { |
const depsMap = targetMap.get(target); |
if (!depsMap) { |
return; |
} |
let deps = []; |
if (type === "clear") { |
deps = [...depsMap.values()]; |
} else if (key === "length" && isArray(target)) { |
const newLength = Number(newValue); |
depsMap.forEach((dep, key2) => { |
if (key2 === "length" || key2 >= newLength) { |
deps.push(dep); |
} |
}); |
} else { |
if (key !== void 0) { |
deps.push(depsMap.get(key)); |
} |
switch (type) { |
case "add": |
if (!isArray(target)) { |
deps.push(depsMap.get(ITERATE_KEY)); |
if (isMap(target)) { |
deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); |
} |
} else if (isIntegerKey(key)) { |
deps.push(depsMap.get("length")); |
} |
break; |
case "delete": |
if (!isArray(target)) { |
deps.push(depsMap.get(ITERATE_KEY)); |
if (isMap(target)) { |
deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); |
} |
} |
break; |
case "set": |
if (isMap(target)) { |
deps.push(depsMap.get(ITERATE_KEY)); |
} |
break; |
} |
} |
const eventInfo = { target, type, key, newValue, oldValue, oldTarget } ; |
if (deps.length === 1) { |
if (deps[0]) { |
{ |
triggerEffects(deps[0], eventInfo); |
} |
} |
} else { |
const effects = []; |
for (const dep of deps) { |
if (dep) { |
effects.push(...dep); |
} |
} |
{ |
triggerEffects(createDep(effects), eventInfo); |
} |
} |
} |
function triggerEffects(dep, debuggerEventExtraInfo) { |
const effects = isArray(dep) ? dep : [...dep]; |
for (const effect2 of effects) { |
if (effect2.computed) { |
triggerEffect(effect2, debuggerEventExtraInfo); |
} |
} |
for (const effect2 of effects) { |
if (!effect2.computed) { |
triggerEffect(effect2, debuggerEventExtraInfo); |
} |
} |
} |
function triggerEffect(effect2, debuggerEventExtraInfo) { |
if (effect2 !== activeEffect || effect2.allowRecurse) { |
if (effect2.onTrigger) { |
effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo)); |
} |
if (effect2.scheduler) { |
effect2.scheduler(); |
} else { |
effect2.run(); |
} |
} |
} |
function getDepFromReactive(object, key) { |
var _a; |
return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key); |
} |
const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); |
const builtInSymbols = new Set( |
/* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) |
); |
const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); |
function createArrayInstrumentations() { |
const instrumentations = {}; |
["includes", "indexOf", "lastIndexOf"].forEach((key) => { |
instrumentations[key] = function(...args) { |
const arr = toRaw(this); |
for (let i = 0, l = this.length; i < l; i++) { |
track(arr, "get", i + ""); |
} |
const res = arr[key](...args); |
if (res === -1 || res === false) { |
return arr[key](...args.map(toRaw)); |
} else { |
return res; |
} |
}; |
}); |
["push", "pop", "shift", "unshift", "splice"].forEach((key) => { |
instrumentations[key] = function(...args) { |
pauseTracking(); |
const res = toRaw(this)[key].apply(this, args); |
resetTracking(); |
return res; |
}; |
}); |
return instrumentations; |
} |
function hasOwnProperty(key) { |
const obj = toRaw(this); |
track(obj, "has", key); |
return obj.hasOwnProperty(key); |
} |
class BaseReactiveHandler { |
constructor(_isReadonly = false, _shallow = false) { |
this._isReadonly = _isReadonly; |
this._shallow = _shallow; |
} |
get(target, key, receiver) { |
const isReadonly2 = this._isReadonly, shallow = this._shallow; |
if (key === "__v_isReactive") { |
return !isReadonly2; |
} else if (key === "__v_isReadonly") { |
return isReadonly2; |
} else if (key === "__v_isShallow") { |
return shallow; |
} else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { |
return target; |
} |
const targetIsArray = isArray(target); |
if (!isReadonly2) { |
if (targetIsArray && hasOwn(arrayInstrumentations, key)) { |
return Reflect.get(arrayInstrumentations, key, receiver); |
} |
if (key === "hasOwnProperty") { |
return hasOwnProperty; |
} |
} |
const res = Reflect.get(target, key, receiver); |
if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { |
return res; |
} |
if (!isReadonly2) { |
track(target, "get", key); |
} |
if (shallow) { |
return res; |
} |
if (isRef(res)) { |
return targetIsArray && isIntegerKey(key) ? res : res.value; |
} |
if (isObject(res)) { |
return isReadonly2 ? readonly(res) : reactive(res); |
} |
return res; |
} |
} |
class MutableReactiveHandler extends BaseReactiveHandler { |
constructor(shallow = false) { |
super(false, shallow); |
} |
set(target, key, value, receiver) { |
let oldValue = target[key]; |
if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) { |
return false; |
} |
if (!this._shallow) { |
if (!isShallow(value) && !isReadonly(value)) { |
oldValue = toRaw(oldValue); |
value = toRaw(value); |
} |
if (!isArray(target) && isRef(oldValue) && !isRef(value)) { |
oldValue.value = value; |
return true; |
} |
} |
const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); |
const result = Reflect.set(target, key, value, receiver); |
if (target === toRaw(receiver)) { |
if (!hadKey) { |
trigger(target, "add", key, value); |
} else if (hasChanged(value, oldValue)) { |
trigger(target, "set", key, value, oldValue); |
} |
} |
return result; |
} |
deleteProperty(target, key) { |
const hadKey = hasOwn(target, key); |
const oldValue = target[key]; |
const result = Reflect.deleteProperty(target, key); |
if (result && hadKey) { |
trigger(target, "delete", key, void 0, oldValue); |
} |
return result; |
} |
has(target, key) { |
const result = Reflect.has(target, key); |
if (!isSymbol(key) || !builtInSymbols.has(key)) { |
track(target, "has", key); |
} |
return result; |
} |
ownKeys(target) { |
track( |
target, |
"iterate", |
isArray(target) ? "length" : ITERATE_KEY |
); |
return Reflect.ownKeys(target); |
} |
} |
class ReadonlyReactiveHandler extends BaseReactiveHandler { |
constructor(shallow = false) { |
super(true, shallow); |
} |
set(target, key) { |
{ |
warn$1( |
`Set operation on key "${String(key)}" failed: target is readonly.`, |
target |
); |
} |
return true; |
} |
deleteProperty(target, key) { |
{ |
warn$1( |
`Delete operation on key "${String(key)}" failed: target is readonly.`, |
target |
); |
} |
return true; |
} |
} |
const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); |
const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); |
const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler( |
true |
); |
const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); |
const toShallow = (value) => value; |
const getProto = (v) => Reflect.getPrototypeOf(v); |
function get(target, key, isReadonly = false, isShallow = false) { |
target = target["__v_raw"]; |
const rawTarget = toRaw(target); |
const rawKey = toRaw(key); |
if (!isReadonly) { |
if (hasChanged(key, rawKey)) { |
track(rawTarget, "get", key); |
} |
track(rawTarget, "get", rawKey); |
} |
const { has: has2 } = getProto(rawTarget); |
const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; |
if (has2.call(rawTarget, key)) { |
return wrap(target.get(key)); |
} else if (has2.call(rawTarget, rawKey)) { |
return wrap(target.get(rawKey)); |
} else if (target !== rawTarget) { |
target.get(key); |
} |
} |
function has(key, isReadonly = false) { |
const target = this["__v_raw"]; |
const rawTarget = toRaw(target); |
const rawKey = toRaw(key); |
if (!isReadonly) { |
if (hasChanged(key, rawKey)) { |
track(rawTarget, "has", key); |
} |
track(rawTarget, "has", rawKey); |
} |
return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); |
} |
function size(target, isReadonly = false) { |
target = target["__v_raw"]; |
!isReadonly && track(toRaw(target), "iterate", ITERATE_KEY); |
return Reflect.get(target, "size", target); |
} |
function add(value) { |
value = toRaw(value); |
const target = toRaw(this); |
const proto = getProto(target); |
const hadKey = proto.has.call(target, value); |
if (!hadKey) { |
target.add(value); |
trigger(target, "add", value, value); |
} |
return this; |
} |
function set(key, value) { |
value = toRaw(value); |
const target = toRaw(this); |
const { has: has2, get: get2 } = getProto(target); |
let hadKey = has2.call(target, key); |
if (!hadKey) { |
key = toRaw(key); |
hadKey = has2.call(target, key); |
} else { |
checkIdentityKeys(target, has2, key); |
} |
const oldValue = get2.call(target, key); |
target.set(key, value); |
if (!hadKey) { |
trigger(target, "add", key, value); |
} else if (hasChanged(value, oldValue)) { |
trigger(target, "set", key, value, oldValue); |
} |
return this; |
} |
function deleteEntry(key) { |
const target = toRaw(this); |
const { has: has2, get: get2 } = getProto(target); |
let hadKey = has2.call(target, key); |
if (!hadKey) { |
key = toRaw(key); |
hadKey = has2.call(target, key); |
} else { |
checkIdentityKeys(target, has2, key); |
} |
const oldValue = get2 ? get2.call(target, key) : void 0; |
const result = target.delete(key); |
if (hadKey) { |
trigger(target, "delete", key, void 0, oldValue); |
} |
return result; |
} |
function clear() { |
const target = toRaw(this); |
const hadItems = target.size !== 0; |
const oldTarget = isMap(target) ? new Map(target) : new Set(target) ; |
const result = target.clear(); |
if (hadItems) { |
trigger(target, "clear", void 0, void 0, oldTarget); |
} |
return result; |
} |
function createForEach(isReadonly, isShallow) { |
return function forEach(callback, thisArg) { |
const observed = this; |
const target = observed["__v_raw"]; |
const rawTarget = toRaw(target); |
const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; |
!isReadonly && track(rawTarget, "iterate", ITERATE_KEY); |
return target.forEach((value, key) => { |
return callback.call(thisArg, wrap(value), wrap(key), observed); |
}); |
}; |
} |
function createIterableMethod(method, isReadonly, isShallow) { |
return function(...args) { |
const target = this["__v_raw"]; |
const rawTarget = toRaw(target); |
const targetIsMap = isMap(rawTarget); |
const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; |
const isKeyOnly = method === "keys" && targetIsMap; |
const innerIterator = target[method](...args); |
const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; |
!isReadonly && track( |
rawTarget, |
"iterate", |
isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY |
); |
return { |
// iterator protocol |
next() { |
const { value, done } = innerIterator.next(); |
return done ? { value, done } : { |
value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), |
done |
}; |
}, |
// iterable protocol |
[Symbol.iterator]() { |
return this; |
} |
}; |
}; |
} |
function createReadonlyMethod(type) { |
return function(...args) { |
{ |
const key = args[0] ? `on key "${args[0]}" ` : ``; |
console.warn( |
`${capitalize(type)} operation ${key}failed: target is readonly.`, |
toRaw(this) |
); |
} |
return type === "delete" ? false : this; |
}; |
} |
function createInstrumentations() { |
const mutableInstrumentations2 = { |
get(key) { |
return get(this, key); |
}, |
get size() { |
return size(this); |
}, |
has, |
add, |
set, |
delete: deleteEntry, |
clear, |
forEach: createForEach(false, false) |
}; |
const shallowInstrumentations2 = { |
get(key) { |
return get(this, key, false, true); |
}, |
get size() { |
return size(this); |
}, |
has, |
add, |
set, |
delete: deleteEntry, |
clear, |
forEach: createForEach(false, true) |
}; |
const readonlyInstrumentations2 = { |
get(key) { |
return get(this, key, true); |
}, |
get size() { |
return size(this, true); |
}, |
has(key) { |
return has.call(this, key, true); |
}, |
add: createReadonlyMethod("add"), |
set: createReadonlyMethod("set"), |
delete: createReadonlyMethod("delete"), |
clear: createReadonlyMethod("clear"), |
forEach: createForEach(true, false) |
}; |
const shallowReadonlyInstrumentations2 = { |
get(key) { |
return get(this, key, true, true); |
}, |
get size() { |
return size(this, true); |
}, |
has(key) { |
return has.call(this, key, true); |
}, |
add: createReadonlyMethod("add"), |
set: createReadonlyMethod("set"), |
delete: createReadonlyMethod("delete"), |
clear: createReadonlyMethod("clear"), |
forEach: createForEach(true, true) |
}; |
const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; |
iteratorMethods.forEach((method) => { |
mutableInstrumentations2[method] = createIterableMethod( |
method, |
false, |
false |
); |
readonlyInstrumentations2[method] = createIterableMethod( |
method, |
true, |
false |
); |
shallowInstrumentations2[method] = createIterableMethod( |
method, |
false, |
true |
); |
shallowReadonlyInstrumentations2[method] = createIterableMethod( |
method, |
true, |
true |
); |
}); |
return [ |
mutableInstrumentations2, |
readonlyInstrumentations2, |
shallowInstrumentations2, |
shallowReadonlyInstrumentations2 |
]; |
} |
const [ |
mutableInstrumentations, |
readonlyInstrumentations, |
shallowInstrumentations, |
shallowReadonlyInstrumentations |
] = /* @__PURE__ */ createInstrumentations(); |
function createInstrumentationGetter(isReadonly, shallow) { |
const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; |
return (target, key, receiver) => { |
if (key === "__v_isReactive") { |
return !isReadonly; |
} else if (key === "__v_isReadonly") { |
return isReadonly; |
} else if (key === "__v_raw") { |
return target; |
} |
return Reflect.get( |
hasOwn(instrumentations, key) && key in target ? instrumentations : target, |
key, |
receiver |
); |
}; |
} |
const mutableCollectionHandlers = { |
get: /* @__PURE__ */ createInstrumentationGetter(false, false) |
}; |
const shallowCollectionHandlers = { |
get: /* @__PURE__ */ createInstrumentationGetter(false, true) |
}; |
const readonlyCollectionHandlers = { |
get: /* @__PURE__ */ createInstrumentationGetter(true, false) |
}; |
const shallowReadonlyCollectionHandlers = { |
get: /* @__PURE__ */ createInstrumentationGetter(true, true) |
}; |
function checkIdentityKeys(target, has2, key) { |
const rawKey = toRaw(key); |
if (rawKey !== key && has2.call(target, rawKey)) { |
const type = toRawType(target); |
console.warn( |
`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` |
); |
} |
} |
const reactiveMap = /* @__PURE__ */ new WeakMap(); |
const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); |
const readonlyMap = /* @__PURE__ */ new WeakMap(); |
const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); |
function targetTypeMap(rawType) { |
switch (rawType) { |
case "Object": |
case "Array": |
return 1 /* COMMON */; |
case "Map": |
case "Set": |
case "WeakMap": |
case "WeakSet": |
return 2 /* COLLECTION */; |
default: |
return 0 /* INVALID */; |
} |
} |
function getTargetType(value) { |
return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); |
} |
function reactive(target) { |
if (isReadonly(target)) { |
return target; |
} |
return createReactiveObject( |
target, |
false, |
mutableHandlers, |
mutableCollectionHandlers, |
reactiveMap |
); |
} |
function shallowReactive(target) { |
return createReactiveObject( |
target, |
false, |
shallowReactiveHandlers, |
shallowCollectionHandlers, |
shallowReactiveMap |
); |
} |
function readonly(target) { |
return createReactiveObject( |
target, |
true, |
readonlyHandlers, |
readonlyCollectionHandlers, |
readonlyMap |
); |
} |
function shallowReadonly(target) { |
return createReactiveObject( |
target, |
true, |
shallowReadonlyHandlers, |
shallowReadonlyCollectionHandlers, |
shallowReadonlyMap |
); |
} |
function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { |
if (!isObject(target)) { |
{ |
console.warn(`value cannot be made reactive: ${String(target)}`); |
} |
return target; |
} |
if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { |
return target; |
} |
const existingProxy = proxyMap.get(target); |
if (existingProxy) { |
return existingProxy; |
} |
const targetType = getTargetType(target); |
if (targetType === 0 /* INVALID */) { |
return target; |
} |
const proxy = new Proxy( |
target, |
targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers |
); |
proxyMap.set(target, proxy); |
return proxy; |
} |
function isReactive(value) { |
if (isReadonly(value)) { |
return isReactive(value["__v_raw"]); |
} |
return !!(value && value["__v_isReactive"]); |
} |
function isReadonly(value) { |
return !!(value && value["__v_isReadonly"]); |
} |
function isShallow(value) { |
return !!(value && value["__v_isShallow"]); |
} |
function isProxy(value) { |
return isReactive(value) || isReadonly(value); |
} |
function toRaw(observed) { |
const raw = observed && observed["__v_raw"]; |
return raw ? toRaw(raw) : observed; |
} |
function markRaw(value) { |
def(value, "__v_skip", true); |
return value; |
} |
const toReactive = (value) => isObject(value) ? reactive(value) : value; |
const toReadonly = (value) => isObject(value) ? readonly(value) : value; |
function trackRefValue(ref2) { |
if (shouldTrack && activeEffect) { |
ref2 = toRaw(ref2); |
{ |
trackEffects(ref2.dep || (ref2.dep = createDep()), { |
target: ref2, |
type: "get", |
key: "value" |
}); |
} |
} |
} |
function triggerRefValue(ref2, newVal) { |
ref2 = toRaw(ref2); |
const dep = ref2.dep; |
if (dep) { |
{ |
triggerEffects(dep, { |
target: ref2, |
type: "set", |
key: "value", |
newValue: newVal |
}); |
} |
} |
} |
function isRef(r) { |
return !!(r && r.__v_isRef === true); |
} |
function ref(value) { |
return createRef(value, false); |
} |
function shallowRef(value) { |
return createRef(value, true); |
} |
function createRef(rawValue, shallow) { |
if (isRef(rawValue)) { |
return rawValue; |
} |
return new RefImpl(rawValue, shallow); |
} |
class RefImpl { |
constructor(value, __v_isShallow) { |
this.__v_isShallow = __v_isShallow; |
this.dep = void 0; |
this.__v_isRef = true; |
this._rawValue = __v_isShallow ? value : toRaw(value); |
this._value = __v_isShallow ? value : toReactive(value); |
} |
get value() { |
trackRefValue(this); |
return this._value; |
} |
set value(newVal) { |
const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); |
newVal = useDirectValue ? newVal : toRaw(newVal); |
if (hasChanged(newVal, this._rawValue)) { |
this._rawValue = newVal; |
this._value = useDirectValue ? newVal : toReactive(newVal); |
triggerRefValue(this, newVal); |
} |
} |
} |
function triggerRef(ref2) { |
triggerRefValue(ref2, ref2.value ); |
} |
function unref(ref2) { |
return isRef(ref2) ? ref2.value : ref2; |
} |
function toValue(source) { |
return isFunction(source) ? source() : unref(source); |
} |
const shallowUnwrapHandlers = { |
get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), |
set: (target, key, value, receiver) => { |
const oldValue = target[key]; |
if (isRef(oldValue) && !isRef(value)) { |
oldValue.value = value; |
return true; |
} else { |
return Reflect.set(target, key, value, receiver); |
} |
} |
}; |
function proxyRefs(objectWithRefs) { |
return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); |
} |
class CustomRefImpl { |
constructor(factory) { |
this.dep = void 0; |
this.__v_isRef = true; |
const { get, set } = factory( |
() => trackRefValue(this), |
() => triggerRefValue(this) |
); |
this._get = get; |
this._set = set; |
} |
get value() { |
return this._get(); |
} |
set value(newVal) { |
this._set(newVal); |
} |
} |
function customRef(factory) { |
return new CustomRefImpl(factory); |
} |
function toRefs(object) { |
if (!isProxy(object)) { |
console.warn(`toRefs() expects a reactive object but received a plain one.`); |
} |
const ret = isArray(object) ? new Array(object.length) : {}; |
for (const key in object) { |
ret[key] = propertyToRef(object, key); |
} |
return ret; |
} |
class ObjectRefImpl { |
constructor(_object, _key, _defaultValue) { |
this._object = _object; |
this._key = _key; |
this._defaultValue = _defaultValue; |
this.__v_isRef = true; |
} |
get value() { |
const val = this._object[this._key]; |
return val === void 0 ? this._defaultValue : val; |
} |
set value(newVal) { |
this._object[this._key] = newVal; |
} |
get dep() { |
return getDepFromReactive(toRaw(this._object), this._key); |
} |
} |
class GetterRefImpl { |
constructor(_getter) { |
this._getter = _getter; |
this.__v_isRef = true; |
this.__v_isReadonly = true; |
} |
get value() { |
return this._getter(); |
} |
} |
function toRef(source, key, defaultValue) { |
if (isRef(source)) { |
return source; |
} else if (isFunction(source)) { |
return new GetterRefImpl(source); |
} else if (isObject(source) && arguments.length > 1) { |
return propertyToRef(source, key, defaultValue); |
} else { |
return ref(source); |
} |
} |
function propertyToRef(source, key, defaultValue) { |
const val = source[key]; |
return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); |
} |
class ComputedRefImpl { |
constructor(getter, _setter, isReadonly, isSSR) { |
this._setter = _setter; |
this.dep = void 0; |
this.__v_isRef = true; |
this["__v_isReadonly"] = false; |
this._dirty = true; |
this.effect = new ReactiveEffect(getter, () => { |
if (!this._dirty) { |
this._dirty = true; |
triggerRefValue(this); |
} |
}); |
this.effect.computed = this; |
this.effect.active = this._cacheable = !isSSR; |
this["__v_isReadonly"] = isReadonly; |
} |
get value() { |
const self = toRaw(this); |
trackRefValue(self); |
if (self._dirty || !self._cacheable) { |
self._dirty = false; |
self._value = self.effect.run(); |
} |
return self._value; |
} |
set value(newValue) { |
this._setter(newValue); |
} |
} |
function computed$1(getterOrOptions, debugOptions, isSSR = false) { |
let getter; |
let setter; |
const onlyGetter = isFunction(getterOrOptions); |
if (onlyGetter) { |
getter = getterOrOptions; |
setter = () => { |
console.warn("Write operation failed: computed value is readonly"); |
} ; |
} else { |
getter = getterOrOptions.get; |
setter = getterOrOptions.set; |
} |
const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); |
if (debugOptions && !isSSR) { |
cRef.effect.onTrack = debugOptions.onTrack; |
cRef.effect.onTrigger = debugOptions.onTrigger; |
} |
return cRef; |
} |
const stack = []; |
function pushWarningContext(vnode) { |
stack.push(vnode); |
} |
function popWarningContext() { |
stack.pop(); |
} |
function warn(msg, ...args) { |
pauseTracking(); |
const instance = stack.length ? stack[stack.length - 1].component : null; |
const appWarnHandler = instance && instance.appContext.config.warnHandler; |
const trace = getComponentTrace(); |
if (appWarnHandler) { |
callWithErrorHandling( |
appWarnHandler, |
instance, |
11, |
[ |
msg + args.join(""), |
instance && instance.proxy, |
trace.map( |
({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` |
).join("\n"), |
trace |
] |
); |
} else { |
const warnArgs = [`[Vue warn]: ${msg}`, ...args]; |
if (trace.length && // avoid spamming console during tests |
true) { |
warnArgs.push(` |
`, ...formatTrace(trace)); |
} |
console.warn(...warnArgs); |
} |
resetTracking(); |
} |
function getComponentTrace() { |
let currentVNode = stack[stack.length - 1]; |
if (!currentVNode) { |
return []; |
} |
const normalizedStack = []; |
while (currentVNode) { |
const last = normalizedStack[0]; |
if (last && last.vnode === currentVNode) { |
last.recurseCount++; |
} else { |
normalizedStack.push({ |
vnode: currentVNode, |
recurseCount: 0 |
}); |
} |
const parentInstance = currentVNode.component && currentVNode.component.parent; |
currentVNode = parentInstance && parentInstance.vnode; |
} |
return normalizedStack; |
} |
function formatTrace(trace) { |
const logs = []; |
trace.forEach((entry, i) => { |
logs.push(...i === 0 ? [] : [` |
`], ...formatTraceEntry(entry)); |
}); |
return logs; |
} |
function formatTraceEntry({ vnode, recurseCount }) { |
const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; |
const isRoot = vnode.component ? vnode.component.parent == null : false; |
const open = ` at <${formatComponentName( |
vnode.component, |
vnode.type, |
isRoot |
)}`; |
const close = `>` + postfix; |
return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; |
} |
function formatProps(props) { |
const res = []; |
const keys = Object.keys(props); |
keys.slice(0, 3).forEach((key) => { |
res.push(...formatProp(key, props[key])); |
}); |
if (keys.length > 3) { |
res.push(` ...`); |
} |
return res; |
} |
function formatProp(key, value, raw) { |
if (isString(value)) { |
value = JSON.stringify(value); |
return raw ? value : [`${key}=${value}`]; |
} else if (typeof value === "number" || typeof value === "boolean" || value == null) { |
return raw ? value : [`${key}=${value}`]; |
} else if (isRef(value)) { |
value = formatProp(key, toRaw(value.value), true); |
return raw ? value : [`${key}=Ref<`, value, `>`]; |
} else if (isFunction(value)) { |
return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; |
} else { |
value = toRaw(value); |
return raw ? value : [`${key}=`, value]; |
} |
} |
function assertNumber(val, type) { |
if (val === void 0) { |
return; |
} else if (typeof val !== "number") { |
warn(`${type} is not a valid number - got ${JSON.stringify(val)}.`); |
} else if (isNaN(val)) { |
warn(`${type} is NaN - the duration expression might be incorrect.`); |
} |
} |
const ErrorTypeStrings = { |
["sp"]: "serverPrefetch hook", |
["bc"]: "beforeCreate hook", |
["c"]: "created hook", |
["bm"]: "beforeMount hook", |
["m"]: "mounted hook", |
["bu"]: "beforeUpdate hook", |
["u"]: "updated", |
["bum"]: "beforeUnmount hook", |
["um"]: "unmounted hook", |
["a"]: "activated hook", |
["da"]: "deactivated hook", |
["ec"]: "errorCaptured hook", |
["rtc"]: "renderTracked hook", |
["rtg"]: "renderTriggered hook", |
[0]: "setup function", |
[1]: "render function", |
[2]: "watcher getter", |
[3]: "watcher callback", |
[4]: "watcher cleanup function", |
[5]: "native event handler", |
[6]: "component event handler", |
[7]: "vnode hook", |
[8]: "directive hook", |
[9]: "transition hook", |
[10]: "app errorHandler", |
[11]: "app warnHandler", |
[12]: "ref function", |
[13]: "async component loader", |
[14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core" |
}; |
function callWithErrorHandling(fn, instance, type, args) { |
let res; |
try { |
res = args ? fn(...args) : fn(); |
} catch (err) { |
handleError(err, instance, type); |
} |
return res; |
} |
function callWithAsyncErrorHandling(fn, instance, type, args) { |
if (isFunction(fn)) { |
const res = callWithErrorHandling(fn, instance, type, args); |
if (res && isPromise(res)) { |
res.catch((err) => { |
handleError(err, instance, type); |
}); |
} |
return res; |
} |
const values = []; |
for (let i = 0; i < fn.length; i++) { |
values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); |
} |
return values; |
} |
function handleError(err, instance, type, throwInDev = true) { |
const contextVNode = instance ? instance.vnode : null; |
if (instance) { |
let cur = instance.parent; |
const exposedInstance = instance.proxy; |
const errorInfo = ErrorTypeStrings[type] ; |
while (cur) { |
const errorCapturedHooks = cur.ec; |
if (errorCapturedHooks) { |
for (let i = 0; i < errorCapturedHooks.length; i++) { |
if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { |
return; |
} |
} |
} |
cur = cur.parent; |
} |
const appErrorHandler = instance.appContext.config.errorHandler; |
if (appErrorHandler) { |
callWithErrorHandling( |
appErrorHandler, |
null, |
10, |
[err, exposedInstance, errorInfo] |
); |
return; |
} |
} |
logError(err, type, contextVNode, throwInDev); |
} |
function logError(err, type, contextVNode, throwInDev = true) { |
{ |
const info = ErrorTypeStrings[type]; |
if (contextVNode) { |
pushWarningContext(contextVNode); |
} |
warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`); |
if (contextVNode) { |
popWarningContext(); |
} |
if (throwInDev) { |
throw err; |
} else { |
console.error(err); |
} |
} |
} |
let isFlushing = false; |
let isFlushPending = false; |
const queue = []; |
let flushIndex = 0; |
const pendingPostFlushCbs = []; |
let activePostFlushCbs = null; |
let postFlushIndex = 0; |
const resolvedPromise = /* @__PURE__ */ Promise.resolve(); |
let currentFlushPromise = null; |
const RECURSION_LIMIT = 100; |
function nextTick(fn) { |
const p = currentFlushPromise || resolvedPromise; |
return fn ? p.then(this ? fn.bind(this) : fn) : p; |
} |
function findInsertionIndex(id) { |
let start = flushIndex + 1; |
let end = queue.length; |
while (start < end) { |
const middle = start + end >>> 1; |
const middleJobId = getId(queue[middle]); |
middleJobId < id ? start = middle + 1 : end = middle; |
} |
return start; |
} |
function queueJob(job) { |
if (!queue.length || !queue.includes( |
job, |
isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex |
)) { |
if (job.id == null) { |
queue.push(job); |
} else { |
queue.splice(findInsertionIndex(job.id), 0, job); |
} |
queueFlush(); |
} |
} |
function queueFlush() { |
if (!isFlushing && !isFlushPending) { |
isFlushPending = true; |
currentFlushPromise = resolvedPromise.then(flushJobs); |
} |
} |
function invalidateJob(job) { |
const i = queue.indexOf(job); |
if (i > flushIndex) { |
queue.splice(i, 1); |
} |
} |
function queuePostFlushCb(cb) { |
if (!isArray(cb)) { |
if (!activePostFlushCbs || !activePostFlushCbs.includes( |
cb, |
cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex |
)) { |
pendingPostFlushCbs.push(cb); |
} |
} else { |
pendi |