Update: Vue 2 to Vue 3 with Typescript, node 14 to node 22, Jenkinsfile, Dockerfile, vapor.yml

This commit is contained in:
Dillon Ngo
2026-05-27 20:59:43 +08:00
parent baa3bb3d4e
commit 9b0746246c
+52 -401
View File
@@ -43,417 +43,68 @@ app.config.globalProperties.route = window.route;
app.config.globalProperties.asset = window.Vapor.asset;
// const modules = import.meta.glob('./**/*.vue', { eager: true });
// // const STORAGE_KEY = 'shippingPortalComponents';
// // const usedComponents = new Set<string>(
// JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]')
// );
// function syncToLocalStorage() {
// localStorage.setItem(STORAGE_KEY, JSON.stringify(Array.from(usedComponents)));
// }
// Object.entries(modules).forEach(([path, module]) => {
// const componentName = path.split('/').pop()?.split('.')[0];
// if (componentName) {
// const original = (module as any).default;
// const wrapped = {
// ...original,
// mounted() {
// usedComponents.add(componentName);
// syncToLocalStorage();
// if (original.mounted) {
// original.mounted.call(this);
// }
// }
// };
// app.component(componentName, wrapped);
// }
// });
// function downloadUsedComponents() {
// const data = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]');
// const blob = new Blob(
// [JSON.stringify(data, null, 2)],
// { type: 'application/json' }
// );
// const url = URL.createObjectURL(blob);
// const a = document.createElement('a');
// a.href = url;
// a.download = 'shipping-portal-components.json';
// a.click();
// URL.revokeObjectURL(url);
// }
// (window as any).downloadUsedComponents = downloadUsedComponents;
// Auto-register components (eager loaded)
const modules = import.meta.glob('./**/*.vue', { eager: true });
const STORAGE_KEY = 'shippingPortalComponents';
const usedComponents = new Set<string>(
JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]')
);
function syncToLocalStorage() {
localStorage.setItem(STORAGE_KEY, JSON.stringify(Array.from(usedComponents)));
}
Object.entries(modules).forEach(([path, module]) => {
const componentName = path.split('/').pop()?.split('.')[0];
if (componentName) {
app.component(componentName, (module as any).default);
const original = (module as any).default;
const wrapped = {
...original,
mounted() {
usedComponents.add(componentName);
syncToLocalStorage();
if (original.mounted) {
original.mounted.call(this);
}
}
};
app.component(componentName, wrapped);
}
});
// Components
// import LoadingComponent from './components/general/elements/LoadingComponent.vue';
// import ModalComponent from './components/general/elements/ModalComponent.vue';
// import LoginFormComponent from './components/accounts/forms/LoginFormComponent.vue';
// import ForgetPasswordFormComponent from './components/accounts/forms/ForgetPasswordFormComponent.vue';
// import RegistrationFormComponent from './components/accounts/forms/RegistrationFormComponent.vue';
// import LogoutComponent from './components/accounts/elements/LogoutComponent.vue';
// import ValidationWrapperComponent from './components/general/forms/ValidationWrapperComponent.vue';
// import ValidationErrorComponent from './components/general/forms/ValidationErrorComponent.vue';
// import ErrorMessageComponent from './components/general/elements/ErrorMessageComponent.vue';
// import ListComponent from './components/general/elements/ListComponent.vue';
// import PaginationComponent from './components/general/elements/PaginationComponent.vue';
// import TransitionComponent from './components/general/elements/TransitionComponent.vue';
// import CustomerProfileSectionComponent from './components/companies/sections/CustomerProfileSectionComponent.vue';
// import DeliveryCustomerProfileSectionComponent from './components/companies/sections/DeliveryCustomerProfileSectionComponent.vue';
// import WarehouseSectionComponent from './components/companies/sections/WarehouseSectionComponent.vue';
// import CustomerProfileComponent from './components/companies/elements/CustomerProfileComponent.vue';
// import QuickOrderComponent from './components/orders/elements/QuickOrderComponent.vue';
// import OnBoardingSectionComponent from './components/companies/sections/OnBoardingSectionComponent.vue';
// import IdentificationVerificationComponent from './components/companies/elements/IdentificationVerificationComponent.vue';
// import AddressVerificationComponent from './components/addresses/elements/AddressVerificationComponent.vue';
// import UnclaimedPackinglistComponent from './components/orders/elements/UnclaimedPackinglistComponent.vue';
// import ProfitModelReportSectionComponent from './components/reports/sections/ProfitModelReportSectionComponent.vue';
// import MonthlySalesReportSectionComponent from './components/reports/sections/MonthlySalesReportSectionComponent.vue';
// import ServiceReportSectionComponent from './components/reports/sections/ServiceReportSectionComponent.vue';
// import DatePickerComponent from './components/general/forms/DatePickerComponent.vue';
// import DatePickerLimitRangeComponent from './components/general/forms/DatePickerLimitRangeComponent.vue';
// import OpenLinkInNewTabComponent from './components/general/elements/OpenLinkInNewTabComponent.vue';
// import AddressFormComponent from './components/addresses/forms/AddressFormComponent.vue';
// import AssignSegmentFormComponent from './components/companies/forms/AssignSegmentFormComponent.vue';
// import ContactFormComponent from './components/companies/forms/ContactFormComponent.vue';
// import DetachSegmentFormComponent from './components/companies/forms/DetachSegmentFormComponent.vue';
// import EInvoiceInfoFormComponent from './components/companies/forms/EInvoiceInfoFormComponent.vue';
// import EInvoiceRequestFormComponent from './components/companies/forms/EInvoiceRequestFormComponent.vue';
// import IdentificationVerificationFormComponent from './components/companies/forms/IdentificationVerificationFormComponent.vue';
// import UpdateCompanyNameFormComponent from './components/companies/forms/UpdateCompanyNameFormComponent.vue';
// import UpdateCreditTermStatusFormComponent from './components/companies/forms/UpdateCreditTermStatusFormComponent.vue';
// import UpdateIdentificationNumberFormComponent from './components/companies/forms/UpdateIdentificationNumberFormComponent.vue';
// import RejectIdentificationVerificationFormComponent from './components/companies/forms/RejectIdentificationVerificationFormComponent.vue';
// import ChangeCustomerCompanyDetailsFormComponent from './components/orders/forms/ChangeCustomerCompanyDetailsFormComponent.vue';
// import ChangeCustomerEmailFormComponent from './components/orders/forms/ChangeCustomerEmailFormComponent.vue';
// import ChangeCustomerContactNumberFormComponent from './components/orders/forms/ChangeCustomerContactNumberFormComponent.vue';
// import ChangeCustomerNameFormComponent from './components/orders/forms/ChangeCustomerNameFormComponent.vue';
// import EInvoiceInfoComponent from './components/companies/elements/EInvoiceInfoComponent.vue';
// import AdminPaymentsBillingSectionComponent from './components/paymentsBilling/sections/AdminPaymentsBillingSectionComponent.vue';
// import AdminPaymentsBillingPollingSectionComponent from './components/paymentsBilling/sections/AdminPaymentsBillingPollingSectionComponent.vue';
// import AdminDisputePaymentsBillingComponent from './components/paymentsBilling/elements/AdminDisputePaymentsBillingComponent.vue';
// import AdminPaymentsBillingWithSearchComponent from './components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue';
// import AdminPaymentsBillingWithSearchPollingComponent from './components/paymentsBilling/elements/AdminPaymentsBillingWithSearchPollingComponent.vue';
// import SingleParentAdminPaymentsBillingComponent from './components/paymentsBilling/elements/SingleParentAdminPaymentsBillingComponent.vue';
// import SingleAdminPaymentsBillingWithStorageComponent from './components/paymentsBilling/elements/SingleAdminPaymentsBillingWithStorageComponent.vue';
// import SingleAdminPaymentsBillingWithoutStorageComponent from './components/paymentsBilling/elements/SingleAdminPaymentsBillingWithoutStorageComponent.vue';
// import CustomerPaymentsBillingWithStorageComponent from './components/paymentsBilling/elements/CustomerPaymentsBillingWithStorageComponent.vue';
// import ApproveShippingInvoiceFormComponent from './components/paymentsBilling/forms/ApproveShippingInvoiceFormComponent.vue';
// import CustomerInvoiceRemarkFormComponent from './components/paymentsBilling/forms/CustomerInvoiceRemarkFormComponent.vue';
// import DeleteDisputeFormComponent from './components/paymentsBilling/forms/DeleteDisputeFormComponent.vue';
// import DeleteGroupPaymentAttemptFormComponent from './components/paymentsBilling/forms/DeleteGroupPaymentAttemptFormComponent.vue';
// import DeleteInvoiceFormComponent from './components/paymentsBilling/forms/DeleteInvoiceFormComponent.vue';
// import DeleteShippingInvoiceFormComponent from './components/paymentsBilling/forms/DeleteShippingInvoiceFormComponent.vue';
// import GroupPaymentFormComponent from './components/paymentsBilling/forms/GroupPaymentFormComponent.vue';
// import InvoiceItemFormComponent from './components/paymentsBilling/forms/InvoiceItemFormComponent.vue';
// import InvoiceItemsFormComponent from './components/paymentsBilling/forms/InvoiceItemsFormComponent.vue';
// import PaymentFormComponent from './components/paymentsBilling/forms/PaymentFormComponent.vue';
// import PaymentVerificationFormComponent from './components/paymentsBilling/forms/PaymentVerificationFormComponent.vue';
// import RegenerateDisputeInvoiceFormComponent from './components/paymentsBilling/forms/RegenerateDisputeInvoiceFormComponent.vue';
// import WaiveInvoiceFormComponent from './components/paymentsBilling/forms/WaiveInvoiceFormComponent.vue';
// import DownloadBillingWithDatesComponent from './components/paymentsBilling/forms/DownloadBillingWithDatesComponent.vue';
// import DownloadParcelSummaryComponent from './components/paymentsBilling/forms/DownloadParcelSummaryComponent.vue';
// import NewServiceAnnouncementComponent from './components/companies/elements/NewServiceAnnouncementComponent.vue';
// import ExportCompanyModuleSummaryFormComponent from './components/reports/forms/ExportCompanyModuleSummaryFormComponent.vue';
// import NotificationSectionComponent from './components/general/elements/NotificationSectionComponent.vue';
// import PaymentVerificationComponent from './components/paymentsBilling/elements/PaymentVerificationComponent.vue';
// import DocumentFileViewerComponent from './components/general/elements/DocumentFileViewerComponent.vue';
// import FulfilmentInterestedFormComponent from './components/companies/elements/FulfilmentInterestedFormComponent.vue';
// import FileInputComponent from './components/general/forms/FileInputComponent.vue';
// import FileUploadComponent from './components/general/forms/FileUploadComponent.vue';
// import RemarkComponent from './components/general/elements/RemarkComponent.vue';
// import GeneralConfirmationFormComponent from './components/general/forms/GeneralConfirmationFormComponent.vue';
// import SelectComponent from './components/general/forms/SelectComponent.vue';
// import SelectableComponent from './components/general/forms/SelectableComponent.vue';
// import RemarkFormComponent from './components/general/forms/RemarkFormComponent.vue';
// import RemarkCommentFormComponent from './components/general/forms/RemarkCommentFormComponent.vue';
// import ReloadConfirmationFormComponent from './components/general/forms/ReloadConfirmationFormComponent.vue';
// import HelpMenuFormComponent from './components/general/forms/HelpMenuFormComponent.vue';
// import DeleteRemarkFormComponent from './components/general/forms/DeleteRemarkFormComponent.vue';
// import ModalFormComponent from './components/general/forms/ModalFormComponent.vue';
// import AnchorLinkComponent from './components/general/elements/AnchorLinkComponent.vue';
// import BearComponent from './components/general/elements/bearComponent.vue';
// import BoxLoadingComponent from './components/general/elements/BoxLoadingComponent.vue';
// import HelpMenuComponent from './components/general/elements/HelpMenuComponent.vue';
// import ListPollingComponent from './components/general/elements/ListPollingComponent.vue';
// import PasswordProtectedDownloadComponent from './components/general/elements/PasswordProtectedDownloadComponent.vue';
// import PdfViewerComponent from './components/general/elements/PdfViewerComponent.vue';
// import RemarkListComponent from './components/general/elements/RemarkListComponent.vue';
// import SearchComponent from './components/general/elements/SearchComponent.vue';
// import CustomerPaymentBillingSectionComponent from './components/companies/sections/CustomerPaymentBillingSectionComponent.vue';
// import PaymentsBillingVariant2Components from './components/paymentsBilling/elements/PaymentsBillingVariant2Components.vue';
// import GroupPaymentsBillingComponents from './components/paymentsBilling/elements/GroupPaymentsBillingComponents.vue';
// import WalletComponent from './components/wallets/elements/WalletComponent.vue';
// import WalletTopUpFormComponent from './components/wallets/forms/WalletTopUpFormComponent.vue';
// import ViewAnnouncementFormComponent from './components/announcements/forms/ViewAnnouncementFormComponent.vue';
// import BillingAddressSectionComponent from './components/addresses/sections/BillingAddressSectionComponent.vue';
// import OrderSectionComponent from './components/orders/sections/OrderSectionComponent.vue';
// import OrderFormComponent from './components/orders/forms/OrderFormComponent.vue';
// import SelectAddressComponent from './components/addresses/elements/SelectAddressComponent.vue';
// import WarehouseAddressFormComponent from './components/addresses/forms/WarehouseAddressFormComponent.vue';
// import OrderProfileV2SectionComponent from './components/orders/sections/OrderProfileV2SectionComponent.vue';
// import OrderPackageV3SectionComponent from './components/orders/sections/OrderPackageV3SectionComponent.vue';
// import OrderPackageReceivedSectionComponent from './components/orders/sections/OrderPackageReceivedSectionComponent.vue';
// import TaxRebateQrCodeFormComponent from './components/orders/forms/TaxRebateQrCodeFormComponent.vue';
// import CustPayBillParentComponent from './components/paymentsBilling/elements/CustPayBillParentComponent.vue';
// import ChangeOrderAddressFormComponent from './components/orders/forms/ChangeOrderAddressFormComponent.vue';
// import ChangeOrderNumberFormComponent from './components/orders/forms/ChangeOrderNumberFormComponent.vue';
// import CreateWarehousePackageListFormComponent from './components/orders/forms/CreateWarehousePackageListFormComponent.vue';
// import DownloadReceivePaymentDepositEntryReportComponent from './components/companies/elements/DownloadReceivePaymentDepositEntryReportComponent.vue';
// import DownloadCustomersDataReportComponent from './components/companies/elements/DownloadCustomersDataReportComponent.vue';
// import DownloadUploadSalesInvoiceReportComponent from './components/companies/elements/DownloadUploadSalesInvoiceReportComponent.vue';
// import DownloadUnpaidSalesInvoiceReportComponent from './components/companies/elements/DownloadUnpaidSalesInvoiceReportComponent.vue';
// import DownloadReceivePaymentForOrderReportComponent from './components/companies/elements/DownloadReceivePaymentForOrderReportComponent.vue';
// import UploadComponent from './components/orders/elements/UploadComponent.vue';
// import OrderComponent from './components/orders/elements/OrderComponent.vue';
// import ListOrderComponent from './components/orders/elements/ListOrderComponent.vue';
// import OrderPackageSummaryComponent from './components/orders/elements/OrderPackageSummaryComponent.vue';
// import CancelOrderFormComponent from './components/orders/forms/CancelOrderFormComponent.vue';
// import RestoreOrderFormComponent from './components/orders/forms/RestoreOrderFormComponent.vue';
// import PaymentsBillingComponents from './components/paymentsBilling/elements/PaymentsBillingComponents.vue';
// import CustomerActivityReportSectionComponent from './components/reports/sections/CustomerActivityReportSectionComponent.vue';
// import SearchCustomerByEmailComponent from './components/reports/sections/SearchCustomerByEmailComponent.vue';
// import CustomerReportSectionComponent from './components/reports/sections/CustomerReportSectionComponent.vue';
// import CompanyComponent from './components/companies/elements/CompanyComponent.vue';
// import UserCompanyComponent from './components/companies/elements/UserCompanyComponent.vue';
// import OrderSearchSectionComponent from './components/orders/sections/OrderSearchSectionComponent.vue';
// import WarehouseListExportComponent from './components/companies/elements/WarehouseListExportComponent.vue';
// import WarehousePackingListComponent from './components/containers/elements/WarehousePackingListComponent.vue';
// import ParcelComponent from './components/orders/elements/ParcelComponent.vue';
// import DeleteParcelFormComponent from './components/paymentsBilling/forms/DeleteParcelFormComponent.vue';
// import ContainerSearchComponent from './components/containers/elements/ContainerSearchComponent.vue';
// import CreateLoadContainerFormComponent from './components/containers/forms/CreateLoadContainerFormComponent.vue';
// import ContainerComponent from './components/containers/elements/ContainerComponent.vue';
// import PackingListSectionComponent from './components/containers/sections/PackingListSectionComponent.vue';
// import SegmentCompanyComponent from './components/segments/elements/SegmentCompanyComponent.vue';
// import AdminFeedbackCustomerSectionComponent from './components/feedback/sections/AdminFeedbackCustomerSectionComponent.vue';
// import GenerateFeedbackLinkFormComponent from './components/feedback/forms/GenerateFeedbackLinkFormComponent.vue';
// import QuestionAnswerComponent from './components/feedback/elements/QuestionAnswerComponent.vue';
// import UserProfileComponent from './components/settings/elements/UserProfileComponent.vue';
// import UploadDebtorExcelComponent from './components/containers/elements/UploadDebtorExcelComponent.vue';
// import PermitsReminderComponent from './components/settings/elements/PermitsReminderComponent.vue';
// import UserFormComponent from './components/user/form/UserFormComponent.vue';
// import ListAdminComponent from './components/user/elements/ListAdminComponent.vue';
// import BasePriceFormComponent from './components/settings/forms/BasePriceFormComponent.vue';
// import ListBasePriceSectionComponent from './components/settings/elements/ListBasePriceSectionComponent.vue';
// import EditSegmentPriceFormComponent from './components/settings/forms/EditSegmentPriceFormComponent.vue';
// import SegmentFormComponent from './components/settings/forms/SegmentFormComponent.vue';
// import SegmentComponent from './components/settings/elements/SegmentComponent.vue';
// import AnnouncementFormComponent from './components/settings/forms/AnnouncementFormComponent.vue';
// import AnnouncementListComponent from './components/announcements/elements/AnnouncementListComponent.vue';
// import DeleteAnnouncementFormComponent from './components/settings/forms/DeleteAnnouncementFormComponent.vue';
// import DetachAnnouncementFromSegmentFormComponent from './components/announcements/forms/DetachAnnouncementFromSegmentFormComponent.vue';
// import AssignAnnouncementToSegmentFormComponent from './components/announcements/forms/AssignAnnouncementToSegmentFormComponent.vue';
// import PostcodeSectionComponent from './components/settings/elements/PostcodeSectionComponent.vue';
// import StatesChargesComponent from './components/settings/elements/StatesChargesComponent.vue';
// import EditStateChargesFormComponent from './components/settings/forms/EditStateChargesFormComponent.vue';
// import WarehouseChargesComponent from './components/settings/elements/WarehouseChargesComponent.vue';
// import EditWarehouseChargesFormComponent from './components/settings/forms/EditWarehouseChargesFormComponent.vue';
// import PaymentAttemptLimitFormComponent from './components/settings/forms/PaymentAttemptLimitFormComponent.vue';
// import DisplayWarehouseAddressComponent from './components/addresses/elements/DisplayWarehouseAddressComponent.vue';
// import AddPermitsReminderFormComponent from './components/settings/forms/AddPermitsReminderFormComponent.vue';
// import PermitsReminderItemComponent from './components/settings/elements/PermitsReminderItemComponent.vue';
// import UserComponent from './components/user/elements/UserComponent.vue';
// import ListPostcodeComponent from './components/settings/elements/ListPostcodeComponent.vue';
// import ChangeAdminRoleTypeFormComponent from './components/orders/forms/ChangeAdminRoleTypeFormComponent.vue';
// import DeleteUserFormComponent from './components/user/form/DeleteUserFormComponent.vue';
// import DeclarePostcodeAreaFormComponent from './components/containers/forms/DeclarePostcodeAreaFormComponent.vue';
function downloadUsedComponents() {
const data = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]');
const blob = new Blob(
[JSON.stringify(data, null, 2)],
{ type: 'application/json' }
);
// app.component('LoadingComponent', LoadingComponent);
// app.component('ModalComponent', ModalComponent);
// app.component('LoginFormComponent', LoginFormComponent);
// app.component('ForgetPasswordFormComponent', ForgetPasswordFormComponent);
// app.component('RegistrationFormComponent', RegistrationFormComponent);
// app.component('LogoutComponent', LogoutComponent);
// app.component('ValidationWrapperComponent', ValidationWrapperComponent);
// app.component('ValidationErrorComponent', ValidationErrorComponent);
// app.component('ErrorMessageComponent', ErrorMessageComponent);
// app.component('ListComponent', ListComponent);
// app.component('PaginationComponent', PaginationComponent);
// app.component('TransitionComponent', TransitionComponent);
// app.component('CustomerProfileSectionComponent', CustomerProfileSectionComponent);
// app.component('DeliveryCustomerProfileSectionComponent', DeliveryCustomerProfileSectionComponent);
// app.component('WarehouseSectionComponent', WarehouseSectionComponent);
// app.component('CustomerProfileComponent', CustomerProfileComponent);
// app.component('QuickOrderComponent', QuickOrderComponent);
// app.component('OnBoardingSectionComponent', OnBoardingSectionComponent);
// app.component('IdentificationVerificationComponent', IdentificationVerificationComponent);
// app.component('AddressVerificationComponent', AddressVerificationComponent);
// app.component('UnclaimedPackinglistComponent', UnclaimedPackinglistComponent);
// app.component('ProfitModelReportSectionComponent', ProfitModelReportSectionComponent);
// app.component('MonthlySalesReportSectionComponent', MonthlySalesReportSectionComponent);
// app.component('ServiceReportSectionComponent', ServiceReportSectionComponent);
// app.component('DatePickerComponent', DatePickerComponent);
// app.component('DatePickerLimitRangeComponent', DatePickerLimitRangeComponent);
// app.component('OpenLinkInNewTabComponent', OpenLinkInNewTabComponent);
// app.component('AddressFormComponent', AddressFormComponent);
// app.component('AssignSegmentFormComponent', AssignSegmentFormComponent);
// app.component('ContactFormComponent', ContactFormComponent);
// app.component('DetachSegmentFormComponent', DetachSegmentFormComponent);
// app.component('EInvoiceInfoFormComponent', EInvoiceInfoFormComponent);
// app.component('EInvoiceRequestFormComponent', EInvoiceRequestFormComponent);
// app.component('IdentificationVerificationFormComponent', IdentificationVerificationFormComponent);
// app.component('UpdateCompanyNameFormComponent', UpdateCompanyNameFormComponent);
// app.component('UpdateCreditTermStatusFormComponent', UpdateCreditTermStatusFormComponent);
// app.component('UpdateIdentificationNumberFormComponent', UpdateIdentificationNumberFormComponent);
// app.component('RejectIdentificationVerificationFormComponent', RejectIdentificationVerificationFormComponent);
// app.component('ChangeCustomerCompanyDetailsFormComponent', ChangeCustomerCompanyDetailsFormComponent);
// app.component('ChangeCustomerEmailFormComponent', ChangeCustomerEmailFormComponent);
// app.component('ChangeCustomerContactNumberFormComponent', ChangeCustomerContactNumberFormComponent);
// app.component('ChangeCustomerNameFormComponent', ChangeCustomerNameFormComponent);
// app.component('EInvoiceInfoComponent', EInvoiceInfoComponent);
// app.component('AdminPaymentsBillingSectionComponent', AdminPaymentsBillingSectionComponent);
// app.component('AdminPaymentsBillingPollingSectionComponent', AdminPaymentsBillingPollingSectionComponent);
// app.component('AdminDisputePaymentsBillingComponent', AdminDisputePaymentsBillingComponent);
// app.component('AdminPaymentsBillingWithSearchComponent', AdminPaymentsBillingWithSearchComponent);
// app.component('AdminPaymentsBillingWithSearchPollingComponent', AdminPaymentsBillingWithSearchPollingComponent);
// app.component('SingleParentAdminPaymentsBillingComponent', SingleParentAdminPaymentsBillingComponent);
// app.component('SingleAdminPaymentsBillingWithStorageComponent', SingleAdminPaymentsBillingWithStorageComponent);
// app.component('SingleAdminPaymentsBillingWithoutStorageComponent', SingleAdminPaymentsBillingWithoutStorageComponent);
// app.component('CustomerPaymentsBillingWithStorageComponent', CustomerPaymentsBillingWithStorageComponent);
// app.component('ApproveShippingInvoiceFormComponent', ApproveShippingInvoiceFormComponent);
// app.component('CustomerInvoiceRemarkFormComponent', CustomerInvoiceRemarkFormComponent);
// app.component('DeleteDisputeFormComponent', DeleteDisputeFormComponent);
// app.component('DeleteGroupPaymentAttemptFormComponent', DeleteGroupPaymentAttemptFormComponent);
// app.component('DeleteInvoiceFormComponent', DeleteInvoiceFormComponent);
// app.component('DeleteShippingInvoiceFormComponent', DeleteShippingInvoiceFormComponent);
// app.component('GroupPaymentFormComponent', GroupPaymentFormComponent);
// app.component('InvoiceItemFormComponent', InvoiceItemFormComponent);
// app.component('InvoiceItemsFormComponent', InvoiceItemsFormComponent);
// app.component('PaymentFormComponent', PaymentFormComponent);
// app.component('PaymentVerificationFormComponent', PaymentVerificationFormComponent);
// app.component('RegenerateDisputeInvoiceFormComponent', RegenerateDisputeInvoiceFormComponent);
// app.component('WaiveInvoiceFormComponent', WaiveInvoiceFormComponent);
// app.component('DownloadBillingWithDatesComponent', DownloadBillingWithDatesComponent);
// app.component('DownloadParcelSummaryComponent', DownloadParcelSummaryComponent);
// app.component('NewServiceAnnouncementComponent', NewServiceAnnouncementComponent);
// app.component('ExportCompanyModuleSummaryFormComponent', ExportCompanyModuleSummaryFormComponent);
// app.component('NotificationSectionComponent', NotificationSectionComponent);
// app.component('PaymentVerificationComponent', PaymentVerificationComponent);
// app.component('DocumentFileViewerComponent', DocumentFileViewerComponent);
// app.component('FulfilmentInterestedFormComponent', FulfilmentInterestedFormComponent);
// app.component('FileInputComponent', FileInputComponent);
// app.component('FileUploadComponent', FileUploadComponent);
// app.component('RemarkComponent', RemarkComponent);
// app.component('GeneralConfirmationFormComponent', GeneralConfirmationFormComponent);
// app.component('SelectComponent', SelectComponent);
// app.component('SelectableComponent', SelectableComponent);
// app.component('RemarkFormComponent', RemarkFormComponent);
// app.component('RemarkCommentFormComponent', RemarkCommentFormComponent);
// app.component('ReloadConfirmationFormComponent', ReloadConfirmationFormComponent);
// app.component('HelpMenuFormComponent', HelpMenuFormComponent);
// app.component('DeleteRemarkFormComponent', DeleteRemarkFormComponent);
// app.component('ModalFormComponent', ModalFormComponent);
// app.component('AnchorLinkComponent', AnchorLinkComponent);
// app.component('BearComponent', BearComponent);
// app.component('BoxLoadingComponent', BoxLoadingComponent);
// app.component('HelpMenuComponent', HelpMenuComponent);
// app.component('ListPollingComponent', ListPollingComponent);
// app.component('PasswordProtectedDownloadComponent', PasswordProtectedDownloadComponent);
// app.component('PdfViewerComponent', PdfViewerComponent);
// app.component('RemarkListComponent', RemarkListComponent);
// app.component('SearchComponent', SearchComponent);
// app.component('CustomerPaymentBillingSectionComponent', CustomerPaymentBillingSectionComponent);
// app.component('PaymentsBillingVariant2Components', PaymentsBillingVariant2Components);
// app.component('GroupPaymentsBillingComponents', GroupPaymentsBillingComponents);
// app.component('WalletComponent', WalletComponent);
// app.component('WalletTopUpFormComponent', WalletTopUpFormComponent);
// app.component('ViewAnnouncementFormComponent', ViewAnnouncementFormComponent);
// app.component('BillingAddressSectionComponent', BillingAddressSectionComponent);
// app.component('OrderSectionComponent', OrderSectionComponent);
// app.component('OrderFormComponent', OrderFormComponent);
// app.component('SelectAddressComponent', SelectAddressComponent);
// app.component('WarehouseAddressFormComponent', WarehouseAddressFormComponent);
// app.component('OrderProfileV2SectionComponent', OrderProfileV2SectionComponent);
// app.component('OrderPackageV3SectionComponent', OrderPackageV3SectionComponent);
// app.component('OrderPackageReceivedSectionComponent', OrderPackageReceivedSectionComponent);
// app.component('TaxRebateQrCodeFormComponent', TaxRebateQrCodeFormComponent);
// app.component('CustPayBillParentComponent', CustPayBillParentComponent);
// app.component('ChangeOrderAddressFormComponent', ChangeOrderAddressFormComponent);
// app.component('ChangeOrderNumberFormComponent', ChangeOrderNumberFormComponent);
// app.component('CreateWarehousePackageListFormComponent', CreateWarehousePackageListFormComponent);
// app.component('DownloadReceivePaymentDepositEntryReportComponent', DownloadReceivePaymentDepositEntryReportComponent);
// app.component('DownloadCustomersDataReportComponent', DownloadCustomersDataReportComponent);
// app.component('DownloadUploadSalesInvoiceReportComponent', DownloadUploadSalesInvoiceReportComponent);
// app.component('DownloadUnpaidSalesInvoiceReportComponent', DownloadUnpaidSalesInvoiceReportComponent);
// app.component('DownloadReceivePaymentForOrderReportComponent', DownloadReceivePaymentForOrderReportComponent);
// app.component('UploadComponent', UploadComponent);
// app.component('OrderComponent', OrderComponent);
// app.component('ListOrderComponent', ListOrderComponent);
// app.component('OrderPackageSummaryComponent', OrderPackageSummaryComponent);
// app.component('CancelOrderFormComponent', CancelOrderFormComponent);
// app.component('RestoreOrderFormComponent', RestoreOrderFormComponent);
// app.component('PaymentsBillingComponents', PaymentsBillingComponents);
// app.component('CustomerActivityReportSectionComponent', CustomerActivityReportSectionComponent);
// app.component('SearchCustomerByEmailComponent', SearchCustomerByEmailComponent);
// app.component('CustomerReportSectionComponent', CustomerReportSectionComponent);
// app.component('CompanyComponent', CompanyComponent);
// app.component('UserCompanyComponent', UserCompanyComponent);
// app.component('OrderSearchSectionComponent', OrderSearchSectionComponent);
// app.component('WarehouseListExportComponent', WarehouseListExportComponent);
// app.component('WarehousePackingListComponent', WarehousePackingListComponent);
// app.component('ParcelComponent', ParcelComponent);
// app.component('DeleteParcelFormComponent', DeleteParcelFormComponent);
// app.component('ContainerSearchComponent', ContainerSearchComponent);
// app.component('CreateLoadContainerFormComponent', CreateLoadContainerFormComponent);
// app.component('ContainerComponent', ContainerComponent);
// app.component('PackingListSectionComponent', PackingListSectionComponent);
// app.component('SegmentCompanyComponent', SegmentCompanyComponent);
// app.component('AdminFeedbackCustomerSectionComponent', AdminFeedbackCustomerSectionComponent);
// app.component('GenerateFeedbackLinkFormComponent', GenerateFeedbackLinkFormComponent);
// app.component('QuestionAnswerComponent', QuestionAnswerComponent);
// app.component('UserProfileComponent', UserProfileComponent);
// app.component('UploadDebtorExcelComponent', UploadDebtorExcelComponent);
// app.component('PermitsReminderComponent', PermitsReminderComponent);
// app.component('UserFormComponent', UserFormComponent);
// app.component('ListAdminComponent', ListAdminComponent);
// app.component('BasePriceFormComponent', BasePriceFormComponent);
// app.component('ListBasePriceSectionComponent', ListBasePriceSectionComponent);
// app.component('EditSegmentPriceFormComponent', EditSegmentPriceFormComponent);
// app.component('SegmentFormComponent', SegmentFormComponent);
// app.component('SegmentComponent', SegmentComponent);
// app.component('AnnouncementFormComponent', AnnouncementFormComponent);
// app.component('AnnouncementListComponent', AnnouncementListComponent);
// app.component('DeleteAnnouncementFormComponent', DeleteAnnouncementFormComponent);
// app.component('DetachAnnouncementFromSegmentFormComponent', DetachAnnouncementFromSegmentFormComponent);
// app.component('AssignAnnouncementToSegmentFormComponent', AssignAnnouncementToSegmentFormComponent);
// app.component('PostcodeSectionComponent', PostcodeSectionComponent);
// app.component('StatesChargesComponent', StatesChargesComponent);
// app.component('EditStateChargesFormComponent', EditStateChargesFormComponent);
// app.component('WarehouseChargesComponent', WarehouseChargesComponent);
// app.component('EditWarehouseChargesFormComponent', EditWarehouseChargesFormComponent);
// app.component('PaymentAttemptLimitFormComponent', PaymentAttemptLimitFormComponent);
// app.component('DisplayWarehouseAddressComponent', DisplayWarehouseAddressComponent);
// app.component('AddPermitsReminderFormComponent', AddPermitsReminderFormComponent);
// app.component('PermitsReminderItemComponent', PermitsReminderItemComponent);
// app.component('UserComponent', UserComponent);
// app.component('ListPostcodeComponent', ListPostcodeComponent);
// app.component('ChangeAdminRoleTypeFormComponent', ChangeAdminRoleTypeFormComponent);
// app.component('DeleteUserFormComponent', DeleteUserFormComponent);
// app.component('DeclarePostcodeAreaFormComponent', DeclarePostcodeAreaFormComponent);
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'shipping-portal-components.json';
a.click();
URL.revokeObjectURL(url);
}
(window as any).downloadUsedComponents = downloadUsedComponents;
// Auto-register components (eager loaded)
// const modules = import.meta.glob('./**/*.vue', { eager: true });
// Object.entries(modules).forEach(([path, module]) => {
// const componentName = path.split('/').pop()?.split('.')[0];
// if (componentName) {
// app.component(componentName, (module as any).default);
// }
// });
// Register tooltip directive
app.directive('tooltip', {