diff --git a/resources/assets/vue/app.ts b/resources/assets/vue/app.ts index a7706750..36c61747 100644 --- a/resources/assets/vue/app.ts +++ b/resources/assets/vue/app.ts @@ -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( -// 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( + 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', {