diff --git a/app/Http/Controllers/ClientPortal/CreditController.php b/app/Http/Controllers/ClientPortal/CreditController.php index a72b8b70bd..3e69220a15 100644 --- a/app/Http/Controllers/ClientPortal/CreditController.php +++ b/app/Http/Controllers/ClientPortal/CreditController.php @@ -30,9 +30,12 @@ class CreditController extends Controller { set_time_limit(0); - $data = ['credit' => $credit]; + $invitation = $credit->invitations()->where('client_contact_id', auth()->user()->id)->first(); - $invitation = $credit->invitations()->where('client_contact_id', auth()->user()->id)->first(); + $data = [ + 'credit' => $credit, + 'key' => $invitation->key + ]; if ($invitation && auth()->guard('contact') && ! request()->has('silent') && ! $invitation->viewed_date) { diff --git a/app/Http/Controllers/ClientPortal/InvoiceController.php b/app/Http/Controllers/ClientPortal/InvoiceController.php index 84e3050215..5c9d0bcad8 100644 --- a/app/Http/Controllers/ClientPortal/InvoiceController.php +++ b/app/Http/Controllers/ClientPortal/InvoiceController.php @@ -74,12 +74,12 @@ class InvoiceController extends Controller $data = [ 'invoice' => $invoice, + 'key' => $invitation->key ]; if ($request->query('mode') === 'fullscreen') { return render('invoices.show-fullscreen', $data); } - // $request->fullUrlWithQuery(['q' => null]); return $this->render('invoices.show', $data); } diff --git a/app/Http/Controllers/ClientPortal/QuoteController.php b/app/Http/Controllers/ClientPortal/QuoteController.php index b58dd13b34..381221e398 100644 --- a/app/Http/Controllers/ClientPortal/QuoteController.php +++ b/app/Http/Controllers/ClientPortal/QuoteController.php @@ -58,12 +58,14 @@ class QuoteController extends Controller { /* If the quote is expired, convert the status here */ - $data = [ - 'quote' => $quote, - ]; $invitation = $quote->invitations()->where('client_contact_id', auth()->user()->id)->first(); + $data = [ + 'quote' => $quote, + 'key' => $invitation->key, + ]; + if ($invitation && auth()->guard('contact') && ! request()->has('silent') && ! $invitation->viewed_date) { $invitation->markViewed(); diff --git a/app/Http/Livewire/PayNowDropdown.php b/app/Http/Livewire/PayNowDropdown.php index 8f54bd2921..c96ba3f9a5 100644 --- a/app/Http/Livewire/PayNowDropdown.php +++ b/app/Http/Livewire/PayNowDropdown.php @@ -29,7 +29,7 @@ class PayNowDropdown extends Component $this->total = $total; - $this->methods = auth()->user()->client->service()->getPaymentMethods($total); + $this->methods = auth()->guard('contact')->user()->client->service()->getPaymentMethods($total); } public function render() diff --git a/app/Import/Providers/BaseImport.php b/app/Import/Providers/BaseImport.php index d8c5a0a174..5cec82ffeb 100644 --- a/app/Import/Providers/BaseImport.php +++ b/app/Import/Providers/BaseImport.php @@ -17,6 +17,9 @@ use App\Factory\QuoteFactory; use App\Http\Requests\Invoice\StoreInvoiceRequest; use App\Http\Requests\Quote\StoreQuoteRequest; use App\Import\ImportException; +use App\Jobs\Mail\NinjaMailerJob; +use App\Jobs\Mail\NinjaMailerObject; +use App\Mail\Import\ImportCompleted; use App\Models\Company; use App\Models\Invoice; use App\Models\Quote; @@ -493,4 +496,20 @@ class BaseImport return $this->company->owner()->id; } } + + protected function finalizeImport() + { + $data = [ + 'errors' => $this->error_array, + 'company' => $this->company, + ]; + + $nmo = new NinjaMailerObject; + $nmo->mailable = new ImportCompleted($this->company, $data); + $nmo->company = $this->company; + $nmo->settings = $this->company->settings; + $nmo->to_user = $this->company->owner(); + + NinjaMailerJob::dispatch($nmo); + } } diff --git a/app/Import/Providers/Csv.php b/app/Import/Providers/Csv.php index 7d776040ff..9aa9d3e4ab 100644 --- a/app/Import/Providers/Csv.php +++ b/app/Import/Providers/Csv.php @@ -61,9 +61,11 @@ class Csv extends BaseImport implements ImportInterface } //collate any errors + + $this->finalizeImport(); } - private function client() + public function client() { $entity_type = 'client'; @@ -90,7 +92,7 @@ class Csv extends BaseImport implements ImportInterface $this->entity_count['clients'] = $client_count; } - private function product() + public function product() { $entity_type = 'product'; @@ -117,7 +119,7 @@ class Csv extends BaseImport implements ImportInterface $this->entity_count['products'] = $product_count; } - private function invoice() + public function invoice() { $entity_type = 'invoice'; @@ -144,7 +146,7 @@ class Csv extends BaseImport implements ImportInterface $this->entity_count['invoices'] = $invoice_count; } - private function payment() + public function payment() { $entity_type = 'payment'; @@ -171,7 +173,7 @@ class Csv extends BaseImport implements ImportInterface $this->entity_count['payments'] = $payment_count; } - private function vendor() + public function vendor() { $entity_type = 'vendor'; @@ -198,7 +200,7 @@ class Csv extends BaseImport implements ImportInterface $this->entity_count['vendors'] = $vendor_count; } - private function expense() + public function expense() { $entity_type = 'expense'; @@ -225,12 +227,12 @@ class Csv extends BaseImport implements ImportInterface $this->entity_count['expenses'] = $expense_count; } - private function quote() + public function quote() { } - private function task() + public function task() { } diff --git a/app/Import/Providers/ImportInterface.php b/app/Import/Providers/ImportInterface.php index 1bf6b78d3b..b7ec1ce6f1 100644 --- a/app/Import/Providers/ImportInterface.php +++ b/app/Import/Providers/ImportInterface.php @@ -18,4 +18,17 @@ interface ImportInterface public function preTransform(array $data, string $entity_type); public function transform(array $data); + + public function client(); + + public function product(); + + public function invoice(); + + public function payment(); + + public function vendor(); + + public function expense(); + } \ No newline at end of file diff --git a/app/Models/GatewayType.php b/app/Models/GatewayType.php index da847e587d..ecbe094fd6 100644 --- a/app/Models/GatewayType.php +++ b/app/Models/GatewayType.php @@ -96,7 +96,7 @@ class GatewayType extends StaticModel case self::FPX: return ctrans('texts.fpx'); default: - return 'Undefined.'; + return ' '; break; } } diff --git a/app/PaymentDrivers/Authorize/AuthorizeCreateCustomer.php b/app/PaymentDrivers/Authorize/AuthorizeCreateCustomer.php index e170a50429..09826f7bb0 100644 --- a/app/PaymentDrivers/Authorize/AuthorizeCreateCustomer.php +++ b/app/PaymentDrivers/Authorize/AuthorizeCreateCustomer.php @@ -119,4 +119,30 @@ class AuthorizeCreateCustomer return $response; } + + + +// This is how we can harvest client profiles and attach them within Invoice Ninja +// $request = new net\authorize\api\contract\v1\GetCustomerProfileRequest(); +// $request->setMerchantAuthentication($driver->merchant_authentication); +// $request->setCustomerProfileId($gateway_customer_reference); +// $controller = new net\authorize\api\controller\GetCustomerProfileController($request); +// $response = $controller->executeWithApiResponse($driver->mode()); + +// if (($response != null) && ($response->getMessages()->getResultCode() == "Ok") ) +// { +// echo "GetCustomerProfile SUCCESS : " . "\n"; +// $profileSelected = $response->getProfile(); +// $paymentProfilesSelected = $profileSelected->getPaymentProfiles(); +// echo "Profile Has " . count($paymentProfilesSelected). " Payment Profiles" . "\n"; + +// foreach ($profileSelected->getPaymentProfiles() as $paymentProfile) { +// echo "\nCustomer Profile ID: " . $paymentProfile->getCustomerProfileId() . "\n"; +// echo "Payment profile ID: " . $paymentProfile->getCustomerPaymentProfileId() . "\n"; +// echo "Credit Card Number: " . $paymentProfile->getPayment()->getCreditCard()->getCardNumber() . "\n"; +// if ($paymentProfile->getBillTo() != null) { +// echo "First Name in Billing Address: " . $paymentProfile->getBillTo()->getFirstName() . "\n"; +// } +// } + } diff --git a/app/PaymentDrivers/CheckoutCom/CreditCard.php b/app/PaymentDrivers/CheckoutCom/CreditCard.php index 89cebc3da1..04fe776dc5 100644 --- a/app/PaymentDrivers/CheckoutCom/CreditCard.php +++ b/app/PaymentDrivers/CheckoutCom/CreditCard.php @@ -170,6 +170,7 @@ class CreditCard implements MethodInterface private function completePayment($method, PaymentResponseRequest $request) { + $payment = new Payment($method, $this->checkout->payment_hash->data->currency); $payment->amount = $this->checkout->payment_hash->data->value; $payment->reference = $this->checkout->getDescription(); @@ -178,6 +179,10 @@ class CreditCard implements MethodInterface 'email' => $this->checkout->client->present()->email(), ]; + $payment->metadata = [ + 'udf1' => "Invoice Ninja", + ]; + $this->checkout->payment_hash->data = array_merge((array)$this->checkout->payment_hash->data, ['checkout_payment_ref' => $payment]); $this->checkout->payment_hash->save(); diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php index 3e659cb302..c96e526d58 100644 --- a/app/Utils/HtmlEngine.php +++ b/app/Utils/HtmlEngine.php @@ -14,11 +14,13 @@ namespace App\Utils; use App\Models\Country; use App\Models\CreditInvitation; +use App\Models\GatewayType; use App\Models\InvoiceInvitation; use App\Models\QuoteInvitation; use App\Models\RecurringInvoiceInvitation; use App\Services\PdfMaker\Designs\Utilities\DesignHelpers; use App\Utils\Ninja; +use App\Utils\Number; use App\Utils\Traits\MakesDates; use App\Utils\transformTranslations; use Exception; @@ -512,6 +514,20 @@ class HtmlEngine $data['$entity_images'] = ['value' => $this->generateEntityImagesMarkup(), 'label' => '']; + $data['$payments'] = ['value' => '', 'label' => ctrans('texts.payments')]; + + if ($this->entity_string == 'invoice' && $this->entity->payments()->exists()) { + + $payment_list = '

'; + + foreach ($this->entity->payments as $payment) { + $payment_list .= ctrans('texts.payment_subject') . ": " . $this->formatDate($payment->date, $this->client->date_format()) . " :: " . Number::formatMoney($payment->amount, $this->client) ." :: ". GatewayType::getAlias($payment->gateway_type_id) . "
"; + } + + $data['$payments'] = ['value' => $payment_list, 'label' => ctrans('texts.payments')]; + } + + $arrKeysLength = array_map('strlen', array_keys($data)); array_multisort($arrKeysLength, SORT_DESC, $data); diff --git a/config/livewire.php b/config/livewire.php index 132a3222c6..59f8d5c4dd 100644 --- a/config/livewire.php +++ b/config/livewire.php @@ -54,8 +54,7 @@ return [ | */ - //'asset_url' => null, - 'asset_url' => env('ASSET_URL', null), + 'asset_url' => null, /* |-------------------------------------------------------------------------- diff --git a/package-lock.json b/package-lock.json index f2030c2cd6..aef95bc7b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "axios": "^0.24.0", "card-js": "^1.0.13", "card-validator": "^8.1.1", + "clipboard": "^2.0.10", "cross-env": "^7.0.3", "jsignature": "^2.1.3", "json-formatter-js": "^2.3.4", @@ -3240,6 +3241,16 @@ "colors": "^1.1.2" } }, + "node_modules/clipboard": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.10.tgz", + "integrity": "sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -4040,6 +4051,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -4908,6 +4924,14 @@ "node": ">=8" } }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "dependencies": { + "delegate": "^3.1.2" + } + }, "node_modules/graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -8591,6 +8615,11 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -9488,6 +9517,11 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -12779,6 +12813,16 @@ "string-width": "^4.2.0" } }, + "clipboard": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.10.tgz", + "integrity": "sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -13399,6 +13443,11 @@ } } }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -14062,6 +14111,14 @@ "slash": "^3.0.0" } }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "requires": { + "delegate": "^3.1.2" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -16685,6 +16742,11 @@ "ajv-keywords": "^3.5.2" } }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -17381,6 +17443,11 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, "tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", diff --git a/package.json b/package.json index b3128666d6..e9096188fc 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "axios": "^0.24.0", "card-js": "^1.0.13", "card-validator": "^8.1.1", + "clipboard": "^2.0.10", "cross-env": "^7.0.3", "jsignature": "^2.1.3", "json-formatter-js": "^2.3.4", diff --git a/public/assets/clippy.svg b/public/assets/clippy.svg new file mode 100644 index 0000000000..e1b1703590 --- /dev/null +++ b/public/assets/clippy.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/js/clients/linkify-urls.js b/public/js/clients/linkify-urls.js index fabe9cb5f5..4cefcb250b 100644 --- a/public/js/clients/linkify-urls.js +++ b/public/js/clients/linkify-urls.js @@ -1 +1 @@ -(()=>{var e,t={2623:(e,t,r)=>{"use strict";e.exports=r(4666)},1886:(e,t)=>{"use strict";const r=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">"),n=e=>e.replace(/>/g,">").replace(/</g,"<").replace(/�?39;/g,"'").replace(/"/g,'"').replace(/&/g,"&");t.T=(e,...t)=>{if("string"==typeof e)return r(e);let n=e[0];for(const[o,a]of t.entries())n=n+r(String(a))+e[o+1];return n}},7636:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(1886);var o=r(2623);const a=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">");const i=new Set(o);function c({name:e="div",attributes:t={},html:r="",text:o}={}){if(r&&o)throw new Error("The `html` and `text` options are mutually exclusive");const c=o?function(e,...t){if("string"==typeof e)return a(e);let r=e[0];for(const[n,o]of t.entries())r=r+a(String(o))+e[n+1];return r}(o):r;let l=`<${e}${function(e){const t=[];for(let[r,o]of Object.entries(e)){if(!1===o)continue;Array.isArray(o)&&(o=o.join(" "));let e=(0,n.T)(r);!0!==o&&(e+=`="${(0,n.T)(String(o))}"`),t.push(e)}return t.length>0?" "+t.join(" "):""}(t)}>`;return i.has(e)||(l+=`${c}`),l}const l=(e,t)=>c({name:"a",attributes:{href:"",...t.attributes,href:e},text:void 0===t.value?e:void 0,html:void 0===t.value?void 0:"function"==typeof t.value?t.value(e):t.value});function s(e,t){if("string"===(t={attributes:{},type:"string",...t}).type)return((e,t)=>e.replace(/((?l(e,t))))(e,t);if("dom"===t.type)return((e,t)=>{const r=document.createDocumentFragment();for(const[o,a]of Object.entries(e.split(/((?0&&r.append(a);var n;return r})(e,t);throw new TypeError("The type option must be either `dom` or `string`")}},4666:e=>{"use strict";e.exports=JSON.parse('["area","base","br","col","embed","hr","img","input","link","menuitem","meta","param","source","track","wbr"]')}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},e=n(7636),document.querySelectorAll("[data-ref=entity-terms]").forEach((function(t){t.innerHTML=e(t.innerText,{attributes:{target:"_blank",class:"text-primary"}})}))})(); \ No newline at end of file +(()=>{var e,t={2623:(e,t,r)=>{"use strict";e.exports=r(4666)},1886:(e,t)=>{"use strict";const r=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">"),n=e=>e.replace(/>/g,">").replace(/</g,"<").replace(/�?39;/g,"'").replace(/"/g,'"').replace(/&/g,"&");t.T=(e,...t)=>{if("string"==typeof e)return r(e);let n=e[0];for(const[o,a]of t.entries())n=n+r(String(a))+e[o+1];return n}},7636:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(1886);var o=r(2623);const a=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">");const i=new Set(o);function c({name:e="div",attributes:t={},html:r="",text:o}={}){if(r&&o)throw new Error("The `html` and `text` options are mutually exclusive");const c=o?function(e,...t){if("string"==typeof e)return a(e);let r=e[0];for(const[n,o]of t.entries())r=r+a(String(o))+e[n+1];return r}(o):r;let l=`<${e}${function(e){const t=[];for(let[r,o]of Object.entries(e)){if(!1===o)continue;Array.isArray(o)&&(o=o.join(" "));let e=(0,n.T)(r);!0!==o&&(e+=`="${(0,n.T)(String(o))}"`),t.push(e)}return t.length>0?" "+t.join(" "):""}(t)}>`;return i.has(e)||(l+=`${c}`),l}const l=(e,t)=>c({name:"a",attributes:{href:"",...t.attributes,href:e},text:void 0===t.value?e:void 0,html:void 0===t.value?void 0:"function"==typeof t.value?t.value(e):t.value});function s(e,t){if("string"===(t={attributes:{},type:"string",...t}).type)return((e,t)=>e.replace(/((?l(e,t))))(e,t);if("dom"===t.type)return((e,t)=>{const r=document.createDocumentFragment();for(const[o,a]of Object.entries(e.split(/((?0&&r.append(a);var n;return r})(e,t);throw new TypeError("The type option must be either `dom` or `string`")}},4666:e=>{"use strict";e.exports=JSON.parse('["area","base","br","col","embed","hr","img","input","link","menuitem","meta","param","source","track","wbr"]')}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},e=n(7636),document.querySelectorAll("[data-ref=entity-terms]").forEach((function(t){"function"===e&&(t.innerHTML=e(t.innerText,{attributes:{target:"_blank",class:"text-primary"}}))}))})(); \ No newline at end of file diff --git a/public/mix-manifest.json b/public/mix-manifest.json index c34f49f64e..eafa7a61e6 100755 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -15,7 +15,7 @@ "/js/clients/payments/card-js.min.js": "/js/clients/payments/card-js.min.js?id=8ce33c3deae058ad314f", "/js/clients/shared/pdf.js": "/js/clients/shared/pdf.js?id=73a0d914ad3577f257f4", "/js/clients/shared/multiple-downloads.js": "/js/clients/shared/multiple-downloads.js?id=c2caa29f753ad1f3a12c", - "/js/clients/linkify-urls.js": "/js/clients/linkify-urls.js?id=44c51b4838d1f135bbe3", + "/js/clients/linkify-urls.js": "/js/clients/linkify-urls.js?id=dd6a49267dfe156c3bc9", "/js/clients/payments/braintree-credit-card.js": "/js/clients/payments/braintree-credit-card.js?id=a334dd9257dd510a1feb", "/js/clients/payments/braintree-paypal.js": "/js/clients/payments/braintree-paypal.js?id=37950e8a39281d2f596a", "/js/clients/payments/wepay-credit-card.js": "/js/clients/payments/wepay-credit-card.js?id=ba4d5b7175117ababdb2", @@ -39,5 +39,6 @@ "/js/clients/payments/stripe-browserpay.js": "/js/clients/payments/stripe-browserpay.js?id=71e49866d66a6d85b88a", "/js/clients/payments/stripe-fpx.js": "/js/clients/payments/stripe-fpx.js?id=3a1cac8fb671c2e4337f", "/css/app.css": "/css/app.css?id=cab8a6526b0f9f71842d", - "/css/card-js.min.css": "/css/card-js.min.css?id=62afeb675235451543ad" + "/css/card-js.min.css": "/css/card-js.min.css?id=62afeb675235451543ad", + "/vendor/clipboard.min.js": "/vendor/clipboard.min.js?id=ad98572d415d2f245284" } diff --git a/public/vendor/clipboard.min.js b/public/vendor/clipboard.min.js new file mode 100644 index 0000000000..07923b5a62 --- /dev/null +++ b/public/vendor/clipboard.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,(function(){return e={686:function(t,e,n){"use strict";n.d(e,{default:function(){return m}});e=n(279);var o=n.n(e),r=(e=n(370),n.n(e)),i=(e=n(817),n.n(e));function u(t){try{return document.execCommand(t)}catch(t){return}}var c=function(t){return t=i()(t),u("cut"),t},a=function(t){var e,n,o,r=11&&void 0!==arguments[1]&&arguments[1];_classCallCheck(this,_default),this.el=el,this.skipWatcher=skipWatcher,this.resolveCallback=function(){},this.rejectCallback=function(){},this.signature=(Math.random()+1).toString(36).substring(8)}return _createClass(_default,[{key:"toId",value:function(){return btoa(encodeURIComponent(this.el.outerHTML))}},{key:"onResolve",value:function(callback){this.resolveCallback=callback}},{key:"onReject",value:function(callback){this.rejectCallback=callback}},{key:"resolve",value:function(thing){this.resolveCallback(thing)}},{key:"reject",value:function(thing){this.rejectCallback(thing)}}]),_default}(),_default$5=function(_Action){_inherits(_default,_Action);var _super=_createSuper(_default);function _default(event,params,el){var _this;return _classCallCheck(this,_default),(_this=_super.call(this,el)).type="fireEvent",_this.payload={id:_this.signature,event:event,params:params},_this}return _createClass(_default,[{key:"toId",value:function(){return btoa(encodeURIComponent(this.type,this.payload.event,JSON.stringify(this.payload.params)))}}]),_default}(_default$6),MessageBus=function(){function MessageBus(){_classCallCheck(this,MessageBus),this.listeners={}}return _createClass(MessageBus,[{key:"register",value:function(name,callback){this.listeners[name]||(this.listeners[name]=[]),this.listeners[name].push(callback)}},{key:"call",value:function(name){for(var _len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];(this.listeners[name]||[]).forEach((function(callback){callback.apply(void 0,params)}))}},{key:"has",value:function(name){return Object.keys(this.listeners).includes(name)}}]),MessageBus}(),HookManager={availableHooks:["component.initialized","element.initialized","element.updating","element.updated","element.removed","message.sent","message.failed","message.received","message.processed","interceptWireModelSetValue","interceptWireModelAttachListener","beforeReplaceState","beforePushState"],bus:new MessageBus,register:function(name,callback){if(!this.availableHooks.includes(name))throw"Livewire: Referencing unknown hook: [".concat(name,"]");this.bus.register(name,callback)},call:function(name){for(var _this$bus,_len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];(_this$bus=this.bus).call.apply(_this$bus,[name].concat(params))}},DirectiveManager={directives:new MessageBus,register:function(name,callback){if(this.has(name))throw"Livewire: Directive already registered: [".concat(name,"]");this.directives.register(name,callback)},call:function(name,el,directive,component){this.directives.call(name,el,directive,component)},has:function(name){return this.directives.has(name)}},store$2={componentsById:{},listeners:new MessageBus,initialRenderIsFinished:!1,livewireIsInBackground:!1,livewireIsOffline:!1,sessionHasExpired:!1,directives:DirectiveManager,hooks:HookManager,onErrorCallback:function(){},components:function(){var _this=this;return Object.keys(this.componentsById).map((function(key){return _this.componentsById[key]}))},addComponent:function(component){return this.componentsById[component.id]=component},findComponent:function(id){return this.componentsById[id]},getComponentsByName:function(name){return this.components().filter((function(component){return component.name===name}))},hasComponent:function(id){return!!this.componentsById[id]},tearDownComponents:function(){var _this2=this;this.components().forEach((function(component){_this2.removeComponent(component)}))},on:function(event,callback){this.listeners.register(event,callback)},emit:function(event){for(var _this$listeners,_len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];(_this$listeners=this.listeners).call.apply(_this$listeners,[event].concat(params)),this.componentsListeningForEvent(event).forEach((function(component){return component.addAction(new _default$5(event,params))}))},emitUp:function(el,event){for(var _len2=arguments.length,params=new Array(_len2>2?_len2-2:0),_key2=2;_key2<_len2;_key2++)params[_key2-2]=arguments[_key2];this.componentsListeningForEventThatAreTreeAncestors(el,event).forEach((function(component){return component.addAction(new _default$5(event,params))}))},emitSelf:function(componentId,event){var component=this.findComponent(componentId);if(component.listeners.includes(event)){for(var _len3=arguments.length,params=new Array(_len3>2?_len3-2:0),_key3=2;_key3<_len3;_key3++)params[_key3-2]=arguments[_key3];component.addAction(new _default$5(event,params))}},emitTo:function(componentName,event){for(var _len4=arguments.length,params=new Array(_len4>2?_len4-2:0),_key4=2;_key4<_len4;_key4++)params[_key4-2]=arguments[_key4];var components=this.getComponentsByName(componentName);components.forEach((function(component){component.listeners.includes(event)&&component.addAction(new _default$5(event,params))}))},componentsListeningForEventThatAreTreeAncestors:function(el,event){for(var parentIds=[],parent=el.parentElement.closest("[wire\\:id]");parent;)parentIds.push(parent.getAttribute("wire:id")),parent=parent.parentElement.closest("[wire\\:id]");return this.components().filter((function(component){return component.listeners.includes(event)&&parentIds.includes(component.id)}))},componentsListeningForEvent:function(event){return this.components().filter((function(component){return component.listeners.includes(event)}))},registerDirective:function(name,callback){this.directives.register(name,callback)},registerHook:function(name,callback){this.hooks.register(name,callback)},callHook:function(name){for(var _this$hooks,_len5=arguments.length,params=new Array(_len5>1?_len5-1:0),_key5=1;_key5<_len5;_key5++)params[_key5-1]=arguments[_key5];(_this$hooks=this.hooks).call.apply(_this$hooks,[name].concat(params))},changeComponentId:function(component,newId){var oldId=component.id;component.id=newId,component.fingerprint.id=newId,this.componentsById[newId]=component,delete this.componentsById[oldId],this.components().forEach((function(component){var children=component.serverMemo.children||{};Object.entries(children).forEach((function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],_ref2$=_ref2[1],id=_ref2$.id;_ref2$.tagName,id===oldId&&(children[key].id=newId)}))}))},removeComponent:function(component){component.tearDown(),delete this.componentsById[component.id]},onError:function(callback){this.onErrorCallback=callback},getClosestParentId:function(childId,subsetOfParentIds){var _this3=this,distancesByParentId={};subsetOfParentIds.forEach((function(parentId){var distance=_this3.getDistanceToChild(parentId,childId);distance&&(distancesByParentId[parentId]=distance)}));var closestParentId,smallestDistance=Math.min.apply(Math,_toConsumableArray(Object.values(distancesByParentId)));return Object.entries(distancesByParentId).forEach((function(_ref3){var _ref4=_slicedToArray(_ref3,2),parentId=_ref4[0];_ref4[1]===smallestDistance&&(closestParentId=parentId)})),closestParentId},getDistanceToChild:function(parentId,childId){var distanceMemo=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,parentComponent=this.findComponent(parentId);if(parentComponent){var childIds=parentComponent.childIds;if(childIds.includes(childId))return distanceMemo;for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:null;null===node&&(node=document);var allEls=Array.from(node.querySelectorAll("[wire\\:initial-data]")),onlyChildEls=Array.from(node.querySelectorAll("[wire\\:initial-data] [wire\\:initial-data]"));return allEls.filter((function(el){return!onlyChildEls.includes(el)}))},allModelElementsInside:function(root){return Array.from(root.querySelectorAll("[wire\\:model]"))},getByAttributeAndValue:function(attribute,value){return document.querySelector("[wire\\:".concat(attribute,'="').concat(value,'"]'))},nextFrame:function(fn){var _this=this;requestAnimationFrame((function(){requestAnimationFrame(fn.bind(_this))}))},closestRoot:function(el){return this.closestByAttribute(el,"id")},closestByAttribute:function(el,attribute){var closestEl=el.closest("[wire\\:".concat(attribute,"]"));if(!closestEl)throw"\nLivewire Error:\n\nCannot find parent element in DOM tree containing attribute: [wire:".concat(attribute,"].\n\nUsually this is caused by Livewire's DOM-differ not being able to properly track changes.\n\nReference the following guide for common causes: https://laravel-livewire.com/docs/troubleshooting \n\nReferenced element:\n\n").concat(el.outerHTML,"\n");return closestEl},isComponentRootEl:function(el){return this.hasAttribute(el,"id")},hasAttribute:function(el,attribute){return el.hasAttribute("wire:".concat(attribute))},getAttribute:function(el,attribute){return el.getAttribute("wire:".concat(attribute))},removeAttribute:function(el,attribute){return el.removeAttribute("wire:".concat(attribute))},setAttribute:function(el,attribute,value){return el.setAttribute("wire:".concat(attribute),value)},hasFocus:function(el){return el===document.activeElement},isInput:function(el){return["INPUT","TEXTAREA","SELECT"].includes(el.tagName.toUpperCase())},isTextInput:function(el){return["INPUT","TEXTAREA"].includes(el.tagName.toUpperCase())&&!["checkbox","radio"].includes(el.type)},valueFromInput:function(el,component){if("checkbox"===el.type){var modelName=wireDirectives(el).get("model").value,modelValue=component.deferredActions[modelName]?component.deferredActions[modelName].payload.value:getValue(component.data,modelName);return Array.isArray(modelValue)?this.mergeCheckboxValueIntoArray(el,modelValue):!!el.checked&&(el.getAttribute("value")||!0)}return"SELECT"===el.tagName&&el.multiple?this.getSelectValues(el):el.value},mergeCheckboxValueIntoArray:function(el,arrayValue){return el.checked?arrayValue.includes(el.value)?arrayValue:arrayValue.concat(el.value):arrayValue.filter((function(item){return item!==el.value}))},setInputValueFromModel:function(el,component){var modelString=wireDirectives(el).get("model").value,modelValue=getValue(component.data,modelString);"input"===el.tagName.toLowerCase()&&"file"===el.type||this.setInputValue(el,modelValue)},setInputValue:function(el,value){if(store$2.callHook("interceptWireModelSetValue",value,el),"radio"===el.type)el.checked=el.value==value;else if("checkbox"===el.type)if(Array.isArray(value)){var valueFound=!1;value.forEach((function(val){val==el.value&&(valueFound=!0)})),el.checked=valueFound}else el.checked=!!value;else"SELECT"===el.tagName?this.updateSelect(el,value):(value=void 0===value?"":value,el.value=value)},getSelectValues:function(el){return Array.from(el.options).filter((function(option){return option.selected})).map((function(option){return option.value||option.text}))},updateSelect:function(el,value){var arrayWrappedValue=[].concat(value).map((function(value){return value+""}));Array.from(el.options).forEach((function(option){option.selected=arrayWrappedValue.includes(option.value)}))}},ceil=Math.ceil,floor=Math.floor,toInteger=function(argument){return isNaN(argument=+argument)?0:(argument>0?floor:ceil)(argument)},requireObjectCoercible=function(it){if(null==it)throw TypeError("Can't call method on "+it);return it},createMethod$3=function(CONVERT_TO_STRING){return function($this,pos){var first,second,S=String(requireObjectCoercible($this)),position=toInteger(pos),size=S.length;return position<0||position>=size?CONVERT_TO_STRING?"":void 0:(first=S.charCodeAt(position))<55296||first>56319||position+1===size||(second=S.charCodeAt(position+1))<56320||second>57343?CONVERT_TO_STRING?S.charAt(position):first:CONVERT_TO_STRING?S.slice(position,position+2):second-56320+(first-55296<<10)+65536}},stringMultibyte={codeAt:createMethod$3(!1),charAt:createMethod$3(!0)},commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(fn,basedir,module){return fn(module={path:basedir,exports:{},require:function(path,base){return commonjsRequire(path,null==base?module.path:base)}},module.exports),module.exports}function commonjsRequire(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}var check=function(it){return it&&it.Math==Math&&it},global_1=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof commonjsGlobal&&commonjsGlobal)||function(){return this}()||Function("return this")(),fails=function(exec){try{return!!exec()}catch(error){return!0}},descriptors=!fails((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),isObject=function(it){return"object"==typeof it?null!==it:"function"==typeof it},document$3=global_1.document,EXISTS=isObject(document$3)&&isObject(document$3.createElement),documentCreateElement=function(it){return EXISTS?document$3.createElement(it):{}},ie8DomDefine=!descriptors&&!fails((function(){return 7!=Object.defineProperty(documentCreateElement("div"),"a",{get:function(){return 7}}).a})),anObject=function(it){if(!isObject(it))throw TypeError(String(it)+" is not an object");return it},toPrimitive=function(input,PREFERRED_STRING){if(!isObject(input))return input;var fn,val;if(PREFERRED_STRING&&"function"==typeof(fn=input.toString)&&!isObject(val=fn.call(input)))return val;if("function"==typeof(fn=input.valueOf)&&!isObject(val=fn.call(input)))return val;if(!PREFERRED_STRING&&"function"==typeof(fn=input.toString)&&!isObject(val=fn.call(input)))return val;throw TypeError("Can't convert object to primitive value")},$defineProperty=Object.defineProperty,f$5=descriptors?$defineProperty:function(O,P,Attributes){if(anObject(O),P=toPrimitive(P,!0),anObject(Attributes),ie8DomDefine)try{return $defineProperty(O,P,Attributes)}catch(error){}if("get"in Attributes||"set"in Attributes)throw TypeError("Accessors not supported");return"value"in Attributes&&(O[P]=Attributes.value),O},objectDefineProperty={f:f$5},createPropertyDescriptor=function(bitmap,value){return{enumerable:!(1&bitmap),configurable:!(2&bitmap),writable:!(4&bitmap),value:value}},createNonEnumerableProperty=descriptors?function(object,key,value){return objectDefineProperty.f(object,key,createPropertyDescriptor(1,value))}:function(object,key,value){return object[key]=value,object},setGlobal=function(key,value){try{createNonEnumerableProperty(global_1,key,value)}catch(error){global_1[key]=value}return value},SHARED="__core-js_shared__",store$1=global_1[SHARED]||setGlobal(SHARED,{}),sharedStore=store$1,functionToString=Function.toString;"function"!=typeof sharedStore.inspectSource&&(sharedStore.inspectSource=function(it){return functionToString.call(it)});var inspectSource=sharedStore.inspectSource,WeakMap$1=global_1.WeakMap,nativeWeakMap="function"==typeof WeakMap$1&&/native code/.test(inspectSource(WeakMap$1)),toObject=function(argument){return Object(requireObjectCoercible(argument))},hasOwnProperty={}.hasOwnProperty,has$1=Object.hasOwn||function(it,key){return hasOwnProperty.call(toObject(it),key)},shared=createCommonjsModule((function(module){(module.exports=function(key,value){return sharedStore[key]||(sharedStore[key]=void 0!==value?value:{})})("versions",[]).push({version:"3.15.2",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})})),id=0,postfix=Math.random(),uid=function(key){return"Symbol("+String(void 0===key?"":key)+")_"+(++id+postfix).toString(36)},keys=shared("keys"),sharedKey=function(key){return keys[key]||(keys[key]=uid(key))},hiddenKeys$1={},OBJECT_ALREADY_INITIALIZED="Object already initialized",WeakMap=global_1.WeakMap,set$1,get,has,enforce=function(it){return has(it)?get(it):set$1(it,{})},getterFor=function(TYPE){return function(it){var state;if(!isObject(it)||(state=get(it)).type!==TYPE)throw TypeError("Incompatible receiver, "+TYPE+" required");return state}};if(nativeWeakMap||sharedStore.state){var store=sharedStore.state||(sharedStore.state=new WeakMap),wmget=store.get,wmhas=store.has,wmset=store.set;set$1=function(it,metadata){if(wmhas.call(store,it))throw new TypeError(OBJECT_ALREADY_INITIALIZED);return metadata.facade=it,wmset.call(store,it,metadata),metadata},get=function(it){return wmget.call(store,it)||{}},has=function(it){return wmhas.call(store,it)}}else{var STATE=sharedKey("state");hiddenKeys$1[STATE]=!0,set$1=function(it,metadata){if(has$1(it,STATE))throw new TypeError(OBJECT_ALREADY_INITIALIZED);return metadata.facade=it,createNonEnumerableProperty(it,STATE,metadata),metadata},get=function(it){return has$1(it,STATE)?it[STATE]:{}},has=function(it){return has$1(it,STATE)}}var internalState={set:set$1,get:get,has:has,enforce:enforce,getterFor:getterFor},$propertyIsEnumerable={}.propertyIsEnumerable,getOwnPropertyDescriptor$3=Object.getOwnPropertyDescriptor,NASHORN_BUG=getOwnPropertyDescriptor$3&&!$propertyIsEnumerable.call({1:2},1),f$4=NASHORN_BUG?function(V){var descriptor=getOwnPropertyDescriptor$3(this,V);return!!descriptor&&descriptor.enumerable}:$propertyIsEnumerable,objectPropertyIsEnumerable={f:f$4},toString={}.toString,classofRaw=function(it){return toString.call(it).slice(8,-1)},split="".split,indexedObject=fails((function(){return!Object("z").propertyIsEnumerable(0)}))?function(it){return"String"==classofRaw(it)?split.call(it,""):Object(it)}:Object,toIndexedObject=function(it){return indexedObject(requireObjectCoercible(it))},$getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,f$3=descriptors?$getOwnPropertyDescriptor:function(O,P){if(O=toIndexedObject(O),P=toPrimitive(P,!0),ie8DomDefine)try{return $getOwnPropertyDescriptor(O,P)}catch(error){}if(has$1(O,P))return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O,P),O[P])},objectGetOwnPropertyDescriptor={f:f$3},redefine=createCommonjsModule((function(module){var getInternalState=internalState.get,enforceInternalState=internalState.enforce,TEMPLATE=String(String).split("String");(module.exports=function(O,key,value,options){var state,unsafe=!!options&&!!options.unsafe,simple=!!options&&!!options.enumerable,noTargetGet=!!options&&!!options.noTargetGet;"function"==typeof value&&("string"!=typeof key||has$1(value,"name")||createNonEnumerableProperty(value,"name",key),(state=enforceInternalState(value)).source||(state.source=TEMPLATE.join("string"==typeof key?key:""))),O!==global_1?(unsafe?!noTargetGet&&O[key]&&(simple=!0):delete O[key],simple?O[key]=value:createNonEnumerableProperty(O,key,value)):simple?O[key]=value:setGlobal(key,value)})(Function.prototype,"toString",(function(){return"function"==typeof this&&getInternalState(this).source||inspectSource(this)}))})),path=global_1,aFunction$1=function(variable){return"function"==typeof variable?variable:void 0},getBuiltIn=function(namespace,method){return arguments.length<2?aFunction$1(path[namespace])||aFunction$1(global_1[namespace]):path[namespace]&&path[namespace][method]||global_1[namespace]&&global_1[namespace][method]},min$2=Math.min,toLength=function(argument){return argument>0?min$2(toInteger(argument),9007199254740991):0},max=Math.max,min$1=Math.min,toAbsoluteIndex=function(index,length){var integer=toInteger(index);return integer<0?max(integer+length,0):min$1(integer,length)},createMethod$2=function(IS_INCLUDES){return function($this,el,fromIndex){var value,O=toIndexedObject($this),length=toLength(O.length),index=toAbsoluteIndex(fromIndex,length);if(IS_INCLUDES&&el!=el){for(;length>index;)if((value=O[index++])!=value)return!0}else for(;length>index;index++)if((IS_INCLUDES||index in O)&&O[index]===el)return IS_INCLUDES||index||0;return!IS_INCLUDES&&-1}},arrayIncludes={includes:createMethod$2(!0),indexOf:createMethod$2(!1)},indexOf=arrayIncludes.indexOf,objectKeysInternal=function(object,names){var key,O=toIndexedObject(object),i=0,result=[];for(key in O)!has$1(hiddenKeys$1,key)&&has$1(O,key)&&result.push(key);for(;names.length>i;)has$1(O,key=names[i++])&&(~indexOf(result,key)||result.push(key));return result},enumBugKeys=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],hiddenKeys=enumBugKeys.concat("length","prototype"),f$2=Object.getOwnPropertyNames||function(O){return objectKeysInternal(O,hiddenKeys)},objectGetOwnPropertyNames={f:f$2},f$1=Object.getOwnPropertySymbols,objectGetOwnPropertySymbols={f:f$1},ownKeys=getBuiltIn("Reflect","ownKeys")||function(it){var keys=objectGetOwnPropertyNames.f(anObject(it)),getOwnPropertySymbols=objectGetOwnPropertySymbols.f;return getOwnPropertySymbols?keys.concat(getOwnPropertySymbols(it)):keys},copyConstructorProperties=function(target,source){for(var keys=ownKeys(source),defineProperty=objectDefineProperty.f,getOwnPropertyDescriptor=objectGetOwnPropertyDescriptor.f,i=0;i=74)&&(match=engineUserAgent.match(/Chrome\/(\d+)/),match&&(version=match[1])));var engineV8Version=version&&+version,nativeSymbol=!!Object.getOwnPropertySymbols&&!fails((function(){var symbol=Symbol();return!String(symbol)||!(Object(symbol)instanceof Symbol)||!Symbol.sham&&engineV8Version&&engineV8Version<41})),useSymbolAsUid=nativeSymbol&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,WellKnownSymbolsStore=shared("wks"),Symbol$1=global_1.Symbol,createWellKnownSymbol=useSymbolAsUid?Symbol$1:Symbol$1&&Symbol$1.withoutSetter||uid,wellKnownSymbol=function(name){return has$1(WellKnownSymbolsStore,name)&&(nativeSymbol||"string"==typeof WellKnownSymbolsStore[name])||(nativeSymbol&&has$1(Symbol$1,name)?WellKnownSymbolsStore[name]=Symbol$1[name]:WellKnownSymbolsStore[name]=createWellKnownSymbol("Symbol."+name)),WellKnownSymbolsStore[name]},ITERATOR$5=wellKnownSymbol("iterator"),BUGGY_SAFARI_ITERATORS$1=!1,returnThis$2=function(){return this},IteratorPrototype$2,PrototypeOfArrayIteratorPrototype,arrayIterator;[].keys&&(arrayIterator=[].keys(),"next"in arrayIterator?(PrototypeOfArrayIteratorPrototype=objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator)),PrototypeOfArrayIteratorPrototype!==Object.prototype&&(IteratorPrototype$2=PrototypeOfArrayIteratorPrototype)):BUGGY_SAFARI_ITERATORS$1=!0);var NEW_ITERATOR_PROTOTYPE=null==IteratorPrototype$2||fails((function(){var test={};return IteratorPrototype$2[ITERATOR$5].call(test)!==test}));NEW_ITERATOR_PROTOTYPE&&(IteratorPrototype$2={}),has$1(IteratorPrototype$2,ITERATOR$5)||createNonEnumerableProperty(IteratorPrototype$2,ITERATOR$5,returnThis$2);var iteratorsCore={IteratorPrototype:IteratorPrototype$2,BUGGY_SAFARI_ITERATORS:BUGGY_SAFARI_ITERATORS$1},objectKeys=Object.keys||function(O){return objectKeysInternal(O,enumBugKeys)},objectDefineProperties=descriptors?Object.defineProperties:function(O,Properties){anObject(O);for(var key,keys=objectKeys(Properties),length=keys.length,index=0;length>index;)objectDefineProperty.f(O,key=keys[index++],Properties[key]);return O},html=getBuiltIn("document","documentElement"),GT=">",LT="<",PROTOTYPE="prototype",SCRIPT="script",IE_PROTO=sharedKey("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(content){return LT+SCRIPT+GT+content+LT+"/"+SCRIPT+GT},NullProtoObjectViaActiveX=function(activeXDocument){activeXDocument.write(scriptTag("")),activeXDocument.close();var temp=activeXDocument.parentWindow.Object;return activeXDocument=null,temp},NullProtoObjectViaIFrame=function(){var iframeDocument,iframe=documentCreateElement("iframe"),JS="java"+SCRIPT+":";return iframe.style.display="none",html.appendChild(iframe),iframe.src=String(JS),(iframeDocument=iframe.contentWindow.document).open(),iframeDocument.write(scriptTag("document.F=Object")),iframeDocument.close(),iframeDocument.F},activeXDocument,NullProtoObject=function(){try{activeXDocument=document.domain&&new ActiveXObject("htmlfile")}catch(error){}NullProtoObject=activeXDocument?NullProtoObjectViaActiveX(activeXDocument):NullProtoObjectViaIFrame();for(var length=enumBugKeys.length;length--;)delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];return NullProtoObject()};hiddenKeys$1[IE_PROTO]=!0;var objectCreate=Object.create||function(O,Properties){var result;return null!==O?(EmptyConstructor[PROTOTYPE]=anObject(O),result=new EmptyConstructor,EmptyConstructor[PROTOTYPE]=null,result[IE_PROTO]=O):result=NullProtoObject(),void 0===Properties?result:objectDefineProperties(result,Properties)},defineProperty$1=objectDefineProperty.f,TO_STRING_TAG$3=wellKnownSymbol("toStringTag"),setToStringTag=function(it,TAG,STATIC){it&&!has$1(it=STATIC?it:it.prototype,TO_STRING_TAG$3)&&defineProperty$1(it,TO_STRING_TAG$3,{configurable:!0,value:TAG})},iterators={},IteratorPrototype$1=iteratorsCore.IteratorPrototype,returnThis$1=function(){return this},createIteratorConstructor=function(IteratorConstructor,NAME,next){var TO_STRING_TAG=NAME+" Iterator";return IteratorConstructor.prototype=objectCreate(IteratorPrototype$1,{next:createPropertyDescriptor(1,next)}),setToStringTag(IteratorConstructor,TO_STRING_TAG,!1),iterators[TO_STRING_TAG]=returnThis$1,IteratorConstructor},aPossiblePrototype=function(it){if(!isObject(it)&&null!==it)throw TypeError("Can't set "+String(it)+" as a prototype");return it},objectSetPrototypeOf=Object.setPrototypeOf||("__proto__"in{}?function(){var setter,CORRECT_SETTER=!1,test={};try{(setter=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(test,[]),CORRECT_SETTER=test instanceof Array}catch(error){}return function(O,proto){return anObject(O),aPossiblePrototype(proto),CORRECT_SETTER?setter.call(O,proto):O.__proto__=proto,O}}():void 0),IteratorPrototype=iteratorsCore.IteratorPrototype,BUGGY_SAFARI_ITERATORS=iteratorsCore.BUGGY_SAFARI_ITERATORS,ITERATOR$4=wellKnownSymbol("iterator"),KEYS="keys",VALUES="values",ENTRIES="entries",returnThis=function(){return this},defineIterator=function(Iterable,NAME,IteratorConstructor,next,DEFAULT,IS_SET,FORCED){createIteratorConstructor(IteratorConstructor,NAME,next);var CurrentIteratorPrototype,methods,KEY,getIterationMethod=function(KIND){if(KIND===DEFAULT&&defaultIterator)return defaultIterator;if(!BUGGY_SAFARI_ITERATORS&&KIND in IterablePrototype)return IterablePrototype[KIND];switch(KIND){case KEYS:case VALUES:case ENTRIES:return function(){return new IteratorConstructor(this,KIND)}}return function(){return new IteratorConstructor(this)}},TO_STRING_TAG=NAME+" Iterator",INCORRECT_VALUES_NAME=!1,IterablePrototype=Iterable.prototype,nativeIterator=IterablePrototype[ITERATOR$4]||IterablePrototype["@@iterator"]||DEFAULT&&IterablePrototype[DEFAULT],defaultIterator=!BUGGY_SAFARI_ITERATORS&&nativeIterator||getIterationMethod(DEFAULT),anyNativeIterator="Array"==NAME&&IterablePrototype.entries||nativeIterator;if(anyNativeIterator&&(CurrentIteratorPrototype=objectGetPrototypeOf(anyNativeIterator.call(new Iterable)),IteratorPrototype!==Object.prototype&&CurrentIteratorPrototype.next&&(objectGetPrototypeOf(CurrentIteratorPrototype)!==IteratorPrototype&&(objectSetPrototypeOf?objectSetPrototypeOf(CurrentIteratorPrototype,IteratorPrototype):"function"!=typeof CurrentIteratorPrototype[ITERATOR$4]&&createNonEnumerableProperty(CurrentIteratorPrototype,ITERATOR$4,returnThis)),setToStringTag(CurrentIteratorPrototype,TO_STRING_TAG,!0))),DEFAULT==VALUES&&nativeIterator&&nativeIterator.name!==VALUES&&(INCORRECT_VALUES_NAME=!0,defaultIterator=function(){return nativeIterator.call(this)}),IterablePrototype[ITERATOR$4]!==defaultIterator&&createNonEnumerableProperty(IterablePrototype,ITERATOR$4,defaultIterator),iterators[NAME]=defaultIterator,DEFAULT)if(methods={values:getIterationMethod(VALUES),keys:IS_SET?defaultIterator:getIterationMethod(KEYS),entries:getIterationMethod(ENTRIES)},FORCED)for(KEY in methods)(BUGGY_SAFARI_ITERATORS||INCORRECT_VALUES_NAME||!(KEY in IterablePrototype))&&redefine(IterablePrototype,KEY,methods[KEY]);else _export({target:NAME,proto:!0,forced:BUGGY_SAFARI_ITERATORS||INCORRECT_VALUES_NAME},methods);return methods},charAt=stringMultibyte.charAt,STRING_ITERATOR="String Iterator",setInternalState$2=internalState.set,getInternalState$2=internalState.getterFor(STRING_ITERATOR);defineIterator(String,"String",(function(iterated){setInternalState$2(this,{type:STRING_ITERATOR,string:String(iterated),index:0})}),(function(){var point,state=getInternalState$2(this),string=state.string,index=state.index;return index>=string.length?{value:void 0,done:!0}:(point=charAt(string,index),state.index+=point.length,{value:point,done:!1})}));var aFunction=function(it){if("function"!=typeof it)throw TypeError(String(it)+" is not a function");return it},functionBindContext=function(fn,that,length){if(aFunction(fn),void 0===that)return fn;switch(length){case 0:return function(){return fn.call(that)};case 1:return function(a){return fn.call(that,a)};case 2:return function(a,b){return fn.call(that,a,b)};case 3:return function(a,b,c){return fn.call(that,a,b,c)}}return function(){return fn.apply(that,arguments)}},iteratorClose=function(iterator){var returnMethod=iterator.return;if(void 0!==returnMethod)return anObject(returnMethod.call(iterator)).value},callWithSafeIterationClosing=function(iterator,fn,value,ENTRIES){try{return ENTRIES?fn(anObject(value)[0],value[1]):fn(value)}catch(error){throw iteratorClose(iterator),error}},ITERATOR$3=wellKnownSymbol("iterator"),ArrayPrototype$1=Array.prototype,isArrayIteratorMethod=function(it){return void 0!==it&&(iterators.Array===it||ArrayPrototype$1[ITERATOR$3]===it)},createProperty=function(object,key,value){var propertyKey=toPrimitive(key);propertyKey in object?objectDefineProperty.f(object,propertyKey,createPropertyDescriptor(0,value)):object[propertyKey]=value},TO_STRING_TAG$2=wellKnownSymbol("toStringTag"),test={};test[TO_STRING_TAG$2]="z";var toStringTagSupport="[object z]"===String(test),TO_STRING_TAG$1=wellKnownSymbol("toStringTag"),CORRECT_ARGUMENTS="Arguments"==classofRaw(function(){return arguments}()),tryGet=function(it,key){try{return it[key]}catch(error){}},classof=toStringTagSupport?classofRaw:function(it){var O,tag,result;return void 0===it?"Undefined":null===it?"Null":"string"==typeof(tag=tryGet(O=Object(it),TO_STRING_TAG$1))?tag:CORRECT_ARGUMENTS?classofRaw(O):"Object"==(result=classofRaw(O))&&"function"==typeof O.callee?"Arguments":result},ITERATOR$2=wellKnownSymbol("iterator"),getIteratorMethod=function(it){if(null!=it)return it[ITERATOR$2]||it["@@iterator"]||iterators[classof(it)]},arrayFrom=function(arrayLike){var length,result,step,iterator,next,value,O=toObject(arrayLike),C="function"==typeof this?this:Array,argumentsLength=arguments.length,mapfn=argumentsLength>1?arguments[1]:void 0,mapping=void 0!==mapfn,iteratorMethod=getIteratorMethod(O),index=0;if(mapping&&(mapfn=functionBindContext(mapfn,argumentsLength>2?arguments[2]:void 0,2)),null==iteratorMethod||C==Array&&isArrayIteratorMethod(iteratorMethod))for(result=new C(length=toLength(O.length));length>index;index++)value=mapping?mapfn(O[index],index):O[index],createProperty(result,index,value);else for(next=(iterator=iteratorMethod.call(O)).next,result=new C;!(step=next.call(iterator)).done;index++)value=mapping?callWithSafeIterationClosing(iterator,mapfn,[step.value,index],!0):step.value,createProperty(result,index,value);return result.length=index,result},ITERATOR$1=wellKnownSymbol("iterator"),SAFE_CLOSING=!1;try{var called=0,iteratorWithReturn={next:function(){return{done:!!called++}},return:function(){SAFE_CLOSING=!0}};iteratorWithReturn[ITERATOR$1]=function(){return this},Array.from(iteratorWithReturn,(function(){throw 2}))}catch(error){}var checkCorrectnessOfIteration=function(exec,SKIP_CLOSING){if(!SKIP_CLOSING&&!SAFE_CLOSING)return!1;var ITERATION_SUPPORT=!1;try{var object={};object[ITERATOR$1]=function(){return{next:function(){return{done:ITERATION_SUPPORT=!0}}}},exec(object)}catch(error){}return ITERATION_SUPPORT},INCORRECT_ITERATION$1=!checkCorrectnessOfIteration((function(iterable){Array.from(iterable)}));_export({target:"Array",stat:!0,forced:INCORRECT_ITERATION$1},{from:arrayFrom}),path.Array.from;var UNSCOPABLES=wellKnownSymbol("unscopables"),ArrayPrototype=Array.prototype;null==ArrayPrototype[UNSCOPABLES]&&objectDefineProperty.f(ArrayPrototype,UNSCOPABLES,{configurable:!0,value:objectCreate(null)});var addToUnscopables=function(key){ArrayPrototype[UNSCOPABLES][key]=!0},$includes=arrayIncludes.includes;_export({target:"Array",proto:!0},{includes:function(el){return $includes(this,el,arguments.length>1?arguments[1]:void 0)}}),addToUnscopables("includes");var call=Function.call,entryUnbind=function(CONSTRUCTOR,METHOD,length){return functionBindContext(call,global_1[CONSTRUCTOR].prototype[METHOD],length)};entryUnbind("Array","includes");var isArray=Array.isArray||function(arg){return"Array"==classofRaw(arg)},flattenIntoArray=function(target,original,source,sourceLen,start,depth,mapper,thisArg){for(var element,targetIndex=start,sourceIndex=0,mapFn=!!mapper&&functionBindContext(mapper,thisArg,3);sourceIndex0&&isArray(element))targetIndex=flattenIntoArray(target,original,element,toLength(element.length),targetIndex,depth-1)-1;else{if(targetIndex>=9007199254740991)throw TypeError("Exceed the acceptable array length");target[targetIndex]=element}targetIndex++}sourceIndex++}return targetIndex},flattenIntoArray_1=flattenIntoArray,SPECIES$3=wellKnownSymbol("species"),arraySpeciesCreate=function(originalArray,length){var C;return isArray(originalArray)&&("function"!=typeof(C=originalArray.constructor)||C!==Array&&!isArray(C.prototype)?isObject(C)&&null===(C=C[SPECIES$3])&&(C=void 0):C=void 0),new(void 0===C?Array:C)(0===length?0:length)};_export({target:"Array",proto:!0},{flat:function(){var depthArg=arguments.length?arguments[0]:void 0,O=toObject(this),sourceLen=toLength(O.length),A=arraySpeciesCreate(O,0);return A.length=flattenIntoArray_1(A,O,O,sourceLen,0,void 0===depthArg?1:toInteger(depthArg)),A}}),addToUnscopables("flat"),entryUnbind("Array","flat");var push=[].push,createMethod$1=function(TYPE){var IS_MAP=1==TYPE,IS_FILTER=2==TYPE,IS_SOME=3==TYPE,IS_EVERY=4==TYPE,IS_FIND_INDEX=6==TYPE,IS_FILTER_OUT=7==TYPE,NO_HOLES=5==TYPE||IS_FIND_INDEX;return function($this,callbackfn,that,specificCreate){for(var value,result,O=toObject($this),self=indexedObject(O),boundFunction=functionBindContext(callbackfn,that,3),length=toLength(self.length),index=0,create=specificCreate||arraySpeciesCreate,target=IS_MAP?create($this,length):IS_FILTER||IS_FILTER_OUT?create($this,0):void 0;length>index;index++)if((NO_HOLES||index in self)&&(result=boundFunction(value=self[index],index,O),TYPE))if(IS_MAP)target[index]=result;else if(result)switch(TYPE){case 3:return!0;case 5:return value;case 6:return index;case 2:push.call(target,value)}else switch(TYPE){case 4:return!1;case 7:push.call(target,value)}return IS_FIND_INDEX?-1:IS_SOME||IS_EVERY?IS_EVERY:target}},arrayIteration={forEach:createMethod$1(0),map:createMethod$1(1),filter:createMethod$1(2),some:createMethod$1(3),every:createMethod$1(4),find:createMethod$1(5),findIndex:createMethod$1(6),filterOut:createMethod$1(7)},$find=arrayIteration.find,FIND="find",SKIPS_HOLES=!0;FIND in[]&&Array(1)[FIND]((function(){SKIPS_HOLES=!1})),_export({target:"Array",proto:!0,forced:SKIPS_HOLES},{find:function(callbackfn){return $find(this,callbackfn,arguments.length>1?arguments[1]:void 0)}}),addToUnscopables(FIND),entryUnbind("Array","find");var $assign=Object.assign,defineProperty=Object.defineProperty,objectAssign=!$assign||fails((function(){if(descriptors&&1!==$assign({b:1},$assign(defineProperty({},"a",{enumerable:!0,get:function(){defineProperty(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var A={},B={},symbol=Symbol();return A[symbol]=7,"abcdefghijklmnopqrst".split("").forEach((function(chr){B[chr]=chr})),7!=$assign({},A)[symbol]||"abcdefghijklmnopqrst"!=objectKeys($assign({},B)).join("")}))?function(target,source){for(var T=toObject(target),argumentsLength=arguments.length,index=1,getOwnPropertySymbols=objectGetOwnPropertySymbols.f,propertyIsEnumerable=objectPropertyIsEnumerable.f;argumentsLength>index;)for(var key,S=indexedObject(arguments[index++]),keys=getOwnPropertySymbols?objectKeys(S).concat(getOwnPropertySymbols(S)):objectKeys(S),length=keys.length,j=0;length>j;)key=keys[j++],descriptors&&!propertyIsEnumerable.call(S,key)||(T[key]=S[key]);return T}:$assign;_export({target:"Object",stat:!0,forced:Object.assign!==objectAssign},{assign:objectAssign}),path.Object.assign;var propertyIsEnumerable=objectPropertyIsEnumerable.f,createMethod=function(TO_ENTRIES){return function(it){for(var key,O=toIndexedObject(it),keys=objectKeys(O),length=keys.length,i=0,result=[];length>i;)key=keys[i++],descriptors&&!propertyIsEnumerable.call(O,key)||result.push(TO_ENTRIES?[key,O[key]]:O[key]);return result}},objectToArray={entries:createMethod(!0),values:createMethod(!1)},$entries=objectToArray.entries;_export({target:"Object",stat:!0},{entries:function(O){return $entries(O)}}),path.Object.entries;var $values=objectToArray.values;_export({target:"Object",stat:!0},{values:function(O){return $values(O)}}),path.Object.values;var Result=function(stopped,result){this.stopped=stopped,this.result=result},iterate=function(iterable,unboundFunction,options){var iterator,iterFn,index,length,result,next,step,that=options&&options.that,AS_ENTRIES=!(!options||!options.AS_ENTRIES),IS_ITERATOR=!(!options||!options.IS_ITERATOR),INTERRUPTED=!(!options||!options.INTERRUPTED),fn=functionBindContext(unboundFunction,that,1+AS_ENTRIES+INTERRUPTED),stop=function(condition){return iterator&&iteratorClose(iterator),new Result(!0,condition)},callFn=function(value){return AS_ENTRIES?(anObject(value),INTERRUPTED?fn(value[0],value[1],stop):fn(value[0],value[1])):INTERRUPTED?fn(value,stop):fn(value)};if(IS_ITERATOR)iterator=iterable;else{if("function"!=typeof(iterFn=getIteratorMethod(iterable)))throw TypeError("Target is not iterable");if(isArrayIteratorMethod(iterFn)){for(index=0,length=toLength(iterable.length);length>index;index++)if((result=callFn(iterable[index]))&&result instanceof Result)return result;return new Result(!1)}iterator=iterFn.call(iterable)}for(next=iterator.next;!(step=next.call(iterator)).done;){try{result=callFn(step.value)}catch(error){throw iteratorClose(iterator),error}if("object"==typeof result&&result&&result instanceof Result)return result}return new Result(!1)},$AggregateError=function(errors,message){var that=this;if(!(that instanceof $AggregateError))return new $AggregateError(errors,message);objectSetPrototypeOf&&(that=objectSetPrototypeOf(new Error(void 0),objectGetPrototypeOf(that))),void 0!==message&&createNonEnumerableProperty(that,"message",String(message));var errorsArray=[];return iterate(errors,errorsArray.push,{that:errorsArray}),createNonEnumerableProperty(that,"errors",errorsArray),that};$AggregateError.prototype=objectCreate(Error.prototype,{constructor:createPropertyDescriptor(5,$AggregateError),message:createPropertyDescriptor(5,""),name:createPropertyDescriptor(5,"AggregateError")}),_export({global:!0},{AggregateError:$AggregateError});var objectToString=toStringTagSupport?{}.toString:function(){return"[object "+classof(this)+"]"};toStringTagSupport||redefine(Object.prototype,"toString",objectToString,{unsafe:!0});var nativePromiseConstructor=global_1.Promise,redefineAll=function(target,src,options){for(var key in src)redefine(target,key,src[key],options);return target},SPECIES$2=wellKnownSymbol("species"),setSpecies=function(CONSTRUCTOR_NAME){var Constructor=getBuiltIn(CONSTRUCTOR_NAME),defineProperty=objectDefineProperty.f;descriptors&&Constructor&&!Constructor[SPECIES$2]&&defineProperty(Constructor,SPECIES$2,{configurable:!0,get:function(){return this}})},anInstance=function(it,Constructor,name){if(!(it instanceof Constructor))throw TypeError("Incorrect "+(name?name+" ":"")+"invocation");return it},SPECIES$1=wellKnownSymbol("species"),speciesConstructor=function(O,defaultConstructor){var S,C=anObject(O).constructor;return void 0===C||null==(S=anObject(C)[SPECIES$1])?defaultConstructor:aFunction(S)},engineIsIos=/(?:iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent),engineIsNode="process"==classofRaw(global_1.process),location=global_1.location,set=global_1.setImmediate,clear=global_1.clearImmediate,process$2=global_1.process,MessageChannel=global_1.MessageChannel,Dispatch=global_1.Dispatch,counter=0,queue={},ONREADYSTATECHANGE="onreadystatechange",defer,channel,port,run=function(id){if(queue.hasOwnProperty(id)){var fn=queue[id];delete queue[id],fn()}},runner=function(id){return function(){run(id)}},listener=function(event){run(event.data)},post=function(id){global_1.postMessage(id+"",location.protocol+"//"+location.host)};set&&clear||(set=function(fn){for(var args=[],i=1;arguments.length>i;)args.push(arguments[i++]);return queue[++counter]=function(){("function"==typeof fn?fn:Function(fn)).apply(void 0,args)},defer(counter),counter},clear=function(id){delete queue[id]},engineIsNode?defer=function(id){process$2.nextTick(runner(id))}:Dispatch&&Dispatch.now?defer=function(id){Dispatch.now(runner(id))}:MessageChannel&&!engineIsIos?(channel=new MessageChannel,port=channel.port2,channel.port1.onmessage=listener,defer=functionBindContext(port.postMessage,port,1)):global_1.addEventListener&&"function"==typeof postMessage&&!global_1.importScripts&&location&&"file:"!==location.protocol&&!fails(post)?(defer=post,global_1.addEventListener("message",listener,!1)):defer=ONREADYSTATECHANGE in documentCreateElement("script")?function(id){html.appendChild(documentCreateElement("script"))[ONREADYSTATECHANGE]=function(){html.removeChild(this),run(id)}}:function(id){setTimeout(runner(id),0)});var task$1={set:set,clear:clear},engineIsWebosWebkit=/web0s(?!.*chrome)/i.test(engineUserAgent),getOwnPropertyDescriptor$1=objectGetOwnPropertyDescriptor.f,macrotask=task$1.set,MutationObserver=global_1.MutationObserver||global_1.WebKitMutationObserver,document$2=global_1.document,process$1=global_1.process,Promise$1=global_1.Promise,queueMicrotaskDescriptor=getOwnPropertyDescriptor$1(global_1,"queueMicrotask"),queueMicrotask=queueMicrotaskDescriptor&&queueMicrotaskDescriptor.value,flush,head,last,notify$1,toggle,node,promise,then;queueMicrotask||(flush=function(){var parent,fn;for(engineIsNode&&(parent=process$1.domain)&&parent.exit();head;){fn=head.fn,head=head.next;try{fn()}catch(error){throw head?notify$1():last=void 0,error}}last=void 0,parent&&parent.enter()},engineIsIos||engineIsNode||engineIsWebosWebkit||!MutationObserver||!document$2?Promise$1&&Promise$1.resolve?(promise=Promise$1.resolve(void 0),promise.constructor=Promise$1,then=promise.then,notify$1=function(){then.call(promise,flush)}):notify$1=engineIsNode?function(){process$1.nextTick(flush)}:function(){macrotask.call(global_1,flush)}:(toggle=!0,node=document$2.createTextNode(""),new MutationObserver(flush).observe(node,{characterData:!0}),notify$1=function(){node.data=toggle=!toggle}));var microtask=queueMicrotask||function(fn){var task={fn:fn,next:void 0};last&&(last.next=task),head||(head=task,notify$1()),last=task},PromiseCapability=function(C){var resolve,reject;this.promise=new C((function($$resolve,$$reject){if(void 0!==resolve||void 0!==reject)throw TypeError("Bad Promise constructor");resolve=$$resolve,reject=$$reject})),this.resolve=aFunction(resolve),this.reject=aFunction(reject)},f=function(C){return new PromiseCapability(C)},newPromiseCapability$1={f:f},promiseResolve=function(C,x){if(anObject(C),isObject(x)&&x.constructor===C)return x;var promiseCapability=newPromiseCapability$1.f(C);return(0,promiseCapability.resolve)(x),promiseCapability.promise},hostReportErrors=function(a,b){var console=global_1.console;console&&console.error&&(1===arguments.length?console.error(a):console.error(a,b))},perform=function(exec){try{return{error:!1,value:exec()}}catch(error){return{error:!0,value:error}}},engineIsBrowser="object"==typeof window,task=task$1.set,SPECIES=wellKnownSymbol("species"),PROMISE="Promise",getInternalState$1=internalState.get,setInternalState$1=internalState.set,getInternalPromiseState=internalState.getterFor(PROMISE),NativePromisePrototype=nativePromiseConstructor&&nativePromiseConstructor.prototype,PromiseConstructor=nativePromiseConstructor,PromiseConstructorPrototype=NativePromisePrototype,TypeError$1=global_1.TypeError,document$1=global_1.document,process=global_1.process,newPromiseCapability=newPromiseCapability$1.f,newGenericPromiseCapability=newPromiseCapability,DISPATCH_EVENT=!!(document$1&&document$1.createEvent&&global_1.dispatchEvent),NATIVE_REJECTION_EVENT="function"==typeof PromiseRejectionEvent,UNHANDLED_REJECTION="unhandledrejection",REJECTION_HANDLED="rejectionhandled",PENDING=0,FULFILLED=1,REJECTED=2,HANDLED=1,UNHANDLED=2,SUBCLASSING=!1,Internal,OwnPromiseCapability,PromiseWrapper,nativeThen,FORCED=isForced_1(PROMISE,(function(){var PROMISE_CONSTRUCTOR_SOURCE=inspectSource(PromiseConstructor),GLOBAL_CORE_JS_PROMISE=PROMISE_CONSTRUCTOR_SOURCE!==String(PromiseConstructor);if(!GLOBAL_CORE_JS_PROMISE&&66===engineV8Version)return!0;if(engineV8Version>=51&&/native code/.test(PROMISE_CONSTRUCTOR_SOURCE))return!1;var promise=new PromiseConstructor((function(resolve){resolve(1)})),FakePromise=function(exec){exec((function(){}),(function(){}))};return(promise.constructor={})[SPECIES]=FakePromise,!(SUBCLASSING=promise.then((function(){}))instanceof FakePromise)||!GLOBAL_CORE_JS_PROMISE&&engineIsBrowser&&!NATIVE_REJECTION_EVENT})),INCORRECT_ITERATION=FORCED||!checkCorrectnessOfIteration((function(iterable){PromiseConstructor.all(iterable).catch((function(){}))})),isThenable=function(it){var then;return!(!isObject(it)||"function"!=typeof(then=it.then))&&then},notify=function(state,isReject){if(!state.notified){state.notified=!0;var chain=state.reactions;microtask((function(){for(var value=state.value,ok=state.state==FULFILLED,index=0;chain.length>index;){var result,then,exited,reaction=chain[index++],handler=ok?reaction.ok:reaction.fail,resolve=reaction.resolve,reject=reaction.reject,domain=reaction.domain;try{handler?(ok||(state.rejection===UNHANDLED&&onHandleUnhandled(state),state.rejection=HANDLED),!0===handler?result=value:(domain&&domain.enter(),result=handler(value),domain&&(domain.exit(),exited=!0)),result===reaction.promise?reject(TypeError$1("Promise-chain cycle")):(then=isThenable(result))?then.call(result,resolve,reject):resolve(result)):reject(value)}catch(error){domain&&!exited&&domain.exit(),reject(error)}}state.reactions=[],state.notified=!1,isReject&&!state.rejection&&onUnhandled(state)}))}},dispatchEvent=function(name,promise,reason){var event,handler;DISPATCH_EVENT?((event=document$1.createEvent("Event")).promise=promise,event.reason=reason,event.initEvent(name,!1,!0),global_1.dispatchEvent(event)):event={promise:promise,reason:reason},!NATIVE_REJECTION_EVENT&&(handler=global_1["on"+name])?handler(event):name===UNHANDLED_REJECTION&&hostReportErrors("Unhandled promise rejection",reason)},onUnhandled=function(state){task.call(global_1,(function(){var result,promise=state.facade,value=state.value;if(isUnhandled(state)&&(result=perform((function(){engineIsNode?process.emit("unhandledRejection",value,promise):dispatchEvent(UNHANDLED_REJECTION,promise,value)})),state.rejection=engineIsNode||isUnhandled(state)?UNHANDLED:HANDLED,result.error))throw result.value}))},isUnhandled=function(state){return state.rejection!==HANDLED&&!state.parent},onHandleUnhandled=function(state){task.call(global_1,(function(){var promise=state.facade;engineIsNode?process.emit("rejectionHandled",promise):dispatchEvent(REJECTION_HANDLED,promise,state.value)}))},bind=function(fn,state,unwrap){return function(value){fn(state,value,unwrap)}},internalReject=function(state,value,unwrap){state.done||(state.done=!0,unwrap&&(state=unwrap),state.value=value,state.state=REJECTED,notify(state,!0))},internalResolve=function(state,value,unwrap){if(!state.done){state.done=!0,unwrap&&(state=unwrap);try{if(state.facade===value)throw TypeError$1("Promise can't be resolved itself");var then=isThenable(value);then?microtask((function(){var wrapper={done:!1};try{then.call(value,bind(internalResolve,wrapper,state),bind(internalReject,wrapper,state))}catch(error){internalReject(wrapper,error,state)}})):(state.value=value,state.state=FULFILLED,notify(state,!1))}catch(error){internalReject({done:!1},error,state)}}};if(FORCED&&(PromiseConstructor=function(executor){anInstance(this,PromiseConstructor,PROMISE),aFunction(executor),Internal.call(this);var state=getInternalState$1(this);try{executor(bind(internalResolve,state),bind(internalReject,state))}catch(error){internalReject(state,error)}},PromiseConstructorPrototype=PromiseConstructor.prototype,Internal=function(executor){setInternalState$1(this,{type:PROMISE,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:PENDING,value:void 0})},Internal.prototype=redefineAll(PromiseConstructorPrototype,{then:function(onFulfilled,onRejected){var state=getInternalPromiseState(this),reaction=newPromiseCapability(speciesConstructor(this,PromiseConstructor));return reaction.ok="function"!=typeof onFulfilled||onFulfilled,reaction.fail="function"==typeof onRejected&&onRejected,reaction.domain=engineIsNode?process.domain:void 0,state.parent=!0,state.reactions.push(reaction),state.state!=PENDING&¬ify(state,!1),reaction.promise},catch:function(onRejected){return this.then(void 0,onRejected)}}),OwnPromiseCapability=function(){var promise=new Internal,state=getInternalState$1(promise);this.promise=promise,this.resolve=bind(internalResolve,state),this.reject=bind(internalReject,state)},newPromiseCapability$1.f=newPromiseCapability=function(C){return C===PromiseConstructor||C===PromiseWrapper?new OwnPromiseCapability(C):newGenericPromiseCapability(C)},"function"==typeof nativePromiseConstructor&&NativePromisePrototype!==Object.prototype)){nativeThen=NativePromisePrototype.then,SUBCLASSING||(redefine(NativePromisePrototype,"then",(function(onFulfilled,onRejected){var that=this;return new PromiseConstructor((function(resolve,reject){nativeThen.call(that,resolve,reject)})).then(onFulfilled,onRejected)}),{unsafe:!0}),redefine(NativePromisePrototype,"catch",PromiseConstructorPrototype.catch,{unsafe:!0}));try{delete NativePromisePrototype.constructor}catch(error){}objectSetPrototypeOf&&objectSetPrototypeOf(NativePromisePrototype,PromiseConstructorPrototype)}_export({global:!0,wrap:!0,forced:FORCED},{Promise:PromiseConstructor}),setToStringTag(PromiseConstructor,PROMISE,!1),setSpecies(PROMISE),PromiseWrapper=getBuiltIn(PROMISE),_export({target:PROMISE,stat:!0,forced:FORCED},{reject:function(r){var capability=newPromiseCapability(this);return capability.reject.call(void 0,r),capability.promise}}),_export({target:PROMISE,stat:!0,forced:FORCED},{resolve:function(x){return promiseResolve(this,x)}}),_export({target:PROMISE,stat:!0,forced:INCORRECT_ITERATION},{all:function(iterable){var C=this,capability=newPromiseCapability(C),resolve=capability.resolve,reject=capability.reject,result=perform((function(){var $promiseResolve=aFunction(C.resolve),values=[],counter=0,remaining=1;iterate(iterable,(function(promise){var index=counter++,alreadyCalled=!1;values.push(void 0),remaining++,$promiseResolve.call(C,promise).then((function(value){alreadyCalled||(alreadyCalled=!0,values[index]=value,--remaining||resolve(values))}),reject)})),--remaining||resolve(values)}));return result.error&&reject(result.value),capability.promise},race:function(iterable){var C=this,capability=newPromiseCapability(C),reject=capability.reject,result=perform((function(){var $promiseResolve=aFunction(C.resolve);iterate(iterable,(function(promise){$promiseResolve.call(C,promise).then(capability.resolve,reject)}))}));return result.error&&reject(result.value),capability.promise}}),_export({target:"Promise",stat:!0},{allSettled:function(iterable){var C=this,capability=newPromiseCapability$1.f(C),resolve=capability.resolve,reject=capability.reject,result=perform((function(){var promiseResolve=aFunction(C.resolve),values=[],counter=0,remaining=1;iterate(iterable,(function(promise){var index=counter++,alreadyCalled=!1;values.push(void 0),remaining++,promiseResolve.call(C,promise).then((function(value){alreadyCalled||(alreadyCalled=!0,values[index]={status:"fulfilled",value:value},--remaining||resolve(values))}),(function(error){alreadyCalled||(alreadyCalled=!0,values[index]={status:"rejected",reason:error},--remaining||resolve(values))}))})),--remaining||resolve(values)}));return result.error&&reject(result.value),capability.promise}});var PROMISE_ANY_ERROR="No one promise resolved";_export({target:"Promise",stat:!0},{any:function(iterable){var C=this,capability=newPromiseCapability$1.f(C),resolve=capability.resolve,reject=capability.reject,result=perform((function(){var promiseResolve=aFunction(C.resolve),errors=[],counter=0,remaining=1,alreadyResolved=!1;iterate(iterable,(function(promise){var index=counter++,alreadyRejected=!1;errors.push(void 0),remaining++,promiseResolve.call(C,promise).then((function(value){alreadyRejected||alreadyResolved||(alreadyResolved=!0,resolve(value))}),(function(error){alreadyRejected||alreadyResolved||(alreadyRejected=!0,errors[index]=error,--remaining||reject(new(getBuiltIn("AggregateError"))(errors,PROMISE_ANY_ERROR)))}))})),--remaining||reject(new(getBuiltIn("AggregateError"))(errors,PROMISE_ANY_ERROR))}));return result.error&&reject(result.value),capability.promise}});var NON_GENERIC=!!nativePromiseConstructor&&fails((function(){nativePromiseConstructor.prototype.finally.call({then:function(){}},(function(){}))}));if(_export({target:"Promise",proto:!0,real:!0,forced:NON_GENERIC},{finally:function(onFinally){var C=speciesConstructor(this,getBuiltIn("Promise")),isFunction="function"==typeof onFinally;return this.then(isFunction?function(x){return promiseResolve(C,onFinally()).then((function(){return x}))}:onFinally,isFunction?function(e){return promiseResolve(C,onFinally()).then((function(){throw e}))}:onFinally)}}),"function"==typeof nativePromiseConstructor){var method=getBuiltIn("Promise").prototype.finally;nativePromiseConstructor.prototype.finally!==method&&redefine(nativePromiseConstructor.prototype,"finally",method,{unsafe:!0})}var domIterables={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},ARRAY_ITERATOR="Array Iterator",setInternalState=internalState.set,getInternalState=internalState.getterFor(ARRAY_ITERATOR),es_array_iterator=defineIterator(Array,"Array",(function(iterated,kind){setInternalState(this,{type:ARRAY_ITERATOR,target:toIndexedObject(iterated),index:0,kind:kind})}),(function(){var state=getInternalState(this),target=state.target,kind=state.kind,index=state.index++;return!target||index>=target.length?(state.target=void 0,{value:void 0,done:!0}):"keys"==kind?{value:index,done:!1}:"values"==kind?{value:target[index],done:!1}:{value:[index,target[index]],done:!1}}),"values");iterators.Arguments=iterators.Array,addToUnscopables("keys"),addToUnscopables("values"),addToUnscopables("entries");var ITERATOR=wellKnownSymbol("iterator"),TO_STRING_TAG=wellKnownSymbol("toStringTag"),ArrayValues=es_array_iterator.values;for(var COLLECTION_NAME in domIterables){var Collection=global_1[COLLECTION_NAME],CollectionPrototype=Collection&&Collection.prototype;if(CollectionPrototype){if(CollectionPrototype[ITERATOR]!==ArrayValues)try{createNonEnumerableProperty(CollectionPrototype,ITERATOR,ArrayValues)}catch(error){CollectionPrototype[ITERATOR]=ArrayValues}if(CollectionPrototype[TO_STRING_TAG]||createNonEnumerableProperty(CollectionPrototype,TO_STRING_TAG,COLLECTION_NAME),domIterables[COLLECTION_NAME])for(var METHOD_NAME in es_array_iterator)if(CollectionPrototype[METHOD_NAME]!==es_array_iterator[METHOD_NAME])try{createNonEnumerableProperty(CollectionPrototype,METHOD_NAME,es_array_iterator[METHOD_NAME])}catch(error){CollectionPrototype[METHOD_NAME]=es_array_iterator[METHOD_NAME]}}}path.Promise,_export({target:"Promise",stat:!0},{try:function(callbackfn){var promiseCapability=newPromiseCapability$1.f(this),result=perform(callbackfn);return(result.error?promiseCapability.reject:promiseCapability.resolve)(result.value),promiseCapability.promise}});var MATCH$1=wellKnownSymbol("match"),isRegexp=function(it){var isRegExp;return isObject(it)&&(void 0!==(isRegExp=it[MATCH$1])?!!isRegExp:"RegExp"==classofRaw(it))},notARegexp=function(it){if(isRegexp(it))throw TypeError("The method doesn't accept regular expressions");return it},MATCH=wellKnownSymbol("match"),correctIsRegexpLogic=function(METHOD_NAME){var regexp=/./;try{"/./"[METHOD_NAME](regexp)}catch(error1){try{return regexp[MATCH]=!1,"/./"[METHOD_NAME](regexp)}catch(error2){}}return!1},getOwnPropertyDescriptor=objectGetOwnPropertyDescriptor.f,$startsWith="".startsWith,min=Math.min,CORRECT_IS_REGEXP_LOGIC=correctIsRegexpLogic("startsWith"),MDN_POLYFILL_BUG=!(CORRECT_IS_REGEXP_LOGIC||(descriptor=getOwnPropertyDescriptor(String.prototype,"startsWith"),!descriptor||descriptor.writable)),descriptor;_export({target:"String",proto:!0,forced:!MDN_POLYFILL_BUG&&!CORRECT_IS_REGEXP_LOGIC},{startsWith:function(searchString){var that=String(requireObjectCoercible(this));notARegexp(searchString);var index=toLength(min(arguments.length>1?arguments[1]:void 0,that.length)),search=String(searchString);return $startsWith?$startsWith.call(that,search,index):that.slice(index,index+search.length)===search}}),entryUnbind("String","startsWith");var global$1="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==global$1&&global$1,support={searchParams:"URLSearchParams"in global$1,iterable:"Symbol"in global$1&&"iterator"in Symbol,blob:"FileReader"in global$1&&"Blob"in global$1&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in global$1,arrayBuffer:"ArrayBuffer"in global$1};function isDataView(obj){return obj&&DataView.prototype.isPrototypeOf(obj)}if(support.arrayBuffer)var viewClasses=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],isArrayBufferView=ArrayBuffer.isView||function(obj){return obj&&viewClasses.indexOf(Object.prototype.toString.call(obj))>-1};function normalizeName(name){if("string"!=typeof name&&(name=String(name)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name)||""===name)throw new TypeError('Invalid character in header field name: "'+name+'"');return name.toLowerCase()}function normalizeValue(value){return"string"!=typeof value&&(value=String(value)),value}function iteratorFor(items){var iterator={next:function(){var value=items.shift();return{done:void 0===value,value:value}}};return support.iterable&&(iterator[Symbol.iterator]=function(){return iterator}),iterator}function Headers(headers){this.map={},headers instanceof Headers?headers.forEach((function(value,name){this.append(name,value)}),this):Array.isArray(headers)?headers.forEach((function(header){this.append(header[0],header[1])}),this):headers&&Object.getOwnPropertyNames(headers).forEach((function(name){this.append(name,headers[name])}),this)}function consumed(body){if(body.bodyUsed)return Promise.reject(new TypeError("Already read"));body.bodyUsed=!0}function fileReaderReady(reader){return new Promise((function(resolve,reject){reader.onload=function(){resolve(reader.result)},reader.onerror=function(){reject(reader.error)}}))}function readBlobAsArrayBuffer(blob){var reader=new FileReader,promise=fileReaderReady(reader);return reader.readAsArrayBuffer(blob),promise}function readBlobAsText(blob){var reader=new FileReader,promise=fileReaderReady(reader);return reader.readAsText(blob),promise}function readArrayBufferAsText(buf){for(var view=new Uint8Array(buf),chars=new Array(view.length),i=0;i-1?upcased:method}function Request(input,options){if(!(this instanceof Request))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');var body=(options=options||{}).body;if(input instanceof Request){if(input.bodyUsed)throw new TypeError("Already read");this.url=input.url,this.credentials=input.credentials,options.headers||(this.headers=new Headers(input.headers)),this.method=input.method,this.mode=input.mode,this.signal=input.signal,body||null==input._bodyInit||(body=input._bodyInit,input.bodyUsed=!0)}else this.url=String(input);if(this.credentials=options.credentials||this.credentials||"same-origin",!options.headers&&this.headers||(this.headers=new Headers(options.headers)),this.method=normalizeMethod(options.method||this.method||"GET"),this.mode=options.mode||this.mode||null,this.signal=options.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&body)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(body),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==options.cache&&"no-cache"!==options.cache)){var reParamSearch=/([?&])_=[^&]*/;if(reParamSearch.test(this.url))this.url=this.url.replace(reParamSearch,"$1_="+(new Date).getTime());else{this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}}function decode(body){var form=new FormData;return body.trim().split("&").forEach((function(bytes){if(bytes){var split=bytes.split("="),name=split.shift().replace(/\+/g," "),value=split.join("=").replace(/\+/g," ");form.append(decodeURIComponent(name),decodeURIComponent(value))}})),form}function parseHeaders(rawHeaders){var headers=new Headers;return rawHeaders.replace(/\r?\n[\t ]+/g," ").split("\r").map((function(header){return 0===header.indexOf("\n")?header.substr(1,header.length):header})).forEach((function(line){var parts=line.split(":"),key=parts.shift().trim();if(key){var value=parts.join(":").trim();headers.append(key,value)}})),headers}function Response(bodyInit,options){if(!(this instanceof Response))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');options||(options={}),this.type="default",this.status=void 0===options.status?200:options.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===options.statusText?"":""+options.statusText,this.headers=new Headers(options.headers),this.url=options.url||"",this._initBody(bodyInit)}Request.prototype.clone=function(){return new Request(this,{body:this._bodyInit})},Body.call(Request.prototype),Body.call(Response.prototype),Response.prototype.clone=function(){return new Response(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new Headers(this.headers),url:this.url})},Response.error=function(){var response=new Response(null,{status:0,statusText:""});return response.type="error",response};var redirectStatuses=[301,302,303,307,308];Response.redirect=function(url,status){if(-1===redirectStatuses.indexOf(status))throw new RangeError("Invalid status code");return new Response(null,{status:status,headers:{location:url}})};var DOMException=global$1.DOMException;try{new DOMException}catch(err){DOMException=function(message,name){this.message=message,this.name=name;var error=Error(message);this.stack=error.stack},DOMException.prototype=Object.create(Error.prototype),DOMException.prototype.constructor=DOMException}function fetch$1(input,init){return new Promise((function(resolve,reject){var request=new Request(input,init);if(request.signal&&request.signal.aborted)return reject(new DOMException("Aborted","AbortError"));var xhr=new XMLHttpRequest;function abortXhr(){xhr.abort()}xhr.onload=function(){var options={status:xhr.status,statusText:xhr.statusText,headers:parseHeaders(xhr.getAllResponseHeaders()||"")};options.url="responseURL"in xhr?xhr.responseURL:options.headers.get("X-Request-URL");var body="response"in xhr?xhr.response:xhr.responseText;setTimeout((function(){resolve(new Response(body,options))}),0)},xhr.onerror=function(){setTimeout((function(){reject(new TypeError("Network request failed"))}),0)},xhr.ontimeout=function(){setTimeout((function(){reject(new TypeError("Network request failed"))}),0)},xhr.onabort=function(){setTimeout((function(){reject(new DOMException("Aborted","AbortError"))}),0)},xhr.open(request.method,function(url){try{return""===url&&global$1.location.href?global$1.location.href:url}catch(e){return url}}(request.url),!0),"include"===request.credentials?xhr.withCredentials=!0:"omit"===request.credentials&&(xhr.withCredentials=!1),"responseType"in xhr&&(support.blob?xhr.responseType="blob":support.arrayBuffer&&request.headers.get("Content-Type")&&-1!==request.headers.get("Content-Type").indexOf("application/octet-stream")&&(xhr.responseType="arraybuffer")),!init||"object"!=typeof init.headers||init.headers instanceof Headers?request.headers.forEach((function(value,name){xhr.setRequestHeader(name,value)})):Object.getOwnPropertyNames(init.headers).forEach((function(name){xhr.setRequestHeader(name,normalizeValue(init.headers[name]))})),request.signal&&(request.signal.addEventListener("abort",abortXhr),xhr.onreadystatechange=function(){4===xhr.readyState&&request.signal.removeEventListener("abort",abortXhr)}),xhr.send(void 0===request._bodyInit?null:request._bodyInit)}))}fetch$1.polyfill=!0,global$1.fetch||(global$1.fetch=fetch$1,global$1.Headers=Headers,global$1.Request=Request,global$1.Response=Response),null==Element.prototype.getAttributeNames&&(Element.prototype.getAttributeNames=function(){for(var attributes=this.attributes,length=attributes.length,result=new Array(length),i=0;i=0&&matches.item(i)!==this;);return i>-1}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest||(Element.prototype.closest=function(s){var el=this;do{if(el.matches(s))return el;el=el.parentElement||el.parentNode}while(null!==el&&1===el.nodeType);return null});var Connection=function(){function Connection(){_classCallCheck(this,Connection),this.headers={}}return _createClass(Connection,[{key:"onMessage",value:function(message,payload){message.component.receiveMessage(message,payload)}},{key:"onError",value:function(message,status,response){return message.component.messageSendFailed(),store$2.onErrorCallback(status,response)}},{key:"showExpiredMessage",value:function(){confirm("This page has expired due to inactivity.\nWould you like to refresh the page?")&&window.location.reload()}},{key:"sendMessage",value:function(message){var _this=this,payload=message.payload(),csrfToken=getCsrfToken(),socketId=this.getSocketId();if(window.__testing_request_interceptor)return window.__testing_request_interceptor(payload,this);fetch("".concat(window.livewire_app_url,"/livewire/message/").concat(payload.fingerprint.name),{method:"POST",body:JSON.stringify(payload),credentials:"same-origin",headers:_objectSpread2(_objectSpread2(_objectSpread2({"Content-Type":"application/json",Accept:"text/html, application/xhtml+xml","X-Livewire":!0},this.headers),{},{Referer:window.location.href},csrfToken&&{"X-CSRF-TOKEN":csrfToken}),socketId&&{"X-Socket-ID":socketId})}).then((function(response){if(response.ok)response.text().then((function(response){_this.isOutputFromDump(response)?(_this.onError(message),_this.showHtmlModal(response)):_this.onMessage(message,JSON.parse(response))}));else{if(!1===_this.onError(message,response.status,response))return;if(419===response.status){if(store$2.sessionHasExpired)return;store$2.sessionHasExpired=!0,_this.showExpiredMessage()}else response.text().then((function(response){_this.showHtmlModal(response)}))}})).catch((function(){_this.onError(message)}))}},{key:"isOutputFromDump",value:function(output){return!!output.match(/ + + + @endsection diff --git a/resources/views/portal/ninja2020/invoices/show.blade.php b/resources/views/portal/ninja2020/invoices/show.blade.php index d56323d0c0..15605a39ad 100644 --- a/resources/views/portal/ninja2020/invoices/show.blade.php +++ b/resources/views/portal/ninja2020/invoices/show.blade.php @@ -7,6 +7,7 @@ @include('portal.ninja2020.components.no-cache') + @endpush @section('body') @@ -38,6 +39,14 @@ {{ ctrans('texts.invoice_number_placeholder', ['invoice' => $invoice->number])}} - {{ ctrans('texts.unpaid') }} + +
+
+

{{url("client/invoice/{$key}")}}

+

Copy to clipboard

+
+
+
@@ -64,6 +73,13 @@ {{ ctrans('texts.invoice_number_placeholder', ['invoice' => $invoice->number])}} - {{ \App\Models\Invoice::stringStatus($invoice->status_id) }} + +
+
+

{{url("client/invoice/{$key}")}}

+

Copy to clipboard

+
+
@@ -78,4 +94,24 @@ @section('footer') + + + @endsection diff --git a/resources/views/portal/ninja2020/quotes/includes/actions.blade.php b/resources/views/portal/ninja2020/quotes/includes/actions.blade.php index 8785cef5fe..c3f8696aa7 100644 --- a/resources/views/portal/ninja2020/quotes/includes/actions.blade.php +++ b/resources/views/portal/ninja2020/quotes/includes/actions.blade.php @@ -9,9 +9,20 @@
-

- {{ ctrans('texts.approve') }} -

+
+ +

+ {{ ctrans('texts.approve') }} +

+ +
+
+

{{url("client/quote/{$key}")}}

+

Copy to clipboard

+
+
+ +
@yield('quote-not-approved-right-side') diff --git a/resources/views/portal/ninja2020/quotes/show.blade.php b/resources/views/portal/ninja2020/quotes/show.blade.php index 7a9b506338..069bc49f52 100644 --- a/resources/views/portal/ninja2020/quotes/show.blade.php +++ b/resources/views/portal/ninja2020/quotes/show.blade.php @@ -25,8 +25,67 @@
@include('portal.ninja2020.quotes.includes.actions', ['quote' => $quote])
+ @elseif($quote->status_id === \App\Models\Quote::STATUS_CONVERTED) + +
+
+
+
+

+ {{ ctrans('texts.approved') }} +

+ +
+
+

{{url("client/quote/{$key}")}}

+

Copy to clipboard

+
+
+
+
+
+
+ @elseif($quote->status_id === \App\Models\Quote::STATUS_APPROVED) -

{{ ctrans('texts.approved') }}

+ +
+
+
+
+

+ {{ ctrans('texts.approved') }} +

+ +
+
+

{{url("client/quote/{$key}")}}

+

Copy to clipboard

+
+
+
+
+
+
+ @else + +
+
+
+
+

+ {{ ctrans('texts.expired') }} +

+ +
+
+

{{url("client/quote/{$key}")}}

+

Copy to clipboard

+
+
+
+
+
+
@endif @include('portal.ninja2020.components.entity-documents', ['entity' => $quote]) @@ -37,4 +96,24 @@ @section('footer') + + + @endsection diff --git a/resources/views/themes/ninja2020/view_entity/set_password.blade.php b/resources/views/themes/ninja2020/view_entity/set_password.blade.php new file mode 100644 index 0000000000..f4117d2f3b --- /dev/null +++ b/resources/views/themes/ninja2020/view_entity/set_password.blade.php @@ -0,0 +1,25 @@ +@extends('portal.ninja2020.layout.clean') + +@section('body') +
+
+
+

{{ ctrans('texts.password') }}

+

{{ ctrans('texts.to_view_entity_set_password', ['entity' => $entity_type]) }}

+
+ + + @csrf +
+
+
+ +
+
+ +
+
+
+
+
+@endsection \ No newline at end of file diff --git a/resources/views/vendor/livewire/simple-bootstrap.blade.php b/resources/views/vendor/livewire/simple-bootstrap.blade.php index 919e573b57..057e0cd5d6 100644 --- a/resources/views/vendor/livewire/simple-bootstrap.blade.php +++ b/resources/views/vendor/livewire/simple-bootstrap.blade.php @@ -8,28 +8,16 @@ @lang('pagination.previous') @else - @if(method_exists($paginator,'getCursorName')) -
  • - -
  • - @else -
  • - -
  • - @endif +
  • + +
  • @endif {{-- Next Page Link --}} @if ($paginator->hasMorePages()) - @if(method_exists($paginator,'getCursorName')) -
  • - -
  • - @else -
  • - -
  • - @endif +
  • + +
  • @else
  • @lang('pagination.next') diff --git a/tests/Feature/Import/freshbooks_clients.csv b/tests/Feature/Import/freshbooks_clients.csv new file mode 100644 index 0000000000..6e08e0bb51 --- /dev/null +++ b/tests/Feature/Import/freshbooks_clients.csv @@ -0,0 +1,3 @@ +Organization,First Name,Last Name,Email,Phone,Street,City,Province/State,Country,Postal Code,Notes +Marge Simpson,Marge,Simpson,marge@simpsons.com,867-5309,2587 Sesame Street,Springfield,Illinois,United States,, +X-Men,Scott,Summer,ssummers@xavierscool.edu,987654321,,,,United States,, diff --git a/tests/Feature/Import/freshbooks_invoices.csv b/tests/Feature/Import/freshbooks_invoices.csv new file mode 100644 index 0000000000..3770c7bda8 --- /dev/null +++ b/tests/Feature/Import/freshbooks_invoices.csv @@ -0,0 +1,4 @@ +Client Name,Invoice #,Date Issued,Invoice Status,Date Paid,Item Name,Item Description,Rate,Quantity,Discount Percentage,Line Subtotal,Tax 1 Type,Tax 1 Amount,Tax 2 Type,Tax 2 Amount,Line Total,Currency +X-Men,0000001,2021-01-28,sent,,General Car Repair,Bumper paint touch up,65.00,10.00000000,0.0000,650.00,,0.00,,0.00,650.00,USD +X-Men,0000001,2021-01-28,sent,,Painting Service,25 hours painting,98.00,5.00000000,0.0000,490.00,,0.00,,0.00,490.00,USD +X-Men,0000001,2021-01-28,sent,,Product Delivery,Trucking Logistics,150.00,45.00000000,0.0000,6750.00,,0.00,,0.00,6750.00,USD diff --git a/tests/Feature/Import/i2g_clients.csv b/tests/Feature/Import/i2g_clients.csv new file mode 100644 index 0000000000..ce7c376d7a --- /dev/null +++ b/tests/Feature/Import/i2g_clients.csv @@ -0,0 +1,3 @@ +"Client Name","Email","Phone","Country" +"Alexander Hamilton","alexander@iamhamllton.com","5558675309","US" +"Bruce Wayne","batman@gotham.gov","","US" diff --git a/tests/Feature/Import/i2g_invoices.csv b/tests/Feature/Import/i2g_invoices.csv new file mode 100644 index 0000000000..2f225a9a43 --- /dev/null +++ b/tests/Feature/Import/i2g_invoices.csv @@ -0,0 +1,5 @@ +Id,AccountId,State,LastUpdated,CreatedDate,DocumentDate,DocumentNumber,Comment,Name,EmailRecipient,DocumentStatus,OutputStatus,PartPayment,DocumentRecipientAddress,ShipDate,ShipAddress,ShipAmount,ShipTrackingNumber,ShipVia,ShipFob,StyleName,DatePaid,CustomField,DiscountType,Discount,DiscountValue,Taxes,WithholdingTaxName,WithholdingTaxRate,TermsOld,Payments,Items,CurrencyCode,TotalAmount,BalanceDueAmount,AmountPaidAmount,DiscountAmount,SubtotalAmount,TotalTaxAmount,WithholdingTaxAmount +a693ce35-78ed-49d8-a1be-968b4b18d689,24379237,synced,2021-01-28T11:04:09+00:00,2021-01-28T07:57:37+00:00,2021-01-28,1,,Barry Gordon,barry@capitalcity.gov,unsent,unsent,false,,,,0,,,,invoice,,,no_discount,0,0,"name,auto_apply,inclusive,id,rates,accumulative_of;Ma'am,true,false,d4037c01-b719-4e89-a1f4-91c0daf3ee34,""is_default,value;true,17"",",Withholding Tax,0,0,,"code,description,qty,unit_type,withholding_tax_applies,applied_taxes,unit_price,discount_percentage,discount_type,discount_amount;,Bumper paint touch up,4,parts,false,""rate,tax_id;17,d4037c01-b719-4e89-a1f4-91c0daf3ee34"",35,0,no_discount,0;,Wood Hammer Mallets,10,parts,false,""rate,tax_id;17,d4037c01-b719-4e89-a1f4-91c0daf3ee34"",2.5,0,no_discount,0;,Monthly Lawn Service 2 Hours Weekly,4,parts,false,""rate,tax_id;17,d4037c01-b719-4e89-a1f4-91c0daf3ee34"",65,0,no_discount,0;,Internal Hardware Repair,6,parts,false,""rate,tax_id;17,d4037c01-b719-4e89-a1f4-91c0daf3ee34"",65,0,no_discount,0",ILS,953.55,953.55,0,0,815,"sub_total,total,rate,tax_id;815,138.55,17,d4037c01-b719-4e89-a1f4-91c0daf3ee34",0 +a8acb5bc-c855-42b7-b56e-6fab01d14899,24379237,synced,2021-01-28T11:07:43+00:00,2021-01-28T11:07:05+00:00,2021-01-28,2,,James Gordon,commissionon@gotham.gov,unsent,unsent,false,,,,0,,,,invoice,,,no_discount,0,0,"name,auto_apply,inclusive,id,rates,accumulative_of;TAX,true,false,115e965e-eed8-4ea1-b1ca-cd1b36b8798a,""is_default,value;true,8"",",Withholding Tax,0,0,,"code,description,qty,unit_type,withholding_tax_applies,applied_taxes,unit_price,discount_percentage,discount_type,discount_amount;,Internal Hardware Repair,1,parts,false,""rate,tax_id;8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a"",65,0,no_discount,0",USD,70.2,70.2,0,0,65,"sub_total,total,rate,tax_id;65,5.2,8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a",0 +55152bdc-76b3-46eb-9420-cca8c9e7a081,24379237,synced,2021-01-28T11:08:08+00:00,2021-01-28T11:07:52+00:00,2021-01-28,4,,Deadpool Inc,wade@projectx.net,unsent,unsent,false,2584 Sesame Street,,2584 Sesame Street,0,,,,invoice,,,no_discount,0,0,"name,auto_apply,inclusive,id,rates,accumulative_of;TAX,true,false,115e965e-eed8-4ea1-b1ca-cd1b36b8798a,""is_default,value;true,8"",",Withholding Tax,0,30,,"code,description,qty,unit_type,withholding_tax_applies,applied_taxes,unit_price,discount_percentage,discount_type,discount_amount;,Internal Hardware Repair,1,parts,false,""rate,tax_id;8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a"",65,0,no_discount,0;,Monthly Lawn Service 2 Hours Weekly,1,parts,false,""rate,tax_id;8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a"",0,0,no_discount,0;,Wood Hammer Mallets,1,parts,false,""rate,tax_id;8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a"",2.5,0,no_discount,0",USD,72.9,72.9,0,0,67.5,"sub_total,total,rate,tax_id;67.5,5.4,8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a",0 +73c9c7be-abea-4154-92eb-ebf674b13748,24379237,synced,2021-01-28T11:08:51+00:00,2021-01-28T11:07:21+00:00,2021-01-28,3,,Daily Planet,louislane@dailyplanet.com,unsent,unsent,false,"2587 Super Plaza, Floor 25, Metropolis",,"2587 Super Plaza, Floor 25, Metropolis",0,,,,invoice,,,no_discount,0,0,"name,auto_apply,inclusive,id,rates,accumulative_of;TAX,true,false,115e965e-eed8-4ea1-b1ca-cd1b36b8798a,""is_default,value;true,8"",",Withholding Tax,0,14,,"code,description,qty,unit_type,withholding_tax_applies,applied_taxes,unit_price,discount_percentage,discount_type,discount_amount;,Monthly Lawn Service 2 Hours Weekly,4,labor_hours,false,""rate,tax_id;8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a"",85,0,no_discount,0",USD,367.2,367.2,0,0,340,"sub_total,total,rate,tax_id;340,27.2,8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a",0 diff --git a/tests/Feature/Import/invoicely_clients.csv b/tests/Feature/Import/invoicely_clients.csv new file mode 100644 index 0000000000..ce7c376d7a --- /dev/null +++ b/tests/Feature/Import/invoicely_clients.csv @@ -0,0 +1,3 @@ +"Client Name","Email","Phone","Country" +"Alexander Hamilton","alexander@iamhamllton.com","5558675309","US" +"Bruce Wayne","batman@gotham.gov","","US" diff --git a/tests/Feature/Import/invoicely_invoices.csv b/tests/Feature/Import/invoicely_invoices.csv new file mode 100644 index 0000000000..e0d06a8879 --- /dev/null +++ b/tests/Feature/Import/invoicely_invoices.csv @@ -0,0 +1,2 @@ +"Date","Due","Details","Client","Status","Total" +"Jan 28 2021","Jan 28 2021","INV-1","Bruce Wayne","Due","1,020.00" diff --git a/tests/Feature/Import/wave_clients.csv b/tests/Feature/Import/wave_clients.csv new file mode 100644 index 0000000000..e1f0478bcd --- /dev/null +++ b/tests/Feature/Import/wave_clients.csv @@ -0,0 +1,5 @@ +customer_name,email,contact_first_name,contact_last_name,customer_currency,account_number,phone,fax,mobile,toll_free,website,country,province/state,address_line_1,address_line_2,city,postal_code/zip_code,shipping_address,ship-to_contact,ship-to_country,ship-to_province/state,ship-to_address_line_1,ship-to_address_line_2,ship-to_city,ship-to_postal_code/zip_code,ship-to_phone,delivery_instructions +Homer Simpson,homer@simpsons.com,Homer,Connery,USD,,555-875-5245,,,,http://simpsons.com/,,,1234 Tullis Street,,"Glasgow, Scotland",G1 2FF,False,,,,,,,,, +Jessica Jones,jessica@jones.com,Jessica Jones,,AUD,,555-867-5309,,,,,Australia,Queensland,6548 Sesame Street,Apt 4,NYC,11213,False,,,,,,,,, +Lucas Cage,luke@powerman.com,Luke Cage,Martha Stewart,BSD,,555-867-5309 x89,,,,,Bahamas,High Rock,965 Main Street,,Monroe,654123,False,,,,,,,,, +Mark Walberg,markymark@walburger.com,Marcus,Connery,USD,,321654987,,,,,,,1234 Tullis Street,,"Glasgow, Scotland",G1 2FF,False,,,,,,,,, diff --git a/tests/Feature/Import/wave_invoices.csv b/tests/Feature/Import/wave_invoices.csv new file mode 100644 index 0000000000..2947a1f885 --- /dev/null +++ b/tests/Feature/Import/wave_invoices.csv @@ -0,0 +1,16 @@ +Transaction ID,Transaction Date,Account Name,Transaction Description,Transaction Line Description,Amount (One column), ,Debit Amount (Two Column Approach),Credit Amount (Two Column Approach),Other Accounts for this Transaction,Customer,Vendor,Invoice Number,Bill Number,Notes / Memo,Amount Before Sales Tax,Sales Tax Amount,Sales Tax Name,Transaction Date Added,Transaction Date Last Modified,Account Group,Account Type,Account ID +1131801267438479900,2021-01-28,Sales,Mark Walberg - 2,Mark Walberg - 2 - General Car Repair,294.00,,,294.00,"Accounts Receivable, Services",Mark Walberg,,2,,,294.00,,,2021-01-28,2021-01-28,Income,Income, +1131801267438479900,2021-01-28,Sales,Mark Walberg - 2,Mark Walberg - 2 - Hardware Supply,20.00,,,20.00,"Accounts Receivable, Services",Mark Walberg,,2,,,20.00,,,2021-01-28,2021-01-28,Income,Income, +1131801267438479900,2021-01-28,Services,Mark Walberg - 2,Mark Walberg - 2 - Lawn Service,160.00,,,160.00,"Accounts Receivable, Sales",Mark Walberg,,2,,,160.00,,,2021-01-28,2021-01-28,Income,Income, +1131801267438479900,2021-01-28,Services,Mark Walberg - 2,Mark Walberg - 2 - Product Delivery,4500.00,,,4500.00,"Accounts Receivable, Sales",Mark Walberg,,2,,,4500.00,,,2021-01-28,2021-01-28,Income,Income, +1131801267438479900,2021-01-28,Accounts Receivable,Mark Walberg - 2,Mark Walberg - 2,4974.00,,4974.00,,"Sales, Services",Mark Walberg,,2,,,4974.00,,,2021-01-28,2021-01-28,Asset,System Receivable Invoice, +1131801934970350312,2021-01-28,Sales,Lucas Cage - 3,Lucas Cage - 3 - General Car Repair,98.00,,,98.00,"Accounts Receivable, Services",Lucas Cage,,3,,,98.00,,,2021-01-28,2021-01-28,Income,Income, +1131801934970350312,2021-01-28,Sales,Lucas Cage - 3,Lucas Cage - 3 - Hardware Supply,2.50,,,2.50,"Accounts Receivable, Services",Lucas Cage,,3,,,2.50,,,2021-01-28,2021-01-28,Income,Income, +1131801934970350312,2021-01-28,Services,Lucas Cage - 3,Lucas Cage - 3 - Lawn Service,40.00,,,40.00,"Accounts Receivable, Sales",Lucas Cage,,3,,,40.00,,,2021-01-28,2021-01-28,Income,Income, +1131801934970350312,2021-01-28,Services,Lucas Cage - 3,Lucas Cage - 3 - Product Delivery,450.00,,,450.00,"Accounts Receivable, Sales",Lucas Cage,,3,,,450.00,,,2021-01-28,2021-01-28,Income,Income, +1131801934970350312,2021-01-28,Accounts Receivable,Lucas Cage - 3,Lucas Cage - 3,590.50,,590.50,,"Sales, Services",Lucas Cage,,3,,,590.50,,,2021-01-28,2021-01-28,Asset,System Receivable Invoice, +1131802355113782011,2021-01-28,Accounts Receivable,Invoice Payment,Invoice Payment,-590.50,,,590.50,Cash on Hand,Lucas Cage,,3,,,-590.50,,,2021-01-28,2021-01-28,Asset,System Receivable Invoice, +1131802355113782011,2021-01-28,Cash on Hand,Invoice Payment,Invoice Payment,590.50,,590.50,,Accounts Receivable,,,,,,590.50,,,2021-01-28,2021-01-28,Asset,Cash and Bank, +1131802918996011960,2021-01-28,Services,Jessica Jones - 4,Jessica Jones - 4 - Lawn Service,30.84,,,30.84,"Accounts Receivable, Sales",Jessica Jones,,4,,,30.84,,,2021-01-28,2021-01-28,Income,Income, +1131802918996011960,2021-01-28,Sales,Jessica Jones - 4,Jessica Jones - 4 - Painting Service,3469.57,,,3469.57,"Accounts Receivable, Services",Jessica Jones,,4,,,3469.57,,,2021-01-28,2021-01-28,Income,Income, +1131802918996011960,2021-01-28,Accounts Receivable,Jessica Jones - 4,Jessica Jones - 4,3500.41,,3500.41,,"Sales, Services",Jessica Jones,,4,,,3500.41,,,2021-01-28,2021-01-28,Asset,System Receivable Invoice, diff --git a/tests/Feature/Import/zoho_contacts.csv b/tests/Feature/Import/zoho_contacts.csv new file mode 100644 index 0000000000..56128b7664 --- /dev/null +++ b/tests/Feature/Import/zoho_contacts.csv @@ -0,0 +1,6 @@ +Created Time,Last Modified Time,Display Name,Company Name,Salutation,First Name,Last Name,Phone,Currency Code,Notes,Website,Status,Credit Limit,Customer Sub Type,Billing Attention,Billing Address,Billing Street2,Billing City,Billing State,Billing Country,Billing Code,Billing Phone,Billing Fax,Shipping Attention,Shipping Address,Shipping Street2,Shipping City,Shipping State,Shipping Country,Shipping Code,Shipping Phone,Shipping Fax,Skype Identity,Facebook,Twitter,Department,Designation,Price List,Payment Terms,Payment Terms Label,Last Sync Time,Owner Name,EmailID,MobilePhone,Customer ID,Customer Name,Contact Type,Customer Address ID,Source,Reference ID,Payment Reminder +2021-01-28 05:14:15,2021-01-28 05:16:02,Avengers,Avengers,,Thor,Odensohn,,USD,,thorodensohn.net,Active,0.000,business,,,,,,,,,,,,,,,,,,,,avengershq,avengershq,,,,0,Due on Receipt,,,thor@midgaurd.org,,2520018000000073005,Avengers,customer,2520018000000073005,1,,true +2021-01-28 05:21:04,2021-01-28 05:21:04,Jessica Jones,Defenders,,,,888-867-5309,USD,,jesssicajonesdetective.com,Active,0.000,business,,,,,,,,,,,,,,,,,,,,jesssicajonesdetective,jesssicajonesdetective,,,,0,Due on Receipt,,,jessica@jones.net,,2520018000000073022,Jessica Jones,customer,2520018000000073022,1,,true +2021-01-28 05:22:15,2021-01-28 05:22:15,Highlander,Highlander,Mr.,Sean,Connory,,USD,,highlander.com,Active,0.000,business,,,,,,,,,,,,,,,,,,,,highlander,highlander,,,,0,Due on Receipt,,,connory@highlander.com,,2520018000000073035,Highlander,customer,2520018000000073035,1,,true +2021-01-28 05:23:44,2021-01-28 05:23:45,Simpsons Baking Co,Simpsons Baking Co,Mrs.,Margery,Simpson,888-567-5309,USD,,simpsonsbaking.com,Active,0.000,business,,,,,,,,,,,,,,,,,,,,simpsonsbaking,simpsonsbaking,,,,30,Net 30,,,marge@simpsonsbaking.com,,2520018000000073048,Simpsons Baking Co,customer,2520018000000073048,1,,true +2021-01-28 05:24:53,2021-01-28 05:24:54,Defenders,Defenders,Mr.,Lucas,Cage,888-867-5309,USD,,cagepowerman.net,Active,0.000,individual,,,,,,,,,,,,,,,,,,,,cagepowerman,cagepowerman,,,,15,Net 15,,,lucas@powerman.com,98754321,2520018000000073061,Defenders,customer,2520018000000073061,1,,true diff --git a/tests/Feature/Import/zoho_invoices.csv b/tests/Feature/Import/zoho_invoices.csv new file mode 100644 index 0000000000..13218dad2b --- /dev/null +++ b/tests/Feature/Import/zoho_invoices.csv @@ -0,0 +1,14 @@ +Invoice Date,Invoice ID,Invoice Number,Estimate Number,Invoice Status,Customer Name,Company Name,Customer ID,Branch ID,Branch Name,Due Date,Expected Payment Date,PurchaseOrder,Template Name,Currency Code,Exchange Rate,Discount Type,Is Discount Before Tax,Entity Discount Percent,Entity Discount Amount,Item Name,Item Desc,Quantity,Usage unit,Item Price,Discount,Discount Amount,Expense Reference ID,Project ID,Project Name,Item Total,SubTotal,Total,Balance,Shipping Charge,Adjustment,Adjustment Description,Round Off,Sales person,Payment Terms,Payment Terms Label,Last Payment Date,Notes,Terms & Conditions,Subject,LateFee Name,LateFee Type,LateFee Rate,LateFee Amount,LateFee Frequency,WriteOff Date,WriteOff Exchange Rate,WriteOff Amount,Recurrence Name,PayPal,Authorize.Net,Google Checkout,Payflow Pro,Stripe,2Checkout,Braintree,Forte,WorldPay,Payments Pro,Square,WePay,Razorpay,GoCardless,Partial Payments,Billing Address,Billing City,Billing State,Billing Country,Billing Code,Billing Fax,Billing Phone,Shipping Address,Shipping City,Shipping State,Shipping Country,Shipping Code,Shipping Fax,Shipping Phone Number +2021-01-28,2520018000000073144,INV-000001,,Draft,Highlander,Highlander,2520018000000073035,,,2021-01-28,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Hardware Supply,Wood Hammer Mallets,6.00,,4.25,0.00,0.000,,,,25.50,489.75,489.75,489.75,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073144,INV-000001,,Draft,Highlander,Highlander,2520018000000073035,,,2021-01-28,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Hardware Supply,Wood Hammer Mallets,1.00,,4.25,0.00,0.000,,,,4.25,489.75,489.75,489.75,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073144,INV-000001,,Draft,Highlander,Highlander,2520018000000073035,,,2021-01-28,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,General Car Repair,Bumper paint touch up,4.00,,45.00,0.00,0.000,,,,180.00,489.75,489.75,489.75,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073144,INV-000001,,Draft,Highlander,Highlander,2520018000000073035,,,2021-01-28,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Website Analysis,Routine SEO site monitoring,2.00,,140.00,0.00,0.000,,,,280.00,489.75,489.75,489.75,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073164,INV-000002,,Draft,Jessica Jones,Defenders,2520018000000073022,,,2021-01-28,,654,Standard Template,USD,1.00,item_level,true,0.00,0.0,Hardware Supply,Wood Hammer Mallets,5.00,,4.25,0.00,0.000,,,,21.25,460.00,460.00,460.00,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,Lawn Service,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073164,INV-000002,,Draft,Jessica Jones,Defenders,2520018000000073022,,,2021-01-28,,654,Standard Template,USD,1.00,item_level,true,0.00,0.0,Hardware Supply,Wood Hammer Mallets,6.00,,4.25,0.00,0.000,,,,25.50,460.00,460.00,460.00,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,Lawn Service,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073164,INV-000002,,Draft,Jessica Jones,Defenders,2520018000000073022,,,2021-01-28,,654,Standard Template,USD,1.00,item_level,true,0.00,0.0,Product Delivery,Trucking Logistics,7.00,,25.00,0.00,0.000,,,,175.00,460.00,460.00,460.00,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,Lawn Service,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073164,INV-000002,,Draft,Jessica Jones,Defenders,2520018000000073022,,,2021-01-28,,654,Standard Template,USD,1.00,item_level,true,0.00,0.0,Hardware Supply,Wood Hammer Mallets,9.00,,4.25,0.00,0.000,,,,38.25,460.00,460.00,460.00,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,Lawn Service,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073164,INV-000002,,Draft,Jessica Jones,Defenders,2520018000000073022,,,2021-01-28,,654,Standard Template,USD,1.00,item_level,true,0.00,0.0,Product Delivery,Trucking Logistics,8.00,,25.00,0.00,0.000,,,,200.00,460.00,460.00,460.00,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,Lawn Service,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073182,INV-000003,,Draft,Simpsons Baking Co,Simpsons Baking Co,2520018000000073048,,,2021-02-27,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,General Car Repair,Bumper paint touch up,1.00,,45.00,0.00,0.000,,,,45.00,390.00,390.00,390.00,0.00,0.00,Adjustment,0.00,,30,Net 30,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073182,INV-000003,,Draft,Simpsons Baking Co,Simpsons Baking Co,2520018000000073048,,,2021-02-27,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Painting Service,25 hours painting,1.00,,25.00,0.00,0.000,,,,25.00,390.00,390.00,390.00,0.00,0.00,Adjustment,0.00,,30,Net 30,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073182,INV-000003,,Draft,Simpsons Baking Co,Simpsons Baking Co,2520018000000073048,,,2021-02-27,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Website Analysis,Routine SEO site monitoring,1.00,,140.00,0.00,0.000,,,,140.00,390.00,390.00,390.00,0.00,0.00,Adjustment,0.00,,30,Net 30,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, +2021-01-28,2520018000000073182,INV-000003,,Draft,Simpsons Baking Co,Simpsons Baking Co,2520018000000073048,,,2021-02-27,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Website Design,New page design,1.00,,180.00,0.00,0.000,,,,180.00,390.00,390.00,390.00,0.00,0.00,Adjustment,0.00,,30,Net 30,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,, diff --git a/webpack.mix.js b/webpack.mix.js index 49aaa0d44c..9f0c809188 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -154,6 +154,7 @@ mix.js("resources/js/app.js", "public/js") "public/js/clients/payments/stripe-fpx.js") mix.copyDirectory('node_modules/card-js/card-js.min.css', 'public/css/card-js.min.css'); +mix.copyDirectory('node_modules/clipboard/dist/clipboard.min.js', 'public/vendor/clipboard.min.js'); mix.sass("resources/sass/app.scss", "public/css") .options({