tickera-angular-components 0.0.1-dev.54 → 0.0.1-dev.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"tickera-angular-components.mjs","sources":["../../../projects/tickera-angular-components/src/lib/i18n/transloco-loader.ts","../../../projects/tickera-angular-components/src/lib/i18n/language.utils.ts","../../../projects/tickera-angular-components/src/lib/config/tickera-components.config.ts","../../../projects/tickera-angular-components/src/lib/constants/alerts.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/admin-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/cities-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/countries-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/customers-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/performances-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/price-zones-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-categories-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-tags-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-types-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/products-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/shows-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/states-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/venues-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/buttons.ts","../../../projects/tickera-angular-components/src/lib/constants/form-error-messages.ts","../../../projects/tickera-angular-components/src/lib/constants/form-fields.ts","../../../projects/tickera-angular-components/src/lib/constants/select-options/customers.ts","../../../projects/tickera-angular-components/src/lib/constants/select-options/orders.ts","../../../projects/tickera-angular-components/src/lib/enums/file-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-applicability.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-discount-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/corporate-bonds/corporate-bond-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/performances/performance-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/performances/performance-ticket-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/room-maps/room-map-element-orientation.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/room-maps/room-map-element-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/gift-bonds/gift-bond-status.enum.ts","../../../projects/tickera-angular-components/src/lib/constants/ticket-map.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/draw-rounded-rect.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-exit-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-hallway-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-production-area-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/color.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/draw-chair-icon.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/draw-happy-face.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/draw-wheel-chair-icon.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/number-to-letter.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/performance-ticket-icon.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/seat-block-ticket-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/table-ticket-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/ticket-map.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-seat-block-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-stage-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-stair-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-table-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-unavailable-space-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-zone-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/constants/konva-shapes.ts","../../../projects/tickera-angular-components/src/lib/constants/shows/show-type-colors.ts","../../../projects/tickera-angular-components/src/lib/types/orders/order-item-type.enum.ts","../../../projects/tickera-angular-components/src/lib/types/orders/order-status.enum.ts","../../../projects/tickera-angular-components/src/lib/types/shows/show.type.ts","../../../projects/tickera-angular-components/src/lib/interfaces/ticket-selection/selected-discount-card-type.interface.ts","../../../projects/tickera-angular-components/src/lib/helpers/get-formatted-customer.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/parse-json-to-form-data.ts","../../../projects/tickera-angular-components/src/lib/helpers/transform-image-to-file.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/format-cities-response-to-select.helper.ts","../../../projects/tickera-angular-components/src/lib/validators/date-validators.validator.ts","../../../projects/tickera-angular-components/src/lib/validators/must-match.validator.ts","../../../projects/tickera-angular-components/src/lib/services/api.service.ts","../../../projects/tickera-angular-components/src/lib/services/toast.service.ts","../../../projects/tickera-angular-components/src/lib/services/delete-confirmation.service.ts","../../../projects/tickera-angular-components/src/lib/services/change-password-form.service.ts","../../../projects/tickera-angular-components/src/lib/services/date.service.ts","../../../projects/tickera-angular-components/src/lib/services/admin.service.ts","../../../projects/tickera-angular-components/src/lib/services/cities.service.ts","../../../projects/tickera-angular-components/src/lib/services/country.service.ts","../../../projects/tickera-angular-components/src/lib/services/states.service.ts","../../../projects/tickera-angular-components/src/lib/services/performance.service.ts","../../../projects/tickera-angular-components/src/lib/services/performances-list-events.service.ts","../../../projects/tickera-angular-components/src/lib/services/show.service.ts","../../../projects/tickera-angular-components/src/lib/services/customer.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone-event.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone-form-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-category.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-tag.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-type.service.ts","../../../projects/tickera-angular-components/src/lib/services/product.service.ts","../../../projects/tickera-angular-components/src/lib/services/base-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/feedback-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/performance-booking-data.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection-details.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection-discount.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection-totals.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-map-zoom.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/confirmation-order-modal.service.ts","../../../projects/tickera-angular-components/src/lib/interceptors/auth.interceptor.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-button/app-button.component.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-button/app-button.component.html","../../../projects/tickera-angular-components/src/lib/components/buttons/app-link-button/app-link-button.component.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-link-button/app-link-button.component.html","../../../projects/tickera-angular-components/src/lib/components/feedback/app-alert/app-alert.component.ts","../../../projects/tickera-angular-components/src/lib/components/feedback/app-alert/app-alert.component.html","../../../projects/tickera-angular-components/src/lib/components/modals/app-modal/app-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/modals/app-modal/app-modal.component.html","../../../projects/tickera-angular-components/src/lib/components/modals/feedback-modal/feedback-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/modals/feedback-modal/feedback-modal.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-input/form-input.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-input/form-input.component.html","../../../projects/tickera-angular-components/src/lib/components/feedback/delete-confirmation/delete-confirmation.component.ts","../../../projects/tickera-angular-components/src/lib/components/feedback/delete-confirmation/delete-confirmation.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/app-badge/app-badge.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/app-badge/app-badge.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/audit-information/audit-information.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/audit-information/audit-information.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/dynamic-table/dynamic-table.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/dynamic-table/dynamic-table.component.html","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card/show-card.component.ts","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card/show-card.component.html","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card-skeleton/show-card-skeleton.component.ts","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card-skeleton/show-card-skeleton.component.html","../../../projects/tickera-angular-components/src/lib/components/navigation/language-switcher/language-switcher.component.ts","../../../projects/tickera-angular-components/src/lib/components/navigation/language-switcher/language-switcher.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-select/form-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-select/form-select.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-textarea/form-textarea.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-textarea/form-textarea.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-editor/form-editor.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-editor/form-editor.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/color-picker/color-picker.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/color-picker/color-picker.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/date-input/date-input.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/date-input/date-input.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/toggle-switch/toggle-switch.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/toggle-switch/toggle-switch.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload-preview/file-upload-preview.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload-preview/file-upload-preview.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload/file-upload.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload/file-upload.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/async-select/async-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/async-select/async-select.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/change-password-form/change-password-form.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/change-password-form/change-password-form.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/admin-select/admin-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/admin-select/admin-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/city-select/city-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/city-select/city-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/country-select/country-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/country-select/country-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/state-select/state-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/state-select/state-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/customer-select/customer-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/customer-select/customer-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-select/performance-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-select/performance-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-multi-select/performance-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-multi-select/performance-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-select/product-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-select/product-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-multi-select/product-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-multi-select/product-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-select/show-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-select/show-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-multi-select/show-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-multi-select/show-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/price-zone-select/price-zone-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/price-zone-select/price-zone-select.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/day-selector-grid/day-selector-grid.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/day-selector-grid/day-selector-grid.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card/performance-card.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card/performance-card.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card-list/performance-card-list.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card-list/performance-card-list.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-stepper/performance-stepper.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-stepper/performance-stepper.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/shows-filter/shows-filter.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/shows-filter/shows-filter.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-item/zone-price-item.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-item/zone-price-item.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-list/zone-price-list.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-list/zone-price-list.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget/ticket-map-widget.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget/ticket-map-widget.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget-header/ticket-map-widget-header.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget-header/ticket-map-widget-header.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-zoom-controls/ticket-map-zoom-controls.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-zoom-controls/ticket-map-zoom-controls.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/performance-ticket-map/performance-ticket-map.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/performance-ticket-map/performance-ticket-map.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-price-zones/ticket-map-price-zones.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-price-zones/ticket-map-price-zones.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection-item/ticket-map-product-selection-item.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection-item/ticket-map-product-selection-item.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection/ticket-map-product-selection.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection/ticket-map-product-selection.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-totals/ticket-map-totals.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-totals/ticket-map-totals.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-wrapper/ticket-map-wrapper.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-wrapper/ticket-map-wrapper.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-empty-summary/seat-selection-empty-summary.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-empty-summary/seat-selection-empty-summary.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary-item/seat-selection-summary-item.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary-item/seat-selection-summary-item.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary/seat-selection-summary.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary/seat-selection-summary.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/confirmation-order-modal/confirmation-order-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/confirmation-order-modal/confirmation-order-modal.component.html","../../../projects/tickera-angular-components/src/public-api.ts","../../../projects/tickera-angular-components/src/tickera-angular-components.ts"],"sourcesContent":["import { TranslocoLoader } from '@jsverse/transloco';\nimport { Observable, from } from 'rxjs';\n\nimport es from './es.json';\nimport en from './en.json';\n\nconst translations: Record<string, Record<string, unknown>> = {\n es,\n en,\n};\n\nexport class TickeraTranslocoLoader implements TranslocoLoader {\n getTranslation(lang: string): Observable<Record<string, unknown>> {\n const translation = translations[lang] || translations['es'];\n return from(Promise.resolve(translation));\n }\n}\n","const STORAGE_KEY = 'tickera_lang';\nconst DEFAULT_LANG = 'es';\nconst AVAILABLE_LANGS = ['es', 'en'];\n\nexport function getStoredLanguage(): string {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored && AVAILABLE_LANGS.includes(stored)) {\n return stored;\n }\n } catch {\n // localStorage not available\n }\n return '';\n}\n\nexport function setStoredLanguage(lang: string): void {\n try {\n localStorage.setItem(STORAGE_KEY, lang);\n } catch {\n // localStorage not available\n }\n}\n\nexport function getBrowserLanguage(): string {\n const nav = typeof navigator !== 'undefined' ? navigator : null;\n if (!nav) return DEFAULT_LANG;\n\n // Check navigator.language and navigator.languages\n const browserLangs = nav.languages || [nav.language];\n\n for (const lang of browserLangs) {\n if (!lang) continue;\n\n // Exact match (e.g., \"es\", \"en\")\n const shortLang = lang.split('-')[0].toLowerCase();\n if (AVAILABLE_LANGS.includes(shortLang)) {\n return shortLang;\n }\n }\n\n return DEFAULT_LANG;\n}\n\nexport function resolveLanguage(): string {\n // 1. Check localStorage first\n const stored = getStoredLanguage();\n if (stored) return stored;\n\n // 2. Detect from browser\n return getBrowserLanguage();\n}\n","import {\n InjectionToken,\n EnvironmentProviders,\n makeEnvironmentProviders,\n LOCALE_ID,\n} from '@angular/core';\nimport { provideTransloco, TranslocoConfig } from '@jsverse/transloco';\nimport { TickeraTranslocoLoader } from '../i18n/transloco-loader';\nimport { resolveLanguage } from '../i18n/language.utils';\nimport { DATE_PIPE_DEFAULT_OPTIONS } from '@angular/common';\nimport { TickeraComponentsConfig } from '../interfaces/tickera-components-config.interface';\n\nexport const TICKERA_COMPONENTS_CONFIG = new InjectionToken<TickeraComponentsConfig>(\n 'TICKERA_COMPONENTS_CONFIG',\n);\n\nexport function provideTickeraComponents(config: TickeraComponentsConfig): EnvironmentProviders {\n const defaultLang = config.defaultLang || 'es';\n const availableLangs = config.availableLangs || ['es', 'en'];\n const detectedLang = resolveLanguage();\n\n return makeEnvironmentProviders([\n { provide: TICKERA_COMPONENTS_CONFIG, useValue: config },\n { provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: { timezone: 'America/Bogota' } },\n ...provideTransloco({\n config: {\n defaultLang: detectedLang,\n availableLangs,\n reRenderOnLangChange: true,\n fallbackLang: defaultLang,\n } as TranslocoConfig,\n loader: TickeraTranslocoLoader,\n }),\n ]);\n}\n","export const ALERT_ICONS = {\n success: 'ri-check-line',\n error: 'ri-error-warning-line',\n warning: 'ri-alert-line',\n info: 'ri-info-line',\n};\n","export const ADMIN_API_ROUTES = {\n FIND_ALL: '/admins',\n CREATE: '/admins/auth/register',\n updateOne: (id: number) => `/admins/${id}`,\n deleteOne: (id: number) => `/admins/${id}`,\n};\n","export const CITY_API_ENDPOINTS = {\n findAll: '/cities',\n create: '/cities',\n findById: (id: number) => `/cities/${id}`,\n update: (id: number) => `/cities/${id}`,\n delete: (id: number) => `/cities/${id}`,\n};\n","export const COUNTRY_API_ENDPOINTS = {\n findAll: '/countries',\n create: '/countries',\n findById: (id: number) => `/countries/${id}`,\n update: (id: number) => `/countries/${id}`,\n delete: (id: number) => `/countries/${id}`,\n};\n","export const CUSTOMERS_API_ROUTES = {\n findAll: '/customers',\n create: '/customers/auth/register',\n findOne: (id: number) => `/customers/${id}`,\n update: (id: number) => `/customers/${id}`,\n delete: (id: number) => `/customers/${id}`,\n};\n","export const PERFORMANCES_API_ROUTES = {\n findAll: '/performances',\n create: '/performances',\n createBulk: '/performances/bulk',\n findOneById: (id: number) => `/performances/${id}`,\n findOneBookingData: (id: number) => `/performances/${id}/booking-data`,\n update: (id: number) => `/performances/${id}`,\n delete: (id: number) => `/performances/${id}`,\n deleteMany: '/performances/bulk',\n cancel: (id: number) => `/performances/${id}/cancel`,\n publishInventory: (id: number) => `/performances/${id}/publish-inventory`,\n reserve: (id: number) => `/performances/${id}/reserve`,\n ticketQrToken: (uuid: string) => `/performances/tickets/${uuid}/qr-token`,\n getAvailableDays: '/performances/available-days',\n publicAvailablePerformances: '/public/performances/daily',\n};\n","export const PRICE_ZONES_API_ROUTES = {\n FIND_ALL: '/price-zones',\n CREATE: '/price-zones',\n findOneById: (id: number) => `/price-zones/${id}`,\n update: (id: number) => `/price-zones/${id}`,\n delete: (id: number) => `/price-zones/${id}`,\n updateElements: (id: number) => `/price-zones/${id}/elements`,\n duplicate: (id: number) => `/price-zones/${id}/duplicate`,\n};\n","export const PRODUCT_CATEGORIES_API_ROUTES = {\n FIND_ALL: '/product-categories',\n CREATE: '/product-categories',\n findById: (id: number) => `/product-categories/${id}`,\n update: (id: number) => `/product-categories/${id}`,\n delete: (id: number) => `/product-categories/${id}`,\n};\n","export const PRODUCT_TAGS_API_ROUTES = {\n FIND_ALL: '/product-tags',\n CREATE: '/product-tags',\n findById: (id: number) => `/product-tags/${id}`,\n update: (id: number) => `/product-tags/${id}`,\n delete: (id: number) => `/product-tags/${id}`,\n};\n","export const PRODUCT_TYPES_API_ROUTES = {\n FIND_ALL: '/product-types',\n CREATE: '/product-types',\n findById: (id: number) => `/product-types/${id}`,\n update: (id: number) => `/product-types/${id}`,\n delete: (id: number) => `/product-types/${id}`,\n};\n","export const PRODUCTS_API_ROUTES = {\n FIND_ALL: '/products',\n CREATE: '/products',\n findOneById: (id: number) => `/products/${id}`,\n update: (id: number) => `/products/${id}`,\n delete: (id: number) => `/products/${id}`,\n fetchImages: (id: number) => `/products/${id}/images`,\n uploadImages: (id: number) => `/products/${id}/images`,\n deleteOneImage: (productId: number, imageId: number) =>\n `/products/${productId}/images/${imageId}`,\n};\n","export const SHOWS_API_ROUTES = {\n findAll: '/shows',\n create: '/shows',\n findOneById: (id: number) => `/shows/${id}`,\n update: (id: number) => `/shows/${id}`,\n delete: (id: number) => `/shows/${id}`,\n getImages: (id: number) => `/shows/${id}/images`,\n uploadGallery: (id: number) => `/shows/${id}/images`,\n deleteOneImage: (showId: number, imageId: number) => `/shows/${showId}/images/${imageId}`,\n publicAvailablePerformances: '/public/shows/available',\n};\n","export const STATE_API_ENDPOINTS = {\n findAll: '/states',\n create: '/states',\n findById: (id: number) => `/states/${id}`,\n update: (id: number) => `/states/${id}`,\n delete: (id: number) => `/states/${id}`,\n};\n","export const VENUES_API_ROUTES = {\n findAll: '/venues',\n create: '/venues',\n findOneById: (id: number) => '/venues/' + id,\n update: (id: number) => '/venues/' + id,\n delete: (id: number) => '/venues/' + id,\n getGallery: (id: number) => '/venues/' + id + '/images',\n uploadGallery: (id: number) => '/venues/' + id + '/images',\n deleteOneImage: (venueId: number, imageId: number) => '/venues/' + venueId + '/images/' + imageId,\n};\n","export const BUTTON_VARIANT_CLASSES: Record<string, string> = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n tertiary: 'btn-tertiary',\n success: 'btn-success',\n transparent: 'btn-transparent',\n};\n\nexport const BASE_BUTTON_CLASSES = 'btn';\n\nexport const BUTTON_SIZES_CLASSES: Record<string, string> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n};\n","export const FORM_ERROR_MESSAGES: Record<string, string> = {\n required: 'Este campo es requerido',\n minlength: 'Debe tener al menos caracteres',\n maxlength: 'Debe tener al menos caracteres',\n pattern: 'El formato no es válido',\n email: 'El formato no es válido',\n mustMatch: 'Las contraseñas no coinciden',\n matDatepickerMin: 'La fecha no puede ser anterior a la fecha mínima permitida',\n matDatepickerMax: 'La fecha no puede ser posterior a la fecha máxima permitida',\n};\n","export const BASE_INPUT_CLASSES = [\n 'block',\n 'w-full',\n 'rounded-md',\n 'px-3',\n 'py-1.5',\n 'text-base',\n 'text-gray-900',\n 'outline-1',\n '-outline-offset-1',\n 'outline-gray-300',\n 'placeholder:text-gray-400',\n 'focus:outline-2',\n 'focus:-outline-offset-2',\n 'focus:outline-indigo-600',\n 'sm:text-sm/6',\n].join(' ');\n\nexport const ERROR_INPUT_CLASSES = BASE_INPUT_CLASSES + ' outline-red-500 dark:outline-red-500';\n","import { SelectOption } from '../../interfaces';\n\nexport const DOCUMENT_TYPES_OPTIONS: SelectOption[] = [\n { value: 'CC', label: 'documentType.cc' },\n { value: 'CE', label: 'documentType.ce' },\n { value: 'NIT', label: 'documentType.nit' },\n { value: 'PP', label: 'documentType.pp' },\n { value: 'TI', label: 'documentType.ti' },\n];\n","import { SelectOption } from '../../interfaces';\n\nexport const PAYMENT_METHODS_OPTIONS: SelectOption[] = [\n { value: 'credit_card', label: 'paymentMethod.creditCard' },\n { value: 'debit_card', label: 'paymentMethod.debitCard' },\n { value: 'pse', label: 'paymentMethod.pse' },\n { value: 'cash', label: 'paymentMethod.cash' },\n { value: 'bank_transfer', label: 'paymentMethod.bankTransfer' },\n];\n","export enum FileType {\n IMAGE = 'image',\n PDF = 'pdf',\n EXCEL = 'excel',\n WORD = 'word',\n TEXT = 'text',\n DEFAULT = 'default',\n}\n","export enum CouponApplicability {\n GENERAL = 'GENERAL',\n CUSTOMER_EMAIL = 'CUSTOMER_EMAIL',\n MEMBERSHIP_TYPE = 'MEMBERSHIP_TYPE',\n SHOWS = 'SHOWS',\n PERFORMANCES = 'PERFORMANCES',\n}\n","export enum CouponDiscountType {\n PERCENTAGE = 'PERCENTAGE',\n FIXED = 'FIXED',\n}\n","export enum CouponStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n EXPIRED = 'EXPIRED',\n CONSUMED = 'CONSUMED',\n}\n","export enum CorporateBondStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n EXPIRED = 'EXPIRED',\n CONSUMED = 'CONSUMED',\n}\n","export enum PerformanceStatus {\n SCHEDULED = 'scheduled',\n OPEN = 'open',\n CLOSED = 'closed',\n CANCELLED = 'cancelled',\n COMPLETED = 'completed',\n POSTPONED = 'postponed',\n}\n","export enum PerformanceTicketStatus {\n AVAILABLE = 'available',\n RESERVED = 'reserved',\n SOLD = 'sold',\n BLOCKED = 'blocked',\n}\n","export enum RoomMapElementOrientation {\n TOP = 'top',\n RIGHT = 'right',\n BOTTOM = 'bottom',\n LEFT = 'left',\n CENTER = 'center',\n}\n","export enum RoomMapElementType {\n SEAT_BLOCK = 'seat_block',\n TABLE = 'table',\n ZONE = 'zone',\n EXIT = 'exit',\n STAGE = 'stage',\n PRODUCTION_AREA = 'production_area',\n UNAVAILABLE_SPACE = 'unavailable_space',\n STAIR = 'stair',\n HALLWAY = 'hallway',\n}\n","export enum GiftBondStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n EXPIRED = 'EXPIRED',\n CONSUMED = 'CONSUMED',\n}\n","import { PerformanceTicketStatus, RoomMapElementType } from '../enums';\n\nexport const TICKET_MAP_LAST_TICKETS_LIMIT = 10;\n\nexport const TICKET_ELEMENT_TYPES = [\n RoomMapElementType.SEAT_BLOCK,\n RoomMapElementType.TABLE,\n RoomMapElementType.ZONE,\n];\n\nexport const DEFAULT_STAGE_CONFIG: { [x: string]: any } = {\n width: 800,\n height: 600,\n draggable: true,\n scaleX: 1,\n scaleY: 1,\n x: 0,\n y: 0,\n};\n\nexport const TICKET_STATUS_COLORS: Record<PerformanceTicketStatus, string> = {\n [PerformanceTicketStatus.AVAILABLE]: '#22C55E',\n [PerformanceTicketStatus.RESERVED]: '#EAB308',\n [PerformanceTicketStatus.SOLD]: '#EF4444',\n [PerformanceTicketStatus.BLOCKED]: '#6B7280',\n};\n\nexport const TICKET_STATUS_FILLS: Record<PerformanceTicketStatus, string> = {\n [PerformanceTicketStatus.AVAILABLE]: '#DCFCE7',\n [PerformanceTicketStatus.RESERVED]: '#FEF08A',\n [PerformanceTicketStatus.SOLD]: '#FECACA',\n [PerformanceTicketStatus.BLOCKED]: '#E5E7EB',\n};\n\nexport const TICKET_STATUS_LABELS: Record<PerformanceTicketStatus, string> = {\n [PerformanceTicketStatus.AVAILABLE]: 'Disponible',\n [PerformanceTicketStatus.RESERVED]: 'Reservado',\n [PerformanceTicketStatus.SOLD]: 'Vendido',\n [PerformanceTicketStatus.BLOCKED]: 'Bloqueado',\n};\n\nexport const TICKET_MAP_GRID_SIZE = 30;\n\nexport const TICKET_MAP_TITLE_HEIGHT = 30;\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\n\nexport function drawRoundedRect(\n con: Context,\n shape: Shape,\n x: number,\n y: number,\n width: number,\n height: number,\n cornerRadius: number,\n) {\n con.beginPath();\n con.moveTo(x + cornerRadius, y);\n con.lineTo(x + width - cornerRadius, y);\n con.quadraticCurveTo(x + width, y, x + width, y + cornerRadius);\n con.lineTo(x + width, y + height - cornerRadius);\n con.quadraticCurveTo(x + width, y + height, x + width - cornerRadius, y + height);\n con.lineTo(x + cornerRadius, y + height);\n con.quadraticCurveTo(x, y + height, x, y + height - cornerRadius);\n con.lineTo(x, y + cornerRadius);\n con.quadraticCurveTo(x, y, x + cornerRadius, y);\n con.closePath();\n con.fillStrokeShape(shape);\n}\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateExitScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🚪' + (shape?.attrs?.element_name || 'Salida');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateHallwayScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🚶🏽' + (shape?.attrs?.element_name || 'Pasillo');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateProductionAreaScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🛠️' + (shape?.attrs?.element_name || 'Área de producción');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","export function tintColor(hex: string, amount: number = 0.7): string {\n const cleanHex = hex.replace('#', '');\n const r = parseInt(cleanHex.substring(0, 2), 16);\n const g = parseInt(cleanHex.substring(2, 4), 16);\n const b = parseInt(cleanHex.substring(4, 6), 16);\n\n const tintedR = Math.round(r + (255 - r) * amount);\n const tintedG = Math.round(g + (255 - g) * amount);\n const tintedB = Math.round(b + (255 - b) * amount);\n\n return `#${tintedR.toString(16).padStart(2, '0')}${tintedG.toString(16).padStart(2, '0')}${tintedB.toString(16).padStart(2, '0')}`;\n}\n","import type { Context } from 'konva/lib/Context';\n\nexport const drawChairIcon = (con: Context, cx: number, cy: number, size: number) => {\n con.beginPath();\n\n const backWidth = size * 0.7;\n const backHeight = size * 0.6;\n const backX = cx - backWidth / 2;\n const backY = cy - backHeight / 2 - size * 0.1;\n\n con.moveTo(backX + backWidth * 0.2, backY);\n con.lineTo(backX + backWidth * 0.8, backY);\n con.quadraticCurveTo(backX + backWidth, backY, backX + backWidth, backY + backHeight * 0.2);\n con.lineTo(backX + backWidth, backY + backHeight * 0.8);\n con.quadraticCurveTo(\n backX + backWidth,\n backY + backHeight,\n backX + backWidth * 0.8,\n backY + backHeight,\n );\n con.lineTo(backX + backWidth * 0.2, backY + backHeight);\n con.quadraticCurveTo(backX, backY + backHeight, backX, backY + backHeight * 0.8);\n con.lineTo(backX, backY + backHeight * 0.2);\n con.quadraticCurveTo(backX, backY, backX + backWidth * 0.2, backY);\n\n const chairSeatWidth = size * 0.8;\n const chairSeatHeight = size * 0.3;\n const seatX = cx - chairSeatWidth / 2;\n const seatY = cy + backHeight * 0.3;\n\n con.moveTo(seatX, seatY);\n con.lineTo(seatX + chairSeatWidth, seatY);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.closePath();\n\n const legWidth = size * 0.1;\n const legHeight = size * 0.2;\n\n con.moveTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight + legHeight);\n\n con.moveTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight + legHeight);\n\n con.closePath();\n};\n","import type { Context } from 'konva/lib/Context';\n\nexport const drawHappyFace = (con: Context, cx: number, cy: number, size: number) => {\n const radius = size * 0.45;\n\n con.beginPath();\n con.arc(cx, cy, radius, 0, Math.PI * 2);\n con.closePath();\n con.fillStyle = '#DCFCE7';\n con.fill();\n con.strokeStyle = '#166534';\n con.lineWidth = 2;\n con.stroke();\n\n const eyeR = radius * 0.12;\n const eyeOffX = radius * 0.3;\n const eyeOffY = radius * 0.15;\n con.beginPath();\n con.arc(cx - eyeOffX, cy - eyeOffY, eyeR, 0, Math.PI * 2);\n con.closePath();\n con.fillStyle = '#166534';\n con.fill();\n con.beginPath();\n con.arc(cx + eyeOffX, cy - eyeOffY, eyeR, 0, Math.PI * 2);\n con.closePath();\n con.fill();\n\n con.beginPath();\n con.moveTo(cx - radius * 0.35, cy + radius * 0.05);\n con.quadraticCurveTo(cx, cy + radius * 0.4, cx + radius * 0.35, cy + radius * 0.05);\n con.strokeStyle = '#166534';\n con.lineWidth = 2;\n con.stroke();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\n\nexport const drawWheelchairIcon = (\n con: Context,\n shape: Shape,\n cx: number,\n cy: number,\n size: number,\n fillColor = '#DBEAFE',\n strokeColor = '#60A5FA',\n) => {\n const reactSize = size * 0.75;\n const x = cx - size / 2 + size * 0.1;\n const y = cy - size / 2 + size * 0.1833;\n\n const origFill = shape.getAttr('fill');\n const origStroke = shape.getAttr('stroke');\n shape.setAttr('fill', fillColor);\n shape.setAttr('stroke', strokeColor);\n\n con.beginPath();\n con.rect(x, y, reactSize, reactSize);\n con.closePath();\n con.fillStrokeShape(shape);\n\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n\n con.font = `${size * 0.6}px serif`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText('♿', cx + size * 0.0233, cy + size * 0.1417);\n};\n","export const numberToLetter = (num: number): string => {\n if (num < 0) return 'A';\n let result = '';\n let n = num;\n while (n >= 0) {\n result = String.fromCharCode(65 + (n % 26)) + result;\n n = Math.floor(n / 26) - 1;\n }\n return result;\n};\n","import { RoomMapElementType } from '../../enums';\nimport { PerformanceTicket } from '../../interfaces';\n\nexport const getItemTypeIcon = (ticket: PerformanceTicket): string => {\n if ([RoomMapElementType.SEAT_BLOCK, RoomMapElementType.TABLE].includes(ticket.element_type)) {\n return ticket.is_accessible ? '♿️' : '🪑';\n }\n\n if (ticket.element_type === RoomMapElementType.ZONE) {\n return '🗺️';\n }\n\n return '🛒';\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport {\n TICKET_MAP_GRID_SIZE,\n TICKET_STATUS_COLORS,\n TICKET_STATUS_FILLS,\n} from '../../constants/ticket-map';\nimport { numberToLetter } from './number-to-letter.helper';\nimport { drawChairIcon } from './draw-chair-icon.helper';\nimport { drawWheelchairIcon } from './draw-wheel-chair-icon.helper';\nimport { drawHappyFace } from './draw-happy-face.helper';\nimport { PerformanceTicketStatus } from '../../enums';\n\nexport const generateSeatBlockTicketScene = (\n con: Context,\n shape: Shape,\n numerationConfig?: {\n start_row_letter: string;\n row_order: 'TOP_TO_BOTTOM' | 'BOTTOM_TO_TOP';\n start_column_number: number;\n column_order: 'LEFT_TO_RIGHT' | 'RIGHT_TO_LEFT';\n },\n ticketStatusMap?: Map<string, PerformanceTicketStatus>,\n) => {\n const w = shape.width();\n const h = shape.height();\n const seatSize = TICKET_MAP_GRID_SIZE;\n const chairScale = 0.8;\n\n const elementName = shape?.attrs?.element_name || 'Asientos';\n const showElementName = shape?.attrs?.show_element_name ?? true;\n const seatsData = shape?.attrs?.seats as\n Array<Array<{ is_accessible: boolean; is_non_existent: boolean } | undefined>> | undefined;\n const hasTitle = !!(elementName && showElementName);\n const chairsStartY = hasTitle ? TICKET_MAP_GRID_SIZE : 0;\n\n const cols = Math.floor(w / seatSize);\n const rows = Math.floor((h - chairsStartY) / seatSize);\n\n const config = numerationConfig || {\n start_row_letter: 'A',\n row_order: 'TOP_TO_BOTTOM' as const,\n start_column_number: 1,\n column_order: 'LEFT_TO_RIGHT' as const,\n };\n\n const startRowLetter = config?.start_row_letter?.toUpperCase() || 'A';\n const startRowNum = startRowLetter.charCodeAt(0) - 65;\n\n const origFill = shape.getAttr('fill');\n const origStroke = shape.getAttr('stroke');\n\n if (hasTitle) {\n con.save();\n\n const textFont = `bold 10px Arial`;\n con.font = textFont;\n const textWidth = con.measureText(elementName).width;\n const paddingX = 10;\n const containerHeight = 18;\n const containerWidth = textWidth + paddingX * 2;\n const containerX = (w - containerWidth) / 2;\n const containerY = (TICKET_MAP_GRID_SIZE - containerHeight) / 2;\n const lineY = TICKET_MAP_GRID_SIZE;\n\n const strokeColor = shape.getAttr('stroke') || '#999';\n\n con.beginPath();\n con.moveTo(0, lineY);\n con.lineTo(w, lineY);\n con.strokeStyle = strokeColor;\n con.lineWidth = 1;\n con.stroke();\n\n con.beginPath();\n con.moveTo(containerX + 4, containerY);\n con.lineTo(containerX + containerWidth - 4, containerY);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY,\n containerX + containerWidth,\n containerY + 4,\n );\n con.lineTo(containerX + containerWidth, containerY + containerHeight - 4);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY + containerHeight,\n containerX + containerWidth - 4,\n containerY + containerHeight,\n );\n con.lineTo(containerX + 4, containerY + containerHeight);\n con.quadraticCurveTo(\n containerX,\n containerY + containerHeight,\n containerX,\n containerY + containerHeight - 4,\n );\n con.lineTo(containerX, containerY + 4);\n con.quadraticCurveTo(containerX, containerY, containerX + 4, containerY);\n con.closePath();\n con.fillStrokeShape(shape);\n\n con.font = textFont;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(elementName, w / 2, containerY + containerHeight / 2);\n\n con.restore();\n }\n\n for (let x = 0; x < w; x += seatSize) {\n for (let y = chairsStartY; y < h; y += seatSize) {\n const colIndex = Math.floor(x / seatSize);\n const rowIndex = Math.floor((y - chairsStartY) / seatSize);\n\n let actualRowIndex = rowIndex;\n if (config.row_order === 'BOTTOM_TO_TOP') {\n actualRowIndex = rows - 1 - rowIndex;\n }\n\n let actualColIndex = colIndex;\n if (config.column_order === 'RIGHT_TO_LEFT') {\n actualColIndex = cols - 1 - colIndex;\n }\n\n const rowLetter = numberToLetter(startRowNum + actualRowIndex);\n const colNumber = Number(config.start_column_number) + Number(actualColIndex);\n const seatNumber = `${rowLetter}${colNumber}`;\n const centerX = x + seatSize / 2 + 1;\n const centerY = y + seatSize / 2 - 2;\n const size = seatSize * chairScale;\n\n const seatState = seatsData?.[rowIndex]?.[colIndex];\n if (seatState?.is_non_existent) continue;\n\n con.save();\n\n const selectedNumerations: Set<string> | undefined = shape.getAttr('selectedNumerations');\n const isSelected = selectedNumerations?.has(seatNumber);\n\n const ticketStatus = ticketStatusMap?.get(seatNumber);\n const isLocked = ticketStatus != null && ticketStatus !== PerformanceTicketStatus.AVAILABLE;\n\n if (isSelected) {\n drawHappyFace(con, x + seatSize / 2, y + seatSize / 2, size);\n } else if (isLocked && seatState?.is_accessible) {\n drawWheelchairIcon(\n con,\n shape,\n centerX,\n centerY,\n size,\n TICKET_STATUS_FILLS[ticketStatus!],\n TICKET_STATUS_COLORS[ticketStatus!],\n );\n } else if (isLocked) {\n shape.setAttr('fill', TICKET_STATUS_FILLS[ticketStatus!]);\n shape.setAttr('stroke', TICKET_STATUS_COLORS[ticketStatus!]);\n drawChairIcon(con, centerX, centerY, size);\n con.fillStrokeShape(shape);\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n con.fillStyle = '#333333';\n con.font = `${size * 0.3}px Arial`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(seatNumber, centerX, centerY - 1);\n } else if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, centerX, centerY, size);\n } else {\n drawChairIcon(con, centerX, centerY, size);\n con.fillStrokeShape(shape);\n\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n\n con.fillStyle = '#333333';\n con.font = `${size * 0.3}px Arial`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(seatNumber, centerX, centerY - 1);\n }\n\n con.restore();\n }\n }\n\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { TICKET_STATUS_COLORS, TICKET_STATUS_FILLS } from '../../constants/ticket-map';\nimport { drawHappyFace } from './draw-happy-face.helper';\nimport { drawWheelchairIcon } from './draw-wheel-chair-icon.helper';\nimport { PerformanceTicketStatus } from '../../enums';\nimport { RoomMapSeatState } from '../../interfaces';\n\nexport const generateTableTicketScene = (\n con: Context,\n shape: Shape,\n chairTicketStatuses?: PerformanceTicketStatus[],\n tableSeats?: RoomMapSeatState[][],\n) => {\n const w = shape.width();\n const h = shape.height();\n\n const fillColor = shape.fill();\n const strokeColor = shape.stroke();\n const totalCapacity: number = shape?.attrs?.total_capacity ?? 0;\n const zoneText: string = shape?.attrs?.element_name || 'Mesa';\n\n const cx = w / 2;\n const cy = h / 2;\n\n const chairRadius = Math.min(w, h) * 0.1;\n const gap = chairRadius * 0.4;\n const tableRadius = Math.min(w, h) / 2 - chairRadius * 2 - gap;\n\n con.save();\n\n if (totalCapacity > 0) {\n const orbitRadius = tableRadius + gap + chairRadius;\n const selectedNumerations: Set<string> | undefined = shape.getAttr('selectedNumerations');\n\n for (let i = 0; i < totalCapacity; i++) {\n const seatState = tableSeats?.[0]?.[i];\n if (seatState?.is_non_existent) {\n continue;\n }\n\n const seatKey = `S${i + 1}`;\n const isSelected = selectedNumerations?.has(seatKey);\n\n const angle = (2 * Math.PI * i) / totalCapacity - Math.PI / 2;\n const scx = cx + orbitRadius * Math.cos(angle);\n const scy = cy + orbitRadius * Math.sin(angle);\n\n const chairStatus = chairTicketStatuses?.[i];\n const isLocked = chairStatus != null && chairStatus !== PerformanceTicketStatus.AVAILABLE;\n\n if (isSelected) {\n drawHappyFace(con, scx, scy, chairRadius * 2);\n } else if (isLocked && seatState?.is_accessible) {\n drawWheelchairIcon(\n con,\n shape,\n scx,\n scy,\n chairRadius * 2,\n TICKET_STATUS_FILLS[chairStatus!],\n TICKET_STATUS_COLORS[chairStatus!],\n );\n } else if (isLocked) {\n const origFill = shape.getAttr('fill');\n const origStroke = shape.getAttr('stroke');\n shape.setAttr('fill', TICKET_STATUS_FILLS[PerformanceTicketStatus.BLOCKED]);\n shape.setAttr('stroke', TICKET_STATUS_COLORS[PerformanceTicketStatus.BLOCKED]);\n con.beginPath();\n con.arc(scx, scy, chairRadius, 0, Math.PI * 2);\n con.closePath();\n con.lineWidth = Math.max(1, chairRadius * 0.15);\n con.stroke();\n con.fillStrokeShape(shape);\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n } else if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, scx, scy, chairRadius * 2);\n } else {\n con.beginPath();\n con.arc(scx, scy, chairRadius, 0, Math.PI * 2);\n con.closePath();\n\n con.lineWidth = Math.max(1, chairRadius * 0.15);\n con.stroke();\n con.fillStrokeShape(shape);\n }\n }\n }\n\n con.beginPath();\n con.arc(cx, cy, tableRadius, 0, Math.PI * 2);\n con.closePath();\n con.fillStrokeShape(shape);\n\n const fontSize = tableRadius * 0.45;\n con.font = `${fontSize}px Arial`;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(zoneText, cx, cy);\n\n con.restore();\n};\n","import { TICKET_MAP_GRID_SIZE, TICKET_MAP_TITLE_HEIGHT } from '../../constants';\nimport { KONVA_SHAPE_MAPPINGS } from '../../constants/konva-shapes';\nimport { PerformanceTicketStatus, RoomMapElementType } from '../../enums';\nimport {\n ElementRenderData,\n NumerationConfig,\n PerformanceTicket,\n RoomMapElementTemplate,\n TicketMapSeatPosition,\n TicketMapTableChairPosition,\n} from '../../interfaces';\nimport { tintColor } from './color.helper';\nimport { numberToLetter } from './number-to-letter.helper';\nimport { generateSeatBlockTicketScene } from './seat-block-ticket-scene.helper';\nimport { generateTableTicketScene } from './table-ticket-scene.helper';\n\nfunction buildSeatLabel(\n rowIndex: number,\n colIndex: number,\n rows: number,\n cols: number,\n config: NumerationConfig,\n): string {\n let actualRowIndex = rowIndex;\n if (config.row_order === 'BOTTOM_TO_TOP') {\n actualRowIndex = rows - 1 - rowIndex;\n }\n\n let actualColIndex = colIndex;\n if (config.column_order === 'RIGHT_TO_LEFT') {\n actualColIndex = cols - 1 - colIndex;\n }\n\n const startRowNum = (config.start_row_letter?.toUpperCase() || 'A').charCodeAt(0) - 65;\n const rowLetter = numberToLetter(startRowNum + actualRowIndex);\n const colNumber = Number(config.start_column_number) + Number(actualColIndex);\n return `${rowLetter}${colNumber}`;\n}\n\nfunction buildSeatPositions(element: RoomMapElementTemplate): TicketMapSeatPosition[][] {\n const config = element.numeration_config || {\n start_row_letter: 'A',\n row_order: 'TOP_TO_BOTTOM' as const,\n start_column_number: 1,\n column_order: 'LEFT_TO_RIGHT' as const,\n };\n\n const w = element.konva_shape?.config?.width || 300;\n const h = element.konva_shape?.config?.height || 300;\n const hasTitle = !!(element.element_name && element.show_element_name !== false);\n const chairsStartY = hasTitle ? TICKET_MAP_TITLE_HEIGHT : 0;\n const cols = Math.floor(w / TICKET_MAP_GRID_SIZE);\n const rows = Math.floor((h - chairsStartY) / TICKET_MAP_GRID_SIZE);\n\n const positions: TicketMapSeatPosition[][] = [];\n\n for (let rowIndex = 0; rowIndex < rows; rowIndex++) {\n const row: TicketMapSeatPosition[] = [];\n for (let colIndex = 0; colIndex < cols; colIndex++) {\n const seatLabel = buildSeatLabel(rowIndex, colIndex, rows, cols, config);\n\n const seatState = element.seats?.[rowIndex]?.[colIndex];\n if (seatState?.is_non_existent) {\n row.push({ rowIndex, colIndex, seatLabel });\n continue;\n }\n\n row.push({ rowIndex, colIndex, seatLabel });\n }\n positions.push(row);\n }\n\n return positions;\n}\n\nfunction buildChairPositions(element: RoomMapElementTemplate): TicketMapTableChairPosition[] {\n const w = element.konva_shape?.config?.width || 150;\n const h = element.konva_shape?.config?.height || 150;\n const totalCapacity = element.total_capacity || 0;\n\n const chairRadius = Math.min(w, h) * 0.1;\n const gap = chairRadius * 0.4;\n const tableRadius = Math.min(w, h) / 2 - chairRadius * 2 - gap;\n const cx = w / 2;\n const cy = h / 2;\n\n const positions: TicketMapTableChairPosition[] = [];\n\n if (totalCapacity > 0) {\n const orbitRadius = tableRadius + gap + chairRadius;\n\n for (let i = 0; i < totalCapacity; i++) {\n const angle = (2 * Math.PI * i) / totalCapacity - Math.PI / 2;\n const scx = cx + orbitRadius * Math.cos(angle);\n const scy = cy + orbitRadius * Math.sin(angle);\n\n positions.push({ index: i, angle, x: scx, y: scy });\n }\n }\n\n return positions;\n}\n\nexport function processElementsToRenderData(\n elements: RoomMapElementTemplate[],\n tickets: PerformanceTicket[],\n priceZones?: { id: number; color: string }[],\n): ElementRenderData[] {\n const ticketByElement = new Map<number, PerformanceTicket[]>();\n for (const ticket of tickets) {\n const existing = ticketByElement.get(ticket.room_map_element_id) || [];\n existing.push(ticket);\n ticketByElement.set(ticket.room_map_element_id, existing);\n }\n\n const result: ElementRenderData[] = [];\n\n for (const element of elements) {\n if (element.id == null) continue;\n\n const elementTickets = ticketByElement.get(element.id) || [];\n const elementBaseConfig = KONVA_SHAPE_MAPPINGS[element.type];\n\n let overrideFill: string | undefined;\n let overrideStroke: string | undefined;\n\n if (element.price_zone_id != null && priceZones) {\n const priceZone = priceZones.find((pz) => pz.id === element.price_zone_id);\n if (priceZone?.color) {\n overrideStroke = priceZone.color;\n overrideFill = tintColor(priceZone.color);\n }\n }\n\n let shapeConfig: Record<string, any> = {\n ...element?.konva_shape?.config,\n draggable: false,\n ...(overrideFill ? { fill: overrideFill } : {}),\n ...(overrideStroke ? { stroke: overrideStroke } : {}),\n element_name: element.element_name || element.name,\n show_element_name: element.show_element_name ?? true,\n total_capacity: element.total_capacity,\n };\n\n const ticketByNumeration = new Map<string, PerformanceTicket>();\n for (const ticket of elementTickets) {\n if (ticket.seat_numeration != null) {\n ticketByNumeration.set(ticket.seat_numeration, ticket);\n }\n }\n\n let seatPositions: TicketMapSeatPosition[][] | undefined;\n let chairPositions: TicketMapTableChairPosition[] | undefined;\n\n if (element.type === RoomMapElementType.SEAT_BLOCK) {\n seatPositions = buildSeatPositions(element);\n\n const ticketStatusMap = new Map<string, PerformanceTicketStatus>();\n for (const [numeration, ticket] of ticketByNumeration) {\n ticketStatusMap.set(numeration, ticket.status);\n }\n\n shapeConfig = {\n ...shapeConfig,\n name: String(element.id),\n sceneFunc: (con: any, shape: any) => {\n generateSeatBlockTicketScene(con, shape, element.numeration_config, ticketStatusMap);\n },\n seats: element.seats,\n };\n }\n\n if (element.type === RoomMapElementType.TABLE) {\n chairPositions = buildChairPositions(element);\n const chairStatuses: PerformanceTicketStatus[] = [];\n\n for (let i = 0; i < (element.total_capacity || 0); i++) {\n const key = `S${i + 1}`;\n const ticket = ticketByNumeration.get(key);\n chairStatuses.push(ticket?.status ?? PerformanceTicketStatus.AVAILABLE);\n }\n\n shapeConfig = {\n ...shapeConfig,\n name: String(element.id),\n sceneFunc: (con: any, shape: any) => {\n generateTableTicketScene(con, shape, chairStatuses, element.seats);\n },\n seats: element.seats,\n };\n }\n\n if (![RoomMapElementType.SEAT_BLOCK, RoomMapElementType.TABLE].includes(element.type)) {\n const defaultSceneFunc = elementBaseConfig?.config?.sceneFunc;\n if (defaultSceneFunc && !shapeConfig['sceneFunc']) {\n shapeConfig['sceneFunc'] = defaultSceneFunc;\n }\n }\n\n let elementName = element.name ?? '';\n if (!!element.element_name) {\n elementName += `: ${element.element_name}`;\n }\n\n result.push({\n elementId: element.id,\n hallFloorId: element.hall_floor_id ?? null,\n type: element.type,\n shapeConfig,\n tickets: elementTickets,\n ticketByNumeration,\n elementName,\n seatPositions,\n chairPositions,\n zoneCapacity: element.total_capacity,\n });\n }\n\n return result;\n}\n\nexport function findTicketAtPosition(\n renderData: ElementRenderData,\n relX: number,\n relY: number,\n): PerformanceTicket | null {\n if (renderData.type === RoomMapElementType.SEAT_BLOCK && renderData.seatPositions) {\n const config = renderData.shapeConfig;\n const w = config['width'] || 300;\n const hasTitle = !!(renderData.elementName && config['show_element_name'] !== false);\n const chairsStartY = hasTitle ? TICKET_MAP_TITLE_HEIGHT : 0;\n\n const col = Math.floor(relX / TICKET_MAP_GRID_SIZE);\n const row = Math.floor((relY - chairsStartY) / TICKET_MAP_GRID_SIZE);\n\n if (\n col < 0 ||\n row < 0 ||\n row >= renderData.seatPositions.length ||\n col >= (renderData.seatPositions[0]?.length || 0)\n ) {\n return null;\n }\n\n const seat = renderData.seatPositions[row]?.[col];\n if (!seat) return null;\n\n const seatState = (renderData.shapeConfig['seats'] as any)?.[row]?.[col];\n if (seatState?.is_non_existent) return null;\n\n return renderData.ticketByNumeration.get(seat.seatLabel) || null;\n }\n\n if (renderData.type === RoomMapElementType.TABLE && renderData.chairPositions) {\n for (const chair of renderData.chairPositions) {\n const seatState = (renderData.shapeConfig['seats'] as any)?.[0]?.[chair.index];\n if (seatState?.is_non_existent) continue;\n\n const dx = relX - chair.x;\n const dy = relY - chair.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n const w = renderData.shapeConfig['width'] || 150;\n const h = renderData.shapeConfig['height'] || 150;\n const chairRadius = Math.min(w, h) * 0.1;\n\n if (distance <= chairRadius + 5) {\n const key = `S${chair.index + 1}`;\n return renderData.ticketByNumeration.get(key) || null;\n }\n }\n return null;\n }\n\n if (renderData.type === RoomMapElementType.ZONE) {\n for (const ticket of renderData.ticketByNumeration.values()) {\n return ticket;\n }\n return renderData.tickets[0] || null;\n }\n\n return null;\n}\n\nexport function findElementAtPosition(\n renderDataList: ElementRenderData[],\n stageX: number,\n stageY: number,\n): { element: ElementRenderData; relX: number; relY: number } | null {\n for (let i = renderDataList.length - 1; i >= 0; i--) {\n const el = renderDataList[i];\n const cfg = el.shapeConfig;\n const ex = cfg['x'] || 0;\n const ey = cfg['y'] || 0;\n const ew = cfg['width'] || 0;\n const eh = cfg['height'] || 0;\n const rotation = cfg['rotation'] || 0;\n\n if (rotation) {\n const rad = rotation * (Math.PI / 180);\n const cos = Math.cos(-rad);\n const sin = Math.sin(-rad);\n const dx = stageX - ex;\n const dy = stageY - ey;\n const localX = dx * cos - dy * sin;\n const localY = dx * sin + dy * cos;\n\n if (localX >= 0 && localX <= ew && localY >= 0 && localY <= eh) {\n return { element: el, relX: localX, relY: localY };\n }\n } else {\n if (stageX >= ex && stageX <= ex + ew && stageY >= ey && stageY <= ey + eh) {\n return { element: el, relX: stageX - ex, relY: stageY - ey };\n }\n }\n }\n return null;\n}\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { TICKET_MAP_GRID_SIZE } from '../../constants';\nimport { RoomMapSeatState } from '../../interfaces';\nimport { drawWheelchairIcon } from '../ticker-map';\n\n// Helper function to convert number to multi-letter label (A, B, ..., Z, AA, AB, ...)\nconst numberToLetter = (num: number): string => {\n if (num < 0) return 'A';\n let result = '';\n let n = num;\n while (n >= 0) {\n result = String.fromCharCode(65 + (n % 26)) + result;\n n = Math.floor(n / 26) - 1;\n }\n return result;\n};\n\nconst drawChairIcon = (con: Context, cx: number, cy: number, size: number) => {\n con.beginPath();\n\n const backWidth = size * 0.7;\n const backHeight = size * 0.6;\n const backX = cx - backWidth / 2;\n const backY = cy - backHeight / 2 - size * 0.1;\n\n con.moveTo(backX + backWidth * 0.2, backY);\n con.lineTo(backX + backWidth * 0.8, backY);\n con.quadraticCurveTo(backX + backWidth, backY, backX + backWidth, backY + backHeight * 0.2);\n con.lineTo(backX + backWidth, backY + backHeight * 0.8);\n con.quadraticCurveTo(\n backX + backWidth,\n backY + backHeight,\n backX + backWidth * 0.8,\n backY + backHeight,\n );\n con.lineTo(backX + backWidth * 0.2, backY + backHeight);\n con.quadraticCurveTo(backX, backY + backHeight, backX, backY + backHeight * 0.8);\n con.lineTo(backX, backY + backHeight * 0.2);\n con.quadraticCurveTo(backX, backY, backX + backWidth * 0.2, backY);\n\n const chairSeatWidth = size * 0.8;\n const chairSeatHeight = size * 0.3;\n const seatX = cx - chairSeatWidth / 2;\n const seatY = cy + backHeight * 0.3;\n\n con.moveTo(seatX, seatY);\n con.lineTo(seatX + chairSeatWidth, seatY);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.closePath();\n\n const legWidth = size * 0.1;\n const legHeight = size * 0.2;\n\n con.moveTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight + legHeight);\n\n con.moveTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight + legHeight);\n\n con.closePath();\n};\n\nexport const generateSeatBlockScene = (\n con: Context,\n shape: Shape,\n numerationConfig?: {\n start_row_letter: string;\n row_order: 'TOP_TO_BOTTOM' | 'BOTTOM_TO_TOP';\n start_column_number: number;\n column_order: 'LEFT_TO_RIGHT' | 'RIGHT_TO_LEFT';\n },\n) => {\n const w = shape.width();\n const h = shape.height();\n const seatSize = TICKET_MAP_GRID_SIZE;\n const chairScale = 0.8;\n\n const elementName = shape?.attrs?.element_name || 'Asientos';\n const showElementName = shape?.attrs?.show_element_name ?? true;\n const seatsData = shape?.attrs?.seats as RoomMapSeatState[][] | undefined;\n const hasTitle = !!(elementName && showElementName);\n const titleHeight = hasTitle ? TICKET_MAP_GRID_SIZE : 0;\n const chairsStartY = titleHeight;\n\n const cols = Math.floor(w / seatSize);\n const rows = Math.floor((h - chairsStartY) / seatSize);\n\n const config = numerationConfig || {\n start_row_letter: 'A',\n row_order: 'TOP_TO_BOTTOM',\n start_column_number: 1,\n column_order: 'LEFT_TO_RIGHT',\n };\n\n const startRowLetter = config?.start_row_letter?.toUpperCase() || 'A';\n const startRowNum = startRowLetter.charCodeAt(0) - 65;\n\n if (hasTitle) {\n con.save();\n\n const textFont = `bold 10px Arial`;\n con.font = textFont;\n const textWidth = con.measureText(elementName).width;\n const paddingX = 10;\n const containerHeight = 18;\n const containerWidth = textWidth + paddingX * 2;\n const containerX = (w - containerWidth) / 2;\n const containerY = (titleHeight - containerHeight) / 2;\n const borderRadius = 4;\n const lineY = titleHeight;\n\n const strokeColor = shape.getAttr('stroke') || '#999';\n\n con.beginPath();\n con.moveTo(0, lineY);\n con.lineTo(w, lineY);\n con.strokeStyle = strokeColor;\n con.lineWidth = 1;\n con.stroke();\n\n con.beginPath();\n con.moveTo(containerX + borderRadius, containerY);\n con.lineTo(containerX + containerWidth - borderRadius, containerY);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY,\n containerX + containerWidth,\n containerY + borderRadius,\n );\n con.lineTo(containerX + containerWidth, containerY + containerHeight - borderRadius);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY + containerHeight,\n containerX + containerWidth - borderRadius,\n containerY + containerHeight,\n );\n con.lineTo(containerX + borderRadius, containerY + containerHeight);\n con.quadraticCurveTo(\n containerX,\n containerY + containerHeight,\n containerX,\n containerY + containerHeight - borderRadius,\n );\n con.lineTo(containerX, containerY + borderRadius);\n con.quadraticCurveTo(containerX, containerY, containerX + borderRadius, containerY);\n con.closePath();\n con.fillStrokeShape(shape);\n\n con.font = textFont;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(elementName, w / 2, containerY + containerHeight / 2);\n\n con.restore();\n }\n\n for (let x = 0; x < w; x += seatSize) {\n for (let y = chairsStartY; y < h; y += seatSize) {\n const colIndex = Math.floor(x / seatSize);\n const rowIndex = Math.floor((y - chairsStartY) / seatSize);\n\n let actualRowIndex = rowIndex;\n if (config.row_order === 'BOTTOM_TO_TOP') {\n actualRowIndex = rows - 1 - rowIndex;\n }\n\n let actualColIndex = colIndex;\n if (config.column_order === 'RIGHT_TO_LEFT') {\n actualColIndex = cols - 1 - colIndex;\n }\n\n const rowLetter = numberToLetter(startRowNum + actualRowIndex);\n const colNumber = Number(config.start_column_number) + Number(actualColIndex);\n const seatNumber = `${rowLetter}${colNumber}`;\n const centerX = x + seatSize / 2 + 1;\n const centerY = y + seatSize / 2 - 2;\n const size = seatSize * chairScale;\n\n // Check seat state\n const seatState = seatsData?.[rowIndex]?.[colIndex];\n\n // Skip non-existent seats\n if (seatState?.is_non_existent) {\n continue;\n }\n\n con.save();\n\n if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, centerX, centerY, size);\n } else {\n drawChairIcon(con, centerX, centerY, size);\n con.fillStrokeShape(shape);\n\n // Draw seat number\n con.fillStyle = '#333333';\n con.font = `${size * 0.3}px Arial`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(seatNumber, centerX, centerY - 1);\n }\n\n con.restore();\n }\n }\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { TICKET_MAP_GRID_SIZE } from '../../constants';\n\nexport const generateStageScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n // Stage background (rectangle with rounded corners)\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n con.beginPath();\n con.moveTo(exitX + cornerRadius, exitY);\n con.lineTo(exitX + exitWidth - cornerRadius, exitY);\n con.quadraticCurveTo(exitX + exitWidth, exitY, exitX + exitWidth, exitY + cornerRadius);\n con.lineTo(exitX + exitWidth, exitY + exitHeight);\n con.lineTo(exitX, exitY + exitHeight);\n con.lineTo(exitX, exitY + cornerRadius);\n con.quadraticCurveTo(exitX, exitY, exitX + cornerRadius, exitY);\n con.closePath();\n con.fillStrokeShape(shape);\n\n // Stage text\n const centerX = w / 2;\n const centerY = h / 2;\n con.font = `12px Arial`;\n con.fillStyle = shape.getAttr('stroke') as string;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n\n const stageText = shape?.attrs?.element_name || 'Escenario';\n const dotRadius = 2.5;\n const dotGap = 10;\n const textWidth = con.measureText(stageText).width;\n\n // Dot before text\n con.beginPath();\n con.arc(centerX - textWidth / 2 - dotGap, centerY, dotRadius, 0, Math.PI * 2);\n con.fillStyle = shape.getAttr('stroke') as string;\n con.fill();\n\n // Text\n con.fillText(stageText, centerX, centerY);\n\n // Dot after text\n con.beginPath();\n con.arc(centerX + textWidth / 2 + dotGap, centerY, dotRadius, 0, Math.PI * 2);\n con.fillStyle = shape.getAttr('stroke') as string;\n con.fill();\n\n // Footer below the element: line and \"▼ Vista del público\"\n const lineColor = '#b0b0b0';\n const footerCenterY = h + TICKET_MAP_GRID_SIZE / 2;\n\n con.beginPath();\n con.moveTo(0, footerCenterY);\n con.lineTo(w, footerCenterY);\n con.strokeStyle = lineColor;\n con.lineWidth = 1;\n con.stroke();\n\n const labelText = '▼ Vista del público';\n const textFont = `bold 10px Arial`;\n con.font = textFont;\n const labelWidth = con.measureText(labelText).width;\n const paddingX = 10;\n const containerHeight = 18;\n const containerWidth = labelWidth + paddingX * 2;\n const containerX = (w - containerWidth) / 2;\n const containerY = footerCenterY - containerHeight / 2;\n const borderRadius = 4;\n\n con.beginPath();\n con.moveTo(containerX + borderRadius, containerY);\n con.lineTo(containerX + containerWidth - borderRadius, containerY);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY,\n containerX + containerWidth,\n containerY + borderRadius,\n );\n con.lineTo(containerX + containerWidth, containerY + containerHeight - borderRadius);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY + containerHeight,\n containerX + containerWidth - borderRadius,\n containerY + containerHeight,\n );\n con.lineTo(containerX + borderRadius, containerY + containerHeight);\n con.quadraticCurveTo(\n containerX,\n containerY + containerHeight,\n containerX,\n containerY + containerHeight - borderRadius,\n );\n con.lineTo(containerX, containerY + borderRadius);\n con.quadraticCurveTo(containerX, containerY, containerX + borderRadius, containerY);\n con.closePath();\n con.fillStyle = '#ededed';\n con.fill();\n con.strokeStyle = lineColor;\n con.lineWidth = 1;\n con.stroke();\n\n con.font = textFont;\n con.fillStyle = lineColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(labelText, w / 2, footerCenterY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateStairScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🪜' + (shape?.attrs?.element_name || 'Escalera');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { RoomMapSeatState } from '../../interfaces';\nimport { drawWheelchairIcon } from '../ticker-map';\n\nexport const generateTableScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n\n const fillColor = shape.fill();\n const strokeColor = shape.stroke();\n const totalCapacity: number = shape?.attrs?.total_capacity ?? 0;\n const zoneText: string = shape?.attrs?.element_name || 'Mesa';\n const seatsData = shape?.attrs?.seats as RoomMapSeatState[][] | undefined;\n\n const cx = w / 2;\n const cy = h / 2;\n\n // Radio de la mesa: el más pequeño entre ancho y alto, con un poco de margen\n // para dejar espacio a las sillas alrededor\n const chairRadius = Math.min(w, h) * 0.1;\n const gap = chairRadius * 0.4; // espacio entre mesa y sillas\n const tableRadius = Math.min(w, h) / 2 - chairRadius * 2 - gap;\n\n con.save();\n\n // ── Sillas (se dibujan primero para quedar detrás) ──────────────────────────\n if (totalCapacity > 0) {\n const orbitRadius = tableRadius + gap + chairRadius;\n\n for (let i = 0; i < totalCapacity; i++) {\n const seatState = seatsData?.[0]?.[i];\n if (seatState?.is_non_existent) {\n continue;\n }\n\n const angle = (2 * Math.PI * i) / totalCapacity - Math.PI / 2;\n const scx = cx + orbitRadius * Math.cos(angle);\n const scy = cy + orbitRadius * Math.sin(angle);\n\n if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, scx, scy, chairRadius * 2);\n continue;\n }\n\n con.beginPath();\n con.arc(scx, scy, chairRadius, 0, Math.PI * 2);\n con.closePath();\n\n // Color de relleno de las sillas = stroke del shape\n con.fillStyle = strokeColor;\n con.fill();\n\n // Borde de las sillas = fill del shape\n con.strokeStyle = fillColor;\n con.lineWidth = Math.max(1, chairRadius * 0.15);\n con.stroke();\n }\n }\n\n // ── Mesa (círculo central) ──────────────────────────────────────────────────\n con.beginPath();\n con.arc(cx, cy, tableRadius, 0, Math.PI * 2);\n con.closePath();\n con.fillStrokeShape(shape); // usa fill y stroke propios del shape de Konva\n\n // ── Texto centrado ──────────────────────────────────────────────────────────\n const fontSize = tableRadius * 0.45;\n con.font = `${fontSize}px Arial`;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(zoneText, cx, cy);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateUnavailableSpaceScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🚫 ' + (shape?.attrs?.element_name || 'No disponible');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateZoneScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const zoneX = padding;\n const zoneY = padding;\n const zoneWidth = w - padding * 2;\n const zoneHeight = h - padding * 2;\n const cornerRadius = Math.min(zoneWidth, zoneHeight) * 0.05;\n\n drawRoundedRect(con, shape, zoneX, zoneY, zoneWidth, zoneHeight, cornerRadius);\n\n // Zone text - check if parent has element_name, otherwise use \"Zona\"\n con.font = `11px Arial`;\n con.fillStyle = shape.getAttr('stroke') as string;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const zoneText = shape?.attrs?.element_name || '';\n con.fillText(zoneText, centerX, centerY);\n\n con.restore();\n};\n","import { RoomMapElementType } from '../enums';\nimport {\n generateExitScene,\n generateHallwayScene,\n generateProductionAreaScene,\n generateSeatBlockScene,\n generateStageScene,\n generateStairScene,\n generateTableScene,\n generateUnavailableSpaceScene,\n generateZoneScene,\n KonvaShapeConfig,\n} from '../helpers/scene-generators';\nimport { TICKET_MAP_GRID_SIZE } from './ticket-map';\n\nexport const KONVA_SHAPE_MAPPINGS: Record<RoomMapElementType, KonvaShapeConfig> = {\n [RoomMapElementType.STAGE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 10,\n height: TICKET_MAP_GRID_SIZE * 2,\n fill: '#9C27B0',\n stroke: '#731d82',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateStageScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.SEAT_BLOCK]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 5,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#ffffff',\n stroke: '#909090',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateSeatBlockScene,\n },\n layer: 'elements',\n },\n\n [RoomMapElementType.TABLE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE * 2,\n fill: '#ffffff',\n stroke: '#909090',\n strokeWidth: 2,\n cornerRadius: 5,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateTableScene,\n },\n layer: 'elements',\n },\n\n [RoomMapElementType.ZONE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 10,\n height: TICKET_MAP_GRID_SIZE * 3,\n fill: '#ffffff',\n stroke: '#909090',\n strokeWidth: 1,\n cornerRadius: 2,\n draggable: true,\n opacity: 1,\n perfectDrawEnabled: false,\n sceneFunc: generateZoneScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.EXIT]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateExitScene,\n },\n layer: 'foreground',\n },\n\n [RoomMapElementType.PRODUCTION_AREA]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 4,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateProductionAreaScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.UNAVAILABLE_SPACE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 4,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateUnavailableSpaceScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.STAIR]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateStairScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.HALLWAY]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateHallwayScene,\n },\n layer: 'background',\n },\n};\n","import { ShowType } from '../../types';\n\nexport const SHOW_TYPE_COLORS: Record<ShowType, { bg: string; text: string }> = {\n PLAY: { bg: '#f5f3ff', text: '#5b21b6' }, // violet-50 / violet-800\n MUSICAL: { bg: '#fef9c3', text: '#a16207' }, // yellow-100 / yellow-700\n CONCERT: { bg: '#dbeafe', text: '#1e40af' }, // blue-100 / blue-800\n DANCE: { bg: '#d1fae5', text: '#065f46' }, // emerald-100 / emerald-800\n OPERA: { bg: '#fee2e2', text: '#991b1b' }, // red-100 / red-800\n STAND_UP_COMEDY: { bg: '#fef3c7', text: '#92400e' }, // amber-100 / amber-800\n SPORT: { bg: '#cbfec3', text: '#07a19c' }, // yellow-100 / yellow-700\n OTHER: { bg: '#f5f5f5', text: '#262626' }, // neutral-100 / neutral-800\n DEFAULT: { bg: '#f3f4f6', text: '#374151' }, // gray-100 / gray-700\n};\n","export enum OrderItemType {\n TICKET = 'TICKET',\n PRODUCT = 'PRODUCT',\n}\n","export enum OrderStatus {\n ON_HOLD = 'on-hold',\n PENDING_PAYMENT = 'pending-payment',\n PROCESSING = 'processing',\n COMPLETED = 'completed',\n FAILED = 'failed',\n CANCELLED = 'cancelled',\n REFUNDED = 'refunded',\n}\n","export enum ShowType {\n PLAY = 'PLAY',\n CONCERT = 'CONCERT',\n STAND_UP_COMEDY = 'STAND_UP_COMEDY',\n OPERA = 'OPERA',\n MUSICAL = 'MUSICAL',\n DANCE = 'DANCE',\n SPORT = 'SPORT',\n OTHER = 'OTHER',\n DEFAULT = 'DEFAULT',\n}\n","export enum SelectedDiscountCardType {\n COUPON = 'COUPON',\n CORPORATE_BOND = 'CORPORATE_BOND',\n GIFT_BOND = 'GIFT_BOND',\n}\n","import { Customer } from '../interfaces/customers/customer.interface';\n\nexport const getCustomerFullname = (customer: Customer) => {\n return `${customer.first_name || ''} ${customer.last_name || ''}`.trim();\n};\n","export function parseJsonToFormDataAdvanced(imageGallery: any[]): FormData {\n const formData = new FormData();\n\n if (!Array.isArray(imageGallery)) {\n throw new Error('imageGallery debe ser un array');\n }\n\n if (imageGallery.length === 0) {\n throw new Error('No hay imágenes para procesar');\n }\n\n if (imageGallery.length > 10) {\n throw new Error('El backend acepta máximo 10 archivos por petición');\n }\n\n const processedFiles: any = [];\n\n imageGallery.forEach((image, index) => {\n try {\n if (!image.name) {\n throw new Error(`La imagen ${index + 1} no tiene nombre`);\n }\n\n if (!image.type || !image.type.startsWith('image/')) {\n throw new Error(`La imagen ${index + 1} no tiene un tipo MIME válido`);\n }\n\n if (!image.preview) {\n throw new Error(`La imagen ${index + 1} no tiene datos de preview`);\n }\n\n if (!image.preview.includes('data:image/') || !image.preview.includes('base64,')) {\n throw new Error(`La imagen ${index + 1} no tiene un formato base64 válido`);\n }\n\n const base64Data = image.preview.split(',')[1];\n const byteCharacters = atob(base64Data);\n const byteNumbers = new Array(byteCharacters.length);\n\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: image.type });\n\n const file = new File([blob], image.name, {\n type: image.type,\n lastModified: Date.now(),\n });\n\n if (file.size === 0) {\n throw new Error(`El archivo ${image.name} está vacío`);\n }\n\n formData.append('files', file);\n processedFiles.push({\n name: image.name,\n size: file.size,\n type: file.type,\n });\n } catch (error: any) {\n console.error(`Error procesando imagen ${index + 1}:`, error);\n throw new Error(\n `Error procesando ${image.name || 'imagen ' + (index + 1)}: ${error?.message}`,\n );\n }\n });\n\n return formData;\n}\n","import { ShowImage } from '../interfaces/shows/show-image.interface';\nimport { VenueImage } from '../interfaces/venues/venue-image.interface';\nimport { UploadedFile } from '../interfaces/uploaded-file.interface';\n\nexport const transformImageToFile = (image: ShowImage | VenueImage): UploadedFile => {\n return {\n preview: image.full_url,\n name: image.original_name,\n size: image.size,\n type: image.mime_type,\n extension: image.extension,\n } as UploadedFile;\n};\n","import { CitiesResponse } from '../interfaces/cities/cities-response.interface';\n\nexport const formatCitiesResponseToSelect = (res: CitiesResponse) => {\n if (!res.data.cities || res.data.cities.length < 1) {\n return [];\n }\n\n return res.data.cities?.map(({ id, name, search_text }) => ({\n value: id,\n label: search_text ?? name,\n }));\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn, FormGroup } from '@angular/forms';\n\nexport function MinTodayValidator(controlName: string): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const control = group.get(controlName);\n\n if (!control || !control.value) {\n return null;\n }\n\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n let selectedDate: Date;\n\n if (control.value instanceof Date) {\n selectedDate = new Date(control.value);\n } else if (typeof control.value === 'string') {\n const [year, month, day] = control.value.split('-').map(Number);\n selectedDate = new Date(Date.UTC(year, month - 1, day));\n } else {\n return null;\n }\n\n selectedDate.setUTCHours(0, 0, 0, 0);\n\n if (selectedDate < today) {\n control.setErrors({ minToday: true });\n return { minToday: true };\n } else {\n const currentErrors = control.errors;\n if (currentErrors) {\n delete currentErrors['minToday'];\n control.setErrors(Object.keys(currentErrors).length > 0 ? currentErrors : null);\n }\n return null;\n }\n };\n}\n\nexport function EndDateGreaterThanStartValidator(\n startDateControlName: string,\n endDateControlName: string,\n): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const startDateControl = group.get(startDateControlName);\n const endDateControl = group.get(endDateControlName);\n\n if (!startDateControl || !endDateControl || !startDateControl.value || !endDateControl.value) {\n return null;\n }\n\n let startDate: Date;\n let endDate: Date;\n\n if (startDateControl.value instanceof Date) {\n startDate = new Date(startDateControl.value);\n } else if (typeof startDateControl.value === 'string') {\n const [startYear, startMonth, startDay] = startDateControl.value.split('-').map(Number);\n startDate = new Date(Date.UTC(startYear, startMonth - 1, startDay));\n } else {\n return null;\n }\n\n if (endDateControl.value instanceof Date) {\n endDate = new Date(endDateControl.value);\n } else if (typeof endDateControl.value === 'string') {\n const [endYear, endMonth, endDay] = endDateControl.value.split('-').map(Number);\n endDate = new Date(Date.UTC(endYear, endMonth - 1, endDay));\n } else {\n return null;\n }\n\n startDate.setUTCHours(0, 0, 0, 0);\n endDate.setUTCHours(0, 0, 0, 0);\n\n if (endDate <= startDate) {\n endDateControl.setErrors({ endDateGreaterThanStart: true });\n return { endDateGreaterThanStart: true };\n } else {\n const currentErrors = endDateControl.errors;\n if (currentErrors) {\n delete currentErrors['endDateGreaterThanStart'];\n endDateControl.setErrors(Object.keys(currentErrors).length > 0 ? currentErrors : null);\n }\n return null;\n }\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn, FormGroup } from '@angular/forms';\n\nexport function MustMatchValidator(controlName: string, matchingControlName: string): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const control = group.get(controlName);\n const matchingControl = group.get(matchingControlName);\n\n if (!control || !matchingControl) {\n return null;\n }\n\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({ mustMatch: true });\n return { mustMatch: true };\n } else {\n matchingControl.setErrors(null);\n return null;\n }\n };\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { isPlatformBrowser } from '@angular/common';\nimport { TICKERA_COMPONENTS_CONFIG } from '../config/tickera-components.config';\nimport { TickeraComponentsConfig } from '../interfaces/tickera-components-config.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n private apiUrl: string;\n\n constructor(\n private http: HttpClient,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Inject(TICKERA_COMPONENTS_CONFIG) private config: TickeraComponentsConfig,\n ) {\n this.apiUrl = config.apiUrl;\n }\n\n private getHeaders(contentType?: string): HttpHeaders {\n let headers = new HttpHeaders();\n\n if (contentType) {\n headers = headers.set('Content-Type', contentType);\n }\n\n return headers;\n }\n\n private validateContentType(body: any): string | undefined {\n if (body instanceof FormData) {\n return undefined;\n }\n return 'application/json';\n }\n\n private handleError(error: HttpErrorResponse): Observable<never> {\n if (error.status === 401 && isPlatformBrowser(this.platformId)) {\n const currentRoute = window.location.pathname;\n if (currentRoute.startsWith('/admin')) {\n localStorage.removeItem('access_token');\n window.location.href = '/';\n }\n }\n return throwError(() => error);\n }\n\n get<T>(path: string): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(null));\n return this.http\n .get<T>(`${this.apiUrl}${path}`, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n post<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .post<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n patch<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .patch<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n put<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .put<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n delete<T>(path: string, body?: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .request<T>('DELETE', `${this.apiUrl}${path}`, { headers, body })\n .pipe(catchError(this.handleError.bind(this)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { toast } from 'ngx-sonner';\n\ntype ToastType = 'success' | 'error' | 'info';\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n show(message: string, type: ToastType = 'info') {\n toast[type](message);\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { DeleteConfirmationOpen } from '../interfaces/delete-confirmation-open.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class DeleteConfirmationService {\n title: WritableSignal<string> = signal('Confirmar eliminación');\n resourceName: WritableSignal<string> = signal('');\n confirmationText: WritableSignal<string> = signal('');\n isOpen: WritableSignal<boolean> = signal(false);\n confirmDeleteCallback: (() => void) | null = null;\n\n get modalTitle(): WritableSignal<string> {\n return this.title;\n }\n\n get modalResourceName(): WritableSignal<string> {\n return this.resourceName;\n }\n\n get modalConfirmationText(): WritableSignal<string> {\n return this.confirmationText;\n }\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n open(\n { title, resourceName, confirmationText }: DeleteConfirmationOpen,\n confirmCallback?: () => void,\n ) {\n this.title.set(title);\n this.resourceName.set(resourceName);\n this.confirmationText.set(confirmationText);\n this.confirmDeleteCallback = confirmCallback || null;\n this.isOpen.set(true);\n }\n\n close() {\n this.title.set('Confirmar eliminación');\n this.resourceName.set('');\n this.confirmationText.set('');\n this.confirmDeleteCallback = null;\n this.isOpen.set(false);\n }\n\n getConfirmDeleteCallback(): (() => void) | null {\n return this.confirmDeleteCallback;\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ChangePasswordFormService {\n resourceId: WritableSignal<number> = signal(0);\n isCustomer: WritableSignal<boolean> = signal(false);\n isAdmin: WritableSignal<boolean> = signal(false);\n isOpen: WritableSignal<boolean> = signal(false);\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n get isCustomerMode(): WritableSignal<boolean> {\n return this.isCustomer;\n }\n\n get isAdminMode(): WritableSignal<boolean> {\n return this.isAdmin;\n }\n\n get resourceIdValue(): WritableSignal<number> {\n return this.resourceId;\n }\n\n open(resourceId: number, isAdmin: boolean = false) {\n this.resourceId.set(resourceId);\n this.isCustomer.set(!isAdmin);\n this.isAdmin.set(isAdmin);\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n }\n}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { formatDate } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class DateService {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n formatDate(date: Date, format: string = 'yyyy-MM-dd'): string {\n const formattedDate = formatDate(date, format, this.locale);\n return formattedDate;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { AdminsResponse } from '../interfaces/admins/admins-response.interface';\nimport { ADMIN_API_ROUTES } from '../constants/api-routes/admin-api.routes';\n\n@Injectable({ providedIn: 'root' })\nexport class AdminService {\n constructor(private apiService: ApiService) {}\n\n fetchAdmins(\n page: number = 1,\n search: string = '',\n limit: number = 20,\n ): Observable<AdminsResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${ADMIN_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<AdminsResponse>(apiRoute);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(ADMIN_API_ROUTES.deleteOne(id));\n }\n\n createOne(data: any): Observable<any> {\n return this.apiService.post(ADMIN_API_ROUTES.CREATE, data);\n }\n\n updateOne(id: number, data: any): Observable<any> {\n return this.apiService.patch(ADMIN_API_ROUTES.updateOne(id), data);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { CITY_API_ENDPOINTS } from '../constants/api-routes/cities-api.routes';\nimport { CitiesResponse } from '../interfaces/cities/cities-response.interface';\nimport { City } from '../interfaces/cities/city.interface';\nimport { CityResponse } from '../interfaces/cities/city-response.interface';\nimport { FetchCitiesParams } from '../interfaces/cities/fetch-cities-params.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class CitiesService {\n constructor(private apiService: ApiService) {}\n\n fetchCities({ page, search, stateId }: FetchCitiesParams): Observable<CitiesResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (stateId) queryParams.append('state_id', stateId.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${CITY_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CitiesResponse>(apiRoute);\n }\n\n createOne(data: City): Observable<CityResponse> {\n return this.apiService.post(CITY_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: City): Observable<CityResponse> {\n return this.apiService.patch<CityResponse>(CITY_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(CITY_API_ENDPOINTS.delete(id));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { COUNTRY_API_ENDPOINTS } from '../constants/api-routes/countries-api.routes';\nimport { CountriesResponse } from '../interfaces/countries/countries-response.interface';\nimport { CountryResponse } from '../interfaces/countries/country-response.interface';\nimport { Country } from '../interfaces/countries/country.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class CountryService {\n constructor(private apiService: ApiService) {}\n\n fetchCountries(page?: number, search?: string): Observable<CountriesResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n const queryString = queryParams.toString();\n const apiRoute = `${COUNTRY_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CountriesResponse>(apiRoute);\n }\n\n createOne(data: Country): Observable<CountryResponse> {\n return this.apiService.post(COUNTRY_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: Country): Observable<CountryResponse> {\n return this.apiService.patch<CountryResponse>(COUNTRY_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(COUNTRY_API_ENDPOINTS.delete(id));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { STATE_API_ENDPOINTS } from '../constants/api-routes/states-api.routes';\nimport { StatesResponse } from '../interfaces/states/states-response.interface';\nimport { StateResponse } from '../interfaces/states/state-response.interface';\nimport { State } from '../interfaces/states/state.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class StatesService {\n constructor(private apiService: ApiService) {}\n\n fetchStates(page?: number, search?: string, countryId?: number): Observable<StatesResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (countryId) queryParams.append('country_id', countryId.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${STATE_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<StatesResponse>(apiRoute);\n }\n\n fetchStatesByCountryId(countryId: number): Observable<StatesResponse> {\n const apiRoute = `${STATE_API_ENDPOINTS.findAll}?country_id=${countryId}`;\n return this.apiService.get<StatesResponse>(apiRoute);\n }\n\n createOne(data: State): Observable<StateResponse> {\n return this.apiService.post(STATE_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: State): Observable<StateResponse> {\n return this.apiService.patch<StateResponse>(STATE_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(STATE_API_ENDPOINTS.delete(id));\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PERFORMANCES_API_ROUTES } from '../constants/api-routes/performances-api.routes';\nimport { ApiService } from './api.service';\nimport { PerformancesResponseInterface } from '../interfaces/performances/performances-response.interface';\nimport { Performance } from '../interfaces/performances/performance.interface';\nimport { PerformanceResponse } from '../interfaces/performances/performance-response.interface';\nimport { PerformanceBookingDataResponse } from '../interfaces/performances/performance-booking-data.interface';\nimport { PerformancesAvailableDaysResponse } from '../interfaces/performances/performances-available-days-response.interface';\nimport { FetchDailyPerformancesParams } from '../interfaces/daily-performances/fetch-daily-performances-params.interface';\nimport { DailyPerformancesResponse } from '../interfaces/daily-performances/daily-performances-response.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class PerformanceService {\n private performancesSubject = new BehaviorSubject<Performance[]>([]);\n public performances$ = this.performancesSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchPerformances(showId?: number, search?: string): Observable<PerformancesResponseInterface> {\n const queryParams = new URLSearchParams();\n if (showId) queryParams.append('show_id', showId.toString());\n if (search) queryParams.append('search', search);\n queryParams.append('limit', '100');\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<PerformancesResponseInterface>(apiRoute);\n }\n\n fetchDailyPerformances({\n show_id,\n search,\n limit,\n date,\n }: FetchDailyPerformancesParams): Observable<DailyPerformancesResponse> {\n const queryParams = new URLSearchParams();\n if (date) queryParams.append('date', date.toString());\n if (show_id) queryParams.append('show_id', show_id.toString());\n if (search) queryParams.append('search', search);\n queryParams.append('limit', limit?.toString() ?? '100');\n\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.publicAvailablePerformances}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<DailyPerformancesResponse>(apiRoute);\n }\n\n loadPerformances({ showId, search }: { showId?: number; search?: string } = {}): void {\n this.fetchPerformances(showId, search).subscribe({\n next: ({ data }) => {\n this.performancesSubject.next(data?.performances ?? []);\n },\n error: () => {\n this.performancesSubject.next([]);\n },\n });\n }\n\n getCurrentPerformances(): Performance[] {\n return this.performancesSubject.value;\n }\n\n fetchOneById(id: number): Observable<PerformanceResponse> {\n return this.apiService.get<PerformanceResponse>(PERFORMANCES_API_ROUTES.findOneById(id));\n }\n\n fetchOneBookingData(id: number): Observable<PerformanceBookingDataResponse> {\n const apiRoute = PERFORMANCES_API_ROUTES.findOneBookingData(id);\n return this.apiService.get<PerformanceBookingDataResponse>(apiRoute);\n }\n\n fetchAvailableDays(params?: { show_id?: number }): Observable<PerformancesAvailableDaysResponse> {\n const queryParams = new URLSearchParams();\n if (params?.show_id) queryParams.append('show_id', params.show_id.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.getAvailableDays}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<PerformancesAvailableDaysResponse>(apiRoute);\n }\n\n createOne(data: Performance): Observable<any> {\n return this.apiService.post(PERFORMANCES_API_ROUTES.create, data);\n }\n\n createMany(data: Partial<Performance>[]): Observable<any> {\n return this.apiService.post(PERFORMANCES_API_ROUTES.createBulk, { performances: data });\n }\n\n updateOne(id: number, data: any): Observable<PerformanceResponse> {\n return this.apiService.patch<PerformanceResponse>(PERFORMANCES_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PERFORMANCES_API_ROUTES.delete(id));\n }\n\n deleteMany(ids: number[]): Observable<any> {\n return this.apiService.delete(PERFORMANCES_API_ROUTES.deleteMany, { ids });\n }\n\n cancelPerformance(id: number, notifyUsers: boolean): Observable<any> {\n return this.apiService.patch(PERFORMANCES_API_ROUTES.cancel(id), { notify_users: notifyUsers });\n }\n\n publishInvenotry(id: number): Observable<any> {\n const apiRoute = PERFORMANCES_API_ROUTES.publishInventory(id);\n return this.apiService.post(apiRoute, {});\n }\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { DailyPerformanceItem, PerformanceAvailableDay } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class PerformancesListEventsService {\n private _selectedDay = signal<PerformanceAvailableDay | null>(null);\n private _selectedPerformance = signal<DailyPerformanceItem | null>(null);\n private _filteredShowId = signal<number | null>(null);\n\n readonly selectedDay = computed(() => this._selectedDay());\n readonly selectedDayDate = computed(() => this._selectedDay()?.date);\n readonly selectedPerformance = computed(() => this._selectedPerformance());\n readonly filteredShowId = computed(() => this._filteredShowId());\n\n setSelectedDay(day: PerformanceAvailableDay | null): void {\n this._selectedDay.set(day);\n }\n\n setSelectedPerformance(performance: DailyPerformanceItem | null) {\n this._selectedPerformance.set(performance);\n }\n\n setFilteredShowId(id: number | null): void {\n this._filteredShowId.set(id);\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { SHOWS_API_ROUTES } from '../constants/api-routes/shows-api.routes';\nimport { ApiService } from './api.service';\nimport { ShowsResponseInterface } from '../interfaces/shows/shows-response.interface';\nimport { Show } from '../interfaces/shows/show.interface';\nimport { ShowResponse } from '../interfaces/shows/show-response.interface';\nimport { ShowImage } from '../interfaces/shows/show-image.interface';\nimport { FetchShowsParams } from '../interfaces/shows/fetch-shows-params.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class ShowService {\n private showsSubject = new BehaviorSubject<Show[]>([]);\n public shows$ = this.showsSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n loadShows({ page, search }: FetchShowsParams = {}): void {\n this.fetchShows({ page, search }).subscribe({\n next: ({ data }) => {\n this.showsSubject.next(data?.shows ?? []);\n },\n error: () => {\n this.showsSubject.next([]);\n },\n });\n }\n\n getCurrentShows(): Show[] {\n return this.showsSubject.value;\n }\n\n fetchShows({ limit, page, search }: FetchShowsParams): Observable<ShowsResponseInterface> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${SHOWS_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ShowsResponseInterface>(apiRoute);\n }\n\n fetchAvailableShows({\n date,\n limit,\n page,\n search,\n }: FetchShowsParams): Observable<ShowsResponseInterface> {\n const queryParams = new URLSearchParams();\n if (date) queryParams.append('date', date);\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n\n const apiRoute = `${SHOWS_API_ROUTES.publicAvailablePerformances}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ShowsResponseInterface>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ShowResponse> {\n return this.apiService.get<ShowResponse>(SHOWS_API_ROUTES.findOneById(id));\n }\n\n createOne(data: Show): Observable<ShowResponse> {\n return this.apiService.post(SHOWS_API_ROUTES.create, data);\n }\n\n updateOne(id: number, data: any): Observable<ShowResponse> {\n return this.apiService.patch<ShowResponse>(SHOWS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(SHOWS_API_ROUTES.delete(id));\n }\n\n fetchImages(id: number): Observable<{ data: ShowImage[] }> {\n return this.apiService.get(SHOWS_API_ROUTES.getImages(id));\n }\n\n uploadImages(id: number, files?: FormData): Observable<{ data: ShowImage[] }> {\n return this.apiService.post(SHOWS_API_ROUTES.uploadGallery(id), files);\n }\n\n deleteOneImage(showId: number, imageId: number): Observable<any> {\n return this.apiService.delete(SHOWS_API_ROUTES.deleteOneImage(showId, imageId));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { CustomersResponse } from '../interfaces/customers/customers-response.interface';\nimport { CustomerResponse } from '../interfaces/customers/customer-response.interface';\nimport { CUSTOMERS_API_ROUTES } from '../constants/api-routes/customers-api.routes';\nimport { Customer } from '../interfaces/customers/customer.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomerService {\n constructor(private apiService: ApiService) {}\n\n createOne(data: Customer): Observable<CustomerResponse> {\n return this.apiService.post<CustomerResponse>(CUSTOMERS_API_ROUTES.create, data);\n }\n\n fetchCustomers(page: number, search: string, limit?: number): Observable<CustomersResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${CUSTOMERS_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CustomersResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<CustomerResponse> {\n return this.apiService.get<CustomerResponse>(CUSTOMERS_API_ROUTES.findOne(id));\n }\n\n updateOne(id: number, data: any): Observable<CustomerResponse> {\n return this.apiService.patch<CustomerResponse>(CUSTOMERS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(CUSTOMERS_API_ROUTES.delete(id));\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PRICE_ZONES_API_ROUTES } from '../constants/api-routes/price-zones-api.routes';\nimport { ApiService } from './api.service';\nimport { PriceZonesResponseInterface } from '../interfaces/price-zones/price-zones-response.interface';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\nimport { FindAllPriceZoneParams } from '../interfaces/price-zones/find-all-price-zone-params.interface';\nimport { PriceZoneResponse } from '../interfaces/price-zones/price-zone-response.interface';\nimport { PriceZoneUpdateResponse } from '../interfaces/price-zones/price-zone-update-response.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneService {\n private priceZonesSubject = new BehaviorSubject<PriceZone[]>([]);\n public priceZones$ = this.priceZonesSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchPriceZones({\n roomMapId,\n page,\n search,\n limit,\n }: FindAllPriceZoneParams = {}): Observable<PriceZonesResponseInterface> {\n const queryParams = new URLSearchParams();\n if (roomMapId) queryParams.append('room_map_id', roomMapId.toString());\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${PRICE_ZONES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<PriceZonesResponseInterface>(apiRoute);\n }\n\n loadPriceZones({ roomMapId, page, search, limit }: FindAllPriceZoneParams = {}): void {\n this.fetchPriceZones({ roomMapId, page, search, limit }).subscribe({\n next: ({ data }) => {\n this.priceZonesSubject.next(data?.price_zones ?? []);\n },\n error: () => {\n this.priceZonesSubject.next([]);\n },\n });\n }\n\n getCurrentPriceZones(): PriceZone[] {\n return this.priceZonesSubject.value;\n }\n\n fetchOneById(id: number): Observable<PriceZoneResponse> {\n return this.apiService.get<PriceZoneResponse>(PRICE_ZONES_API_ROUTES.findOneById(id));\n }\n\n createOne(data: PriceZone): Observable<any> {\n return this.apiService.post(PRICE_ZONES_API_ROUTES.CREATE, data);\n }\n\n duplicateOne(id: number, name: string): Observable<any> {\n return this.apiService.post(PRICE_ZONES_API_ROUTES.duplicate(id), { name });\n }\n\n updateOne(id: number, data: any): Observable<PriceZoneUpdateResponse> {\n return this.apiService.patch<PriceZoneUpdateResponse>(PRICE_ZONES_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PRICE_ZONES_API_ROUTES.delete(id));\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneEventService {\n private priceZoneDeleted$ = new Subject<void>();\n private priceZoneSaved$ = new Subject<void>();\n\n private _selectedPriceZone: WritableSignal<PriceZone | null> = signal(null);\n readonly selectedPriceZone$ = toObservable(this._selectedPriceZone);\n\n onPriceZoneDeleted() {\n this.priceZoneDeleted$.next();\n }\n\n getPriceZoneDeleted() {\n return this.priceZoneDeleted$.asObservable();\n }\n\n onPriceZoneSaved() {\n this.priceZoneSaved$.next();\n }\n\n getPriceZoneSaved() {\n return this.priceZoneSaved$.asObservable();\n }\n\n setSelectedPriceZone(priceZone: PriceZone | null) {\n this._selectedPriceZone.set(priceZone);\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\nimport { PriceZoneEventService } from './price-zone-event.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneFormModalService {\n priceZone: WritableSignal<PriceZone | null> = signal(null);\n isOpen: WritableSignal<boolean> = signal(false);\n\n constructor(private priceZoneEventService: PriceZoneEventService) {}\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n get currentPriceZone(): WritableSignal<PriceZone | null> {\n return this.priceZone;\n }\n\n open(priceZone: PriceZone | null = null) {\n this.priceZone.set(priceZone);\n this.priceZoneEventService.setSelectedPriceZone(priceZone);\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n this.priceZone.set(null);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport {\n FetchProductCategoriesParams,\n ProductCategoriesResponse,\n ProductCategory,\n ProductCategoryResponse,\n} from '../interfaces';\nimport { ApiService } from './api.service';\nimport { PRODUCT_CATEGORIES_API_ROUTES } from '../constants/api-routes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductCategoryService {\n constructor(private apiService: ApiService) {}\n\n fetchCategories({\n page,\n search,\n limit,\n }: FetchProductCategoriesParams): Observable<ProductCategoriesResponse> {\n const queryParams = new URLSearchParams();\n\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_CATEGORIES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductCategoriesResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductCategoryResponse> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.findById(id);\n return this.apiService.get<ProductCategoryResponse>(apiRoute);\n }\n\n createOne(data: ProductCategory): Observable<any> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductCategory): Observable<ProductCategoryResponse> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.update(id);\n return this.apiService.patch<ProductCategoryResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { ApiService } from './api.service';\nimport {\n FetchProductTagsParams,\n ProductTag,\n ProductTagResponse,\n ProductTagsResponse,\n} from '../interfaces';\nimport { PRODUCT_TAGS_API_ROUTES } from '../constants/api-routes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductTagService {\n constructor(private apiService: ApiService) {}\n\n fetchTags({ page, search, limit }: FetchProductTagsParams): Observable<ProductTagsResponse> {\n const queryParams = new URLSearchParams();\n\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_TAGS_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductTagsResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductTagResponse> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.findById(id);\n return this.apiService.get<ProductTagResponse>(apiRoute);\n }\n\n createOne(data: ProductTag): Observable<any> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductTag): Observable<ProductTagResponse> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.update(id);\n return this.apiService.patch<ProductTagResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { ApiService } from './api.service';\nimport {\n FetchProductTypesParams,\n ProductType,\n ProductTypeResponse,\n ProductTypesResponse,\n} from '../interfaces';\nimport { PRODUCT_TYPES_API_ROUTES } from '../constants/api-routes/product-types-api.routes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductTypeService {\n constructor(private apiService: ApiService) {}\n\n fetchTypes({ page, search, limit }: FetchProductTypesParams): Observable<ProductTypesResponse> {\n const queryParams = new URLSearchParams();\n\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_TYPES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductTypesResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductTypeResponse> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.findById(id);\n return this.apiService.get<ProductTypeResponse>(apiRoute);\n }\n\n createOne(data: ProductType): Observable<any> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductType): Observable<ProductTypeResponse> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.update(id);\n return this.apiService.patch<ProductTypeResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PRODUCTS_API_ROUTES } from '../constants/api-routes/products-api.routes';\nimport { ApiService } from './api.service';\nimport { ProductsResponseInterface } from '../interfaces/products/products-response.interface';\nimport { ProductResponse } from '../interfaces/products/product-response.interface';\nimport { Product } from '../interfaces/products/product.interface';\nimport { FetchProductsParams } from '../interfaces/products/fetch-products-params.interface';\nimport { ProductImage } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class ProductService {\n private productsSubject = new BehaviorSubject<Product[]>([]);\n public products$ = this.productsSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchProducts({\n page,\n search,\n limit,\n }: FetchProductsParams): Observable<ProductsResponseInterface> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCTS_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ProductsResponseInterface>(apiRoute);\n }\n\n loadProducts(params: FetchProductsParams): void {\n this.fetchProducts(params).subscribe({\n next: ({ data }) => {\n this.productsSubject.next(data?.products ?? []);\n },\n error: () => {\n this.productsSubject.next([]);\n },\n });\n }\n\n getCurrentProducts(): Product[] {\n return this.productsSubject.value;\n }\n\n fetchOneById(id: number): Observable<ProductResponse> {\n return this.apiService.get<ProductResponse>(PRODUCTS_API_ROUTES.findOneById(id));\n }\n\n createOne(data: Product): Observable<any> {\n return this.apiService.post(PRODUCTS_API_ROUTES.CREATE, data);\n }\n\n updateOne(id: number, data: any): Observable<ProductResponse> {\n return this.apiService.patch<ProductResponse>(PRODUCTS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PRODUCTS_API_ROUTES.delete(id));\n }\n\n fetchImages(id: number): Observable<{ data: ProductImage[] }> {\n const apiRoute = PRODUCTS_API_ROUTES.fetchImages(id);\n return this.apiService.get<{ data: ProductImage[] }>(apiRoute);\n }\n\n uploadImages(id: number, files?: FormData): Observable<{ data: ProductImage[] }> {\n const apiRoute = PRODUCTS_API_ROUTES.uploadImages(id);\n return this.apiService.post<{ data: ProductImage[] }>(apiRoute, files);\n }\n\n deleteOneImage(productId: number, imageId: number): Observable<any> {\n const apiRoute = PRODUCTS_API_ROUTES.deleteOneImage(productId, imageId);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { signal, WritableSignal } from '@angular/core';\n\nexport class BaseModalService {\n readonly isOpen: WritableSignal<boolean> = signal(false);\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n open() {\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n }\n}\n","import { Injectable, computed, signal } from '@angular/core';\nimport { FeedbackModalElement } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class FeedbackModalService {\n private _modals = signal<Map<string, FeedbackModalElement>>(new Map());\n\n readonly modals = computed(() => Array.from(this._modals().values()));\n\n addModal(modal: FeedbackModalElement): void {\n this._modals.update((modals) => {\n const newModals = new Map(modals);\n newModals.set(modal.id, modal);\n return newModals;\n });\n }\n\n removeModal(id: string): void {\n this._modals.update((modals) => {\n const newModals = new Map(modals);\n newModals.delete(id);\n return newModals;\n });\n }\n\n removeAllModals(): void {\n this._modals.set(new Map());\n }\n}\n","import { Injectable, signal, computed, WritableSignal } from '@angular/core';\nimport { DEFAULT_STAGE_CONFIG } from '../../constants/ticket-map';\nimport { processElementsToRenderData } from '../../helpers';\nimport {\n ElementRenderData,\n HallFloor,\n Performance,\n PerformanceBookingDataResponse,\n RoomMap,\n Show,\n} from '../../interfaces';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PerformanceBookingDataService {\n private _show = signal<Show | null>(null);\n private _performance = signal<Performance | null>(null);\n private _roomMap = signal<RoomMap | null>(null);\n private _hallFloors = signal<HallFloor[]>([]);\n private _selectedHallFloor = signal<HallFloor | null>(null);\n private _selectedTicketIds: WritableSignal<Set<number>> = signal(new Set());\n private _allRenderData = signal<ElementRenderData[]>([]);\n private _stageConfig = signal(DEFAULT_STAGE_CONFIG);\n\n readonly selectedCount = computed(() => this._selectedTicketIds().size);\n\n readonly selectedTicketIds = computed(() => this._selectedTicketIds());\n\n readonly show = computed(() => this._show());\n\n readonly hallFloors = computed(() => this._hallFloors());\n\n readonly selectedHallFloor = computed(() => this._selectedHallFloor());\n\n readonly performance = computed(() => this._performance());\n\n readonly stageConfig = computed(() => this._stageConfig());\n\n readonly roomMap = computed(() => this._roomMap());\n\n readonly renderData = computed(() => {\n return this._allRenderData()?.filter(({ hallFloorId }) => {\n return hallFloorId == this._selectedHallFloor()?.id;\n });\n });\n\n setPerformanceBookingData({ data }: PerformanceBookingDataResponse): void {\n this._performance.set(data.performance);\n this._show.set(data.show);\n\n const roomMap = data.room_map;\n this._roomMap.set(roomMap);\n\n const hallFloors = data.room_map?.hall?.hall_floors ?? [];\n const selectedHallFloor = hallFloors.length > 0 ? hallFloors[0] : null;\n this._hallFloors.set(hallFloors);\n this._selectedHallFloor.set(selectedHallFloor);\n\n const renderData = processElementsToRenderData(\n roomMap.elements,\n data.tickets,\n roomMap.price_zones,\n );\n this._allRenderData.set(renderData);\n\n const canvasSettings = roomMap.canvas_settings || {};\n this._stageConfig.set({\n ...DEFAULT_STAGE_CONFIG,\n width: canvasSettings.width || 800,\n height: canvasSettings.height || 600,\n });\n }\n\n setSelectedHallFloor(id: number): void {\n const hallFloor = this._hallFloors().find((hallFloor) => hallFloor.id === id);\n this._selectedHallFloor.set(hallFloor ?? null);\n }\n\n updateStageConfig(data: { [x: string]: any }) {\n this._stageConfig.set({\n ...this._stageConfig(),\n ...data,\n });\n }\n}\n","import { Injectable, signal, computed, WritableSignal } from '@angular/core';\nimport { Customer } from '../../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionDetailsService {\n private _customerEmail = signal<string | null>(null);\n private _customerId = signal<number | null>(null);\n private _paymentMethod = signal<string | null>(null);\n private _billingInformation: WritableSignal<Customer | null> = signal(null);\n\n readonly customerEmail = computed(() => this._customerEmail());\n\n readonly customerId = computed(() => this._customerId());\n\n readonly paymentMethod = computed(() => this._paymentMethod());\n\n readonly billingInformation = computed(() => this._billingInformation());\n\n setCustomerEmail(email: string | null): void {\n this._customerEmail.set(email);\n }\n\n setCustomerId(id: number | null): void {\n this._customerId.set(id);\n }\n\n setPaymentMethod(method: string | null): void {\n this._paymentMethod.set(method);\n }\n\n setBillingInformation(values: Customer) {\n this._billingInformation.set(values);\n }\n\n clearSelection(): void {\n this._customerEmail.set(null);\n this._customerId.set(null);\n this._paymentMethod.set(null);\n this._billingInformation.set(null);\n }\n}\n","import { Injectable, signal, computed, Signal } from '@angular/core';\nimport {\n CorporateBond,\n Coupon,\n GiftBond,\n SelectedDiscountCard,\n SelectedDiscountCardType,\n} from '../../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionDiscountService {\n private _coupon = signal<Coupon | null>(null);\n private _corporateBond = signal<CorporateBond | null>(null);\n private _corporateBondCode = signal<string | null>(null);\n private _giftBond = signal<GiftBond | null>(null);\n private _giftBondCode = signal<string | null>(null);\n\n readonly coupon = computed(() => this._coupon());\n\n readonly corporateBond = computed(() => this._corporateBond());\n\n readonly corporateBondCode = computed(() => this._corporateBondCode());\n\n readonly giftBond = computed(() => this._giftBond());\n\n readonly giftBondCode = computed(() => this._giftBondCode());\n\n readonly selectedDiscount: Signal<SelectedDiscountCard | null> = computed(() => {\n const coupon = this.coupon();\n if (!!coupon) {\n return {\n name: coupon.code,\n value: coupon.discount_value,\n type: SelectedDiscountCardType.COUPON,\n };\n }\n\n const giftBond = this.giftBond();\n if (!!giftBond) {\n return {\n name: giftBond.name,\n value: giftBond.value,\n type: SelectedDiscountCardType.GIFT_BOND,\n };\n }\n\n const [corporateBond, corporateBondCode] = [this.corporateBond(), this.corporateBondCode()];\n if (!!corporateBond && !!corporateBondCode) {\n return {\n name: corporateBondCode,\n value: corporateBond.value,\n type: SelectedDiscountCardType.CORPORATE_BOND,\n };\n }\n\n return null;\n });\n\n readonly selectedDiscountType = computed(() => {\n return this.selectedDiscount()?.type;\n });\n\n readonly selectedDiscountValue = computed(() => {\n return this.selectedDiscount()?.value ?? undefined;\n });\n\n setCoupon(coupon: Coupon | null): void {\n this._coupon.set(coupon);\n }\n\n setCorporateBond(corporateBond: CorporateBond | null): void {\n this._corporateBond.set(corporateBond);\n }\n\n setCorporateBondCode(code: string | null): void {\n this._corporateBondCode.set(code);\n }\n\n setGiftBond(giftBond: GiftBond | null): void {\n this._giftBond.set(giftBond);\n }\n\n setGiftBondCode(code: string | null): void {\n this._giftBondCode.set(code);\n }\n\n clearSelection(): void {\n this._coupon.set(null);\n this._corporateBond.set(null);\n this._corporateBondCode.set(null);\n this._giftBond.set(null);\n this._giftBondCode.set(null);\n }\n}\n","import { Injectable, signal, computed, WritableSignal, inject } from '@angular/core';\nimport { PerformanceBookingDataService } from './performance-booking-data.service';\nimport { TicketSelectionDiscountService } from './ticket-selection-discount.service';\nimport { TicketSelectionDetailsService } from './ticket-selection-details.service';\nimport {\n PerformanceTicket,\n Product,\n ReservePerformanceDto,\n TicketMapTooltipData,\n TicketMapZoneQuantityState,\n} from '../../interfaces';\nimport { TICKET_STATUS_COLORS, TICKET_STATUS_LABELS } from '../../constants/ticket-map';\nimport { PerformanceTicketStatus } from '../../enums';\nimport { FeedbackModalService } from '../feedback-modal.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionService {\n private bookingDataService = inject(PerformanceBookingDataService);\n private feedbackModalService = inject(FeedbackModalService);\n private selectionDetailsService = inject(TicketSelectionDetailsService);\n private selectionDiscountService = inject(TicketSelectionDiscountService);\n private _zoneQuantities = signal<Map<number, TicketMapZoneQuantityState>>(new Map());\n private _allTickets = signal<PerformanceTicket[]>([]);\n private _selectedTickets: WritableSignal<Set<PerformanceTicket>> = signal(new Set());\n private _selectedBlockedTickets: WritableSignal<Set<PerformanceTicket>> = signal(new Set());\n private _products: WritableSignal<Product[]> = signal([]);\n private _productQuantities: WritableSignal<Map<number, number>> = signal(new Map());\n\n readonly selectedTickets = computed<PerformanceTicket[]>(() => {\n const ids = this._selectedTickets();\n return this._allTickets().filter((t) => ids.has(t));\n });\n\n readonly selectedBlockedTickets = computed<PerformanceTicket[]>(() => {\n const ids = this._selectedBlockedTickets();\n return this._allTickets().filter((t) => ids.has(t));\n });\n\n readonly selectedCount = computed(() => this._selectedTickets().size);\n\n readonly blockedSelectedCount = computed(() => this._selectedBlockedTickets().size);\n\n readonly selectedTicketIds = computed<Set<PerformanceTicket>>(() => this._selectedTickets());\n\n readonly selectedBlockedTicketIds = computed<number[]>(() =>\n this.selectedBlockedTickets().map((t) => t.id),\n );\n\n readonly selectedTicketIdList = computed<number[]>(() => this.selectedTickets().map((t) => t.id));\n\n readonly products = computed(() => this._products());\n\n readonly productQuantities = computed(() => this._productQuantities());\n\n readonly selectedProductEntries = computed<{ id: number; quantity: number }[]>(() => {\n const entries: { id: number; quantity: number }[] = [];\n this._productQuantities().forEach((quantity, id) => {\n if (quantity > 0) {\n entries.push({ id, quantity });\n }\n });\n return entries;\n });\n\n readonly selectedProductCount = computed(() => this.selectedProductEntries().length);\n\n readonly serviceFee = computed(() => {\n return Number(this.bookingDataService.show()?.service_fee ?? '0');\n });\n\n setTickets(tickets: PerformanceTicket[]): void {\n this._allTickets.set(tickets);\n }\n\n setProducts(products: Product[]): void {\n this._products.set(products);\n }\n\n updateProductQuantity(productId: number, delta: number): void {\n this._productQuantities.update((map) => {\n const next = new Map(map);\n const current = next.get(productId) ?? 0;\n const newQty = Math.max(0, current + delta);\n if (newQty === 0) {\n next.delete(productId);\n } else {\n next.set(productId, newQty);\n }\n return next;\n });\n }\n\n getProductQuantity(productId: number): number {\n return this._productQuantities().get(productId) ?? 0;\n }\n\n private getListByStatus(\n ticket: PerformanceTicket,\n ): WritableSignal<Set<PerformanceTicket>> | null {\n const lists: { [x: string]: WritableSignal<Set<PerformanceTicket>> } = {\n [PerformanceTicketStatus.BLOCKED]: this._selectedBlockedTickets,\n [PerformanceTicketStatus.AVAILABLE]: this._selectedTickets,\n };\n\n return lists[ticket.status] ?? null;\n }\n\n toggle(ticket: PerformanceTicket): void {\n const list = this.getListByStatus(ticket);\n\n if (list) {\n list.update((ids) => {\n const next = new Set(ids);\n if (next.has(ticket)) {\n next.delete(ticket);\n } else {\n next.add(ticket);\n }\n return next;\n });\n }\n }\n\n select(ticket: PerformanceTicket): void {\n const list = this.getListByStatus(ticket);\n\n if (list) {\n list.update((ids) => {\n const next = new Set(ids);\n next.add(ticket);\n return next;\n });\n }\n }\n\n deselect(ticket: PerformanceTicket): void {\n const list = this.getListByStatus(ticket);\n\n if (list) {\n list.update((ids) => {\n const next = new Set(ids);\n next.delete(ticket);\n return next;\n });\n }\n }\n\n clearBlockedSelection(): void {\n this._selectedBlockedTickets.set(new Set());\n }\n\n clearSelection(): void {\n this._selectedTickets.set(new Set());\n this._zoneQuantities.set(new Map());\n this._productQuantities.set(new Map());\n this.selectionDetailsService.clearSelection();\n this.selectionDiscountService.clearSelection();\n }\n\n isSelected(ticket: PerformanceTicket): boolean {\n return this._selectedTickets().has(ticket);\n }\n\n initZoneQuantity(elementId: number, maxCapacity: number): void {\n this._zoneQuantities.update((map) => {\n const next = new Map(map);\n if (!next.has(elementId)) {\n next.set(elementId, { elementId, selectedCount: 0, maxCapacity });\n }\n return next;\n });\n }\n\n adjustZoneQuantity(elementId: number, delta: number): void {\n const zoneTickets = this._allTickets()\n .filter((t) => t.room_map_element_id === elementId)\n .sort((a, b) => ((a.seat_label || '') < (b.seat_label || '') ? -1 : 1));\n\n this._zoneQuantities.update((map) => {\n const next = new Map(map);\n const current = next.get(elementId);\n if (!current) return next;\n\n const newCount = Math.max(0, Math.min(current.maxCapacity, current.selectedCount + delta));\n next.set(elementId, { ...current, selectedCount: newCount });\n return next;\n });\n\n const state = this._zoneQuantities().get(elementId);\n const currentCount = state ? state.selectedCount : 0;\n\n this._selectedTickets.update((ids) => {\n const next = new Set(ids);\n const nowSelected = zoneTickets.filter((t) => next.has(t));\n\n if (delta > 0) {\n const toSelect = zoneTickets.find((t) => !next.has(t) && t.status === 'available');\n if (toSelect) next.add(toSelect);\n } else if (delta < 0 && nowSelected.length > 0) {\n const lastSelected = nowSelected[nowSelected.length - 1];\n next.delete(lastSelected);\n }\n\n return next;\n });\n }\n\n getZoneTickets(elementId: number): PerformanceTicket[] {\n return this._allTickets()\n .filter((t) => t.room_map_element_id === elementId)\n .sort((a, b) => ((a.seat_label || '') < (b.seat_label || '') ? -1 : 1));\n }\n\n buildTooltipData(\n ticket: PerformanceTicket,\n elementName: string,\n seatLabel: string | null,\n x: number,\n y: number,\n ): TicketMapTooltipData {\n return {\n x,\n y,\n elementName,\n seatLabel,\n price: Number(ticket.normal_price ?? '0'),\n status: ticket.status,\n statusLabel: TICKET_STATUS_LABELS[ticket.status] || ticket.status,\n statusColor: TICKET_STATUS_COLORS[ticket.status] || '#999',\n isSelected: this.isSelected(ticket),\n ticketId: ticket.id,\n };\n }\n\n buildReservePerformanceDto(\n paymentMethod = 'cash',\n termsAccepted = true,\n dataProcessingAccepted = true,\n ): ReservePerformanceDto {\n const billing = this.selectionDetailsService.billingInformation();\n\n return {\n ticket_ids: this.selectedTicketIdList(),\n coupon_code: this.selectionDiscountService.coupon()?.code ?? undefined,\n gift_bond_code: this.selectionDiscountService.giftBondCode() ?? undefined,\n corporate_bond_code: this.selectionDiscountService.corporateBondCode() ?? undefined,\n payment_method: paymentMethod,\n billing: {\n first_name: billing?.first_name ?? '',\n last_name: billing?.last_name ?? '',\n email: billing?.email ?? '',\n mobile: billing?.mobile ?? '',\n document_type: billing?.document_type ?? '',\n document_number: String(billing?.document_number ?? ''),\n address: billing?.address ?? '',\n city_id: billing?.city_id ?? 0,\n postal_code: billing?.postal_code ?? undefined,\n address_notes: undefined,\n terms_accepted: termsAccepted,\n data_processing_accepted: dataProcessingAccepted,\n comments: undefined,\n },\n };\n }\n}\n","import { Injectable, computed, inject } from '@angular/core';\nimport { PerformanceBookingDataService } from './performance-booking-data.service';\nimport { TicketSelectionService } from './ticket-selection.service';\nimport { TicketSelectionDiscountService } from './ticket-selection-discount.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionTotalsService {\n private bookingDataService = inject(PerformanceBookingDataService);\n private selectionService = inject(TicketSelectionService);\n private selectionDiscountService = inject(TicketSelectionDiscountService);\n\n readonly selectedProductEntries = computed<{ id: number; quantity: number }[]>(() => {\n const entries: { id: number; quantity: number }[] = [];\n this.selectionService.productQuantities().forEach((quantity, id) => {\n if (quantity > 0) {\n entries.push({ id, quantity });\n }\n });\n return entries;\n });\n\n readonly selectedProductCount = computed(() => this.selectedProductEntries().length);\n\n readonly productSubtotal = computed(() => {\n let total = 0;\n const products = this.selectionService.products();\n this.selectionService.productQuantities().forEach((quantity, id) => {\n if (quantity > 0) {\n const product = products.find((p) => p.id === id);\n if (product) {\n total += product.price * quantity;\n }\n }\n });\n return total;\n });\n\n readonly ticketSubtotal = computed(() => {\n return this.selectionService.selectedTickets().reduce((sum, ticket) => {\n return sum + Number(ticket?.normal_price || '0');\n }, 0);\n });\n\n readonly serviceFee = computed(() => {\n return Number(this.bookingDataService.show()?.service_fee ?? '0');\n });\n\n subtotalValue(): number {\n return (\n this.selectionService.selectedTickets().reduce((sum, ticket) => {\n return sum + Number(ticket?.normal_price || '0');\n }, 0) + this.productSubtotal()\n );\n }\n\n totalValue(): number {\n if (this.subtotalValue() < 1) {\n return 0;\n }\n\n return this.subtotalValue() + this.serviceFee();\n }\n\n totalDiscounted(): number | null {\n let total = null;\n\n if (this.subtotalValue() < 1) {\n return total;\n }\n\n total = this.subtotalValue();\n\n if (this.serviceFee() > 0) {\n total += this.serviceFee();\n }\n\n const discountValue = this.selectionDiscountService.selectedDiscountValue();\n if (!discountValue) {\n return null;\n }\n\n if (discountValue && discountValue > 0) {\n total = total - discountValue;\n }\n\n if (total && total < 0) {\n total = 0;\n }\n\n return total;\n }\n}\n","import { Injectable, signal, inject } from '@angular/core';\nimport { Stage } from 'konva/lib/Stage';\nimport { PerformanceBookingDataService } from './performance-booking-data.service';\nimport { TicketMapZoomConfig } from '../../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketMapZoomService {\n readonly currentZoom = signal<number>(1);\n private stage?: Stage;\n private bookingDataService = inject(PerformanceBookingDataService);\n\n private readonly defaultConfig: TicketMapZoomConfig = {\n minZoom: 0.3,\n maxZoom: 5,\n zoomStep: 0.1,\n scaleBy: 1.1,\n };\n\n constructor() {}\n\n /**\n * Set the Konva stage instance\n */\n setStage(stage: Stage): void {\n this.stage = stage;\n }\n\n /**\n * Zoom in by one step\n */\n zoomIn(): void {\n if (!this.stage) return;\n\n const newScale = Math.min(\n this.defaultConfig.maxZoom,\n this.currentZoom() + this.defaultConfig.zoomStep,\n );\n this.applyZoom(newScale);\n }\n\n /**\n * Zoom out by one step\n */\n zoomOut(): void {\n if (!this.stage) return;\n\n const newScale = Math.max(\n this.defaultConfig.minZoom,\n this.currentZoom() - this.defaultConfig.zoomStep,\n );\n this.applyZoom(newScale);\n }\n\n /**\n * Reset zoom to 100%\n */\n resetZoom(): void {\n if (!this.stage) return;\n this.applyZoom(1);\n }\n\n /**\n * Get current zoom as percentage string\n */\n getZoomPercentage(): string {\n return Math.round(this.currentZoom() * 100) + '%';\n }\n\n /**\n * Get current zoom value\n */\n getCurrentZoom(): number {\n return this.currentZoom();\n }\n\n /**\n * Apply zoom with center point\n */\n private applyZoom(newScale: number): void {\n if (!this.stage) return;\n\n const oldScale = this.stage.scaleX();\n const stageCenter = {\n x: this.stage.width() / 2,\n y: this.stage.height() / 2,\n };\n\n const mousePointTo = {\n x: (stageCenter.x - this.stage.x()) / oldScale,\n y: (stageCenter.y - this.stage.y()) / oldScale,\n };\n\n this.applyZoomScale(newScale, stageCenter, mousePointTo);\n }\n\n /**\n * Apply zoom scale with specific center point\n */\n private applyZoomScale(\n newScale: number,\n centerPoint: { x: number; y: number },\n mousePointTo: { x: number; y: number },\n ): void {\n if (!this.stage) return;\n\n this.stage.scaleX(newScale);\n this.stage.scaleY(newScale);\n\n const newPos = {\n x: centerPoint.x - mousePointTo.x * newScale,\n y: centerPoint.y - mousePointTo.y * newScale,\n };\n\n this.stage.position(newPos);\n this.stage.batchDraw();\n\n this.currentZoom.set(newScale);\n this.bookingDataService.updateStageConfig({\n scaleX: newScale,\n scaleY: newScale,\n x: this.stage.x(),\n y: this.stage.y(),\n });\n }\n\n /**\n * Handle mouse wheel zoom toward the cursor position\n */\n handleWheelZoom(deltaY: number): void {\n if (!this.stage) return;\n\n const oldScale = this.currentZoom();\n const pointer = this.stage.getPointerPosition();\n if (!pointer) return;\n\n const scaleBy = this.defaultConfig.scaleBy;\n const direction = deltaY > 0 ? -1 : 1;\n const newScale = direction > 0 ? oldScale * scaleBy : oldScale / scaleBy;\n\n if (newScale < this.defaultConfig.minZoom || newScale > this.defaultConfig.maxZoom) return;\n\n const mousePointTo = {\n x: (pointer.x - this.stage.x()) / oldScale,\n y: (pointer.y - this.stage.y()) / oldScale,\n };\n\n this.applyZoomScale(newScale, pointer, mousePointTo);\n }\n\n /**\n * Fit the content bounds to fill the stage container\n */\n fitToContainer(padding: number = 24): void {\n if (!this.stage) return;\n\n const containerEl = this.stage.container().parentElement;\n if (!containerEl) return;\n\n const containerWidth = containerEl.offsetWidth;\n const containerHeight = containerEl.offsetHeight;\n if (containerWidth === 0 || containerHeight === 0) return;\n\n const renderData = this.bookingDataService.renderData();\n if (renderData.length === 0) return;\n\n let minX = Infinity,\n minY = Infinity;\n let maxX = -Infinity,\n maxY = -Infinity;\n\n for (const el of renderData) {\n const c = el.shapeConfig;\n if (c['x'] !== undefined) {\n minX = Math.min(minX, c['x']);\n maxX = Math.max(maxX, c['x'] + (c['width'] || 0));\n }\n if (c['y'] !== undefined) {\n minY = Math.min(minY, c['y']);\n maxY = Math.max(maxY, c['y'] + (c['height'] || 0));\n }\n }\n\n if (!isFinite(minX)) return;\n\n const contentW = maxX - minX;\n const contentH = maxY - minY;\n if (contentW <= 0 || contentH <= 0) return;\n\n setTimeout(() => {\n if (this.stage) {\n this.fitToBounds(\n { x: minX, y: minY, width: contentW, height: contentH },\n containerWidth,\n containerHeight,\n padding,\n );\n }\n });\n }\n\n /**\n * Get current stage position\n */\n getStagePosition(): { x: number; y: number } {\n if (!this.stage) return { x: 0, y: 0 };\n return this.stage.position();\n }\n\n /**\n * Set stage position (useful for programmatic panning)\n */\n setStagePosition(position: { x: number; y: number }): void {\n if (!this.stage) return;\n this.stage.position(position);\n this.stage.batchDraw();\n }\n\n /**\n * Fit the stage content bounds to the container, centering and scaling\n * to show the full content with optional padding.\n */\n fitToBounds(\n contentBounds: { x: number; y: number; width: number; height: number },\n containerWidth: number,\n containerHeight: number,\n padding: number = 24,\n ): void {\n if (!this.stage) return;\n\n const { x, y, width, height } = contentBounds;\n const contentW = Math.max(width, 1);\n const contentH = Math.max(height, 1);\n\n const scaleX = (containerWidth - padding * 2) / contentW;\n const scaleY = (containerHeight - padding * 2) / contentH;\n const newScale = Math.min(scaleX, scaleY);\n\n const offsetX = (containerWidth - contentW * newScale) / 2;\n const offsetY = (containerHeight - contentH * newScale) / 2;\n\n this.stage.scaleX(newScale);\n this.stage.scaleY(newScale);\n this.stage.position({\n x: offsetX - x * newScale,\n y: offsetY - y * newScale,\n });\n this.stage.batchDraw();\n\n this.currentZoom.set(newScale);\n this.bookingDataService.updateStageConfig({\n scaleX: newScale,\n scaleY: newScale,\n x: this.stage.x(),\n y: this.stage.y(),\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseModalService } from '../base-modal.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfirmationOrderModalService extends BaseModalService {}\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { TICKERA_COMPONENTS_CONFIG } from '../config/tickera-components.config';\nimport { TickeraComponentsConfig } from '../interfaces/tickera-components-config.interface';\n\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n const platformId = inject(PLATFORM_ID);\n const config = inject(TICKERA_COMPONENTS_CONFIG) as TickeraComponentsConfig;\n\n if (isPlatformBrowser(platformId)) {\n const key = config.accessTokenKey ?? 'access_token';\n const token = localStorage.getItem(key);\n if (token) {\n req = req.clone({\n setHeaders: { Authorization: `Bearer ${token}` },\n });\n }\n }\n\n return next(req);\n};\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-button.component.html',\n styleUrl: './app-button.component.scss',\n})\nexport class AppButtonComponent {\n @Output() clicked = new EventEmitter<void>();\n @Input() disabled: boolean = false;\n @Input() loading: boolean = false;\n @Input() type: 'button' | 'submit' = 'button';\n @Input() variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent' = 'primary';\n @Input() text: string = '';\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n @Input() loadingText: string = '';\n @Input() icon: string = '';\n\n handleClick() {\n this.clicked.emit();\n }\n\n get buttonClasses(): string {\n return [\n 'btn',\n `btn-${this.variant}`,\n `btn-${this.size}`,\n this.disabled ? 'btn-disabled' : '',\n this.loading ? 'btn-loading' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<button\n [type]=\"type\"\n [disabled]=\"loading || disabled\"\n [class]=\"buttonClasses\"\n (click)=\"handleClick()\"\n>\n @if (icon && !loading) {\n <i class=\"btn-icon\" [ngClass]=\"icon\"></i>\n }\n\n @if (loading) {\n <i class=\"btn-icon btn-icon-spin ri-refresh-line\"></i>\n }\n\n {{ loading ? loadingText : text }}\n</button>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { RouterLink, RouterModule } from '@angular/router';\n\n@Component({\n selector: 'app-link-button',\n standalone: true,\n imports: [CommonModule, RouterLink, RouterModule, TranslocoModule],\n templateUrl: './app-link-button.component.html',\n styleUrls: ['../app-button/app-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppLinkButtonComponent {\n @Input() disabled: boolean = false;\n @Input() loading: boolean = false;\n @Input() target: '_blank' | '_self' | '_parent' | '_top' = '_self';\n @Input() text: string = '';\n @Input() icon: string = '';\n @Input() loadingText: string = '';\n @Input() route: string = '';\n @Input() queryParams: Record<string, any> = {};\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n @Input() variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent' = 'primary';\n\n get buttonClasses(): string {\n return [\n 'btn',\n `btn-${this.variant}`,\n `btn-${this.size}`,\n this.disabled ? 'btn-disabled' : '',\n this.loading ? 'btn-loading' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<a\n class=\"{{ buttonClasses }}\"\n [routerLink]=\"!disabled ? route : null\"\n [queryParams]=\"queryParams\"\n [target]=\"target\"\n>\n @if (icon) {\n <i [class]=\"icon\"></i>\n }\n\n {{ loading ? loadingText : text }}\n</a>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ALERT_ICONS } from '../../../constants/alerts';\n\n@Component({\n selector: 'app-alert',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-alert.component.html',\n styleUrls: ['./app-alert.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppAlertComponent {\n @Input() type: 'success' | 'error' | 'warning' | 'info' = 'success';\n @Input() text: string = '';\n @Input() closeable: boolean = false;\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n\n get alertIcon(): string {\n return ALERT_ICONS[this.type] ?? ALERT_ICONS.info;\n }\n}\n","<div class=\"alert\" [class]=\"'alert--' + type + ' alert--' + size\" role=\"alert\">\n <div class=\"alert-content\">\n <i class=\"{{ alertIcon }}\"></i>\n <span>{{ text }}</span>\n </div>\n\n @if (closeable) {\n <span class=\"alert-close\">\n <i class=\"ri-close-line\"></i>\n </span>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n WritableSignal,\n signal,\n HostListener,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalSize } from '../../../types/modals/modal-size.type';\n\n@Component({\n selector: 'app-modal',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-modal.component.html',\n styleUrls: ['./app-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppModalComponent {\n @Input() title: string = '';\n @Input() disableClose: boolean = false;\n @Input() showHeader: boolean = true;\n @Input() showCloseButton: boolean = true;\n @Input() showTitle: boolean = true;\n @Input() isOpen: WritableSignal<boolean> = signal(false);\n @Input() size: ModalSize = 'md';\n @Output() closeModal = new EventEmitter<void>();\n\n onCloseModal(): void {\n if (this.disableClose) return;\n this.closeModal.emit();\n }\n\n @HostListener('document:keydown.escape')\n onKeydownEscape(): void {\n if (this.isOpen()) {\n this.onCloseModal();\n }\n }\n}\n","@if (isOpen()) {\n <div class=\"modal-overlay\">\n <div class=\"modal-backdrop\" (click)=\"onCloseModal()\"></div>\n\n <div class=\"modal-dialog\" [class]=\"'modal-dialog--' + size\">\n @if (showHeader && ((showTitle && !!title) || (showCloseButton && !disableClose))) {\n <div class=\"modal-header\">\n @if (showTitle && !!title) {\n <h3 class=\"modal-title\">{{ title }}</h3>\n }\n\n @if (showCloseButton && !disableClose) {\n <button class=\"modal-close-button\" (click)=\"onCloseModal()\">&times;</button>\n }\n </div>\n }\n\n <div class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppModalComponent } from '../app-modal/app-modal.component';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { FeedbackModalType } from '../../../types';\n\n@Component({\n selector: 'feedback-modal',\n standalone: true,\n imports: [CommonModule, AppModalComponent, AppButtonComponent],\n templateUrl: './feedback-modal.component.html',\n styleUrls: ['./feedback-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class FeedbackModalComponent implements OnChanges, OnDestroy {\n @Input() isOpen: WritableSignal<boolean> = signal(false);\n @Input() type: FeedbackModalType = 'info';\n @Input() title: string = '';\n @Input() message: string = '';\n @Input() showHeader: boolean = false;\n @Input() showCloseButton: boolean = false;\n @Input() showTitle: boolean = false;\n @Input() autoClose: boolean = false;\n @Input() autoCloseDuration: number = 3000;\n @Input() buttonText: string = '';\n\n @Output() closed = new EventEmitter<void>();\n\n private autoCloseTimeout: ReturnType<typeof setTimeout> | null = null;\n\n get defaultButtonText(): string {\n return this.type === 'loading' ? 'Cancelar' : 'Cerrar';\n }\n\n get resolvedButtonText(): string {\n return this.buttonText || this.defaultButtonText;\n }\n\n get buttonVariant(): 'primary' | 'secondary' {\n return this.type === 'loading' ? 'secondary' : 'primary';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.autoClose && this.isOpen()) {\n this.scheduleAutoClose();\n }\n }\n\n ngOnDestroy(): void {\n this.clearAutoClose();\n }\n\n closeModal(): void {\n this.clearAutoClose();\n this.isOpen.set(false);\n this.closed.emit();\n }\n\n private scheduleAutoClose(): void {\n this.clearAutoClose();\n this.autoCloseTimeout = setTimeout(() => {\n this.closeModal();\n }, this.autoCloseDuration);\n }\n\n private clearAutoClose(): void {\n if (this.autoCloseTimeout) {\n clearTimeout(this.autoCloseTimeout);\n this.autoCloseTimeout = null;\n }\n }\n}\n","<app-modal\n [showHeader]=\"showHeader\"\n [showCloseButton]=\"showCloseButton\"\n [showTitle]=\"showTitle\"\n [isOpen]=\"isOpen\"\n size=\"sm\"\n (closeModal)=\"closeModal()\"\n>\n <div class=\"feedback-modal-body\" [ngClass]=\"'feedback-modal-body--' + type\">\n <div class=\"feedback-modal-icon-wrapper\">\n @switch (type) {\n @case ('loading') {\n <div class=\"feedback-modal-spinner\"></div>\n }\n @case ('success') {\n <i class=\"ri-check-line feedback-modal-icon feedback-modal-icon--success\"></i>\n }\n @case ('error') {\n <i class=\"ri-error-warning-line feedback-modal-icon feedback-modal-icon--error\"></i>\n }\n @case ('warning') {\n <i class=\"ri-alert-line feedback-modal-icon feedback-modal-icon--warning\"></i>\n }\n @case ('info') {\n <i class=\"ri-info-i feedback-modal-icon feedback-modal-icon--info\"></i>\n }\n }\n </div>\n\n <h3 class=\"feedback-modal-title\">{{ title }}</h3>\n\n @if (message) {\n <p class=\"feedback-modal-message\">{{ message }}</p>\n }\n\n @if (resolvedButtonText && showCloseButton) {\n <app-button [text]=\"resolvedButtonText\" [variant]=\"buttonVariant\" (clicked)=\"closeModal()\" />\n }\n </div>\n</app-modal>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { BASE_INPUT_CLASSES, ERROR_INPUT_CLASSES } from '../../../constants/form-fields';\n\n@Component({\n selector: 'form-input',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './form-input.component.html',\n styleUrls: ['./form-input.component.scss'],\n})\nexport class FormInputComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() type = 'text';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() minlength: number | null = null;\n @Input() min: number | null = null;\n @Input() step: number | null = 1;\n @Input() pattern: string | null = null;\n @Input() fieldGroupClass: string = '';\n @Input() autocomplete: boolean = true;\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'email') {\n return this.transloco.translate('formErrors.email');\n }\n\n return this.transloco.translate(`formErrors.${errorKey}`);\n }\n\n get inputClasses(): string {\n return this.showError ? ERROR_INPUT_CLASSES : BASE_INPUT_CLASSES;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <input\n [type]=\"type\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [minlength]=\"minlength\"\n [pattern]=\"pattern || ''\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n class=\"form-input\"\n [autocomplete]=\"autocomplete\"\n [min]=\"min\"\n [step]=\"step\"\n />\n </div>\n\n @if (showError) {\n <div class=\"form-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { FormInputComponent } from '../../forms/form-input/form-input.component';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\nimport { AppAlertComponent } from '../app-alert/app-alert.component';\nimport { DeleteConfirmationService } from '../../../services/delete-confirmation.service';\n\n@Component({\n selector: 'delete-confirmation',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n AppButtonComponent,\n FormInputComponent,\n AppModalComponent,\n AppAlertComponent,\n ],\n templateUrl: './delete-confirmation.component.html',\n styleUrls: ['./delete-confirmation.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DeleteConfirmationComponent {\n deleteConfirmationForm: FormGroup;\n\n constructor(\n private fb: FormBuilder,\n private deleteConfirmationService: DeleteConfirmationService,\n protected transloco: TranslocoService,\n ) {\n this.deleteConfirmationForm = this.fb.group({\n confirmationText: ['', [Validators.required]],\n });\n }\n\n get title() {\n return this.deleteConfirmationService.modalTitle();\n }\n\n get resourceName() {\n return this.deleteConfirmationService.modalResourceName();\n }\n\n get confirmationText() {\n return this.deleteConfirmationService.modalConfirmationText();\n }\n\n get isOpen() {\n return this.deleteConfirmationService.modalIsOpen;\n }\n\n get isConfirmationValid(): boolean {\n const value = this.deleteConfirmationForm.value.confirmationText?.trim()?.toLowerCase();\n const confirmation = this.confirmationText?.trim()?.toLowerCase();\n return value == confirmation;\n }\n\n onCloseModal(): void {\n this.deleteConfirmationForm.reset();\n this.deleteConfirmationService.close();\n }\n\n onConfirmDelete(): void {\n const callback = this.deleteConfirmationService.getConfirmDeleteCallback();\n if (callback) {\n callback();\n }\n this.deleteConfirmationForm.reset();\n this.deleteConfirmationService.close();\n }\n}\n","@if (isOpen()) {\n <app-modal [title]=\"title\" [isOpen]=\"isOpen\" (closeModal)=\"onCloseModal()\">\n <form\n [formGroup]=\"deleteConfirmationForm\"\n method=\"POST\"\n class=\"delete-confirmation-content\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <app-alert\n type=\"warning\"\n [text]=\"'deleteConfirmation.warning' | transloco\"\n size=\"sm\"\n [closeable]=\"false\"\n />\n\n <p class=\"delete-confirmation-instructions\">\n {{ 'deleteConfirmation.instructions' | transloco }}\n\n <span class=\"delete-confirmation-highlight\">\n {{ confirmationText }}\n </span>\n </p>\n\n <form-input\n name=\"confirmationText\"\n type=\"text\"\n class=\"delete-confirmation-field\"\n [required]=\"true\"\n [autocomplete]=\"false\"\n formControlName=\"confirmationText\"\n [placeholder]=\"\n transloco.translate('deleteConfirmation.placeholder', { text: confirmationText })\n \"\n />\n\n <div class=\"delete-confirmation-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'deleteConfirmation.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'deleteConfirmation.delete' | transloco\"\n [disabled]=\"!isConfirmationValid\"\n size=\"sm\"\n />\n </div>\n </form>\n </app-modal>\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-badge',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-badge.component.html',\n styleUrl: './app-badge.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppBadgeComponent {\n @Input() text: string = '';\n @Input() color: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' = 'primary';\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n @Input() backgroundColor: string = '';\n @Input() textColor: string = '';\n}\n","<span\n class=\"badge\"\n [class]=\"'badge--' + color + ' badge--' + size\"\n [style.background-color]=\"backgroundColor || null\"\n [style.color]=\"textColor || null\"\n [style.color]=\"textColor || null\"\n>\n {{ text }}\n</span>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { Auditable } from '../../../interfaces/auditable.interface';\n\n@Component({\n selector: 'app-audit-information',\n standalone: true,\n imports: [CommonModule, DatePipe],\n templateUrl: './audit-information.component.html',\n styleUrls: ['./audit-information.component.scss'],\n})\nexport class AuditInformationComponent {\n @Input() data: Auditable | null = null;\n}\n","@if (data) {\n <div class=\"audit-information\">\n <div class=\"audit-information-section\">\n <div class=\"audit-information-header\">\n <p class=\"audit-information-header-title\">Información de auditoria</p>\n </div>\n\n <div class=\"audit-information-body\">\n <ul class=\"audit-information-list\">\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Fecha de creación:</span>\n <span>{{ data.created_at | date: 'medium' }}</span>\n </li>\n\n @if (data.created_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Creado por:</span>\n <span>\n {{ data.created_by_admin.first_name }} - {{ data.created_by_admin.email }}\n </span>\n </li>\n }\n\n @if (data.updated_at) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Última actualización:</span>\n <span>{{ data.updated_at | date: 'medium' }}</span>\n </li>\n }\n\n @if (data.updated_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Actualizado por:</span>\n <span>\n {{ data.updated_by_admin.first_name }} - {{ data.updated_by_admin.email }}\n </span>\n </li>\n }\n\n @if (data.is_published && data.published_at) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Fecha de publicación:</span>\n <span>{{ data.published_at | date: 'medium' }}</span>\n </li>\n }\n\n @if (data.is_published && data.published_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Publicado por:</span>\n <span>\n {{ data.published_by_admin.first_name }} - {{ data.published_by_admin.email }}\n </span>\n </li>\n }\n </ul>\n </div>\n </div>\n </div>\n}\n","import { Component, EventEmitter, Input, Output, Type, Injector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'dynamic-table',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './dynamic-table.component.html',\n styleUrls: ['./dynamic-table.component.scss'],\n})\nexport class DynamicTableComponent {\n constructor(private injector: Injector) {}\n\n @Input() title: string = '';\n @Input() data: any[] = [];\n @Input() headers: any[] = [];\n @Input() columnComponents: { [key: string]: Type<any> } = {};\n\n // Inputs necesarios para la paginación remota\n @Input() isLoading: boolean = true;\n @Input() totalItems: number = 0;\n @Input() itemsPerPage: number = 10;\n @Input() currentPage: number = 1;\n\n // Eventos para avisar al Backend\n @Output() pageChange = new EventEmitter<number>();\n @Output() searchChange = new EventEmitter<string>();\n\n // Visualización de paginación\n @Input() showPagination: boolean = true;\n\n // Visualización de búsqueda\n @Input() showSearch: boolean = true;\n\n // Visualización de título\n @Input() showTitle: boolean = true;\n\n get totalPages(): number {\n return Math.ceil(this.totalItems / this.itemsPerPage) || 1;\n }\n\n onSearch(event: any) {\n this.data = [];\n const value = event.target.value;\n this.searchChange.emit(value); // El padre recibe el término y hace el fetch\n }\n\n changePage(delta: number) {\n const newPage = this.currentPage + delta;\n if (newPage > 0 && newPage <= this.totalPages) {\n this.pageChange.emit(newPage); // El padre recibe la nueva página\n }\n }\n\n createInjector(row: any): Injector {\n return Injector.create({\n providers: [{ provide: 'ROW_DATA', useValue: row }],\n parent: this.injector,\n });\n }\n}\n","<div class=\"dynamic-table\">\n @if (showTitle || showSearch) {\n <div class=\"dynamic-table-toolbar\">\n @if (showTitle) {\n <h2 class=\"dynamic-table-title\">{{ title }}</h2>\n }\n\n @if (showSearch) {\n <input\n type=\"text\"\n (input)=\"onSearch($event)\"\n placeholder=\"Buscar...\"\n class=\"dynamic-table-search\"\n />\n }\n </div>\n }\n\n <div class=\"dynamic-table-scroll\">\n <table class=\"dynamic-table-table\">\n <thead class=\"dynamic-table-head\">\n <tr>\n @for (header of headers; track header.key) {\n <th class=\"dynamic-table-head-cell\">\n {{ header.label }}\n </th>\n }\n </tr>\n </thead>\n\n <tbody class=\"dynamic-table-body\">\n @if (isLoading) {\n <tr class=\"dynamic-table-row\">\n @for (header of headers; track header.key) {\n <td class=\"dynamic-table-cell\">\n <div class=\"dynamic-table-skeleton\"></div>\n </td>\n }\n </tr>\n }\n\n @for (row of data; track row) {\n <tr class=\"dynamic-table-row\">\n @for (header of headers; track header.key) {\n <td class=\"dynamic-table-cell dynamic-table-cell--nowrap\">\n @if (columnComponents[header.key]) {\n <ng-container\n *ngComponentOutlet=\"columnComponents[header.key]; injector: createInjector(row)\"\n ></ng-container>\n } @else {\n {{ row[header.key] || '---' }}\n }\n </td>\n }\n </tr>\n }\n\n @if ((!data || data.length < 1) && !isLoading) {\n <tr>\n <td [attr.colspan]=\"headers.length\" class=\"dynamic-table-empty\">\n No se encontraron registros en el servidor.\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n @if (showPagination) {\n <div class=\"dynamic-table-pagination\">\n <div class=\"dynamic-table-pagination-info\">\n Mostrando página\n <span class=\"dynamic-table-pagination-strong\">{{ currentPage }}</span> de\n <span class=\"dynamic-table-pagination-strong\">{{ totalPages }}</span>\n <span class=\"dynamic-table-pagination-total\">({{ totalItems }} registros totales)</span>\n </div>\n\n <div class=\"dynamic-table-pagination-actions\">\n <button\n (click)=\"changePage(-1)\"\n [disabled]=\"currentPage === 1\"\n class=\"dynamic-table-pagination-button\"\n >\n Anterior\n </button>\n <button\n (click)=\"changePage(1)\"\n [disabled]=\"currentPage >= totalPages\"\n class=\"dynamic-table-pagination-button\"\n >\n Siguiente\n </button>\n </div>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppLinkButtonComponent } from '../../buttons/app-link-button/app-link-button.component';\nimport { Show } from '../../../interfaces';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { DateService } from '../../../services';\nimport { SHOW_TYPE_COLORS as COLORS } from '../../../constants/shows/show-type-colors';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\n\n@Component({\n selector: 'show-card',\n standalone: true,\n imports: [CommonModule, AppLinkButtonComponent, AppBadgeComponent, TranslocoModule],\n templateUrl: './show-card.component.html',\n styleUrls: ['./show-card.component.scss'],\n})\nexport class ShowCardComponent {\n @Input({ required: true }) show!: Show;\n @Input() linkText: string = 'Ver funciones';\n @Input() linkUrlFn?: (show: Show) => string;\n @Input() linkQueryParams?: Record<string, any>;\n\n transloco = inject(TranslocoService);\n dateService = inject(DateService);\n\n get showTypeColor(): { bg: string; text: string } {\n return this.show.show_type ? COLORS[this.show.show_type] : COLORS['DEFAULT'];\n }\n\n formatTimeDate(date: string): Date {\n return new Date(date);\n }\n}\n","<div class=\"show-card\">\n <div class=\"show-card__image\">\n <app-badge\n [text]=\"`show.showTypes.${show.show_type}` | transloco\"\n [backgroundColor]=\"this.showTypeColor.bg\"\n [textColor]=\"this.showTypeColor.text\"\n size=\"xs\"\n class=\"show-card__badge\"\n />\n\n @if (show.images && show.images.length > 0) {\n <img [src]=\"show.images[0].full_url\" class=\"show-card__image-img\" />\n } @else {\n <span class=\"show-card__image-placeholder\"></span>\n }\n </div>\n\n <div class=\"show-card__info\">\n <p class=\"show-card__title\">\n {{ show.title }}\n </p>\n\n @if (show.next_performance) {\n <div class=\"show-card__datetime\">\n <span class=\"show-card__datetime-title\">\n {{ 'show.next_performance' | transloco }}\n </span>\n\n <br />\n\n <span class=\"show-card__date\">\n {{ show.next_performance.start_time | date: `EEEE` | titlecase }}\n {{ show.next_performance.start_time | date: `dd 'de' MMMM, hh:mm a` }}\n </span>\n </div>\n }\n\n @if (show.days_of_week && show.days_of_week.length > 0) {\n <div class=\"show-card__days\">\n @for (day of show.days_of_week; track $index) {\n <app-badge\n [text]=\"`common.daysOfWeekByNumber.${day}` | transloco\"\n size=\"xs\"\n backgroundColor=\"#525252\"\n textColor=\"#e5e5e5\"\n />\n }\n </div>\n }\n\n @if (show.unique_start_times && show.unique_start_times.length > 0) {\n <div class=\"show-card__times\">\n @for (time of show.unique_start_times; track $index) {\n <app-badge\n [text]=\"dateService.formatDate(formatTimeDate(time), 'hh:mm a')\"\n size=\"xs\"\n backgroundColor=\"#525252\"\n textColor=\"#e5e5e5\"\n />\n }\n </div>\n }\n\n <app-link-button\n class=\"show-card__link\"\n [route]=\"linkUrlFn ? linkUrlFn(show) : '#'\"\n [queryParams]=\"linkQueryParams ?? {}\"\n [text]=\"linkText\"\n icon=\"ri-calendar-line\"\n variant=\"primary\"\n size=\"sm\"\n />\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'show-card-skeleton',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './show-card-skeleton.component.html',\n styleUrls: ['./show-card-skeleton.component.scss'],\n})\nexport class ShowCardSkeletonComponent {}\n","<div class=\"show-card-skeleton\">\n <div class=\"show-card-skeleton__image\">\n <div class=\"show-card-skeleton__badge\"></div>\n </div>\n\n <div class=\"show-card-skeleton__info\">\n <div class=\"show-card-skeleton__title\"></div>\n\n <div class=\"show-card-skeleton__text\"></div>\n <div class=\"show-card-skeleton__text-sm\"></div>\n\n <div class=\"show-card-skeleton__tags\">\n <div class=\"show-card-skeleton__tag\"></div>\n <div class=\"show-card-skeleton__tag\"></div>\n <div class=\"show-card-skeleton__tag\"></div>\n </div>\n\n <div class=\"show-card-skeleton__tags\">\n <div class=\"show-card-skeleton__tag\"></div>\n <div class=\"show-card-skeleton__tag\"></div>\n </div>\n\n <div class=\"show-card-skeleton__button\"></div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\nimport { setStoredLanguage } from '../../../i18n/language.utils';\n\n@Component({\n selector: 'language-switcher',\n standalone: true,\n imports: [CommonModule, TranslocoModule],\n templateUrl: './language-switcher.component.html',\n styleUrls: ['./language-switcher.component.scss'],\n})\nexport class LanguageSwitcherComponent {\n availableLangs = ['es', 'en'];\n\n constructor(protected transloco: TranslocoService) {}\n\n get activeLang(): string {\n return this.transloco.getActiveLang();\n }\n\n switchLang(lang: string): void {\n this.transloco.setActiveLang(lang);\n setStoredLanguage(lang);\n }\n}\n","<div class=\"lang-switcher\">\n @for (lang of availableLangs; track lang) {\n <button\n (click)=\"switchLang(lang)\"\n class=\"lang-switcher-btn\"\n [class.active]=\"activeLang === lang\"\n [class.inactive]=\"activeLang !== lang\"\n >\n {{ lang | uppercase }}\n </button>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\n@Component({\n selector: 'form-select',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './form-select.component.html',\n styleUrls: ['./form-select.component.scss'],\n})\nexport class FormSelectComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = 'Seleccione una opción';\n @Input() required = false;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() options: SelectOption[] = [];\n @Input() fieldGroupClass: string = '';\n @Input() showDefaultOption: boolean = true;\n @Input() defaultOptionLabel: string = '';\n\n value: any = '';\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onSelectChange(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidSelection'),\n );\n }\n\n get resolvedDefaultOptionLabel(): string {\n return this.defaultOptionLabel || this.transloco.translate('common.selectOption');\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-select-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-select-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <select\n [id]=\"inputId\"\n [name]=\"name\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onSelectChange($event)\"\n (blur)=\"onTouched()\"\n class=\"form-select\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n >\n @if (showDefaultOption) {\n <option [value]=\"null\" disabled selected>{{ resolvedDefaultOptionLabel }}</option>\n }\n\n @for (option of options; track option.value) {\n <option [value]=\"option.value\" [disabled]=\"option.disabled\">\n {{ option.label }}\n </option>\n }\n </select>\n </div>\n\n @if (showError) {\n <div class=\"form-select-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\n\n@Component({\n selector: 'form-textarea',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './form-textarea.component.html',\n styleUrls: ['./form-textarea.component.scss'],\n})\nexport class FormTextareaComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() minlength: number | null = null;\n @Input() maxlength: number | null = null;\n @Input() rows: number = 4;\n @Input() cols: number | null = null;\n @Input() fieldGroupClass: string = '';\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(`formErrors.${errorKey}`);\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-textarea-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-textarea-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <textarea\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n class=\"form-textarea\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n ></textarea>\n </div>\n\n @if (showError) {\n <div class=\"form-textarea-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { TranslocoService } from '@jsverse/transloco';\nimport {\n Editor,\n NgxEditorComponent,\n NgxEditorMenuComponent,\n DEFAULT_TOOLBAR,\n Toolbar,\n toHTML,\n} from 'ngx-editor';\n\n@Component({\n selector: 'form-editor',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n NgxEditorComponent,\n NgxEditorMenuComponent,\n ],\n templateUrl: './form-editor.component.html',\n styleUrls: ['./form-editor.component.scss'],\n})\nexport class FormEditorComponent implements ControlValueAccessor, OnInit, OnDestroy {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() toolbar: Toolbar = DEFAULT_TOOLBAR;\n @Input() fieldGroupClass = '';\n\n editor!: Editor;\n value: string = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n private subscription: Subscription | null = null;\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.editor = new Editor();\n\n if (this.value) {\n this.editor.setContent(this.value);\n }\n\n this.subscription = this.editor.valueChanges\n .pipe(distinctUntilChanged())\n .subscribe((doc: Record<string, unknown>) => {\n this.value = toHTML(doc);\n this.onChange(this.value);\n this.onTouched();\n });\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n this.editor?.destroy();\n }\n\n writeValue(value: any): void {\n this.value = value ?? '';\n\n if (this.editor) {\n this.editor.setContent(value ?? null);\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n return control.invalid ? control.dirty || control.touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-editor-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-editor-required\">*</span>\n }\n </label>\n }\n\n <div class=\"form-editor-wrapper\" [class.disabled]=\"disabled\">\n <ngx-editor [editor]=\"editor\" outputFormat=\"html\" [placeholder]=\"placeholder\">\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"toolbar\"\n [disabled]=\"disabled\"\n ></ngx-editor-menu>\n </ngx-editor>\n </div>\n\n @if (showError) {\n <div class=\"form-editor-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import {\n Component,\n Input,\n Self,\n Optional,\n ElementRef,\n HostListener,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'color-picker',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n})\nexport class ColorPickerComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '#000000';\n @Input() required = false;\n @Input() readonly = false;\n @Input() fieldGroupClass: string = '';\n @Input() showPreview = true;\n @Input() presetColors: string[] = [\n '#000000',\n '#FFFFFF',\n '#EF4444',\n '#F97316',\n '#F59E0B',\n '#EAB308',\n '#84CC16',\n '#22C55E',\n '#10B981',\n '#14B8A6',\n '#06B6D4',\n '#0EA5E9',\n '#3B82F6',\n '#6366F1',\n '#8B5CF6',\n '#A855F7',\n '#D946EF',\n '#EC4899',\n '#F43F5E',\n '#6B7280',\n ];\n @Output() colorChange = new EventEmitter<string>();\n\n value: string = '#000000';\n disabled = false;\n isDropdownOpen = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private elementRef: ElementRef,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\n if (!clickedInside && this.isDropdownOpen) {\n this.isDropdownOpen = false;\n }\n }\n\n // Control value accessor methods\n writeValue(value: string): void {\n if (value) {\n this.value = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onColorChange(color: string): void {\n this.value = color;\n this.onChange(color);\n this.onTouched();\n }\n\n onInputColorChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n this.onChange(input.value);\n this.onTouched();\n this.colorChange.emit(input.value);\n }\n\n toggleDropdown(): void {\n if (this.disabled || this.readonly) return;\n this.isDropdownOpen = !this.isDropdownOpen;\n }\n\n selectPresetColor(color: string): void {\n this.onColorChange(color);\n this.colorChange.emit(color);\n this.isDropdownOpen = false;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n\n isValidHexColor(color: string): boolean {\n return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(color);\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"color-picker-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"color-picker-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <div class=\"color-picker-row\">\n <!-- Color Input -->\n <div class=\"color-picker-input-wrapper\">\n <input\n type=\"text\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInputColorChange($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n class=\"color-picker-input\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n pattern=\"^#[0-9A-Fa-f]{6}$\"\n />\n\n <!-- Native Color Picker (Hidden) -->\n <input\n type=\"color\"\n class=\"color-picker-native-input\"\n [disabled]=\"disabled || readonly\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onColorChange($event)\"\n />\n </div>\n\n <!-- Color Preview -->\n @if (showPreview) {\n <div class=\"color-picker-preview-wrapper\">\n <div\n class=\"color-picker-swatch\"\n [style.background-color]=\"value\"\n (click)=\"toggleDropdown()\"\n [class.disabled]=\"disabled || readonly\"\n ></div>\n </div>\n }\n </div>\n\n <!-- Color Presets Dropdown -->\n @if (isDropdownOpen && !disabled && !readonly) {\n <div class=\"color-picker-dropdown\">\n <div class=\"color-picker-presets\">\n @for (color of presetColors; track color) {\n <button\n type=\"button\"\n class=\"color-picker-preset-button\"\n [style.background-color]=\"color\"\n (click)=\"selectPresetColor(color)\"\n [attr.aria-label]=\"`Select color ${color}`\"\n ></button>\n }\n </div>\n\n <!-- Custom Color Input -->\n <div class=\"color-picker-custom\">\n <label class=\"color-picker-custom-label\">Custom color:</label>\n <input\n type=\"color\"\n class=\"color-picker-custom-input\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onColorChange($event)\"\n />\n </div>\n </div>\n }\n </div>\n\n @if (showError) {\n <div class=\"color-picker-error-message\">Please enter a valid hex color (e.g., #FF5733)</div>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\n\n@Component({\n selector: 'date-input',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './date-input.component.html',\n styleUrls: ['./date-input.component.scss'],\n})\nexport class DateInputComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() type = 'date';\n @Input() includeTime = false;\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() min: string | null = null;\n @Input() max: string | null = null;\n @Input() fieldGroupClass: string = '';\n @Input() dateFormat: string = 'yyyy-MM-dd';\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n if (value) {\n if (value instanceof Date) {\n this.value = this.formatDateForInput(value);\n } else if (typeof value === 'string') {\n this.value = value;\n } else {\n this.value = '';\n }\n } else {\n this.value = '';\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n const dateValue = value ? new Date(value) : null;\n this.onChange(dateValue);\n this.onTouched();\n }\n\n private formatDateForInput(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n\n if (this.includeTime) {\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n return `${year}-${month}-${day}T${hours}:${minutes}`;\n }\n\n return `${year}-${month}-${day}`;\n }\n\n private parseDateFromString(dateString: string): Date | null {\n if (!dateString) return null;\n const date = new Date(dateString);\n return isNaN(date.getTime()) ? null : date;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"date-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"date-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <input\n [type]=\"includeTime ? 'datetime-local' : type\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [min]=\"min\"\n [max]=\"max\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled\"\n class=\"date-input\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n [readonly]=\"readonly\"\n />\n </div>\n\n @if (showError) {\n <div class=\"date-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'toggle-switch',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './toggle-switch.component.html',\n styleUrls: ['./toggle-switch.component.scss'],\n})\nexport class ToggleSwitchComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() required = false;\n @Input() disabled = false;\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() fieldGroupClass: string = '';\n @Input() description = '';\n @Output() toggleClick = new EventEmitter<boolean>();\n\n value: boolean = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(@Self() @Optional() public ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n // Control value accessor methods\n writeValue(value: any): void {\n this.value = value ?? false;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onToggle(): void {\n this.value = !this.value;\n this.onChange(this.value);\n this.onTouched();\n this.toggleClick.emit(this.value);\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"toggle-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"toggle-required\">*</span>\n }\n </label>\n }\n\n <div class=\"toggle-container\">\n <button\n type=\"button\"\n role=\"switch\"\n [id]=\"inputId\"\n [name]=\"name\"\n [attr.aria-checked]=\"value\"\n [attr.aria-required]=\"required\"\n [disabled]=\"disabled\"\n [class]=\"\n 'toggle-switch ' +\n size +\n (value ? ' checked' : ' unchecked') +\n (disabled ? ' disabled' : '')\n \"\n (click)=\"onToggle()\"\n >\n <span\n [class]=\"\n 'toggle-thumb ' +\n size +\n (value ? ' checked' : ' unchecked') +\n (disabled ? ' disabled' : '')\n \"\n ></span>\n </button>\n\n @if (description) {\n <span class=\"toggle-description\">{{ description }}</span>\n }\n </div>\n\n <!-- Hidden checkbox for form submission and accessibility -->\n <input\n type=\"checkbox\"\n [id]=\"inputId + '-hidden'\"\n [name]=\"name\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n class=\"toggle-hidden\"\n (change)=\"onToggle()\"\n />\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FileType } from '../../../enums/file-type.enum';\nimport { UploadedFile } from '../../../interfaces/uploaded-file.interface';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\n\n@Component({\n selector: 'file-upload-preview',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule, AppButtonComponent],\n templateUrl: './file-upload-preview.component.html',\n styleUrls: ['./file-upload-preview.component.scss'],\n})\nexport class FileUploadPreviewComponent {\n @Input({ required: true }) file: UploadedFile = {} as UploadedFile;\n @Output() remove = new EventEmitter<UploadedFile>();\n\n removeFile(): void {\n this.remove.emit(this.file);\n }\n\n getFileType(file: UploadedFile): FileType {\n if (file.type.startsWith('image/')) return FileType.IMAGE;\n if (file.type === 'application/pdf') return FileType.PDF;\n if (\n file.type.includes('spreadsheet') ||\n file.type.includes('excel') ||\n file.extension === 'xlsx' ||\n file.extension === 'xls' ||\n file.extension === 'csv'\n ) {\n return FileType.EXCEL;\n }\n if (\n file.type.includes('word') ||\n file.type.includes('document') ||\n file.extension === 'docx' ||\n file.extension === 'doc'\n ) {\n return FileType.WORD;\n }\n if (file.type.startsWith('text/') || file.extension === 'txt') {\n return FileType.TEXT;\n }\n return FileType.DEFAULT;\n }\n\n getFileIcon(fileType: FileType): string {\n switch (fileType) {\n case FileType.IMAGE:\n return 'ri-image-line';\n case FileType.PDF:\n return 'ri-file-pdf-line';\n case FileType.EXCEL:\n return 'ri-file-excel-line';\n case FileType.WORD:\n return 'ri-file-word-line';\n case FileType.TEXT:\n return 'ri-file-text-line';\n default:\n return 'ri-file-line';\n }\n }\n\n getFileTypeIcon(file: UploadedFile): string {\n return this.getFileIcon(this.getFileType(file));\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n}\n","<div class=\"file-preview-item\">\n <div class=\"file-preview-content\">\n <!-- File Preview/Icon -->\n <div class=\"file-preview-icon-wrapper\">\n @if (file.preview) {\n <img [src]=\"file.preview\" [alt]=\"file.name\" class=\"file-preview-image\" />\n } @else {\n <div class=\"file-preview-icon-placeholder\">\n <i [class]=\"getFileTypeIcon(file) + ' file-preview-icon'\"></i>\n </div>\n }\n </div>\n\n <!-- File Info -->\n <div class=\"file-preview-info\">\n <p class=\"file-preview-name\">\n {{ file.name }}\n </p>\n <p class=\"file-preview-meta\">\n @if (!!file.size) {\n {{ formatFileSize(file.size) }}\n }\n @if (file.extension) {\n • {{ file.extension.toUpperCase() }}\n }\n </p>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"file-preview-actions\">\n <app-button\n icon=\"ri-delete-bin-line\"\n (clicked)=\"removeFile()\"\n variant=\"primary\"\n size=\"xs\"\n title=\"Eliminar archivo\"\n />\n </div>\n</div>\n","import { Component, Input, Self, Optional, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\nimport { FileUploadConfig } from '../../../interfaces/file-upload-config.interface';\nimport { UploadedFile } from '../../../interfaces/uploaded-file.interface';\nimport { FileType } from '../../../enums/file-type.enum';\nimport { FileUploadPreviewComponent } from '../file-upload-preview/file-upload-preview.component';\n\n@Component({\n selector: 'file-upload',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n FileUploadPreviewComponent,\n ],\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n})\nexport class FileUploadComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() fieldGroupClass: string = '';\n @Input() config: FileUploadConfig = {};\n @Input() accept: string = '*/*';\n\n @Output() fileSelected = new EventEmitter<UploadedFile[]>();\n @Output() fileRemoved = new EventEmitter<UploadedFile>();\n @Output() validationError = new EventEmitter<string>();\n\n files: UploadedFile[] = [];\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n dragOver = false;\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: UploadedFile[] | null): void {\n this.files = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onFileSelect(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n this.handleFiles(Array.from(input.files));\n }\n input.value = '';\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = false;\n\n if (event.dataTransfer?.files && event.dataTransfer.files.length > 0) {\n this.handleFiles(Array.from(event.dataTransfer.files));\n }\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = true;\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = false;\n }\n\n private async handleFiles(fileList: File[]): Promise<void> {\n const newFiles: UploadedFile[] = [];\n\n for (const file of fileList) {\n const validationError = this.validateFile(file);\n if (validationError) {\n this.validationError.emit(validationError);\n continue;\n }\n\n const uploadedFile: UploadedFile = {\n file,\n name: file.name,\n size: file.size,\n type: file.type,\n extension: this.getFileExtension(file.name),\n };\n\n if (this.isImage(file)) {\n uploadedFile.preview = await this.generateImagePreview(file);\n }\n\n newFiles.push(uploadedFile);\n }\n\n if (this.config.multiple) {\n const maxFiles = this.config.maxFiles || 10;\n const totalFiles = [...this.files, ...newFiles].slice(0, maxFiles);\n this.files = totalFiles;\n } else {\n this.files = newFiles.slice(0, 1);\n }\n\n this.onChange(this.files);\n this.onTouched();\n this.fileSelected.emit(this.files);\n }\n\n private validateFile(file: File): string | null {\n if (this.config.maxFileSize && file.size > this.config.maxFileSize) {\n const maxSizeMB = this.config.maxFileSize / (1024 * 1024);\n return this.transloco.translate('fileUpload.sizeError', {\n fileName: file.name,\n maxSize: maxSizeMB.toFixed(2),\n });\n }\n\n if (this.config.allowedExtensions && this.config.allowedExtensions.length > 0) {\n const extension = this.getFileExtension(file.name);\n if (!this.config.allowedExtensions.includes(extension)) {\n return this.transloco.translate('fileUpload.extensionError', {\n fileName: file.name,\n extensions: this.config.allowedExtensions.join(', '),\n });\n }\n }\n\n return null;\n }\n\n private getFileExtension(filename: string): string {\n return filename.split('.').pop()?.toLowerCase() || '';\n }\n\n private isImage(file: File): boolean {\n return file.type.startsWith('image/');\n }\n\n private async generateImagePreview(file: File): Promise<string> {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = (e) => {\n resolve(e.target?.result as string);\n };\n reader.readAsDataURL(file);\n });\n }\n\n removeFile(index: number): void {\n const removedFile = this.files[index];\n this.files.splice(index, 1);\n this.onChange(this.files);\n this.onTouched();\n this.fileRemoved.emit(removedFile);\n }\n\n getFileType(file: UploadedFile): FileType {\n if (file.type.startsWith('image/')) return FileType.IMAGE;\n if (file.type === 'application/pdf') return FileType.PDF;\n if (\n file.type.includes('spreadsheet') ||\n file.type.includes('excel') ||\n file.extension === 'xlsx' ||\n file.extension === 'xls' ||\n file.extension === 'csv'\n ) {\n return FileType.EXCEL;\n }\n if (\n file.type.includes('word') ||\n file.type.includes('document') ||\n file.extension === 'docx' ||\n file.extension === 'doc'\n ) {\n return FileType.WORD;\n }\n if (file.type.startsWith('text/') || file.extension === 'txt') {\n return FileType.TEXT;\n }\n return FileType.DEFAULT;\n }\n\n getFileIcon(fileType: FileType): string {\n switch (fileType) {\n case FileType.IMAGE:\n return 'ri-image-line';\n case FileType.PDF:\n return 'ri-file-pdf-line';\n case FileType.EXCEL:\n return 'ri-file-excel-line';\n case FileType.WORD:\n return 'ri-file-word-line';\n case FileType.TEXT:\n return 'ri-file-text-line';\n default:\n return 'ri-file-line';\n }\n }\n\n getFileTypeIcon(file: UploadedFile): string {\n return this.getFileIcon(this.getFileType(file));\n }\n\n triggerFileInput(): void {\n const inputElement = document.getElementById(this.inputId) as HTMLInputElement;\n if (inputElement) {\n inputElement.click();\n }\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n\n get uploadAreaClasses(): string {\n const baseClasses = 'file-upload-area';\n\n if (this.disabled) {\n return `${baseClasses} disabled`;\n }\n\n if (this.dragOver) {\n return `${baseClasses} drag-over`;\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"file-upload-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"file-upload-required\">*</span>\n }\n </label>\n }\n\n <!-- Upload Area -->\n <div\n class=\"file-upload-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n >\n <div [class]=\"uploadAreaClasses\" (click)=\"!disabled && triggerFileInput()\">\n <input\n [id]=\"inputId\"\n [name]=\"name\"\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"config.multiple\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (change)=\"onFileSelect($event)\"\n (blur)=\"onTouched()\"\n class=\"file-upload-hidden\"\n />\n\n <div class=\"file-upload-content\">\n <i class=\"ri-upload-cloud-2-line file-upload-icon\"></i>\n <div class=\"file-upload-text\">\n <p class=\"file-upload-primary-text\">\n @if (config.multiple) {\n {{ 'fileUpload.dropMultiple' | transloco }}\n } @else {\n {{ 'fileUpload.dropSingle' | transloco }}\n }\n </p>\n <p class=\"file-upload-secondary-text\">\n @if (config.allowedExtensions && config.allowedExtensions.length > 0) {\n {{ 'fileUpload.allowedExtensions' | transloco }}\n {{ config.allowedExtensions.join(', ') }}\n }\n @if (config.maxFileSize) {\n • {{ 'fileUpload.maxSize' | transloco }} {{ formatFileSize(config.maxFileSize) }}\n }\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Files Preview -->\n @if (files.length > 0) {\n <div class=\"file-upload-list\">\n @for (file of files; track file; let i = $index) {\n <file-upload-preview [file]=\"file\" (remove)=\"removeFile(i)\" />\n }\n </div>\n }\n\n <!-- Validation Error -->\n @if (showError) {\n <div class=\"file-upload-error\">\n {{ errorMessage }}\n </div>\n }\n\n <!-- File Type Legend -->\n @if (files.length === 0) {\n <div class=\"file-upload-legend\">\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-image-line file-upload-legend-icon-blue\"></i>\n <span>{{ 'fileUpload.fileTypeImages' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-pdf-line file-upload-legend-icon-red\"></i>\n <span>PDF</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-excel-line file-upload-legend-icon-green\"></i>\n <span>{{ 'fileUpload.fileTypeExcel' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-word-line file-upload-legend-icon-word\"></i>\n <span>{{ 'fileUpload.fileTypeWord' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-text-line file-upload-legend-icon-gray\"></i>\n <span>{{ 'fileUpload.fileTypeText' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-line file-upload-legend-icon-muted\"></i>\n <span>{{ 'fileUpload.fileTypeOther' | transloco }}</span>\n </div>\n </div>\n }\n</div>\n","import {\n Component,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n forwardRef,\n inject,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, NgControl, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { Subject, Observable, of } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n switchMap,\n takeUntil,\n catchError,\n map,\n} from 'rxjs/operators';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\nexport interface AsyncSelectConfig<T = any> {\n load: (params?: { search?: string; parentId?: number }) => Observable<T>;\n map: (response: T) => SelectOption[];\n}\n\n@Component({\n selector: 'async-select',\n standalone: true,\n imports: [CommonModule, FormsModule, NgSelectModule],\n templateUrl: './async-select.component.html',\n styleUrls: ['./async-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AsyncSelectComponent),\n multi: true,\n },\n ],\n})\nexport class AsyncSelectComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\n @Input() config?: AsyncSelectConfig<any>;\n @Input() items: SelectOption[] = [];\n @Input() parentId?: number | null;\n @Input() label = '';\n @Input() placeholder = 'Seleccione...';\n @Input() name = '';\n @Input() required = false;\n @Input() multiple = false;\n @Input() clearable = true;\n @Input() searchable = true;\n @Input() loading = false;\n @Input() virtualScroll = false;\n @Input() notFoundText = 'No se encontraron resultados';\n @Input() bindLabel = 'label';\n @Input() bindValue = 'value';\n @Input() disabled = false;\n\n value: any = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n displayItems: SelectOption[] = [];\n loadingSignal = signal(false);\n private searchTerm$ = new Subject<string>();\n private destroy$ = new Subject<void>();\n private injector = inject(Injector);\n private _ngControl: NgControl | null = null;\n\n constructor() {}\n\n private get ngControl(): NgControl | null {\n if (!this._ngControl) {\n this._ngControl = this.injector.get(NgControl, null);\n }\n return this._ngControl;\n }\n\n ngOnInit() {\n this.setupSearch();\n if (this.config) {\n this.loadAndMap();\n } else {\n this.displayItems = this.items;\n this.searchMode();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['parentId'] && !changes['parentId'].firstChange) {\n this.handleParentIdChange();\n }\n if (changes['items'] && !changes['items'].firstChange && !this.config) {\n this.displayItems = this.items;\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private setupSearch() {\n this.searchTerm$\n .pipe(\n debounceTime(400),\n distinctUntilChanged(),\n switchMap((term) => {\n if (this.config) {\n this.loadingSignal.set(true);\n return this.fetchData({ search: term });\n }\n return of(this.displayItems);\n }),\n takeUntil(this.destroy$),\n )\n .subscribe((options) => {\n this.displayItems = options;\n this.loadingSignal.set(false);\n });\n }\n\n private searchMode() {\n this.searchTerm$\n .pipe(\n debounceTime(400),\n distinctUntilChanged(),\n switchMap((term) => {\n this.loadingSignal.set(true);\n setTimeout(() => this.loadingSignal.set(false), 150);\n return of(\n this.items.filter((item) => item.label.toLowerCase().includes(term.toLowerCase())),\n );\n }),\n takeUntil(this.destroy$),\n )\n .subscribe((options) => {\n this.displayItems = options;\n });\n }\n\n private loadAndMap(params?: { search?: string; parentId?: number }) {\n if (!this.config) return;\n this.loadingSignal.set(true);\n this.fetchData(params)\n .pipe(takeUntil(this.destroy$))\n .subscribe((options) => {\n this.displayItems = options;\n this.loadingSignal.set(false);\n });\n }\n\n private fetchData(params?: { search?: string; parentId?: number }): Observable<SelectOption[]> {\n if (!this.config) return of([]);\n\n const mergedParams = { ...params };\n if (this.parentId != null && mergedParams.parentId == null) {\n mergedParams.parentId = this.parentId;\n }\n\n return this.config.load(mergedParams).pipe(\n map((res) => this.config!.map(res)),\n catchError(() => of([])),\n );\n }\n\n private handleParentIdChange() {\n this.value = this.multiple ? [] : null;\n this.onChange(this.value);\n\n if (this.parentId != null && this.config) {\n this.loadAndMap({ parentId: this.parentId });\n } else if (this.config) {\n this.displayItems = [];\n this.loadingSignal.set(false);\n }\n }\n\n onSearch(event: any) {\n const term = event?.term || '';\n this.searchTerm$.next(term);\n }\n\n onSelectChange(value: any) {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get typeahead$(): Subject<string> {\n return this.searchTerm$;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n return control.invalid ? control.dirty || control.touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n const errorKey = Object.keys(this.ngControl.errors)[0];\n return 'Campo inválido';\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"async-select-wrapper\">\n @if (label) {\n <label class=\"async-select-label\">\n {{ label }}\n @if (required) {\n <span class=\"async-select-required\">*</span>\n }\n </label>\n }\n\n <ng-select\n [items]=\"displayItems\"\n [multiple]=\"multiple\"\n [searchable]=\"searchable\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [loading]=\"loading || loadingSignal()\"\n [virtualScroll]=\"virtualScroll\"\n [notFoundText]=\"notFoundText\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [ngModel]=\"value\"\n [typeahead]=\"typeahead$\"\n [closeOnSelect]=\"!multiple\"\n [disabled]=\"disabled\"\n [class.error]=\"showError\"\n (ngModelChange)=\"onSelectChange($event)\"\n (blur)=\"onTouched()\"\n (search)=\"onSearch($event)\"\n />\n\n @if (showError) {\n <div class=\"async-select-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, signal, ViewEncapsulation, WritableSignal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { FormInputComponent } from '../../forms/form-input/form-input.component';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\nimport { ChangePasswordFormService } from '../../../services/change-password-form.service';\nimport { MustMatchValidator } from '../../../validators/must-match.validator';\nimport { CustomerService } from '../../../services/customer.service';\nimport { AdminService } from '../../../services/admin.service';\nimport { ToastService } from '../../../services/toast.service';\n\n@Component({\n selector: 'change-password-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n AppButtonComponent,\n FormInputComponent,\n AppModalComponent,\n ],\n providers: [AdminService, CustomerService],\n templateUrl: './change-password-form.component.html',\n styleUrls: ['./change-password-form.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ChangePasswordFormComponent {\n changePasswordForm: FormGroup;\n loading: WritableSignal<boolean> = signal(false);\n\n constructor(\n private fb: FormBuilder,\n private changePasswordFormService: ChangePasswordFormService,\n private customerService: CustomerService,\n private adminService: AdminService,\n private toastService: ToastService,\n private transloco: TranslocoService,\n ) {\n this.changePasswordForm = this.fb.group(\n {\n password: ['', [Validators.required, Validators.minLength(6)]],\n confirm_password: ['', [Validators.required, Validators.minLength(6)]],\n },\n {\n validators: MustMatchValidator('password', 'confirm_password'),\n },\n );\n }\n\n get isOpen() {\n return this.changePasswordFormService.modalIsOpen;\n }\n\n get resourceId() {\n return this.changePasswordFormService.resourceId;\n }\n\n onCloseModal(): void {\n this.changePasswordForm.reset();\n this.changePasswordFormService.close();\n }\n\n onConfirmDelete(): void {\n this.loading.set(true);\n\n const service = this.changePasswordFormService.isAdminMode()\n ? this.adminService\n : this.customerService;\n\n const isAdmin = this.changePasswordFormService.isAdminMode();\n const successKey = isAdmin ? 'changePassword.adminSuccess' : 'changePassword.customerSuccess';\n const errorKey = isAdmin ? 'changePassword.adminError' : 'changePassword.customerError';\n\n service.updateOne(this.resourceId(), this.changePasswordForm.value).subscribe({\n next: () => {\n this.toastService.show(this.transloco.translate(successKey), 'success');\n this.changePasswordForm.reset();\n this.changePasswordFormService.close();\n this.loading.set(false);\n },\n error: (error: any) => {\n console.error('Error al actualizar contraseña:', error);\n this.toastService.show(this.transloco.translate(errorKey), 'error');\n this.loading.set(false);\n },\n });\n }\n}\n","@if (isOpen()) {\n <app-modal\n [title]=\"'changePassword.title' | transloco\"\n [isOpen]=\"isOpen\"\n (closeModal)=\"onCloseModal()\"\n >\n <form\n [formGroup]=\"changePasswordForm\"\n method=\"POST\"\n class=\"change-password-form-body\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <form-input\n [label]=\"'changePassword.newPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.newPasswordPlaceholder' | transloco\"\n name=\"password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n [autocomplete]=\"false\"\n formControlName=\"password\"\n />\n\n <form-input\n [label]=\"'changePassword.confirmPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.confirmPasswordPlaceholder' | transloco\"\n name=\"confirm_password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n [autocomplete]=\"false\"\n formControlName=\"confirm_password\"\n />\n\n <div class=\"change-password-form-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'changePassword.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n [disabled]=\"loading() || changePasswordForm.invalid || changePasswordForm.pristine\"\n [loading]=\"loading()\"\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'changePassword.save' | transloco\"\n [loadingText]=\"'changePassword.saving' | transloco\"\n size=\"sm\"\n />\n </div>\n </form>\n </app-modal>\n}\n","import { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { AbstractControl, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ControlValueAccessor, Validator } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { AdminService } from '../../../services/admin.service';\nimport { Admin } from '../../../interfaces/admins/admin.interface';\n\n@Component({\n selector: 'admin-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './admin-select.component.html',\n styleUrls: ['./admin-select.component.scss'],\n})\nexport class AdminSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Equipo de trabajo';\n @Input() placeholder: string = 'Selecciona un equipo de trabajo';\n @Input() name: string = 'admin_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() adminChange = new EventEmitter<number | null>();\n\n admins: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private adminService: AdminService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.loadAdmins();\n }\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadAdmins() {\n this.loading.set(true);\n this.adminService\n .fetchAdmins()\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { admins } }: { data: { admins: Admin[] } }) => {\n this.admins.set(\n admins?.map((admin) => ({\n value: admin.id,\n label: `${admin.first_name} ${admin.last_name} - ${admin.email}`,\n })) || [],\n );\n this.loading.set(false);\n },\n error: () => {\n this.admins.set([]);\n this.loading.set(false);\n },\n });\n }\n\n // In admin-select.component.ts\n onAdminSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n // Update the local value\n this.value = value;\n\n // Update the form control if it exists\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n // Emit the change event\n this.adminChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n // Helper method to check if control is invalid\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'country_id'\"\n [class]=\"customClass\"\n [options]=\"admins()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onAdminSelected($event)\"\n/>\n","import {\n Component,\n OnInit,\n OnDestroy,\n forwardRef,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormControl,\n NG_VALIDATORS,\n Validator,\n AbstractControl,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CitiesService } from '../../../services/cities.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { CitiesResponse } from '../../../interfaces/cities/cities-response.interface';\nimport { formatCitiesResponseToSelect } from '../../../helpers/format-cities-response-to-select.helper';\n\n@Component({\n selector: 'city-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './city-select.component.html',\n styleUrls: ['./city-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CitySelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CitySelectComponent),\n multi: true,\n },\n ],\n})\nexport class CitySelectComponent\n implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Ciudad';\n @Input() name: string = 'city_id';\n @Input() placeholder: string = 'Selecciona una ciudad';\n @Input() required: boolean = false;\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() stateId: number | null = null;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() cityChange = new EventEmitter<number | null>();\n\n cities: WritableSignal<SelectOption[]> = signal([]);\n loading: boolean = false;\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private citiesService: CitiesService) {}\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnInit() {\n this.loadCities();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['stateId'] && !changes['stateId'].firstChange) {\n this.value = null;\n this.onChange(null);\n this.cityChange.emit(null);\n\n if (this.stateId) {\n this.loadCities();\n } else {\n this.cities.set([]);\n }\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadCities() {\n this.loading = true;\n this.citiesService\n .fetchCities({ stateId: this.stateId ?? undefined })\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: (response: CitiesResponse) => {\n this.cities.set(formatCitiesResponseToSelect(response));\n this.loading = false;\n },\n error: () => {\n this.cities.set([]);\n this.loading = false;\n },\n });\n }\n\n onCitySelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.cityChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n\n get isDisabled(): boolean {\n return this.disabled || this.readonly || !this.stateId || this.loading;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [class]=\"customClass\"\n [required]=\"required\"\n [options]=\"cities()\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onCitySelected($event)\"\n/>\n","import { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { AbstractControl, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ControlValueAccessor, Validator } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { CountryService } from '../../../services/country.service';\n\n@Component({\n selector: 'country-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './country-select.component.html',\n styleUrls: ['./country-select.component.scss'],\n})\nexport class CountrySelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'País';\n @Input() placeholder: string = 'Selecciona un país';\n @Input() name: string = 'country_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() countryChange = new EventEmitter<number | null>();\n\n countries: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private countryService: CountryService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.loadCountries();\n }\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadCountries() {\n this.loading.set(true);\n this.countryService\n .fetchCountries()\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { countries } }: { data: { countries: any[] } }) => {\n this.countries.set(\n countries?.map((country) => ({\n value: country.id,\n label: country.name,\n })) || [],\n );\n this.loading.set(false);\n },\n error: () => {\n this.countries.set([]);\n this.loading.set(false);\n },\n });\n }\n\n // In country-select.component.ts\n onCountrySelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n // Update the local value\n this.value = value;\n\n // Update the form control if it exists\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n // Emit the change event\n this.countryChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n // Helper method to check if control is invalid\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'country_id'\"\n [class]=\"customClass\"\n [options]=\"countries()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onCountrySelected($event)\"\n></form-select>\n","import {\n Component,\n OnInit,\n OnDestroy,\n forwardRef,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormControl,\n NG_VALIDATORS,\n Validator,\n AbstractControl,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { StatesService } from '../../../services/states.service';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\n@Component({\n selector: 'state-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './state-select.component.html',\n styleUrls: ['./state-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => StateSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => StateSelectComponent),\n multi: true,\n },\n ],\n})\nexport class StateSelectComponent\n implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Departamento';\n @Input() name: string = 'state_id';\n @Input() placeholder: string = 'Selecciona un departamento';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() countryId: number | null = null;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() stateChange = new EventEmitter<number | null>();\n\n states: WritableSignal<SelectOption[]> = signal([]);\n loading: boolean = false;\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private statesService: StatesService) {}\n\n ngOnInit() {\n this.loadStates();\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['countryId'] && !changes['countryId'].firstChange) {\n this.value = null;\n this.onChange(null);\n this.stateChange.emit(null);\n\n if (this.countryId) {\n this.loadStates();\n } else {\n this.states.set([]);\n }\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadStates() {\n this.loading = true;\n this.statesService\n .fetchStates(1, undefined, this.countryId!)\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { states } }: { data: { states: any[] } }) => {\n this.states.set(states?.map(({ id, name }) => ({ value: id, label: name })) || []);\n this.loading = false;\n },\n error: () => {\n this.states.set([]);\n this.loading = false;\n },\n });\n }\n\n onStateSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.stateChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n\n get isDisabled(): boolean {\n return this.readonly || !this.countryId || this.loading;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'state_id'\"\n [class]=\"customClass\"\n [options]=\"states()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onStateSelected($event)\"\n></form-select>\n","import { Component, Input, EventEmitter, Output, forwardRef } from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n FormControl,\n FormsModule,\n} from '@angular/forms';\nimport {\n AsyncSelectComponent,\n AsyncSelectConfig,\n} from '../../../components/forms/async-select/async-select.component';\nimport { CustomerService } from '../../../services/customer.service';\nimport { Customer } from '../../../interfaces/customers/customer.interface';\nimport { getCustomerFullname } from '../../../helpers/get-formatted-customer.helper';\n\n@Component({\n selector: 'customer-select',\n standalone: true,\n imports: [AsyncSelectComponent, FormsModule],\n templateUrl: './customer-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CustomerSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CustomerSelectComponent),\n multi: true,\n },\n ],\n})\nexport class CustomerSelectComponent implements ControlValueAccessor, Validator {\n @Input() label: string = 'Cliente';\n @Input() placeholder: string = 'Selecciona un cliente';\n @Input() name: string = 'customer_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() multiple = false;\n\n @Output() customerChange = new EventEmitter<number | null>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n config: AsyncSelectConfig = {\n load: (params) => this.customerService.fetchCustomers(1, params?.search || '', 50),\n map: (res) =>\n res.data.customers?.map((customer: Customer) => ({\n value: customer.id,\n label: `${getCustomerFullname(customer)} - ${customer.email}`.trim(),\n })) || [],\n };\n\n constructor(private customerService: CustomerService) {}\n\n onInternalChange(value: any) {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.customerChange.emit(value);\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n}\n","<async-select\n [config]=\"config\"\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'customer_id'\"\n [required]=\"required\"\n [multiple]=\"multiple\"\n [clearable]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onInternalChange($event)\"\n/>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { PerformanceService } from '../../../services/performance.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Performance } from '../../../interfaces/performances/performance.interface';\n\n@Component({\n selector: 'performance-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './performance-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PerformanceSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PerformanceSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PerformanceSelectComponent\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Función';\n @Input() placeholder: string = 'Selecciona una función';\n @Input() name: string = 'performance_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() performanceChange = new EventEmitter<number | null>();\n\n performances: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private performanceService: PerformanceService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.performanceService.loadPerformances({ search: this.searchTerm });\n\n this.performanceService.performances$\n .pipe(takeUntil(this.destroy$))\n .subscribe((performances: Performance[]) => {\n this.performances.set(\n performances?.map((p) => ({\n value: p.id,\n label: `${p.show?.title || `Show #${p.show_id}`} - ${new Date(p.start_time).toLocaleDateString()}`,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.performanceService.loadPerformances({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onPerformanceSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.performanceChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'performance_id'\"\n [class]=\"customClass\"\n [options]=\"performances()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onPerformanceSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { PerformanceService } from '../../../services/performance.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Performance } from '../../../interfaces/performances/performance.interface';\n\n@Component({\n selector: 'performance-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './performance-multi-select.component.html',\n styleUrls: ['./performance-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PerformanceMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PerformanceMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Funciones';\n @Input() placeholder: string = 'Buscar funciones...';\n\n allPerformances: WritableSignal<SelectOption[]> = signal([]);\n filteredPerformances: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private performanceService: PerformanceService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.performanceService.loadPerformances({});\n\n this.performanceService.performances$\n .pipe(takeUntil(this.destroy$))\n .subscribe((performances: Performance[]) => {\n this.allPerformances.set(\n performances?.map((p) => ({\n value: p.id,\n label: `${p.show?.title || `Show #${p.show_id}`} - ${new Date(p.start_time).toLocaleString()}`,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.performanceService.loadPerformances({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredPerformances.set(\n this.allPerformances().filter((p) => p.label.toLowerCase().includes(term)),\n );\n } else {\n this.filteredPerformances.set([...this.allPerformances()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n togglePerformance(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n }\n\n removePerformance(id: number) {\n this.togglePerformance(id);\n }\n\n getPerformanceLabel(id: number): string {\n return this.allPerformances().find((p) => p.value === id)?.label || '';\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"performance-multi-select\">\n @if (label) {\n <label class=\"performance-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"performance-multi-select-tags\">\n @for (id of selectedIds; track id) {\n <span class=\"performance-multi-select-tag\">\n {{ getPerformanceLabel(id) }}\n <button\n type=\"button\"\n class=\"performance-multi-select-tag-remove\"\n (click)=\"removePerformance(id)\"\n >\n &times;\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"performance-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"performance-multi-select-loading\">\n <div class=\"performance-multi-select-spinner\"></div>\n Cargando funciones...\n </div>\n }\n\n @if (!loading() && filteredPerformances().length > 0) {\n <div class=\"performance-multi-select-list\">\n @for (p of filteredPerformances(); track p.value) {\n <label class=\"performance-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(p.value)\"\n (change)=\"togglePerformance(p.value)\"\n class=\"performance-multi-select-checkbox\"\n />\n <span class=\"performance-multi-select-option-label\">{{ p.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredPerformances().length === 0) {\n <p class=\"performance-multi-select-empty\">No se encontraron funciones</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { ProductService } from '../../../services/product.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Product } from '../../../interfaces/products/product.interface';\n\n@Component({\n selector: 'product-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './product-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ProductSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ProductSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ProductSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Producto';\n @Input() placeholder: string = 'Selecciona un producto';\n @Input() name: string = 'product_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() productChange = new EventEmitter<number | null>();\n\n products: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private productService: ProductService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.productService.loadProducts({ search: this.searchTerm });\n\n this.productService.products$\n .pipe(takeUntil(this.destroy$))\n .subscribe((products: Product[]) => {\n this.products.set(\n products?.map((product) => ({\n value: product.id,\n label: product.name,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.productService.loadProducts({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onProductSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.productChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'product_id'\"\n [class]=\"customClass\"\n [options]=\"products()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onProductSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { ProductService } from '../../../services/product.service';\nimport { Product } from '../../../interfaces/products/product.interface';\n\ninterface ProductOption {\n value: number;\n label: string;\n imageUrl: string | null;\n}\n\n@Component({\n selector: 'product-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './product-multi-select.component.html',\n styleUrls: ['./product-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ProductMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ProductMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Productos';\n @Input() placeholder: string = 'Buscar productos...';\n @Input() set initialSelection(ids: number[] | null) {\n this.selectedIds = ids ?? [];\n }\n @Output() selectionChange = new EventEmitter<number[]>();\n\n allProducts: WritableSignal<ProductOption[]> = signal([]);\n filteredProducts: WritableSignal<ProductOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private productService: ProductService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.productService.loadProducts({ search: this.searchTerm });\n\n this.productService.products$\n .pipe(takeUntil(this.destroy$))\n .subscribe((products: Product[]) => {\n this.allProducts.set(\n products?.map((p) => ({\n value: p.id,\n label: p.name,\n imageUrl: p.images?.[0]?.full_url ?? null,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.productService.loadProducts({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredProducts.set(\n this.allProducts().filter((p) => p.label.toLowerCase().includes(term)),\n );\n } else {\n this.filteredProducts.set([...this.allProducts()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n toggleProduct(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n this.selectionChange.emit(this.selectedIds);\n }\n\n removeProduct(id: number) {\n this.toggleProduct(id);\n }\n\n getProductOption(id: number): ProductOption | undefined {\n return this.allProducts().find((p) => p.value === id);\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"product-multi-select\">\n @if (label) {\n <label class=\"product-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"product-multi-select-tags\">\n @for (id of selectedIds; track id) {\n @let product = getProductOption(id);\n <span class=\"product-multi-select-tag\">\n @if (product?.imageUrl) {\n <img [src]=\"product!.imageUrl\" alt=\"\" class=\"product-multi-select-tag-image\" />\n }\n {{ product?.label ?? id }}\n <button type=\"button\" class=\"product-multi-select-tag-remove\" (click)=\"removeProduct(id)\">\n &times;\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"product-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"product-multi-select-loading\">\n <div class=\"product-multi-select-spinner\"></div>\n Cargando productos...\n </div>\n }\n\n @if (!loading() && filteredProducts().length > 0) {\n <div class=\"product-multi-select-list\">\n @for (p of filteredProducts(); track p.value) {\n <label class=\"product-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(p.value)\"\n (change)=\"toggleProduct(p.value)\"\n class=\"product-multi-select-checkbox\"\n />\n @if (p.imageUrl) {\n <img [src]=\"p.imageUrl\" alt=\"\" class=\"product-multi-select-option-image\" />\n } @else {\n <div class=\"product-multi-select-option-image-placeholder\">\n <i class=\"ri-image-line\"></i>\n </div>\n }\n <span class=\"product-multi-select-option-label\">{{ p.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredProducts().length === 0) {\n <p class=\"product-multi-select-empty\">No se encontraron productos</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { ShowService } from '../../../services/show.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Show } from '../../../interfaces/shows/show.interface';\n\n@Component({\n selector: 'show-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './show-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ShowSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ShowSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ShowSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Función';\n @Input() placeholder: string = 'Selecciona una función';\n @Input() name: string = 'show_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() showChange = new EventEmitter<number | null>();\n\n shows: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private showService: ShowService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.showService.loadShows({ search: this.searchTerm });\n\n this.showService.shows$.pipe(takeUntil(this.destroy$)).subscribe((shows: Show[]) => {\n const formatted = shows?.map((show) => ({ value: show.id, label: show.title })) || [];\n this.shows.set(formatted);\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.showService.loadShows({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onShowSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.showChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'show_id'\"\n [class]=\"customClass\"\n [options]=\"shows()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onShowSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { ShowService } from '../../../services/show.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Show } from '../../../interfaces/shows/show.interface';\n\n@Component({\n selector: 'show-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './show-multi-select.component.html',\n styleUrls: ['./show-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ShowMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ShowMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Funciones';\n @Input() placeholder: string = 'Buscar funciones...';\n\n allShows: WritableSignal<SelectOption[]> = signal([]);\n filteredShows: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private showService: ShowService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.showService.loadShows({});\n\n this.showService.shows$.pipe(takeUntil(this.destroy$)).subscribe((shows: Show[]) => {\n this.allShows.set(\n shows?.map((show) => ({\n value: show.id,\n label: show.title,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.showService.loadShows({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredShows.set(this.allShows().filter((s) => s.label.toLowerCase().includes(term)));\n } else {\n this.filteredShows.set([...this.allShows()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n toggleShow(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n }\n\n removeShow(id: number) {\n this.toggleShow(id);\n }\n\n getShowLabel(id: number): string {\n return this.allShows().find((s) => s.value === id)?.label || '';\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"show-multi-select\">\n @if (label) {\n <label class=\"show-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"show-multi-select-tags\">\n @for (id of selectedIds; track id) {\n <span class=\"show-multi-select-tag\">\n {{ getShowLabel(id) }}\n <button type=\"button\" class=\"show-multi-select-tag-remove\" (click)=\"removeShow(id)\">\n &times;\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"show-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"show-multi-select-loading\">\n <div class=\"show-multi-select-spinner\"></div>\n Cargando funciones...\n </div>\n }\n\n @if (!loading() && filteredShows().length > 0) {\n <div class=\"show-multi-select-list\">\n @for (show of filteredShows(); track show.value) {\n <label class=\"show-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(show.value)\"\n (change)=\"toggleShow(show.value)\"\n class=\"show-multi-select-checkbox\"\n />\n <span class=\"show-multi-select-option-label\">{{ show.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredShows().length === 0) {\n <p class=\"show-multi-select-empty\">No se encontraron funciones</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { PriceZoneService } from '../../../services/price-zone.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { PriceZone } from '../../../interfaces/price-zones/price-zone.interface';\n\n@Component({\n selector: 'price-zone-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './price-zone-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PriceZoneSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PriceZoneSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PriceZoneSelectComponent\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Categoría';\n @Input() placeholder: string = 'Selecciona una categoría';\n @Input() name: string = 'price_zone_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() priceZoneChange = new EventEmitter<number | null>();\n\n priceZones: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private priceZoneService: PriceZoneService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.priceZoneService.loadPriceZones({ search: this.searchTerm });\n\n this.priceZoneService.priceZones$\n .pipe(takeUntil(this.destroy$))\n .subscribe((priceZones: PriceZone[]) => {\n this.priceZones.set(\n priceZones?.map((pz) => ({\n value: pz.id,\n label: pz.name,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.priceZoneService.loadPriceZones({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onPriceZoneSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.priceZoneChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'price_zone_id'\"\n [class]=\"customClass\"\n [options]=\"priceZones()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onPriceZoneSelected($event)\"\n></form-select>\n","import {\n Component,\n effect,\n ElementRef,\n Inject,\n Input,\n PLATFORM_ID,\n signal,\n untracked,\n ViewChild,\n WritableSignal,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { AppAlertComponent } from '../../feedback/app-alert/app-alert.component';\nimport { PerformanceAvailableDay } from '../../../interfaces';\nimport { PerformanceService, ToastService } from '../../../services';\n\n@Component({\n selector: 'day-selector-grid',\n standalone: true,\n imports: [CommonModule, AppAlertComponent],\n templateUrl: './day-selector-grid.component.html',\n styleUrls: ['./day-selector-grid.component.scss'],\n})\nexport class DaySelectorGridComponent {\n @Input() displayMode: 'grid' | 'carousel' = 'grid';\n loadingData: WritableSignal<boolean> = signal(true);\n days: WritableSignal<PerformanceAvailableDay[]> = signal([]);\n @ViewChild('carouselTrack') carouselTrack?: ElementRef<HTMLElement>;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected performanceService: PerformanceService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n ) {\n effect(() => {\n if (isPlatformBrowser(this.platformId)) {\n this.days.set([]);\n this.listEventService.setSelectedDay(null);\n this.loadData();\n }\n });\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n const showId = this.listEventService.filteredShowId() ?? undefined;\n\n this.performanceService.fetchAvailableDays({ show_id: showId }).subscribe({\n next: (response) => {\n const days = response?.data?.days ?? [];\n this.days.set(days);\n if (days.length > 0 && !untracked(() => this.listEventService.selectedDay())) {\n this.listEventService.setSelectedDay(days[0]);\n }\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar los datos de la función.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n isDayActive(day: PerformanceAvailableDay): boolean {\n return day.date === this.listEventService.selectedDay()?.date;\n }\n\n onToggle(day: PerformanceAvailableDay): void {\n if (this.isDayActive(day)) return;\n this.listEventService.setSelectedPerformance(null);\n this.listEventService.setSelectedDay(day);\n }\n\n scrollCarousel(direction: 1 | -1): void {\n const track = this.carouselTrack?.nativeElement;\n if (!track) return;\n const item = track.children[0] as HTMLElement | undefined;\n const itemWidth = item?.offsetWidth ?? 112;\n track.scrollBy({ left: direction * (itemWidth + 8), behavior: 'smooth' });\n }\n}\n","@if (loadingData()) {\n <div class=\"day-selector-grid\">\n @for (i of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; track $index) {\n <div class=\"day-selector-grid-skeleton-item\"></div>\n }\n </div>\n}\n\n@if (!loadingData() && days().length < 1) {\n <app-alert\n type=\"error\"\n text=\"No se encontraron funciones disponibles\"\n size=\"md\"\n [closeable]=\"false\"\n />\n}\n\n@if (days().length > 0) {\n <p class=\"day-selector-heading\">Selecciona un día</p>\n}\n\n@if (displayMode === 'carousel' && days().length > 0) {\n <div class=\"day-selector-carousel\">\n <button\n type=\"button\"\n (click)=\"scrollCarousel(-1)\"\n class=\"day-selector-carousel-arrow day-selector-carousel-arrow--left\"\n aria-label=\"Anterior\"\n >\n <i class=\"ri-arrow-left-s-line\"></i>\n </button>\n <div #carouselTrack class=\"day-selector-carousel-track\">\n @for (item of days(); track $index) {\n <button\n (click)=\"onToggle(item)\"\n class=\"day-selector-carousel-item\"\n [class.day-selector-item--active]=\"isDayActive(item)\"\n >\n <span class=\"day-selector-item-weekday\">\n {{ item.date | date: 'EEE' | uppercase }}\n </span>\n <span class=\"day-selector-item-day\">\n {{ item.date | date: 'dd' }}\n </span>\n <span class=\"day-selector-item-month\">\n {{ item.date | date: 'MMM' }}\n </span>\n <span class=\"day-selector-item-count\">\n {{ item.count | number: '1.0-2' }}\n </span>\n </button>\n }\n </div>\n <button\n type=\"button\"\n (click)=\"scrollCarousel(1)\"\n class=\"day-selector-carousel-arrow day-selector-carousel-arrow--right\"\n aria-label=\"Siguiente\"\n >\n <i class=\"ri-arrow-right-s-line\"></i>\n </button>\n </div>\n} @else {\n <div class=\"day-selector-grid\">\n @for (item of days(); track $index) {\n <button\n (click)=\"onToggle(item)\"\n class=\"day-selector-grid-item\"\n [class.day-selector-item--active]=\"isDayActive(item)\"\n >\n <span class=\"day-selector-item-weekday\">\n {{ item.date | date: 'EEE' | uppercase }}\n </span>\n <span class=\"day-selector-item-day\">\n {{ item.date | date: 'dd' }}\n </span>\n <span class=\"day-selector-item-month\">\n {{ item.date | date: 'MMM' }}\n </span>\n <span class=\"day-selector-item-count\">\n {{ item.count | number: '1.0-2' }}\n </span>\n </button>\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { AppLinkButtonComponent } from '../../buttons/app-link-button/app-link-button.component';\nimport { DailyPerformanceItem } from '../../../interfaces';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { TICKET_MAP_LAST_TICKETS_LIMIT } from '../../../constants';\n\n@Component({\n selector: 'performance-card',\n standalone: true,\n imports: [CommonModule, AppLinkButtonComponent, AppBadgeComponent],\n templateUrl: './performance-card.component.html',\n styleUrls: ['./performance-card.component.scss'],\n})\nexport class PerformanceCardComponent {\n @Input({ required: true }) card!: DailyPerformanceItem;\n @Input() linkText: string = 'Comprar entradas';\n @Input() linkUrlFn?: (card: DailyPerformanceItem) => string;\n @Input() linkQueryParams?: Record<string, any>;\n\n constructor(protected listEventService: PerformancesListEventsService) {}\n\n get badgeColor(): 'success' | 'error' {\n return this.card.available_tickets_count > TICKET_MAP_LAST_TICKETS_LIMIT ? 'success' : 'error';\n }\n\n onSelect(): void {\n this.listEventService.setSelectedPerformance(this.card);\n }\n\n isSelected(): boolean {\n return this.listEventService.selectedPerformance()?.id === this.card.id;\n }\n}\n","<div class=\"performance-card\" [class.performance-card--selected]=\"isSelected()\">\n <div class=\"performance-card-image\">\n @if (card.show.images && card.show.images.length > 0) {\n <img [src]=\"card.show.images[0].full_url\" class=\"performance-card-image-img\" />\n } @else {\n <span class=\"performance-card-image-placeholder\"></span>\n }\n </div>\n\n <div class=\"performance-card-info\">\n <div class=\"performance-card-title\">\n {{ card.show.title }}\n </div>\n\n <div class=\"performance-card-datetime\">\n <span class=\"performance-card-date\">\n {{ card.start_time | date: `EEEE` | titlecase }}\n {{ card.start_time | date: `dd 'de' MMMM,` }}\n </span>\n\n <span class=\"performance-card-time\">\n {{ card.start_time | date: `hh:mm` }}\n </span>\n\n <span class=\"performance-card-meridiem\">\n {{ card.start_time | date: 'a' }}\n </span>\n </div>\n\n <ul class=\"performance-card-location\">\n @if (card.hall) {\n <li class=\"performance-card-location__item\">\n <i class=\"ri-armchair-line\"></i>\n <strong>Sala:</strong>\n <span>{{ card.hall.name }}</span>\n </li>\n }\n\n @if (card.venue) {\n <li class=\"performance-card-location__item\">\n <i class=\"ri-building-4-line\"></i>\n <strong>Teatro:</strong>\n <span>{{ card.venue.name }}</span>\n </li>\n }\n </ul>\n </div>\n\n <div class=\"performance-card-actions\">\n <app-badge\n [text]=\"`${card.available_tickets_count} entrada(s) disponible(s)`\"\n size=\"xs\"\n [color]=\"badgeColor\"\n />\n\n <div class=\"performance-card-price\">\n Desde\n\n <span class=\"performance-card-price-value\">\n ${{ card.zone_price_cheapest | number: '1.0-2' }}\n </span>\n </div>\n\n <app-link-button\n [style.width]=\"'100%'\"\n [route]=\"linkUrlFn ? linkUrlFn(card) : '#'\"\n [queryParams]=\"linkQueryParams ?? {}\"\n [text]=\"linkText\"\n icon=\"ri-coupon-line\"\n variant=\"primary\"\n size=\"xs\"\n />\n </div>\n</div>\n","import {\n Component,\n effect,\n Inject,\n Input,\n PLATFORM_ID,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformanceCardComponent } from '../performance-card/performance-card.component';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { DailyPerformanceItem } from '../../../interfaces';\nimport { PerformanceService, ToastService } from '../../../services';\n\n@Component({\n selector: 'performance-card-list',\n standalone: true,\n imports: [PerformanceCardComponent, CommonModule],\n templateUrl: './performance-card-list.component.html',\n styleUrls: ['./performance-card-list.component.scss'],\n})\nexport class PerformanceCardListComponent {\n @Input() linkText: string = 'Comprar entradas';\n @Input() linkUrlFn?: (card: DailyPerformanceItem) => string;\n @Input() linkQueryParams?: Record<string, any>;\n loadingData: WritableSignal<boolean> = signal(true);\n performances: WritableSignal<DailyPerformanceItem[]> = signal([]);\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected performanceService: PerformanceService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n ) {\n effect(() => {\n const date = this.listEventService.selectedDayDate();\n if (date) {\n this.loadData();\n }\n });\n\n effect(() => {\n this.listEventService.filteredShowId();\n this.performances.set([]);\n const date = this.listEventService.selectedDayDate();\n if (date) {\n this.loadData();\n }\n });\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.loadData();\n }\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n const date = this.listEventService.selectedDayDate();\n const showId = this.listEventService.filteredShowId() ?? undefined;\n if (!date) {\n this.loadingData.set(false);\n return;\n }\n\n this.performanceService.fetchDailyPerformances({ date, show_id: showId }).subscribe({\n next: (response) => {\n this.performances.set(response?.data?.performances ?? []);\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar los datos de la función.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n get selectedDayDate(): string | null {\n return this.listEventService.selectedDay()?.date ?? null;\n }\n}\n","@if (selectedDayDate) {\n <p class=\"performance-card-list-heading\">\n <span>Funciones disponibles:</span>\n <span class=\"performance-card-list-heading-date\">\n el {{ selectedDayDate | date: \"EEEE d 'de' MMMM\" }}\n </span>\n </p>\n}\n\n<div class=\"performance-card-list\">\n @if (loadingData()) {\n @for (i of [1, 2]; track $index) {\n <div class=\"performance-card-list-skeleton\"></div>\n }\n }\n\n @for (card of performances(); track $index) {\n <performance-card\n [card]=\"card\"\n [linkQueryParams]=\"linkQueryParams\"\n [linkText]=\"linkText\"\n [linkUrlFn]=\"linkUrlFn\"\n />\n }\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'performance-stepper',\n standalone: true,\n templateUrl: './performance-stepper.component.html',\n styleUrls: ['./performance-stepper.component.scss'],\n})\nexport class PerformanceStepperComponent {\n @Input({ required: true }) stepLabel!: string;\n @Input({ required: true }) title!: string;\n @Input({ required: true }) highlight!: string;\n}\n","<div class=\"performance-stepper-label\">\n <span class=\"performance-stepper-label-bar\"></span>\n {{ stepLabel }}\n</div>\n\n<h1 class=\"performance-stepper-title\">\n <span class=\"performance-stepper-title-main\">{{ title }} </span\n ><span class=\"performance-stepper-title-highlight\">{{ highlight }}</span>\n</h1>\n","import { Component, Inject, PLATFORM_ID, signal, WritableSignal } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { Router } from '@angular/router';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { Show } from '../../../interfaces';\nimport { ShowService, ToastService } from '../../../services';\nimport { AppAlertComponent } from '../../feedback/app-alert/app-alert.component';\n\n@Component({\n selector: 'shows-filter',\n standalone: true,\n imports: [AppButtonComponent, CommonModule, AppAlertComponent],\n templateUrl: './shows-filter.component.html',\n styleUrls: ['./shows-filter.component.scss'],\n})\nexport class ShowsFilterComponent {\n loadingData: WritableSignal<boolean> = signal(true);\n shows: WritableSignal<Show[]> = signal([]);\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected showService: ShowService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.loadData();\n }\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n\n this.showService.fetchAvailableShows({}).subscribe({\n next: (response) => {\n this.shows.set(response?.data?.shows ?? []);\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar shows del filtro.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n isActive(showId: number): boolean {\n return this.listEventService.filteredShowId() === showId;\n }\n\n onFilter(show: Show): void {\n const isCurrentlyActive = this.isActive(show.id);\n if (isCurrentlyActive) {\n this.listEventService.setFilteredShowId(null);\n this.router.navigate([], {\n queryParams: { show_id: null },\n queryParamsHandling: 'merge',\n });\n } else {\n this.listEventService.setFilteredShowId(show.id);\n this.router.navigate([], {\n queryParams: { show_id: show.id },\n queryParamsHandling: 'merge',\n });\n }\n this.listEventService.setSelectedDay(null);\n this.listEventService.setSelectedPerformance(null);\n }\n}\n","<div class=\"shows-filter\">\n <p class=\"shows-filter-heading\">Filtrar por evento</p>\n\n @if (loadingData()) {\n @for (i of [1, 2, 3]; track $index) {\n <div class=\"shows-filter-skeleton\"></div>\n }\n }\n\n @if (!loadingData() && shows().length < 1) {\n <app-alert text=\"No hay shows disponibles para filtrar\" size=\"xs\" type=\"error\" />\n }\n\n @for (show of shows(); track $index) {\n <div class=\"shows-filter-item\" [class.shows-filter-item--active]=\"isActive(show.id)\">\n <div class=\"shows-filter-item-info\">\n <span class=\"shows-filter-item-image\">\n @if (show.images.length > 0) {\n <img [src]=\"show.images[0].full_url\" class=\"shows-filter-item-image-img\" />\n } @else {\n <span class=\"shows-filter-item-image-placeholder\"></span>\n }\n </span>\n\n <div>\n <div class=\"shows-filter-item-title\">{{ show.title }}</div>\n @if (show.performances_quantity && show.performances_quantity > 0) {\n <div class=\"shows-filter-item-count\">{{ show.performances_quantity }} funciones</div>\n }\n </div>\n </div>\n\n <div class=\"shows-filter-item-actions\">\n @if (isActive(show.id)) {\n <app-button\n variant=\"tertiary\"\n icon=\"ri-close-line\"\n size=\"xs\"\n (clicked)=\"onFilter(show)\"\n />\n } @else {\n <app-button variant=\"primary\" text=\"Filtrar\" size=\"xs\" (clicked)=\"onFilter(show)\" />\n }\n </div>\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { PriceZoneItem } from '../../../interfaces/price-zones/price-zone-item.interface';\n\n@Component({\n selector: 'zone-price-item',\n standalone: true,\n templateUrl: './zone-price-item.component.html',\n styleUrls: ['./zone-price-item.component.scss'],\n imports: [],\n})\nexport class ZonePriceItemComponent {\n @Input({ required: true }) zone!: PriceZoneItem;\n}\n","<div class=\"zone-price-item\">\n <div class=\"zone-price-item__info\">\n <span class=\"zone-price-item__swatch\" [style.background-color]=\"zone.color || null\"></span>\n <div class=\"zone-price-item__texts\">\n <div class=\"zone-price-item__name\">\n {{ zone.name }}\n </div>\n <div class=\"zone-price-item__seats\">{{ zone.available_seats }} sillas disponibles</div>\n </div>\n </div>\n <div class=\"zone-price-item__price\">{{ zone.price }}</div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { ZonePriceItemComponent } from '../zone-price-item/zone-price-item.component';\nimport { PriceZoneItem } from '../../../interfaces/price-zones/price-zone-item.interface';\n\n@Component({\n selector: 'zone-price-list',\n standalone: true,\n imports: [ZonePriceItemComponent],\n templateUrl: './zone-price-list.component.html',\n styleUrls: ['./zone-price-list.component.scss'],\n})\nexport class ZonePriceListComponent {\n @Input({ required: true }) zones!: PriceZoneItem[];\n}\n","<p class=\"zone-price-list-title\">ZONAS Y PRECIOS</p>\n\n<div class=\"zone-price-list\">\n @for (zone of zones; track $index) {\n <zone-price-item [zone]=\"zone\" />\n }\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ticket-map-widget',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-widget.component.html',\n styleUrl: './ticket-map-widget.component.scss',\n})\nexport class TicketMapWidgetComponent {}\n","<div class=\"ticket-map-widget\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ticket-map-widget-header',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-widget-header.component.html',\n styleUrl: './ticket-map-widget-header.component.scss',\n})\nexport class TicketMapWidgetHeaderComponent {\n @Input() title: string = '';\n}\n","<div class=\"ticket-map-widget-header\">\n @if (title) {\n <p class=\"ticket-map-widget-header__title\">{{ title }}</p>\n }\n\n <div class=\"ticket-map-widget-header__content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapZoomService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-zoom-controls',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-zoom-controls.component.html',\n styleUrl: './ticket-map-zoom-controls.component.scss',\n})\nexport class TicketMapZoomControlsComponent {\n readonly currentZoom = computed(() => this.zoomService.currentZoom());\n readonly zoomPercentage = computed(() => this.zoomService.getZoomPercentage());\n\n constructor(private zoomService: TicketMapZoomService) {}\n\n zoomIn(): void {\n this.zoomService.zoomIn();\n }\n\n zoomOut(): void {\n this.zoomService.zoomOut();\n }\n\n resetZoom(): void {\n this.zoomService.resetZoom();\n }\n\n fitToContainer(): void {\n this.zoomService.fitToContainer();\n }\n\n handleZoomAction(action: string): void {\n switch (action) {\n case 'ZOOM_IN':\n this.zoomIn();\n break;\n case 'ZOOM_OUT':\n this.zoomOut();\n break;\n case 'ZOOM_RESET':\n this.resetZoom();\n break;\n }\n }\n}\n","<div class=\"ticket-map-zoom-controls\">\n <button (click)=\"zoomOut()\" class=\"canvas-button\" title=\"Zoom -\">\n <i class=\"ri-zoom-out-line text-sm\"></i>\n </button>\n\n <span class=\"zoom-percentage\">{{ zoomPercentage() }}</span>\n\n <button (click)=\"zoomIn()\" class=\"canvas-button\" title=\"Zoom +\">\n <i class=\"ri-zoom-in-line\"></i>\n </button>\n\n <button (click)=\"resetZoom()\" class=\"canvas-button\" title=\"Reset\">\n <i class=\"ri-refresh-line\"></i>\n </button>\n\n <button (click)=\"fitToContainer()\" class=\"canvas-button\" title=\"Ajustar al espacio\">\n <i class=\"ri-fullscreen-line\"></i>\n </button>\n</div>\n","import {\n Component,\n Inject,\n Input,\n Output,\n EventEmitter,\n OnDestroy,\n AfterViewInit,\n ViewChild,\n PLATFORM_ID,\n signal,\n effect,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { StageComponent, CoreShapeComponent } from 'ng2-konva';\nimport {\n ElementRenderData,\n HallFloorOption,\n PerformanceTicket,\n TicketMapTooltipData,\n} from '../../../interfaces';\nimport {\n FeedbackModalService,\n PerformanceBookingDataService,\n TicketMapZoomService,\n TicketSelectionService,\n} from '../../../services';\nimport { RoomMapElementType } from '../../../enums';\nimport { findElementAtPosition, findTicketAtPosition } from '../../../helpers';\n\n@Component({\n selector: 'performance-ticket-map',\n standalone: true,\n imports: [CommonModule, StageComponent, CoreShapeComponent],\n templateUrl: './performance-ticket-map.component.html',\n styleUrl: './performance-ticket-map.component.scss',\n})\nexport class PerformanceTicketMapComponent implements OnDestroy, AfterViewInit {\n @Output() selectionChange = new EventEmitter<PerformanceTicket[]>();\n @Output() needsLoginError = new EventEmitter();\n @Input() readOnly = false;\n @Input() needsLogin = false;\n @Input() isLoggedIn = true;\n\n @ViewChild(StageComponent) stageComponent?: StageComponent;\n\n protected tooltipData = signal<TicketMapTooltipData | null>(null);\n\n private stageReady = signal(false);\n private autoFitDone = false;\n private resizeObserver?: ResizeObserver;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected bookingDataService: PerformanceBookingDataService,\n protected feedbackModalService: FeedbackModalService,\n protected selectionService: TicketSelectionService,\n protected zoomService: TicketMapZoomService,\n ) {\n effect(() => {\n const dataReady = this.bookingDataService.renderData().length > 0;\n const stageOk = this.stageReady();\n if (dataReady && stageOk && !this.autoFitDone) {\n this.autoFitDone = true;\n this.zoomService.fitToContainer();\n }\n });\n\n effect(() => {\n const selectedTickets = this.selectionService.selectedTickets();\n const renderData = this.bookingDataService.renderData();\n const stage = this.stageComponent?.getStage();\n if (!stage) return;\n\n const selByElem = new Map<number, Set<string>>();\n for (const ticket of selectedTickets) {\n if (ticket.seat_numeration == null) continue;\n let set = selByElem.get(ticket.room_map_element_id);\n if (!set) {\n set = new Set<string>();\n selByElem.set(ticket.room_map_element_id, set);\n }\n set.add(ticket.seat_numeration);\n }\n\n let needsRedraw = false;\n for (const el of renderData) {\n if (el.type === RoomMapElementType.SEAT_BLOCK || el.type === RoomMapElementType.TABLE) {\n const shape = stage.findOne('.' + el.elementId);\n if (shape) {\n shape.setAttr('selectedNumerations', selByElem.get(el.elementId) ?? new Set<string>());\n needsRedraw = true;\n }\n }\n }\n\n if (needsRedraw) {\n stage.find('Shape').forEach((s: any) => s.getLayer()?.batchDraw());\n }\n });\n }\n\n protected get isBrowser(): boolean {\n return isPlatformBrowser(this.platformId);\n }\n\n ngAfterViewInit(): void {\n if (this.stageComponent) {\n const stage = this.stageComponent.getStage();\n if (stage) {\n this.feedbackModalService.removeAllModals();\n this.zoomService.setStage(stage);\n this.stageReady.set(true);\n this.syncStageToContainer();\n this.setupResizeObserver(stage);\n }\n }\n }\n\n private setupResizeObserver(stage: any): void {\n const container = stage.container().parentElement;\n if (!container) return;\n\n this.resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n if (width > 0 && height > 0) {\n const current = this.bookingDataService.stageConfig();\n if (current['width'] !== width || current['height'] !== height) {\n this.bookingDataService.updateStageConfig({ width, height });\n }\n }\n }\n });\n\n this.resizeObserver.observe(container);\n }\n\n private syncStageToContainer(): void {\n const stage = this.stageComponent?.getStage();\n if (!stage) return;\n const containerEl = stage.container().parentElement;\n if (!containerEl) return;\n const { width, height } = containerEl.getBoundingClientRect();\n if (width > 0 && height > 0) {\n this.bookingDataService.updateStageConfig({ width, height });\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n this.selectionService.clearSelection();\n }\n\n private getInternalPointer(stage: any): { x: number; y: number } {\n const pointer = stage.getPointerPosition();\n if (!pointer) return { x: 0, y: 0 };\n return {\n x: (pointer.x - stage.x()) / stage.scaleX(),\n y: (pointer.y - stage.y()) / stage.scaleY(),\n };\n }\n\n protected selectHallFloor(floorId: number): void {\n this.bookingDataService.setSelectedHallFloor(floorId);\n }\n\n protected handleStageClick(konvaEvent: any): void {\n if (this.readOnly) return;\n\n const stage =\n konvaEvent.angularComponent?.getStage?.() ?? konvaEvent.event?.target?.getStage?.();\n if (!stage) return;\n\n const internalPos = this.getInternalPointer(stage);\n const hit = findElementAtPosition(\n this.bookingDataService.renderData(),\n internalPos.x,\n internalPos.y,\n );\n if (!hit) return;\n\n const emitNeedsLoginError = this.needsLogin && !this.isLoggedIn;\n\n if (hit.element.type === RoomMapElementType.ZONE) {\n if (emitNeedsLoginError) {\n this.needsLoginError.emit();\n return;\n }\n\n const zoneId = hit.element.elementId;\n const zoneTickets = this.selectionService.getZoneTickets(zoneId);\n const selectedTickets = zoneTickets.filter((t) => this.selectionService.isSelected(t));\n\n this.selectionService.initZoneQuantity(zoneId, hit.element.zoneCapacity || 0);\n\n if (selectedTickets.length > 0) {\n this.selectionService.adjustZoneQuantity(zoneId, -1);\n } else {\n this.selectionService.adjustZoneQuantity(zoneId, 1);\n }\n\n this.selectionChange.emit(this.selectionService.selectedTickets());\n return;\n }\n\n const ticket = findTicketAtPosition(hit.element, hit.relX, hit.relY);\n if (ticket) {\n if (emitNeedsLoginError) {\n this.needsLoginError.emit();\n return;\n }\n\n this.selectionService.toggle(ticket);\n this.selectionChange.emit(this.selectionService.selectedTickets());\n }\n }\n\n protected handleStageMouseMove(konvaEvent: any): void {\n const stage =\n konvaEvent.angularComponent?.getStage?.() ?? konvaEvent.event?.target?.getStage?.();\n if (!stage) return;\n\n const internalPos = this.getInternalPointer(stage);\n const hit = findElementAtPosition(\n this.bookingDataService.renderData(),\n internalPos.x,\n internalPos.y,\n );\n if (!hit) {\n this.tooltipData.set(null);\n return;\n }\n\n let ticket: PerformanceTicket | null = null;\n let seatLabel: string | null = null;\n\n if (hit.element.type === RoomMapElementType.ZONE) {\n ticket = hit.element.tickets[0] || null;\n } else {\n ticket = findTicketAtPosition(hit.element, hit.relX, hit.relY);\n\n if (ticket) {\n seatLabel = ticket.seat_label;\n }\n }\n\n if (ticket) {\n const pointer = stage.getPointerPosition();\n const tooltip = this.selectionService.buildTooltipData(\n ticket,\n hit.element.elementName,\n seatLabel,\n (pointer?.x || 0) + 15,\n (pointer?.y || 0) + 15,\n );\n this.tooltipData.set(tooltip);\n } else {\n this.tooltipData.set(null);\n }\n }\n\n protected handleStageMouseLeave(): void {\n this.tooltipData.set(null);\n }\n\n protected handleWheel(konvaEvent: any): void {\n const nativeEvent = konvaEvent.event?.evt;\n if (!nativeEvent) return;\n nativeEvent.preventDefault();\n this.zoomService.handleWheelZoom(nativeEvent.deltaY);\n }\n\n protected trackByElementId(_index: number, item: ElementRenderData): number {\n return item.elementId;\n }\n\n protected trackByFloorId(_index: number, floor: HallFloorOption): HallFloorOption {\n return floor;\n }\n}\n","<div class=\"ticket-map-canvas-container\">\n @if (isBrowser) {\n <ko-stage\n [config]=\"bookingDataService.stageConfig()\"\n (click)=\"handleStageClick($event)\"\n (mousemove)=\"handleStageMouseMove($event)\"\n (mouseleave)=\"handleStageMouseLeave()\"\n (wheel)=\"handleWheel($event)\"\n >\n <ko-layer>\n @for (element of bookingDataService.renderData(); track trackByElementId($index, element)) {\n <ko-shape [config]=\"element.shapeConfig\" />\n }\n </ko-layer>\n </ko-stage>\n\n @if (tooltipData(); as tooltip) {\n <div class=\"ticket-tooltip\" [style.left.px]=\"tooltip.x\" [style.top.px]=\"tooltip.y\">\n <div class=\"tooltip-header\">{{ tooltip.elementName }}</div>\n @if (tooltip.seatLabel) {\n <div class=\"tooltip-row\">\n <span class=\"tooltip-label\">Asiento:</span>\n <span class=\"tooltip-value\">{{ tooltip.seatLabel }}</span>\n </div>\n }\n <div class=\"tooltip-row\">\n <span class=\"tooltip-label\">Precio:</span>\n <span class=\"tooltip-value\">${{ tooltip.price | number: '1.0-0' }}</span>\n </div>\n <div class=\"tooltip-row\">\n <span class=\"tooltip-label\">Estado:</span>\n <span class=\"tooltip-status\">\n <span class=\"status-dot\" [style.background]=\"tooltip.statusColor\"></span>\n {{ tooltip.statusLabel }}\n </span>\n </div>\n @if (tooltip.isSelected) {\n <div class=\"tooltip-selected-badge\">Seleccionado</div>\n }\n </div>\n }\n }\n</div>\n","import { Component, inject, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { PerformanceBookingDataService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-price-zones',\n imports: [CommonModule, TicketMapWidgetComponent, TicketMapWidgetHeaderComponent],\n templateUrl: './ticket-map-price-zones.component.html',\n styleUrl: './ticket-map-price-zones.component.scss',\n})\nexport class TicketMapPriceZonesComponent {\n @Input() title: string = 'Precios por zona';\n protected bookingDataService = inject(PerformanceBookingDataService);\n}\n","<ticket-map-widget>\n <ticket-map-widget-header [title]=\"title\" />\n\n <div class=\"ticket-map-price-zones\">\n @for (zone of bookingDataService.roomMap()?.price_zones ?? []; track zone.id) {\n <div class=\"ticket-map-price-zones__item\">\n <span\n class=\"ticket-map-price-zones__item-color\"\n [style.background-color]=\"zone.color\"\n ></span>\n <p class=\"ticket-map-price-zones__item-name\">{{ zone.name }}</p>\n <p class=\"ticket-map-price-zones__item-price\">${{ zone.normal_price | number: '1.0-2' }}</p>\n </div>\n }\n </div>\n</ticket-map-widget>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Product } from '../../../interfaces';\nimport { TicketSelectionService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-product-selection-item',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-product-selection-item.component.html',\n styleUrl: './ticket-map-product-selection-item.component.scss',\n})\nexport class TicketMapProductSelectionItemComponent {\n @Input({ required: true }) product!: Product;\n\n constructor(protected selectionService: TicketSelectionService) {}\n\n get quantity(): number {\n return this.selectionService.getProductQuantity(this.product.id);\n }\n\n get firstImage(): string | undefined {\n return this.product.images?.[0]?.full_url;\n }\n\n increment(): void {\n this.selectionService.updateProductQuantity(this.product.id, 1);\n }\n\n decrement(): void {\n this.selectionService.updateProductQuantity(this.product.id, -1);\n }\n}\n","<div class=\"ticket-map-product-selection-item\">\n <div class=\"ticket-map-product-selection-item__image\">\n @if (firstImage) {\n <img\n [src]=\"firstImage\"\n [alt]=\"product.name\"\n class=\"ticket-map-product-selection-item__image-img\"\n />\n } @else {\n <i class=\"ri-shopping-bag-line ticket-map-product-selection-item__image-icon\"></i>\n }\n </div>\n\n <div class=\"ticket-map-product-selection-item__content\">\n <div class=\"ticket-map-product-selection-item__content-name\">{{ product.name }}</div>\n\n @if (product.sku) {\n <div class=\"ticket-map-product-selection-item__content-sku\">SKU: {{ product.sku }}</div>\n }\n\n <div class=\"ticket-map-product-selection-item__content-price\">\n ${{ product.price | number: '1.0' }}\n </div>\n </div>\n\n <div class=\"ticket-map-product-selection-item__quantity\">\n <button\n type=\"button\"\n class=\"ticket-map-product-selection-item__quantity-button\"\n [disabled]=\"quantity <= 0\"\n (click)=\"decrement()\"\n >\n <i class=\"ri-subtract-line\"></i>\n </button>\n\n <input\n type=\"number\"\n class=\"ticket-map-product-selection-item__quantity-input\"\n [value]=\"quantity\"\n readonly\n />\n\n <button\n type=\"button\"\n class=\"ticket-map-product-selection-item__quantity-button\"\n (click)=\"increment()\"\n >\n <i class=\"ri-add-line\"></i>\n </button>\n </div>\n</div>\n","import { Component, computed, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapProductSelectionItemComponent } from '../ticket-map-product-selection-item/ticket-map-product-selection-item.component';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { PerformanceBookingDataService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-product-selection',\n standalone: true,\n imports: [\n CommonModule,\n TicketMapWidgetComponent,\n TicketMapWidgetHeaderComponent,\n TicketMapProductSelectionItemComponent,\n ],\n templateUrl: './ticket-map-product-selection.component.html',\n styleUrl: './ticket-map-product-selection.component.scss',\n})\nexport class TIcketMapProductSelectionComponent {\n private bookingDataService = inject(PerformanceBookingDataService);\n\n readonly products = computed(() => this.bookingDataService.roomMap()?.products ?? []);\n}\n","@if (products().length > 0) {\n <ticket-map-widget>\n <ticket-map-widget-header title=\"Productos\" />\n\n <div class=\"products-list\">\n @for (product of products(); track product.id) {\n <ticket-map-product-selection-item [product]=\"product\" />\n }\n </div>\n </ticket-map-widget>\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport {\n PerformanceBookingDataService,\n TicketSelectionDetailsService,\n TicketSelectionDiscountService,\n TicketSelectionService,\n TicketSelectionTotalsService,\n} from '../../../services';\n\n@Component({\n selector: 'ticket-map-totals',\n standalone: true,\n imports: [\n CommonModule,\n AppButtonComponent,\n TicketMapWidgetHeaderComponent,\n TicketMapWidgetComponent,\n ],\n templateUrl: './ticket-map-totals.component.html',\n styleUrl: './ticket-map-totals.component.scss',\n})\nexport class TicketMapTotalsComponent {\n @Input() title: string = 'Totales de la selección';\n @Input() buttonText: string = 'Generar orden de compra';\n @Input() loadingButtonText: string = 'Generando orden de compra...';\n @Input() isLoading: boolean = false;\n @Output() onPurchaseClick = new EventEmitter<void>();\n\n constructor(\n protected bookingDataService: PerformanceBookingDataService,\n protected selectionDetailsService: TicketSelectionDetailsService,\n protected selectionDiscountService: TicketSelectionDiscountService,\n protected selectionTotalsService: TicketSelectionTotalsService,\n protected selectionService: TicketSelectionService,\n private activatedRoute: ActivatedRoute,\n ) {}\n\n get serviceFee(): number {\n return Number(this.bookingDataService.show()?.service_fee ?? '0');\n }\n\n get performanceId(): number {\n return Number(this.activatedRoute.snapshot.paramMap.get('id'));\n }\n\n get selectedTicketIds(): number[] {\n return this.selectionService.selectedTicketIdList();\n }\n}\n","<ticket-map-widget class=\"w-full\">\n <ticket-map-widget-header [title]=\"title\" />\n\n <div class=\"ticket-map-totals\">\n <p class=\"ticket-map-totals__item\">\n <span>Entradas ({{ selectionService.selectedCount() | number: '1.0-2' }}):</span>\n <span> ${{ selectionTotalsService.ticketSubtotal() | number: '1.0-2' }} </span>\n </p>\n\n @if (selectionService.selectedProductCount() > 0) {\n <p class=\"ticket-map-totals__item\">\n <span>Productos ({{ selectionService.selectedProductCount() | number: '1.0-2' }}):</span>\n <span>${{ selectionTotalsService.productSubtotal() | number: '1.0-2' }}</span>\n </p>\n }\n\n @if (serviceFee > 0) {\n <p class=\"ticket-map-totals__item\">\n <span>Tarifa de servicio:</span>\n <span>${{ bookingDataService.show()?.service_fee ?? '0' | number: '1.0-2' }}</span>\n </p>\n }\n\n @if (!!selectionDiscountService.coupon()) {\n <p class=\"ticket-map-totals__item\">\n <span>Cupón de descuento:</span>\n <span class=\"line-through\">\n ${{ selectionDiscountService.coupon()?.discount_value ?? '0' | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (!!selectionDiscountService.corporateBond()) {\n <p class=\"ticket-map-totals__item\">\n <span>Bono corporativo:</span>\n <span class=\"line-through\">\n ${{ selectionDiscountService.corporateBond()?.value ?? '0' | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (!!selectionDiscountService.giftBond()) {\n <p class=\"ticket-map-totals__item\">\n <span>Bono de regalo:</span>\n <span class=\"line-through\">\n ${{ selectionDiscountService.giftBond()?.value ?? '0' | number: '1.0-2' }}\n </span>\n </p>\n }\n\n <hr class=\"ticket-map-totals__divider\" />\n\n <div class=\"ticket-map-totals__calculated\">\n <span class=\"ticket-map-totals__calculated-title\">Total:</span>\n\n @if (\n selectionTotalsService.totalDiscounted() || selectionTotalsService.totalDiscounted() === 0\n ) {\n <span class=\"ticket-map-totals__calculated-inline\">\n <span class=\"ticket-map-totals__calculated-discount\">\n ${{ selectionTotalsService.totalValue() | currency: 'COP' : 'symbol' : '1.0-2' }}\n </span>\n <span class=\"ticket-map-totals__calculated-total\">\n ${{ selectionTotalsService.totalDiscounted() | currency: 'COP' : 'symbol' : '1.0-2' }}\n </span>\n </span>\n } @else {\n <span class=\"ticket-map-totals__calculated-total\">\n ${{ selectionTotalsService.totalValue() | number: '1.0-2' }}\n </span>\n }\n </div>\n\n @if (selectionService.selectedCount() > 0 || selectionService.selectedProductCount() > 0) {\n <div class=\"flex flex-col gap-2\">\n <app-button\n (click)=\"onPurchaseClick.emit()\"\n size=\"sm\"\n icon=\"ri-dashboard-3-line\"\n [text]=\"buttonText\"\n [loadingText]=\"loadingButtonText\"\n [loading]=\"isLoading\"\n variant=\"primary\"\n />\n </div>\n }\n </div>\n</ticket-map-widget>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { TicketMapZoomControlsComponent } from '../ticket-map-zoom-controls/ticket-map-zoom-controls.component';\nimport { PerformanceTicketMapComponent } from '../performance-ticket-map/performance-ticket-map.component';\nimport { PerformanceTicket } from '../../../interfaces';\n\n@Component({\n selector: 'ticket-map-wrapper',\n standalone: true,\n imports: [\n CommonModule,\n TicketMapWidgetComponent,\n TicketMapWidgetHeaderComponent,\n TicketMapZoomControlsComponent,\n PerformanceTicketMapComponent,\n ],\n templateUrl: './ticket-map-wrapper.component.html',\n styleUrls: ['./ticket-map-wrapper.component.scss'],\n})\nexport class TicketMapWrapperComponent {\n @Output() selectionChange = new EventEmitter<PerformanceTicket[]>();\n @Output() needsLoginError = new EventEmitter();\n @Input() readOnly = false;\n @Input() needsLogin = false;\n @Input() isLoggedIn = true;\n}\n","<ticket-map-widget>\n <ticket-map-widget-header title=\"Plano de la sala\">\n <div class=\"zoom-controls-wrapper\">\n <ticket-map-zoom-controls />\n </div>\n </ticket-map-widget-header>\n\n <div class=\"seat-map-wrapper\" #wrapper>\n <performance-ticket-map\n [readOnly]=\"readOnly\"\n [needsLogin]=\"needsLogin\"\n [isLoggedIn]=\"isLoggedIn\"\n (needsLoginError)=\"needsLoginError.emit()\"\n (selectionChange)=\"selectionChange.emit()\"\n />\n </div>\n</ticket-map-widget>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'seat-selection-empty-summary',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './seat-selection-empty-summary.component.html',\n styleUrl: './seat-selection-empty-summary.component.scss',\n})\nexport class SeatSelectionEmptySummaryComponent {}\n","<div class=\"seat-selection-empty-summary\">\n <div class=\"seat-selection-empty-summary__icon\">\n <i class=\"ri-armchair-line seat-selection-empty-summary__icon--size\"></i>\n </div>\n <p class=\"seat-selection-empty-summary__title\">No has seleccionado asientos</p>\n <p class=\"seat-selection-empty-summary__subtitle\">\n Haz clic en el mapa para seleccionar los asientos\n </p>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketSelectionService } from '../../../services';\nimport { PerformanceTicket } from '../../../interfaces';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { getItemTypeIcon } from '../../../helpers';\n\n@Component({\n selector: 'seat-selection-summary-item',\n standalone: true,\n imports: [CommonModule, AppButtonComponent],\n templateUrl: './seat-selection-summary-item.component.html',\n styleUrl: './seat-selection-summary-item.component.scss',\n})\nexport class SeatSelectionSummaryItemComponent {\n @Input({ required: true }) item!: PerformanceTicket;\n\n constructor(protected selectionService: TicketSelectionService) {}\n\n getItemTypeIcon = getItemTypeIcon;\n\n removeItem(ticket: PerformanceTicket) {\n this.selectionService.deselect(ticket);\n }\n}\n","<div class=\"seat-selection-summary-item\">\n <div class=\"seat-selection-summary-item__icon\">\n {{ getItemTypeIcon(item) }}\n </div>\n\n <div class=\"seat-selection-summary-item__content\">\n <div class=\"seat-selection-summary-item__content-label\">{{ item.seat_label }}</div>\n\n <div class=\"seat-selection-summary-item__content-price\">\n ${{ item.normal_price | number: '1.0' }}\n </div>\n\n @if (item.element_qty && item.element_qty > 1) {\n <div class=\"seat-selection-summary-item__content-quantity\">\n Cantidad: {{ item.element_qty }}\n </div>\n }\n </div>\n\n <div class=\"seat-selection-summary-item__actions\">\n <app-button\n variant=\"transparent\"\n size=\"xs\"\n text=\"\"\n icon=\"ri-close-line\"\n (clicked)=\"removeItem(item)\"\n />\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SeatSelectionEmptySummaryComponent } from '../seat-selection-empty-summary/seat-selection-empty-summary.component';\nimport { SeatSelectionSummaryItemComponent } from '../seat-selection-summary-item/seat-selection-summary-item.component';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { TicketSelectionService } from '../../../services';\n\n@Component({\n selector: 'seat-selection-summary',\n standalone: true,\n imports: [\n CommonModule,\n AppButtonComponent,\n SeatSelectionEmptySummaryComponent,\n SeatSelectionSummaryItemComponent,\n TicketMapWidgetComponent,\n TicketMapWidgetHeaderComponent,\n ],\n templateUrl: './seat-selection-summary.component.html',\n})\nexport class SeatSelectionSummaryComponent {\n @Input() title: string = 'Resumen de la selección';\n @Input() clearButtonText: string = 'Limpiar todo';\n\n constructor(protected selectionService: TicketSelectionService) {}\n}\n","<ticket-map-widget>\n <ticket-map-widget-header [title]=\"title\" />\n\n @if (selectionService.selectedCount() > 0) {\n <div class=\"tickets-list\">\n @for (item of selectionService.selectedTickets(); track item.id) {\n <seat-selection-summary-item [item]=\"item\" />\n }\n </div>\n\n @if (selectionService.selectedCount() > 0) {\n <div class=\"tickets-actions\">\n <app-button\n size=\"xs\"\n [text]=\"clearButtonText\"\n icon=\"ri-delete-bin-line\"\n (clicked)=\"selectionService.clearSelection()\"\n />\n </div>\n }\n } @else {\n <seat-selection-empty-summary />\n }\n</ticket-map-widget>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConfirmationOrderModalService } from '../../../services/ticket-selection/confirmation-order-modal.service';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\nimport { PerformanceBookingDataService } from '../../../services/ticket-selection/performance-booking-data.service';\nimport { TicketSelectionDiscountService } from '../../../services/ticket-selection/ticket-selection-discount.service';\nimport { TicketSelectionService } from '../../../services/ticket-selection/ticket-selection.service';\nimport { TicketSelectionTotalsService } from '../../../services/ticket-selection/ticket-selection-totals.service';\n\n@Component({\n selector: 'confirmation-order-modal',\n standalone: true,\n imports: [CommonModule, AppButtonComponent, AppModalComponent],\n templateUrl: './confirmation-order-modal.component.html',\n styleUrls: ['./confirmation-order-modal.component.scss'],\n})\nexport class ConfirmationOrderModalComponent {\n @Input() modalTitle: string = 'Confirmación de compra';\n @Input() confirmButtonText: string = 'Confirmar compra';\n @Input() confirmButtonTextLoading: string = 'Confirmando compra...';\n @Input() loading: boolean = false;\n @Output() onConfirm = new EventEmitter();\n\n constructor(\n private confirmationOrderModalService: ConfirmationOrderModalService,\n private selectionDiscountService: TicketSelectionDiscountService,\n private selectionTotalsService: TicketSelectionTotalsService,\n private selectionService: TicketSelectionService,\n private bookingDataService: PerformanceBookingDataService,\n ) {}\n\n get isOpen() {\n return this.confirmationOrderModalService.modalIsOpen;\n }\n\n get selectedCount(): number {\n return this.selectionService.selectedCount();\n }\n\n get serviceFee(): number {\n return Number(this.bookingDataService.show()?.service_fee ?? '0');\n }\n\n get subtotalValue(): number {\n return this.selectionTotalsService.subtotalValue();\n }\n\n get ticketSubtotal(): number {\n return (\n this.selectionTotalsService.subtotalValue() - this.selectionTotalsService.productSubtotal()\n );\n }\n\n get productSubtotal(): number {\n return this.selectionTotalsService.productSubtotal();\n }\n\n get productCount(): number {\n return this.selectionService.selectedProductCount();\n }\n\n get totalValue(): number {\n return this.selectionTotalsService.totalValue();\n }\n\n get totalDiscounted(): number | null {\n return this.selectionTotalsService.totalDiscounted();\n }\n\n get coupon() {\n return this.selectionDiscountService.coupon();\n }\n\n get corporateBond() {\n return this.selectionDiscountService.corporateBond();\n }\n\n get giftBond() {\n return this.selectionDiscountService.giftBond();\n }\n\n onClose() {\n if (this.loading) return;\n this.confirmationOrderModalService.close();\n }\n\n confirmOrder() {\n this.onConfirm && this.onConfirm.emit();\n }\n}\n","<app-modal [title]=\"modalTitle\" [isOpen]=\"isOpen\" size=\"md\" (closeModal)=\"onClose()\">\n <div class=\"confirmation-modal\">\n <p class=\"confirmation-modal__description\">\n Revise los detalles de la compra antes de confirmar.\n </p>\n\n <p class=\"confirmation-modal__item\">\n <span>Entradas ({{ selectedCount | number: '1.0-0' }}):</span>\n <span>${{ ticketSubtotal | number: '1.0' }}</span>\n </p>\n\n @if (productCount > 0) {\n <p class=\"confirmation-modal__item\">\n <span>Productos ({{ productCount | number: '1.0-0' }}):</span>\n <span>${{ productSubtotal | number: '1.0' }}</span>\n </p>\n }\n\n @if (serviceFee > 0) {\n <p class=\"confirmation-modal__item\">\n <span>Tarifa de servicio:</span>\n <span>${{ serviceFee | number: '1.0' }}</span>\n </p>\n }\n\n @if (coupon) {\n <p class=\"confirmation-modal__item\">\n <span>Cupón de descuento:</span>\n <span class=\"confirmation-modal__discount\">\n ${{ coupon.discount_value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (corporateBond) {\n <p class=\"confirmation-modal__item\">\n <span>Bono corporativo:</span>\n <span class=\"confirmation-modal__discount\">\n ${{ corporateBond.value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (giftBond) {\n <p class=\"confirmation-modal__item\">\n <span>Bono de regalo:</span>\n <span class=\"confirmation-modal__discount\"> ${{ giftBond.value | number: '1.0-2' }} </span>\n </p>\n }\n\n <hr class=\"confirmation-modal__divider\" />\n\n <p class=\"confirmation-modal__totals\">\n <span class=\"confirmation-modal__totals-title\">Total:</span>\n\n @if (totalDiscounted || totalDiscounted === 0) {\n <span class=\"confirmation-modal__totals-discounted\">\n <span class=\"confirmation-modal__discount\">\n ${{ totalValue | currency: 'COP' : 'symbol' : '1.0' }}\n </span>\n <span class=\"confirmation-modal__price\">\n ${{ totalDiscounted | currency: 'COP' : 'symbol' : '1.0' }}\n </span>\n </span>\n } @else {\n <span class=\"confirmation-modal__price\">${{ totalValue | number: '1.0' }}</span>\n }\n </p>\n </div>\n\n <div class=\"confirmation-modal__actions\">\n <app-button\n size=\"sm\"\n variant=\"tertiary\"\n text=\"Cancelar\"\n (click)=\"onClose()\"\n [disabled]=\"loading\"\n />\n\n <app-button\n size=\"sm\"\n variant=\"primary\"\n [text]=\"confirmButtonText\"\n [loadingText]=\"confirmButtonTextLoading\"\n [loading]=\"loading\"\n [disabled]=\"loading\"\n (click)=\"confirmOrder()\"\n />\n </div>\n</app-modal>\n","// Config\nexport * from './lib/config/index';\n\n// i18n\nexport * from './lib/i18n/index';\n\n// Constants\nexport * from './lib/constants/index';\nexport * from './lib/constants/api-routes/index';\n\n// Enums\nexport * from './lib/enums/index';\n\n// Types\nexport * from './lib/types/index';\n\n// Interfaces\nexport * from './lib/interfaces/index';\n\n// Helpers\nexport * from './lib/helpers/index';\n\n// Validators\nexport * from './lib/validators/index';\n\n// Services\nexport * from './lib/services/index';\n\n// Interceptors\nexport * from './lib/interceptors/index';\n\n// Components - Buttons\nexport * from './lib/components/buttons/app-button/app-button.component';\nexport * from './lib/components/buttons/app-link-button/app-link-button.component';\n\n// Components - Feedback\nexport * from './lib/components/feedback/app-alert/app-alert.component';\nexport * from './lib/components/modals/feedback-modal/feedback-modal.component';\nexport * from './lib/components/feedback/delete-confirmation/delete-confirmation.component';\n\n// Components - Modals\nexport * from './lib/components/modals/app-modal/app-modal.component';\n\n// Components - Data Display\nexport * from './lib/components/data-display/app-badge/app-badge.component';\nexport * from './lib/components/data-display/audit-information/audit-information.component';\nexport * from './lib/components/data-display/dynamic-table/dynamic-table.component';\n\n// Components - Shows selection\nexport * from './lib/components/shows-selection/show-card/show-card.component';\nexport * from './lib/components/shows-selection/show-card-skeleton/show-card-skeleton.component';\n\n// Components - Navigation\nexport * from './lib/components/navigation/language-switcher/language-switcher.component';\n\n// Components - Forms\nexport * from './lib/components/forms/form-input/form-input.component';\nexport * from './lib/components/forms/form-select/form-select.component';\nexport * from './lib/components/forms/form-textarea/form-textarea.component';\nexport * from './lib/components/forms/form-editor/form-editor.component';\nexport * from './lib/components/forms/color-picker/color-picker.component';\nexport * from './lib/components/forms/date-input/date-input.component';\nexport * from './lib/components/forms/toggle-switch/toggle-switch.component';\nexport * from './lib/components/forms/file-upload/file-upload.component';\nexport * from './lib/components/forms/file-upload-preview/file-upload-preview.component';\nexport * from './lib/components/forms/async-select/async-select.component';\nexport * from './lib/components/forms/change-password-form/change-password-form.component';\n\n// Components - Select Integrations\nexport * from './lib/components/select-integrations/admin-select/admin-select.component';\nexport * from './lib/components/select-integrations/city-select/city-select.component';\nexport * from './lib/components/select-integrations/country-select/country-select.component';\nexport * from './lib/components/select-integrations/state-select/state-select.component';\nexport * from './lib/components/select-integrations/customer-select/customer-select.component';\nexport * from './lib/components/select-integrations/performance-select/performance-select.component';\nexport * from './lib/components/select-integrations/performance-multi-select/performance-multi-select.component';\nexport * from './lib/components/select-integrations/product-select/product-select.component';\nexport * from './lib/components/select-integrations/product-multi-select/product-multi-select.component';\nexport * from './lib/components/select-integrations/show-select/show-select.component';\nexport * from './lib/components/select-integrations/show-multi-select/show-multi-select.component';\nexport * from './lib/components/select-integrations/price-zone-select/price-zone-select.component';\n\n// Performance selection\nexport * from './lib/components/performances-selection/day-selector-grid/day-selector-grid.component';\nexport * from './lib/components/performances-selection/performance-card/performance-card.component';\nexport * from './lib/components/performances-selection/performance-card-list/performance-card-list.component';\nexport * from './lib/components/performances-selection/performance-stepper/performance-stepper.component';\nexport * from './lib/components/performances-selection/shows-filter/shows-filter.component';\nexport * from './lib/components/performances-selection/zone-price-item/zone-price-item.component';\nexport * from './lib/components/performances-selection/zone-price-list/zone-price-list.component';\n\n// Ticket Map\nexport * from './lib/components/ticket-map/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["drawChairIcon","numberToLetter","i1.ApiService","i1.PriceZoneEventService","i1","i2.DeleteConfirmationService","i3","COLORS","i2","i2.ChangePasswordFormService","i3.CustomerService","i4.AdminService","i5.ToastService","i6","i1.AdminService","i1.CitiesService","i1.CountryService","i1.StatesService","i1.CustomerService","i1.PerformanceService","i1.ProductService","i1.ShowService","i1.PriceZoneService","i2.PerformancesListEventsService","i1.ToastService","i1.PerformancesListEventsService","i1.TicketMapZoomService","i1.PerformanceBookingDataService","i1.FeedbackModalService","i1.TicketSelectionService","i1.TicketSelectionDetailsService","i1.TicketSelectionDiscountService","i1.TicketSelectionTotalsService","i1.ConfirmationOrderModalService","i2.TicketSelectionDiscountService","i3.TicketSelectionTotalsService","i4.TicketSelectionService","i5.PerformanceBookingDataService"],"mappings":"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"}
1
+ {"version":3,"file":"tickera-angular-components.mjs","sources":["../../../projects/tickera-angular-components/src/lib/i18n/transloco-loader.ts","../../../projects/tickera-angular-components/src/lib/i18n/language.utils.ts","../../../projects/tickera-angular-components/src/lib/config/tickera-components.config.ts","../../../projects/tickera-angular-components/src/lib/constants/alerts.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/admin-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/cities-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/countries-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/customers-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/performances-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/price-zones-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-categories-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-tags-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-types-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/products-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/shows-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/states-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/venues-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/buttons.ts","../../../projects/tickera-angular-components/src/lib/constants/form-error-messages.ts","../../../projects/tickera-angular-components/src/lib/constants/form-fields.ts","../../../projects/tickera-angular-components/src/lib/constants/select-options/customers.ts","../../../projects/tickera-angular-components/src/lib/constants/select-options/orders.ts","../../../projects/tickera-angular-components/src/lib/enums/file-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-applicability.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-discount-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/corporate-bonds/corporate-bond-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/performances/performance-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/performances/performance-ticket-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/room-maps/room-map-element-orientation.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/room-maps/room-map-element-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/gift-bonds/gift-bond-status.enum.ts","../../../projects/tickera-angular-components/src/lib/constants/ticket-map.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/draw-rounded-rect.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-exit-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-hallway-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-production-area-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/color.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/draw-chair-icon.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/draw-happy-face.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/draw-wheel-chair-icon.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/number-to-letter.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/performance-ticket-icon.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/seat-block-ticket-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/table-ticket-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/ticket-map.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-seat-block-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-stage-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-stair-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-table-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-unavailable-space-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-zone-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/constants/konva-shapes.ts","../../../projects/tickera-angular-components/src/lib/constants/shows/show-type-colors.ts","../../../projects/tickera-angular-components/src/lib/types/orders/order-item-type.enum.ts","../../../projects/tickera-angular-components/src/lib/types/orders/order-status.enum.ts","../../../projects/tickera-angular-components/src/lib/types/shows/show.type.ts","../../../projects/tickera-angular-components/src/lib/interfaces/ticket-selection/selected-discount-card-type.interface.ts","../../../projects/tickera-angular-components/src/lib/helpers/get-formatted-customer.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/parse-json-to-form-data.ts","../../../projects/tickera-angular-components/src/lib/helpers/transform-image-to-file.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/format-cities-response-to-select.helper.ts","../../../projects/tickera-angular-components/src/lib/validators/date-validators.validator.ts","../../../projects/tickera-angular-components/src/lib/validators/must-match.validator.ts","../../../projects/tickera-angular-components/src/lib/services/api.service.ts","../../../projects/tickera-angular-components/src/lib/services/toast.service.ts","../../../projects/tickera-angular-components/src/lib/services/delete-confirmation.service.ts","../../../projects/tickera-angular-components/src/lib/services/change-password-form.service.ts","../../../projects/tickera-angular-components/src/lib/services/date.service.ts","../../../projects/tickera-angular-components/src/lib/services/admin.service.ts","../../../projects/tickera-angular-components/src/lib/services/cities.service.ts","../../../projects/tickera-angular-components/src/lib/services/country.service.ts","../../../projects/tickera-angular-components/src/lib/services/states.service.ts","../../../projects/tickera-angular-components/src/lib/services/performance.service.ts","../../../projects/tickera-angular-components/src/lib/services/performances-list-events.service.ts","../../../projects/tickera-angular-components/src/lib/services/show.service.ts","../../../projects/tickera-angular-components/src/lib/services/customer.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone-event.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone-form-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-category.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-tag.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-type.service.ts","../../../projects/tickera-angular-components/src/lib/services/product.service.ts","../../../projects/tickera-angular-components/src/lib/services/base-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/feedback-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/performance-booking-data.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection-details.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection-discount.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection-totals.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-map-zoom.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/confirmation-order-modal.service.ts","../../../projects/tickera-angular-components/src/lib/interceptors/auth.interceptor.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-button/app-button.component.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-button/app-button.component.html","../../../projects/tickera-angular-components/src/lib/components/buttons/app-link-button/app-link-button.component.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-link-button/app-link-button.component.html","../../../projects/tickera-angular-components/src/lib/components/feedback/app-alert/app-alert.component.ts","../../../projects/tickera-angular-components/src/lib/components/feedback/app-alert/app-alert.component.html","../../../projects/tickera-angular-components/src/lib/components/modals/app-modal/app-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/modals/app-modal/app-modal.component.html","../../../projects/tickera-angular-components/src/lib/components/modals/feedback-modal/feedback-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/modals/feedback-modal/feedback-modal.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-input/form-input.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-input/form-input.component.html","../../../projects/tickera-angular-components/src/lib/components/feedback/delete-confirmation/delete-confirmation.component.ts","../../../projects/tickera-angular-components/src/lib/components/feedback/delete-confirmation/delete-confirmation.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/app-badge/app-badge.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/app-badge/app-badge.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/audit-information/audit-information.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/audit-information/audit-information.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/dynamic-table/dynamic-table.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/dynamic-table/dynamic-table.component.html","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card/show-card.component.ts","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card/show-card.component.html","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card-skeleton/show-card-skeleton.component.ts","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card-skeleton/show-card-skeleton.component.html","../../../projects/tickera-angular-components/src/lib/components/navigation/language-switcher/language-switcher.component.ts","../../../projects/tickera-angular-components/src/lib/components/navigation/language-switcher/language-switcher.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-select/form-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-select/form-select.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-textarea/form-textarea.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-textarea/form-textarea.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-editor/form-editor.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-editor/form-editor.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/color-picker/color-picker.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/color-picker/color-picker.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/date-input/date-input.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/date-input/date-input.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/toggle-switch/toggle-switch.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/toggle-switch/toggle-switch.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload-preview/file-upload-preview.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload-preview/file-upload-preview.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload/file-upload.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload/file-upload.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/async-select/async-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/async-select/async-select.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/change-password-form/change-password-form.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/change-password-form/change-password-form.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/admin-select/admin-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/admin-select/admin-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/city-select/city-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/city-select/city-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/country-select/country-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/country-select/country-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/state-select/state-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/state-select/state-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/customer-select/customer-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/customer-select/customer-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-select/performance-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-select/performance-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-multi-select/performance-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-multi-select/performance-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-select/product-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-select/product-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-multi-select/product-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-multi-select/product-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-select/show-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-select/show-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-multi-select/show-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-multi-select/show-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/price-zone-select/price-zone-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/price-zone-select/price-zone-select.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/day-selector-grid/day-selector-grid.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/day-selector-grid/day-selector-grid.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card/performance-card.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card/performance-card.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card-list/performance-card-list.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card-list/performance-card-list.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-stepper/performance-stepper.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-stepper/performance-stepper.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/shows-filter/shows-filter.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/shows-filter/shows-filter.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-item/zone-price-item.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-item/zone-price-item.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-list/zone-price-list.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-list/zone-price-list.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget/ticket-map-widget.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget/ticket-map-widget.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget-header/ticket-map-widget-header.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget-header/ticket-map-widget-header.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-zoom-controls/ticket-map-zoom-controls.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-zoom-controls/ticket-map-zoom-controls.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/performance-ticket-map/performance-ticket-map.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/performance-ticket-map/performance-ticket-map.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-price-zones/ticket-map-price-zones.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-price-zones/ticket-map-price-zones.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection-item/ticket-map-product-selection-item.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection-item/ticket-map-product-selection-item.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection/ticket-map-product-selection.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection/ticket-map-product-selection.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-totals/ticket-map-totals.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-totals/ticket-map-totals.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-wrapper/ticket-map-wrapper.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-wrapper/ticket-map-wrapper.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-empty-summary/seat-selection-empty-summary.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-empty-summary/seat-selection-empty-summary.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary-item/seat-selection-summary-item.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary-item/seat-selection-summary-item.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary/seat-selection-summary.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary/seat-selection-summary.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/confirmation-order-modal/confirmation-order-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/confirmation-order-modal/confirmation-order-modal.component.html","../../../projects/tickera-angular-components/src/public-api.ts","../../../projects/tickera-angular-components/src/tickera-angular-components.ts"],"sourcesContent":["import { TranslocoLoader } from '@jsverse/transloco';\nimport { Observable, from } from 'rxjs';\n\nimport es from './es.json';\nimport en from './en.json';\n\nconst translations: Record<string, Record<string, unknown>> = {\n es,\n en,\n};\n\nexport class TickeraTranslocoLoader implements TranslocoLoader {\n getTranslation(lang: string): Observable<Record<string, unknown>> {\n const translation = translations[lang] || translations['es'];\n return from(Promise.resolve(translation));\n }\n}\n","const STORAGE_KEY = 'tickera_lang';\nconst DEFAULT_LANG = 'es';\nconst AVAILABLE_LANGS = ['es', 'en'];\n\nexport function getStoredLanguage(): string {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored && AVAILABLE_LANGS.includes(stored)) {\n return stored;\n }\n } catch {\n // localStorage not available\n }\n return '';\n}\n\nexport function setStoredLanguage(lang: string): void {\n try {\n localStorage.setItem(STORAGE_KEY, lang);\n } catch {\n // localStorage not available\n }\n}\n\nexport function getBrowserLanguage(): string {\n const nav = typeof navigator !== 'undefined' ? navigator : null;\n if (!nav) return DEFAULT_LANG;\n\n // Check navigator.language and navigator.languages\n const browserLangs = nav.languages || [nav.language];\n\n for (const lang of browserLangs) {\n if (!lang) continue;\n\n // Exact match (e.g., \"es\", \"en\")\n const shortLang = lang.split('-')[0].toLowerCase();\n if (AVAILABLE_LANGS.includes(shortLang)) {\n return shortLang;\n }\n }\n\n return DEFAULT_LANG;\n}\n\nexport function resolveLanguage(): string {\n // 1. Check localStorage first\n const stored = getStoredLanguage();\n if (stored) return stored;\n\n // 2. Detect from browser\n return getBrowserLanguage();\n}\n","import {\n InjectionToken,\n EnvironmentProviders,\n makeEnvironmentProviders,\n LOCALE_ID,\n} from '@angular/core';\nimport { provideTransloco, TranslocoConfig } from '@jsverse/transloco';\nimport { TickeraTranslocoLoader } from '../i18n/transloco-loader';\nimport { resolveLanguage } from '../i18n/language.utils';\nimport { DATE_PIPE_DEFAULT_OPTIONS } from '@angular/common';\nimport { TickeraComponentsConfig } from '../interfaces/tickera-components-config.interface';\n\nexport const TICKERA_COMPONENTS_CONFIG = new InjectionToken<TickeraComponentsConfig>(\n 'TICKERA_COMPONENTS_CONFIG',\n);\n\nexport function provideTickeraComponents(config: TickeraComponentsConfig): EnvironmentProviders {\n const defaultLang = config.defaultLang || 'es';\n const availableLangs = config.availableLangs || ['es', 'en'];\n const detectedLang = resolveLanguage();\n\n return makeEnvironmentProviders([\n { provide: TICKERA_COMPONENTS_CONFIG, useValue: config },\n { provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: { timezone: 'America/Bogota' } },\n ...provideTransloco({\n config: {\n defaultLang: detectedLang,\n availableLangs,\n reRenderOnLangChange: true,\n fallbackLang: defaultLang,\n } as TranslocoConfig,\n loader: TickeraTranslocoLoader,\n }),\n ]);\n}\n","export const ALERT_ICONS = {\n success: 'ri-check-line',\n error: 'ri-error-warning-line',\n warning: 'ri-alert-line',\n info: 'ri-info-line',\n};\n","export const ADMIN_API_ROUTES = {\n FIND_ALL: '/admins',\n CREATE: '/admins/auth/register',\n updateOne: (id: number) => `/admins/${id}`,\n deleteOne: (id: number) => `/admins/${id}`,\n};\n","export const CITY_API_ENDPOINTS = {\n findAll: '/cities',\n create: '/cities',\n findById: (id: number) => `/cities/${id}`,\n update: (id: number) => `/cities/${id}`,\n delete: (id: number) => `/cities/${id}`,\n};\n","export const COUNTRY_API_ENDPOINTS = {\n findAll: '/countries',\n create: '/countries',\n findById: (id: number) => `/countries/${id}`,\n update: (id: number) => `/countries/${id}`,\n delete: (id: number) => `/countries/${id}`,\n};\n","export const CUSTOMERS_API_ROUTES = {\n findAll: '/customers',\n create: '/customers/auth/register',\n findOne: (id: number) => `/customers/${id}`,\n update: (id: number) => `/customers/${id}`,\n delete: (id: number) => `/customers/${id}`,\n};\n","export const PERFORMANCES_API_ROUTES = {\n findAll: '/performances',\n create: '/performances',\n createBulk: '/performances/bulk',\n findOneById: (id: number) => `/performances/${id}`,\n findOneBookingData: (id: number) => `/performances/${id}/booking-data`,\n update: (id: number) => `/performances/${id}`,\n delete: (id: number) => `/performances/${id}`,\n deleteMany: '/performances/bulk',\n cancel: (id: number) => `/performances/${id}/cancel`,\n publishInventory: (id: number) => `/performances/${id}/publish-inventory`,\n reserve: (id: number) => `/performances/${id}/reserve`,\n ticketQrToken: (uuid: string) => `/performances/tickets/${uuid}/qr-token`,\n getAvailableDays: '/performances/available-days',\n publicAvailablePerformances: '/public/performances/daily',\n};\n","export const PRICE_ZONES_API_ROUTES = {\n FIND_ALL: '/price-zones',\n CREATE: '/price-zones',\n findOneById: (id: number) => `/price-zones/${id}`,\n update: (id: number) => `/price-zones/${id}`,\n delete: (id: number) => `/price-zones/${id}`,\n updateElements: (id: number) => `/price-zones/${id}/elements`,\n duplicate: (id: number) => `/price-zones/${id}/duplicate`,\n};\n","export const PRODUCT_CATEGORIES_API_ROUTES = {\n FIND_ALL: '/product-categories',\n CREATE: '/product-categories',\n findById: (id: number) => `/product-categories/${id}`,\n update: (id: number) => `/product-categories/${id}`,\n delete: (id: number) => `/product-categories/${id}`,\n};\n","export const PRODUCT_TAGS_API_ROUTES = {\n FIND_ALL: '/product-tags',\n CREATE: '/product-tags',\n findById: (id: number) => `/product-tags/${id}`,\n update: (id: number) => `/product-tags/${id}`,\n delete: (id: number) => `/product-tags/${id}`,\n};\n","export const PRODUCT_TYPES_API_ROUTES = {\n FIND_ALL: '/product-types',\n CREATE: '/product-types',\n findById: (id: number) => `/product-types/${id}`,\n update: (id: number) => `/product-types/${id}`,\n delete: (id: number) => `/product-types/${id}`,\n};\n","export const PRODUCTS_API_ROUTES = {\n FIND_ALL: '/products',\n CREATE: '/products',\n findOneById: (id: number) => `/products/${id}`,\n update: (id: number) => `/products/${id}`,\n delete: (id: number) => `/products/${id}`,\n fetchImages: (id: number) => `/products/${id}/images`,\n uploadImages: (id: number) => `/products/${id}/images`,\n deleteOneImage: (productId: number, imageId: number) =>\n `/products/${productId}/images/${imageId}`,\n};\n","export const SHOWS_API_ROUTES = {\n findAll: '/shows',\n create: '/shows',\n findOneById: (id: number) => `/shows/${id}`,\n update: (id: number) => `/shows/${id}`,\n delete: (id: number) => `/shows/${id}`,\n getImages: (id: number) => `/shows/${id}/images`,\n uploadGallery: (id: number) => `/shows/${id}/images`,\n deleteOneImage: (showId: number, imageId: number) => `/shows/${showId}/images/${imageId}`,\n publicAvailablePerformances: '/public/shows/available',\n};\n","export const STATE_API_ENDPOINTS = {\n findAll: '/states',\n create: '/states',\n findById: (id: number) => `/states/${id}`,\n update: (id: number) => `/states/${id}`,\n delete: (id: number) => `/states/${id}`,\n};\n","export const VENUES_API_ROUTES = {\n findAll: '/venues',\n create: '/venues',\n findOneById: (id: number) => '/venues/' + id,\n update: (id: number) => '/venues/' + id,\n delete: (id: number) => '/venues/' + id,\n getGallery: (id: number) => '/venues/' + id + '/images',\n uploadGallery: (id: number) => '/venues/' + id + '/images',\n deleteOneImage: (venueId: number, imageId: number) => '/venues/' + venueId + '/images/' + imageId,\n};\n","export const BUTTON_VARIANT_CLASSES: Record<string, string> = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n tertiary: 'btn-tertiary',\n success: 'btn-success',\n transparent: 'btn-transparent',\n};\n\nexport const BASE_BUTTON_CLASSES = 'btn';\n\nexport const BUTTON_SIZES_CLASSES: Record<string, string> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n};\n","export const FORM_ERROR_MESSAGES: Record<string, string> = {\n required: 'Este campo es requerido',\n minlength: 'Debe tener al menos caracteres',\n maxlength: 'Debe tener al menos caracteres',\n pattern: 'El formato no es válido',\n email: 'El formato no es válido',\n mustMatch: 'Las contraseñas no coinciden',\n matDatepickerMin: 'La fecha no puede ser anterior a la fecha mínima permitida',\n matDatepickerMax: 'La fecha no puede ser posterior a la fecha máxima permitida',\n};\n","export const BASE_INPUT_CLASSES = [\n 'block',\n 'w-full',\n 'rounded-md',\n 'px-3',\n 'py-1.5',\n 'text-base',\n 'text-gray-900',\n 'outline-1',\n '-outline-offset-1',\n 'outline-gray-300',\n 'placeholder:text-gray-400',\n 'focus:outline-2',\n 'focus:-outline-offset-2',\n 'focus:outline-indigo-600',\n 'sm:text-sm/6',\n].join(' ');\n\nexport const ERROR_INPUT_CLASSES = BASE_INPUT_CLASSES + ' outline-red-500 dark:outline-red-500';\n","import { SelectOption } from '../../interfaces';\n\nexport const DOCUMENT_TYPES_OPTIONS: SelectOption[] = [\n { value: 'CC', label: 'documentType.cc' },\n { value: 'CE', label: 'documentType.ce' },\n { value: 'NIT', label: 'documentType.nit' },\n { value: 'PP', label: 'documentType.pp' },\n { value: 'TI', label: 'documentType.ti' },\n];\n","import { SelectOption } from '../../interfaces';\n\nexport const PAYMENT_METHODS_OPTIONS: SelectOption[] = [\n { value: 'credit_card', label: 'paymentMethod.creditCard' },\n { value: 'debit_card', label: 'paymentMethod.debitCard' },\n { value: 'pse', label: 'paymentMethod.pse' },\n { value: 'cash', label: 'paymentMethod.cash' },\n { value: 'bank_transfer', label: 'paymentMethod.bankTransfer' },\n];\n","export enum FileType {\n IMAGE = 'image',\n PDF = 'pdf',\n EXCEL = 'excel',\n WORD = 'word',\n TEXT = 'text',\n DEFAULT = 'default',\n}\n","export enum CouponApplicability {\n GENERAL = 'GENERAL',\n CUSTOMER_EMAIL = 'CUSTOMER_EMAIL',\n MEMBERSHIP_TYPE = 'MEMBERSHIP_TYPE',\n SHOWS = 'SHOWS',\n PERFORMANCES = 'PERFORMANCES',\n}\n","export enum CouponDiscountType {\n PERCENTAGE = 'PERCENTAGE',\n FIXED = 'FIXED',\n}\n","export enum CouponStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n EXPIRED = 'EXPIRED',\n CONSUMED = 'CONSUMED',\n}\n","export enum CorporateBondStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n EXPIRED = 'EXPIRED',\n CONSUMED = 'CONSUMED',\n}\n","export enum PerformanceStatus {\n SCHEDULED = 'scheduled',\n OPEN = 'open',\n CLOSED = 'closed',\n CANCELLED = 'cancelled',\n COMPLETED = 'completed',\n POSTPONED = 'postponed',\n}\n","export enum PerformanceTicketStatus {\n AVAILABLE = 'available',\n RESERVED = 'reserved',\n SOLD = 'sold',\n BLOCKED = 'blocked',\n}\n","export enum RoomMapElementOrientation {\n TOP = 'top',\n RIGHT = 'right',\n BOTTOM = 'bottom',\n LEFT = 'left',\n CENTER = 'center',\n}\n","export enum RoomMapElementType {\n SEAT_BLOCK = 'seat_block',\n TABLE = 'table',\n ZONE = 'zone',\n EXIT = 'exit',\n STAGE = 'stage',\n PRODUCTION_AREA = 'production_area',\n UNAVAILABLE_SPACE = 'unavailable_space',\n STAIR = 'stair',\n HALLWAY = 'hallway',\n}\n","export enum GiftBondStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n EXPIRED = 'EXPIRED',\n CONSUMED = 'CONSUMED',\n}\n","import { PerformanceTicketStatus, RoomMapElementType } from '../enums';\n\nexport const TICKET_MAP_LAST_TICKETS_LIMIT = 10;\n\nexport const TICKET_ELEMENT_TYPES = [\n RoomMapElementType.SEAT_BLOCK,\n RoomMapElementType.TABLE,\n RoomMapElementType.ZONE,\n];\n\nexport const DEFAULT_STAGE_CONFIG: { [x: string]: any } = {\n width: 800,\n height: 600,\n draggable: true,\n scaleX: 1,\n scaleY: 1,\n x: 0,\n y: 0,\n};\n\nexport const TICKET_STATUS_COLORS: Record<PerformanceTicketStatus, string> = {\n [PerformanceTicketStatus.AVAILABLE]: '#22C55E',\n [PerformanceTicketStatus.RESERVED]: '#EAB308',\n [PerformanceTicketStatus.SOLD]: '#EF4444',\n [PerformanceTicketStatus.BLOCKED]: '#6B7280',\n};\n\nexport const TICKET_STATUS_FILLS: Record<PerformanceTicketStatus, string> = {\n [PerformanceTicketStatus.AVAILABLE]: '#DCFCE7',\n [PerformanceTicketStatus.RESERVED]: '#FEF08A',\n [PerformanceTicketStatus.SOLD]: '#FECACA',\n [PerformanceTicketStatus.BLOCKED]: '#E5E7EB',\n};\n\nexport const TICKET_STATUS_LABELS: Record<PerformanceTicketStatus, string> = {\n [PerformanceTicketStatus.AVAILABLE]: 'Disponible',\n [PerformanceTicketStatus.RESERVED]: 'Reservado',\n [PerformanceTicketStatus.SOLD]: 'Vendido',\n [PerformanceTicketStatus.BLOCKED]: 'Bloqueado',\n};\n\nexport const TICKET_MAP_GRID_SIZE = 30;\n\nexport const TICKET_MAP_TITLE_HEIGHT = 30;\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\n\nexport function drawRoundedRect(\n con: Context,\n shape: Shape,\n x: number,\n y: number,\n width: number,\n height: number,\n cornerRadius: number,\n) {\n con.beginPath();\n con.moveTo(x + cornerRadius, y);\n con.lineTo(x + width - cornerRadius, y);\n con.quadraticCurveTo(x + width, y, x + width, y + cornerRadius);\n con.lineTo(x + width, y + height - cornerRadius);\n con.quadraticCurveTo(x + width, y + height, x + width - cornerRadius, y + height);\n con.lineTo(x + cornerRadius, y + height);\n con.quadraticCurveTo(x, y + height, x, y + height - cornerRadius);\n con.lineTo(x, y + cornerRadius);\n con.quadraticCurveTo(x, y, x + cornerRadius, y);\n con.closePath();\n con.fillStrokeShape(shape);\n}\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateExitScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🚪' + (shape?.attrs?.element_name || 'Salida');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateHallwayScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🚶🏽' + (shape?.attrs?.element_name || 'Pasillo');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateProductionAreaScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🛠️' + (shape?.attrs?.element_name || 'Área de producción');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","export function tintColor(hex: string, amount: number = 0.7): string {\n const cleanHex = hex.replace('#', '');\n const r = parseInt(cleanHex.substring(0, 2), 16);\n const g = parseInt(cleanHex.substring(2, 4), 16);\n const b = parseInt(cleanHex.substring(4, 6), 16);\n\n const tintedR = Math.round(r + (255 - r) * amount);\n const tintedG = Math.round(g + (255 - g) * amount);\n const tintedB = Math.round(b + (255 - b) * amount);\n\n return `#${tintedR.toString(16).padStart(2, '0')}${tintedG.toString(16).padStart(2, '0')}${tintedB.toString(16).padStart(2, '0')}`;\n}\n","import type { Context } from 'konva/lib/Context';\n\nexport const drawChairIcon = (con: Context, cx: number, cy: number, size: number) => {\n con.beginPath();\n\n const backWidth = size * 0.7;\n const backHeight = size * 0.6;\n const backX = cx - backWidth / 2;\n const backY = cy - backHeight / 2 - size * 0.1;\n\n con.moveTo(backX + backWidth * 0.2, backY);\n con.lineTo(backX + backWidth * 0.8, backY);\n con.quadraticCurveTo(backX + backWidth, backY, backX + backWidth, backY + backHeight * 0.2);\n con.lineTo(backX + backWidth, backY + backHeight * 0.8);\n con.quadraticCurveTo(\n backX + backWidth,\n backY + backHeight,\n backX + backWidth * 0.8,\n backY + backHeight,\n );\n con.lineTo(backX + backWidth * 0.2, backY + backHeight);\n con.quadraticCurveTo(backX, backY + backHeight, backX, backY + backHeight * 0.8);\n con.lineTo(backX, backY + backHeight * 0.2);\n con.quadraticCurveTo(backX, backY, backX + backWidth * 0.2, backY);\n\n const chairSeatWidth = size * 0.8;\n const chairSeatHeight = size * 0.3;\n const seatX = cx - chairSeatWidth / 2;\n const seatY = cy + backHeight * 0.3;\n\n con.moveTo(seatX, seatY);\n con.lineTo(seatX + chairSeatWidth, seatY);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.closePath();\n\n const legWidth = size * 0.1;\n const legHeight = size * 0.2;\n\n con.moveTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight + legHeight);\n\n con.moveTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight + legHeight);\n\n con.closePath();\n};\n","import type { Context } from 'konva/lib/Context';\n\nexport const drawHappyFace = (con: Context, cx: number, cy: number, size: number) => {\n const radius = size * 0.45;\n\n con.beginPath();\n con.arc(cx, cy, radius, 0, Math.PI * 2);\n con.closePath();\n con.fillStyle = '#DCFCE7';\n con.fill();\n con.strokeStyle = '#166534';\n con.lineWidth = 2;\n con.stroke();\n\n const eyeR = radius * 0.12;\n const eyeOffX = radius * 0.3;\n const eyeOffY = radius * 0.15;\n con.beginPath();\n con.arc(cx - eyeOffX, cy - eyeOffY, eyeR, 0, Math.PI * 2);\n con.closePath();\n con.fillStyle = '#166534';\n con.fill();\n con.beginPath();\n con.arc(cx + eyeOffX, cy - eyeOffY, eyeR, 0, Math.PI * 2);\n con.closePath();\n con.fill();\n\n con.beginPath();\n con.moveTo(cx - radius * 0.35, cy + radius * 0.05);\n con.quadraticCurveTo(cx, cy + radius * 0.4, cx + radius * 0.35, cy + radius * 0.05);\n con.strokeStyle = '#166534';\n con.lineWidth = 2;\n con.stroke();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\n\nexport const drawWheelchairIcon = (\n con: Context,\n shape: Shape,\n cx: number,\n cy: number,\n size: number,\n fillColor = '#DBEAFE',\n strokeColor = '#60A5FA',\n) => {\n const reactSize = size * 0.75;\n const x = cx - size / 2 + size * 0.1;\n const y = cy - size / 2 + size * 0.1833;\n\n const origFill = shape.getAttr('fill');\n const origStroke = shape.getAttr('stroke');\n shape.setAttr('fill', fillColor);\n shape.setAttr('stroke', strokeColor);\n\n con.beginPath();\n con.rect(x, y, reactSize, reactSize);\n con.closePath();\n con.fillStrokeShape(shape);\n\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n\n con.font = `${size * 0.6}px serif`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText('♿', cx + size * 0.0233, cy + size * 0.1417);\n};\n","export const numberToLetter = (num: number): string => {\n if (num < 0) return 'A';\n let result = '';\n let n = num;\n while (n >= 0) {\n result = String.fromCharCode(65 + (n % 26)) + result;\n n = Math.floor(n / 26) - 1;\n }\n return result;\n};\n","import { RoomMapElementType } from '../../enums';\nimport { PerformanceTicket } from '../../interfaces';\n\nexport const getItemTypeIcon = (ticket: PerformanceTicket): string => {\n if ([RoomMapElementType.SEAT_BLOCK, RoomMapElementType.TABLE].includes(ticket.element_type)) {\n return ticket.is_accessible ? '♿️' : '🪑';\n }\n\n if (ticket.element_type === RoomMapElementType.ZONE) {\n return '🗺️';\n }\n\n return '🛒';\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport {\n TICKET_MAP_GRID_SIZE,\n TICKET_STATUS_COLORS,\n TICKET_STATUS_FILLS,\n} from '../../constants/ticket-map';\nimport { numberToLetter } from './number-to-letter.helper';\nimport { drawChairIcon } from './draw-chair-icon.helper';\nimport { drawWheelchairIcon } from './draw-wheel-chair-icon.helper';\nimport { drawHappyFace } from './draw-happy-face.helper';\nimport { PerformanceTicketStatus } from '../../enums';\n\nexport const generateSeatBlockTicketScene = (\n con: Context,\n shape: Shape,\n numerationConfig?: {\n start_row_letter: string;\n row_order: 'TOP_TO_BOTTOM' | 'BOTTOM_TO_TOP';\n start_column_number: number;\n column_order: 'LEFT_TO_RIGHT' | 'RIGHT_TO_LEFT';\n },\n ticketStatusMap?: Map<string, PerformanceTicketStatus>,\n) => {\n const w = shape.width();\n const h = shape.height();\n const seatSize = TICKET_MAP_GRID_SIZE;\n const chairScale = 0.8;\n\n const elementName = shape?.attrs?.element_name || 'Asientos';\n const showElementName = shape?.attrs?.show_element_name ?? true;\n const seatsData = shape?.attrs?.seats as\n Array<Array<{ is_accessible: boolean; is_non_existent: boolean } | undefined>> | undefined;\n const hasTitle = !!(elementName && showElementName);\n const chairsStartY = hasTitle ? TICKET_MAP_GRID_SIZE : 0;\n\n const cols = Math.floor(w / seatSize);\n const rows = Math.floor((h - chairsStartY) / seatSize);\n\n const config = numerationConfig || {\n start_row_letter: 'A',\n row_order: 'TOP_TO_BOTTOM' as const,\n start_column_number: 1,\n column_order: 'LEFT_TO_RIGHT' as const,\n };\n\n const startRowLetter = config?.start_row_letter?.toUpperCase() || 'A';\n const startRowNum = startRowLetter.charCodeAt(0) - 65;\n\n const origFill = shape.getAttr('fill');\n const origStroke = shape.getAttr('stroke');\n\n if (hasTitle) {\n con.save();\n\n const textFont = `bold 10px Arial`;\n con.font = textFont;\n const textWidth = con.measureText(elementName).width;\n const paddingX = 10;\n const containerHeight = 18;\n const containerWidth = textWidth + paddingX * 2;\n const containerX = (w - containerWidth) / 2;\n const containerY = (TICKET_MAP_GRID_SIZE - containerHeight) / 2;\n const lineY = TICKET_MAP_GRID_SIZE;\n\n const strokeColor = shape.getAttr('stroke') || '#999';\n\n con.beginPath();\n con.moveTo(0, lineY);\n con.lineTo(w, lineY);\n con.strokeStyle = strokeColor;\n con.lineWidth = 1;\n con.stroke();\n\n con.beginPath();\n con.moveTo(containerX + 4, containerY);\n con.lineTo(containerX + containerWidth - 4, containerY);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY,\n containerX + containerWidth,\n containerY + 4,\n );\n con.lineTo(containerX + containerWidth, containerY + containerHeight - 4);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY + containerHeight,\n containerX + containerWidth - 4,\n containerY + containerHeight,\n );\n con.lineTo(containerX + 4, containerY + containerHeight);\n con.quadraticCurveTo(\n containerX,\n containerY + containerHeight,\n containerX,\n containerY + containerHeight - 4,\n );\n con.lineTo(containerX, containerY + 4);\n con.quadraticCurveTo(containerX, containerY, containerX + 4, containerY);\n con.closePath();\n con.fillStrokeShape(shape);\n\n con.font = textFont;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(elementName, w / 2, containerY + containerHeight / 2);\n\n con.restore();\n }\n\n for (let x = 0; x < w; x += seatSize) {\n for (let y = chairsStartY; y < h; y += seatSize) {\n const colIndex = Math.floor(x / seatSize);\n const rowIndex = Math.floor((y - chairsStartY) / seatSize);\n\n let actualRowIndex = rowIndex;\n if (config.row_order === 'BOTTOM_TO_TOP') {\n actualRowIndex = rows - 1 - rowIndex;\n }\n\n let actualColIndex = colIndex;\n if (config.column_order === 'RIGHT_TO_LEFT') {\n actualColIndex = cols - 1 - colIndex;\n }\n\n const rowLetter = numberToLetter(startRowNum + actualRowIndex);\n const colNumber = Number(config.start_column_number) + Number(actualColIndex);\n const seatNumber = `${rowLetter}${colNumber}`;\n const centerX = x + seatSize / 2 + 1;\n const centerY = y + seatSize / 2 - 2;\n const size = seatSize * chairScale;\n\n const seatState = seatsData?.[rowIndex]?.[colIndex];\n if (seatState?.is_non_existent) continue;\n\n con.save();\n\n const selectedNumerations: Set<string> | undefined = shape.getAttr('selectedNumerations');\n const isSelected = selectedNumerations?.has(seatNumber);\n\n const ticketStatus = ticketStatusMap?.get(seatNumber);\n const isLocked = ticketStatus != null && ticketStatus !== PerformanceTicketStatus.AVAILABLE;\n\n if (isSelected) {\n drawHappyFace(con, x + seatSize / 2, y + seatSize / 2, size);\n } else if (isLocked && seatState?.is_accessible) {\n drawWheelchairIcon(\n con,\n shape,\n centerX,\n centerY,\n size,\n TICKET_STATUS_FILLS[ticketStatus!],\n TICKET_STATUS_COLORS[ticketStatus!],\n );\n } else if (isLocked) {\n shape.setAttr('fill', TICKET_STATUS_FILLS[ticketStatus!]);\n shape.setAttr('stroke', TICKET_STATUS_COLORS[ticketStatus!]);\n drawChairIcon(con, centerX, centerY, size);\n con.fillStrokeShape(shape);\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n con.fillStyle = '#333333';\n con.font = `${size * 0.3}px Arial`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(seatNumber, centerX, centerY - 1);\n } else if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, centerX, centerY, size);\n } else {\n drawChairIcon(con, centerX, centerY, size);\n con.fillStrokeShape(shape);\n\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n\n con.fillStyle = '#333333';\n con.font = `${size * 0.3}px Arial`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(seatNumber, centerX, centerY - 1);\n }\n\n con.restore();\n }\n }\n\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { TICKET_STATUS_COLORS, TICKET_STATUS_FILLS } from '../../constants/ticket-map';\nimport { drawHappyFace } from './draw-happy-face.helper';\nimport { drawWheelchairIcon } from './draw-wheel-chair-icon.helper';\nimport { PerformanceTicketStatus } from '../../enums';\nimport { RoomMapSeatState } from '../../interfaces';\n\nexport const generateTableTicketScene = (\n con: Context,\n shape: Shape,\n chairTicketStatuses?: PerformanceTicketStatus[],\n tableSeats?: RoomMapSeatState[][],\n) => {\n const w = shape.width();\n const h = shape.height();\n\n const fillColor = shape.fill();\n const strokeColor = shape.stroke();\n const totalCapacity: number = shape?.attrs?.total_capacity ?? 0;\n const zoneText: string = shape?.attrs?.element_name || 'Mesa';\n\n const cx = w / 2;\n const cy = h / 2;\n\n const chairRadius = Math.min(w, h) * 0.1;\n const gap = chairRadius * 0.4;\n const tableRadius = Math.min(w, h) / 2 - chairRadius * 2 - gap;\n\n con.save();\n\n if (totalCapacity > 0) {\n const orbitRadius = tableRadius + gap + chairRadius;\n const selectedNumerations: Set<string> | undefined = shape.getAttr('selectedNumerations');\n\n for (let i = 0; i < totalCapacity; i++) {\n const seatState = tableSeats?.[0]?.[i];\n if (seatState?.is_non_existent) {\n continue;\n }\n\n const seatKey = `S${i + 1}`;\n const isSelected = selectedNumerations?.has(seatKey);\n\n const angle = (2 * Math.PI * i) / totalCapacity - Math.PI / 2;\n const scx = cx + orbitRadius * Math.cos(angle);\n const scy = cy + orbitRadius * Math.sin(angle);\n\n const chairStatus = chairTicketStatuses?.[i];\n const isLocked = chairStatus != null && chairStatus !== PerformanceTicketStatus.AVAILABLE;\n\n if (isSelected) {\n drawHappyFace(con, scx, scy, chairRadius * 2);\n } else if (isLocked && seatState?.is_accessible) {\n drawWheelchairIcon(\n con,\n shape,\n scx,\n scy,\n chairRadius * 2,\n TICKET_STATUS_FILLS[chairStatus!],\n TICKET_STATUS_COLORS[chairStatus!],\n );\n } else if (isLocked) {\n const origFill = shape.getAttr('fill');\n const origStroke = shape.getAttr('stroke');\n shape.setAttr('fill', TICKET_STATUS_FILLS[PerformanceTicketStatus.BLOCKED]);\n shape.setAttr('stroke', TICKET_STATUS_COLORS[PerformanceTicketStatus.BLOCKED]);\n con.beginPath();\n con.arc(scx, scy, chairRadius, 0, Math.PI * 2);\n con.closePath();\n con.lineWidth = Math.max(1, chairRadius * 0.15);\n con.stroke();\n con.fillStrokeShape(shape);\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n } else if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, scx, scy, chairRadius * 2);\n } else {\n con.beginPath();\n con.arc(scx, scy, chairRadius, 0, Math.PI * 2);\n con.closePath();\n\n con.lineWidth = Math.max(1, chairRadius * 0.15);\n con.stroke();\n con.fillStrokeShape(shape);\n }\n }\n }\n\n con.beginPath();\n con.arc(cx, cy, tableRadius, 0, Math.PI * 2);\n con.closePath();\n con.fillStrokeShape(shape);\n\n const fontSize = tableRadius * 0.45;\n con.font = `${fontSize}px Arial`;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(zoneText, cx, cy);\n\n con.restore();\n};\n","import { TICKET_MAP_GRID_SIZE, TICKET_MAP_TITLE_HEIGHT } from '../../constants';\nimport { KONVA_SHAPE_MAPPINGS } from '../../constants/konva-shapes';\nimport { PerformanceTicketStatus, RoomMapElementType } from '../../enums';\nimport {\n ElementRenderData,\n NumerationConfig,\n PerformanceTicket,\n RoomMapElementTemplate,\n TicketMapSeatPosition,\n TicketMapTableChairPosition,\n} from '../../interfaces';\nimport { tintColor } from './color.helper';\nimport { numberToLetter } from './number-to-letter.helper';\nimport { generateSeatBlockTicketScene } from './seat-block-ticket-scene.helper';\nimport { generateTableTicketScene } from './table-ticket-scene.helper';\n\nfunction buildSeatLabel(\n rowIndex: number,\n colIndex: number,\n rows: number,\n cols: number,\n config: NumerationConfig,\n): string {\n let actualRowIndex = rowIndex;\n if (config.row_order === 'BOTTOM_TO_TOP') {\n actualRowIndex = rows - 1 - rowIndex;\n }\n\n let actualColIndex = colIndex;\n if (config.column_order === 'RIGHT_TO_LEFT') {\n actualColIndex = cols - 1 - colIndex;\n }\n\n const startRowNum = (config.start_row_letter?.toUpperCase() || 'A').charCodeAt(0) - 65;\n const rowLetter = numberToLetter(startRowNum + actualRowIndex);\n const colNumber = Number(config.start_column_number) + Number(actualColIndex);\n return `${rowLetter}${colNumber}`;\n}\n\nfunction buildSeatPositions(element: RoomMapElementTemplate): TicketMapSeatPosition[][] {\n const config = element.numeration_config || {\n start_row_letter: 'A',\n row_order: 'TOP_TO_BOTTOM' as const,\n start_column_number: 1,\n column_order: 'LEFT_TO_RIGHT' as const,\n };\n\n const w = element.konva_shape?.config?.width || 300;\n const h = element.konva_shape?.config?.height || 300;\n const hasTitle = !!(element.element_name && element.show_element_name !== false);\n const chairsStartY = hasTitle ? TICKET_MAP_TITLE_HEIGHT : 0;\n const cols = Math.floor(w / TICKET_MAP_GRID_SIZE);\n const rows = Math.floor((h - chairsStartY) / TICKET_MAP_GRID_SIZE);\n\n const positions: TicketMapSeatPosition[][] = [];\n\n for (let rowIndex = 0; rowIndex < rows; rowIndex++) {\n const row: TicketMapSeatPosition[] = [];\n for (let colIndex = 0; colIndex < cols; colIndex++) {\n const seatLabel = buildSeatLabel(rowIndex, colIndex, rows, cols, config);\n\n const seatState = element.seats?.[rowIndex]?.[colIndex];\n if (seatState?.is_non_existent) {\n row.push({ rowIndex, colIndex, seatLabel });\n continue;\n }\n\n row.push({ rowIndex, colIndex, seatLabel });\n }\n positions.push(row);\n }\n\n return positions;\n}\n\nfunction buildChairPositions(element: RoomMapElementTemplate): TicketMapTableChairPosition[] {\n const w = element.konva_shape?.config?.width || 150;\n const h = element.konva_shape?.config?.height || 150;\n const totalCapacity = element.total_capacity || 0;\n\n const chairRadius = Math.min(w, h) * 0.1;\n const gap = chairRadius * 0.4;\n const tableRadius = Math.min(w, h) / 2 - chairRadius * 2 - gap;\n const cx = w / 2;\n const cy = h / 2;\n\n const positions: TicketMapTableChairPosition[] = [];\n\n if (totalCapacity > 0) {\n const orbitRadius = tableRadius + gap + chairRadius;\n\n for (let i = 0; i < totalCapacity; i++) {\n const angle = (2 * Math.PI * i) / totalCapacity - Math.PI / 2;\n const scx = cx + orbitRadius * Math.cos(angle);\n const scy = cy + orbitRadius * Math.sin(angle);\n\n positions.push({ index: i, angle, x: scx, y: scy });\n }\n }\n\n return positions;\n}\n\nexport function processElementsToRenderData(\n elements: RoomMapElementTemplate[],\n tickets: PerformanceTicket[],\n priceZones?: { id: number; color: string }[],\n): ElementRenderData[] {\n const ticketByElement = new Map<number, PerformanceTicket[]>();\n for (const ticket of tickets) {\n const existing = ticketByElement.get(ticket.room_map_element_id) || [];\n existing.push(ticket);\n ticketByElement.set(ticket.room_map_element_id, existing);\n }\n\n const result: ElementRenderData[] = [];\n\n for (const element of elements) {\n if (element.id == null) continue;\n\n const elementTickets = ticketByElement.get(element.id) || [];\n const elementBaseConfig = KONVA_SHAPE_MAPPINGS[element.type];\n\n let overrideFill: string | undefined;\n let overrideStroke: string | undefined;\n\n if (element.price_zone_id != null && priceZones) {\n const priceZone = priceZones.find((pz) => pz.id === element.price_zone_id);\n if (priceZone?.color) {\n overrideStroke = priceZone.color;\n overrideFill = tintColor(priceZone.color);\n }\n }\n\n let shapeConfig: Record<string, any> = {\n ...element?.konva_shape?.config,\n draggable: false,\n ...(overrideFill ? { fill: overrideFill } : {}),\n ...(overrideStroke ? { stroke: overrideStroke } : {}),\n element_name: element.element_name || element.name,\n show_element_name: element.show_element_name ?? true,\n total_capacity: element.total_capacity,\n };\n\n const ticketByNumeration = new Map<string, PerformanceTicket>();\n for (const ticket of elementTickets) {\n if (ticket.seat_numeration != null) {\n ticketByNumeration.set(ticket.seat_numeration, ticket);\n }\n }\n\n let seatPositions: TicketMapSeatPosition[][] | undefined;\n let chairPositions: TicketMapTableChairPosition[] | undefined;\n\n if (element.type === RoomMapElementType.SEAT_BLOCK) {\n seatPositions = buildSeatPositions(element);\n\n const ticketStatusMap = new Map<string, PerformanceTicketStatus>();\n for (const [numeration, ticket] of ticketByNumeration) {\n ticketStatusMap.set(numeration, ticket.status);\n }\n\n shapeConfig = {\n ...shapeConfig,\n name: String(element.id),\n sceneFunc: (con: any, shape: any) => {\n generateSeatBlockTicketScene(con, shape, element.numeration_config, ticketStatusMap);\n },\n seats: element.seats,\n };\n }\n\n if (element.type === RoomMapElementType.TABLE) {\n chairPositions = buildChairPositions(element);\n const chairStatuses: PerformanceTicketStatus[] = [];\n\n for (let i = 0; i < (element.total_capacity || 0); i++) {\n const key = `S${i + 1}`;\n const ticket = ticketByNumeration.get(key);\n chairStatuses.push(ticket?.status ?? PerformanceTicketStatus.AVAILABLE);\n }\n\n shapeConfig = {\n ...shapeConfig,\n name: String(element.id),\n sceneFunc: (con: any, shape: any) => {\n generateTableTicketScene(con, shape, chairStatuses, element.seats);\n },\n seats: element.seats,\n };\n }\n\n if (![RoomMapElementType.SEAT_BLOCK, RoomMapElementType.TABLE].includes(element.type)) {\n const defaultSceneFunc = elementBaseConfig?.config?.sceneFunc;\n if (defaultSceneFunc && !shapeConfig['sceneFunc']) {\n shapeConfig['sceneFunc'] = defaultSceneFunc;\n }\n }\n\n let elementName = element.name ?? '';\n if (!!element.element_name) {\n elementName += `: ${element.element_name}`;\n }\n\n result.push({\n elementId: element.id,\n hallFloorId: element.hall_floor_id ?? null,\n type: element.type,\n shapeConfig,\n tickets: elementTickets,\n ticketByNumeration,\n elementName,\n seatPositions,\n chairPositions,\n zoneCapacity: element.total_capacity,\n });\n }\n\n return result;\n}\n\nexport function findTicketAtPosition(\n renderData: ElementRenderData,\n relX: number,\n relY: number,\n): PerformanceTicket | null {\n if (renderData.type === RoomMapElementType.SEAT_BLOCK && renderData.seatPositions) {\n const config = renderData.shapeConfig;\n const w = config['width'] || 300;\n const hasTitle = !!(renderData.elementName && config['show_element_name'] !== false);\n const chairsStartY = hasTitle ? TICKET_MAP_TITLE_HEIGHT : 0;\n\n const col = Math.floor(relX / TICKET_MAP_GRID_SIZE);\n const row = Math.floor((relY - chairsStartY) / TICKET_MAP_GRID_SIZE);\n\n if (\n col < 0 ||\n row < 0 ||\n row >= renderData.seatPositions.length ||\n col >= (renderData.seatPositions[0]?.length || 0)\n ) {\n return null;\n }\n\n const seat = renderData.seatPositions[row]?.[col];\n if (!seat) return null;\n\n const seatState = (renderData.shapeConfig['seats'] as any)?.[row]?.[col];\n if (seatState?.is_non_existent) return null;\n\n return renderData.ticketByNumeration.get(seat.seatLabel) || null;\n }\n\n if (renderData.type === RoomMapElementType.TABLE && renderData.chairPositions) {\n for (const chair of renderData.chairPositions) {\n const seatState = (renderData.shapeConfig['seats'] as any)?.[0]?.[chair.index];\n if (seatState?.is_non_existent) continue;\n\n const dx = relX - chair.x;\n const dy = relY - chair.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n const w = renderData.shapeConfig['width'] || 150;\n const h = renderData.shapeConfig['height'] || 150;\n const chairRadius = Math.min(w, h) * 0.1;\n\n if (distance <= chairRadius + 5) {\n const key = `S${chair.index + 1}`;\n return renderData.ticketByNumeration.get(key) || null;\n }\n }\n return null;\n }\n\n if (renderData.type === RoomMapElementType.ZONE) {\n for (const ticket of renderData.ticketByNumeration.values()) {\n return ticket;\n }\n return renderData.tickets[0] || null;\n }\n\n return null;\n}\n\nexport function findElementAtPosition(\n renderDataList: ElementRenderData[],\n stageX: number,\n stageY: number,\n): { element: ElementRenderData; relX: number; relY: number } | null {\n for (let i = renderDataList.length - 1; i >= 0; i--) {\n const el = renderDataList[i];\n const cfg = el.shapeConfig;\n const ex = cfg['x'] || 0;\n const ey = cfg['y'] || 0;\n const ew = cfg['width'] || 0;\n const eh = cfg['height'] || 0;\n const rotation = cfg['rotation'] || 0;\n\n if (rotation) {\n const rad = rotation * (Math.PI / 180);\n const cos = Math.cos(-rad);\n const sin = Math.sin(-rad);\n const dx = stageX - ex;\n const dy = stageY - ey;\n const localX = dx * cos - dy * sin;\n const localY = dx * sin + dy * cos;\n\n if (localX >= 0 && localX <= ew && localY >= 0 && localY <= eh) {\n return { element: el, relX: localX, relY: localY };\n }\n } else {\n if (stageX >= ex && stageX <= ex + ew && stageY >= ey && stageY <= ey + eh) {\n return { element: el, relX: stageX - ex, relY: stageY - ey };\n }\n }\n }\n return null;\n}\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { TICKET_MAP_GRID_SIZE } from '../../constants';\nimport { RoomMapSeatState } from '../../interfaces';\nimport { drawWheelchairIcon } from '../ticker-map';\n\n// Helper function to convert number to multi-letter label (A, B, ..., Z, AA, AB, ...)\nconst numberToLetter = (num: number): string => {\n if (num < 0) return 'A';\n let result = '';\n let n = num;\n while (n >= 0) {\n result = String.fromCharCode(65 + (n % 26)) + result;\n n = Math.floor(n / 26) - 1;\n }\n return result;\n};\n\nconst drawChairIcon = (con: Context, cx: number, cy: number, size: number) => {\n con.beginPath();\n\n const backWidth = size * 0.7;\n const backHeight = size * 0.6;\n const backX = cx - backWidth / 2;\n const backY = cy - backHeight / 2 - size * 0.1;\n\n con.moveTo(backX + backWidth * 0.2, backY);\n con.lineTo(backX + backWidth * 0.8, backY);\n con.quadraticCurveTo(backX + backWidth, backY, backX + backWidth, backY + backHeight * 0.2);\n con.lineTo(backX + backWidth, backY + backHeight * 0.8);\n con.quadraticCurveTo(\n backX + backWidth,\n backY + backHeight,\n backX + backWidth * 0.8,\n backY + backHeight,\n );\n con.lineTo(backX + backWidth * 0.2, backY + backHeight);\n con.quadraticCurveTo(backX, backY + backHeight, backX, backY + backHeight * 0.8);\n con.lineTo(backX, backY + backHeight * 0.2);\n con.quadraticCurveTo(backX, backY, backX + backWidth * 0.2, backY);\n\n const chairSeatWidth = size * 0.8;\n const chairSeatHeight = size * 0.3;\n const seatX = cx - chairSeatWidth / 2;\n const seatY = cy + backHeight * 0.3;\n\n con.moveTo(seatX, seatY);\n con.lineTo(seatX + chairSeatWidth, seatY);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.closePath();\n\n const legWidth = size * 0.1;\n const legHeight = size * 0.2;\n\n con.moveTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight + legHeight);\n\n con.moveTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight + legHeight);\n\n con.closePath();\n};\n\nexport const generateSeatBlockScene = (\n con: Context,\n shape: Shape,\n numerationConfig?: {\n start_row_letter: string;\n row_order: 'TOP_TO_BOTTOM' | 'BOTTOM_TO_TOP';\n start_column_number: number;\n column_order: 'LEFT_TO_RIGHT' | 'RIGHT_TO_LEFT';\n },\n) => {\n const w = shape.width();\n const h = shape.height();\n const seatSize = TICKET_MAP_GRID_SIZE;\n const chairScale = 0.8;\n\n const elementName = shape?.attrs?.element_name || 'Asientos';\n const showElementName = shape?.attrs?.show_element_name ?? true;\n const seatsData = shape?.attrs?.seats as RoomMapSeatState[][] | undefined;\n const hasTitle = !!(elementName && showElementName);\n const titleHeight = hasTitle ? TICKET_MAP_GRID_SIZE : 0;\n const chairsStartY = titleHeight;\n\n const cols = Math.floor(w / seatSize);\n const rows = Math.floor((h - chairsStartY) / seatSize);\n\n const config = numerationConfig || {\n start_row_letter: 'A',\n row_order: 'TOP_TO_BOTTOM',\n start_column_number: 1,\n column_order: 'LEFT_TO_RIGHT',\n };\n\n const startRowLetter = config?.start_row_letter?.toUpperCase() || 'A';\n const startRowNum = startRowLetter.charCodeAt(0) - 65;\n\n if (hasTitle) {\n con.save();\n\n const textFont = `bold 10px Arial`;\n con.font = textFont;\n const textWidth = con.measureText(elementName).width;\n const paddingX = 10;\n const containerHeight = 18;\n const containerWidth = textWidth + paddingX * 2;\n const containerX = (w - containerWidth) / 2;\n const containerY = (titleHeight - containerHeight) / 2;\n const borderRadius = 4;\n const lineY = titleHeight;\n\n const strokeColor = shape.getAttr('stroke') || '#999';\n\n con.beginPath();\n con.moveTo(0, lineY);\n con.lineTo(w, lineY);\n con.strokeStyle = strokeColor;\n con.lineWidth = 1;\n con.stroke();\n\n con.beginPath();\n con.moveTo(containerX + borderRadius, containerY);\n con.lineTo(containerX + containerWidth - borderRadius, containerY);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY,\n containerX + containerWidth,\n containerY + borderRadius,\n );\n con.lineTo(containerX + containerWidth, containerY + containerHeight - borderRadius);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY + containerHeight,\n containerX + containerWidth - borderRadius,\n containerY + containerHeight,\n );\n con.lineTo(containerX + borderRadius, containerY + containerHeight);\n con.quadraticCurveTo(\n containerX,\n containerY + containerHeight,\n containerX,\n containerY + containerHeight - borderRadius,\n );\n con.lineTo(containerX, containerY + borderRadius);\n con.quadraticCurveTo(containerX, containerY, containerX + borderRadius, containerY);\n con.closePath();\n con.fillStrokeShape(shape);\n\n con.font = textFont;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(elementName, w / 2, containerY + containerHeight / 2);\n\n con.restore();\n }\n\n for (let x = 0; x < w; x += seatSize) {\n for (let y = chairsStartY; y < h; y += seatSize) {\n const colIndex = Math.floor(x / seatSize);\n const rowIndex = Math.floor((y - chairsStartY) / seatSize);\n\n let actualRowIndex = rowIndex;\n if (config.row_order === 'BOTTOM_TO_TOP') {\n actualRowIndex = rows - 1 - rowIndex;\n }\n\n let actualColIndex = colIndex;\n if (config.column_order === 'RIGHT_TO_LEFT') {\n actualColIndex = cols - 1 - colIndex;\n }\n\n const rowLetter = numberToLetter(startRowNum + actualRowIndex);\n const colNumber = Number(config.start_column_number) + Number(actualColIndex);\n const seatNumber = `${rowLetter}${colNumber}`;\n const centerX = x + seatSize / 2 + 1;\n const centerY = y + seatSize / 2 - 2;\n const size = seatSize * chairScale;\n\n // Check seat state\n const seatState = seatsData?.[rowIndex]?.[colIndex];\n\n // Skip non-existent seats\n if (seatState?.is_non_existent) {\n continue;\n }\n\n con.save();\n\n if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, centerX, centerY, size);\n } else {\n drawChairIcon(con, centerX, centerY, size);\n con.fillStrokeShape(shape);\n\n // Draw seat number\n con.fillStyle = '#333333';\n con.font = `${size * 0.3}px Arial`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(seatNumber, centerX, centerY - 1);\n }\n\n con.restore();\n }\n }\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { TICKET_MAP_GRID_SIZE } from '../../constants';\n\nexport const generateStageScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n // Stage background (rectangle with rounded corners)\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n con.beginPath();\n con.moveTo(exitX + cornerRadius, exitY);\n con.lineTo(exitX + exitWidth - cornerRadius, exitY);\n con.quadraticCurveTo(exitX + exitWidth, exitY, exitX + exitWidth, exitY + cornerRadius);\n con.lineTo(exitX + exitWidth, exitY + exitHeight);\n con.lineTo(exitX, exitY + exitHeight);\n con.lineTo(exitX, exitY + cornerRadius);\n con.quadraticCurveTo(exitX, exitY, exitX + cornerRadius, exitY);\n con.closePath();\n con.fillStrokeShape(shape);\n\n // Stage text\n const centerX = w / 2;\n const centerY = h / 2;\n con.font = `12px Arial`;\n con.fillStyle = shape.getAttr('stroke') as string;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n\n const stageText = shape?.attrs?.element_name || 'Escenario';\n const dotRadius = 2.5;\n const dotGap = 10;\n const textWidth = con.measureText(stageText).width;\n\n // Dot before text\n con.beginPath();\n con.arc(centerX - textWidth / 2 - dotGap, centerY, dotRadius, 0, Math.PI * 2);\n con.fillStyle = shape.getAttr('stroke') as string;\n con.fill();\n\n // Text\n con.fillText(stageText, centerX, centerY);\n\n // Dot after text\n con.beginPath();\n con.arc(centerX + textWidth / 2 + dotGap, centerY, dotRadius, 0, Math.PI * 2);\n con.fillStyle = shape.getAttr('stroke') as string;\n con.fill();\n\n // Footer below the element: line and \"▼ Vista del público\"\n const lineColor = '#b0b0b0';\n const footerCenterY = h + TICKET_MAP_GRID_SIZE / 2;\n\n con.beginPath();\n con.moveTo(0, footerCenterY);\n con.lineTo(w, footerCenterY);\n con.strokeStyle = lineColor;\n con.lineWidth = 1;\n con.stroke();\n\n const labelText = '▼ Vista del público';\n const textFont = `bold 10px Arial`;\n con.font = textFont;\n const labelWidth = con.measureText(labelText).width;\n const paddingX = 10;\n const containerHeight = 18;\n const containerWidth = labelWidth + paddingX * 2;\n const containerX = (w - containerWidth) / 2;\n const containerY = footerCenterY - containerHeight / 2;\n const borderRadius = 4;\n\n con.beginPath();\n con.moveTo(containerX + borderRadius, containerY);\n con.lineTo(containerX + containerWidth - borderRadius, containerY);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY,\n containerX + containerWidth,\n containerY + borderRadius,\n );\n con.lineTo(containerX + containerWidth, containerY + containerHeight - borderRadius);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY + containerHeight,\n containerX + containerWidth - borderRadius,\n containerY + containerHeight,\n );\n con.lineTo(containerX + borderRadius, containerY + containerHeight);\n con.quadraticCurveTo(\n containerX,\n containerY + containerHeight,\n containerX,\n containerY + containerHeight - borderRadius,\n );\n con.lineTo(containerX, containerY + borderRadius);\n con.quadraticCurveTo(containerX, containerY, containerX + borderRadius, containerY);\n con.closePath();\n con.fillStyle = '#ededed';\n con.fill();\n con.strokeStyle = lineColor;\n con.lineWidth = 1;\n con.stroke();\n\n con.font = textFont;\n con.fillStyle = lineColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(labelText, w / 2, footerCenterY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateStairScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🪜' + (shape?.attrs?.element_name || 'Escalera');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { RoomMapSeatState } from '../../interfaces';\nimport { drawWheelchairIcon } from '../ticker-map';\n\nexport const generateTableScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n\n const fillColor = shape.fill();\n const strokeColor = shape.stroke();\n const totalCapacity: number = shape?.attrs?.total_capacity ?? 0;\n const zoneText: string = shape?.attrs?.element_name || 'Mesa';\n const seatsData = shape?.attrs?.seats as RoomMapSeatState[][] | undefined;\n\n const cx = w / 2;\n const cy = h / 2;\n\n // Radio de la mesa: el más pequeño entre ancho y alto, con un poco de margen\n // para dejar espacio a las sillas alrededor\n const chairRadius = Math.min(w, h) * 0.1;\n const gap = chairRadius * 0.4; // espacio entre mesa y sillas\n const tableRadius = Math.min(w, h) / 2 - chairRadius * 2 - gap;\n\n con.save();\n\n // ── Sillas (se dibujan primero para quedar detrás) ──────────────────────────\n if (totalCapacity > 0) {\n const orbitRadius = tableRadius + gap + chairRadius;\n\n for (let i = 0; i < totalCapacity; i++) {\n const seatState = seatsData?.[0]?.[i];\n if (seatState?.is_non_existent) {\n continue;\n }\n\n const angle = (2 * Math.PI * i) / totalCapacity - Math.PI / 2;\n const scx = cx + orbitRadius * Math.cos(angle);\n const scy = cy + orbitRadius * Math.sin(angle);\n\n if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, scx, scy, chairRadius * 2);\n continue;\n }\n\n con.beginPath();\n con.arc(scx, scy, chairRadius, 0, Math.PI * 2);\n con.closePath();\n\n // Color de relleno de las sillas = stroke del shape\n con.fillStyle = strokeColor;\n con.fill();\n\n // Borde de las sillas = fill del shape\n con.strokeStyle = fillColor;\n con.lineWidth = Math.max(1, chairRadius * 0.15);\n con.stroke();\n }\n }\n\n // ── Mesa (círculo central) ──────────────────────────────────────────────────\n con.beginPath();\n con.arc(cx, cy, tableRadius, 0, Math.PI * 2);\n con.closePath();\n con.fillStrokeShape(shape); // usa fill y stroke propios del shape de Konva\n\n // ── Texto centrado ──────────────────────────────────────────────────────────\n const fontSize = tableRadius * 0.45;\n con.font = `${fontSize}px Arial`;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(zoneText, cx, cy);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateUnavailableSpaceScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🚫 ' + (shape?.attrs?.element_name || 'No disponible');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateZoneScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const zoneX = padding;\n const zoneY = padding;\n const zoneWidth = w - padding * 2;\n const zoneHeight = h - padding * 2;\n const cornerRadius = Math.min(zoneWidth, zoneHeight) * 0.05;\n\n drawRoundedRect(con, shape, zoneX, zoneY, zoneWidth, zoneHeight, cornerRadius);\n\n // Zone text - check if parent has element_name, otherwise use \"Zona\"\n con.font = `11px Arial`;\n con.fillStyle = shape.getAttr('stroke') as string;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const zoneText = shape?.attrs?.element_name || '';\n con.fillText(zoneText, centerX, centerY);\n\n con.restore();\n};\n","import { RoomMapElementType } from '../enums';\nimport {\n generateExitScene,\n generateHallwayScene,\n generateProductionAreaScene,\n generateSeatBlockScene,\n generateStageScene,\n generateStairScene,\n generateTableScene,\n generateUnavailableSpaceScene,\n generateZoneScene,\n KonvaShapeConfig,\n} from '../helpers/scene-generators';\nimport { TICKET_MAP_GRID_SIZE } from './ticket-map';\n\nexport const KONVA_SHAPE_MAPPINGS: Record<RoomMapElementType, KonvaShapeConfig> = {\n [RoomMapElementType.STAGE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 10,\n height: TICKET_MAP_GRID_SIZE * 2,\n fill: '#9C27B0',\n stroke: '#731d82',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateStageScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.SEAT_BLOCK]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 5,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#ffffff',\n stroke: '#909090',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateSeatBlockScene,\n },\n layer: 'elements',\n },\n\n [RoomMapElementType.TABLE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE * 2,\n fill: '#ffffff',\n stroke: '#909090',\n strokeWidth: 2,\n cornerRadius: 5,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateTableScene,\n },\n layer: 'elements',\n },\n\n [RoomMapElementType.ZONE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 10,\n height: TICKET_MAP_GRID_SIZE * 3,\n fill: '#ffffff',\n stroke: '#909090',\n strokeWidth: 1,\n cornerRadius: 2,\n draggable: true,\n opacity: 1,\n perfectDrawEnabled: false,\n sceneFunc: generateZoneScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.EXIT]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateExitScene,\n },\n layer: 'foreground',\n },\n\n [RoomMapElementType.PRODUCTION_AREA]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 4,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateProductionAreaScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.UNAVAILABLE_SPACE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 4,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateUnavailableSpaceScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.STAIR]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateStairScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.HALLWAY]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateHallwayScene,\n },\n layer: 'background',\n },\n};\n","import { ShowType } from '../../types';\n\nexport const SHOW_TYPE_COLORS: Record<ShowType, { bg: string; text: string }> = {\n PLAY: { bg: '#f5f3ff', text: '#5b21b6' }, // violet-50 / violet-800\n MUSICAL: { bg: '#fef9c3', text: '#a16207' }, // yellow-100 / yellow-700\n CONCERT: { bg: '#dbeafe', text: '#1e40af' }, // blue-100 / blue-800\n DANCE: { bg: '#d1fae5', text: '#065f46' }, // emerald-100 / emerald-800\n OPERA: { bg: '#fee2e2', text: '#991b1b' }, // red-100 / red-800\n STAND_UP_COMEDY: { bg: '#fef3c7', text: '#92400e' }, // amber-100 / amber-800\n SPORT: { bg: '#cbfec3', text: '#07a19c' }, // yellow-100 / yellow-700\n OTHER: { bg: '#f5f5f5', text: '#262626' }, // neutral-100 / neutral-800\n DEFAULT: { bg: '#f3f4f6', text: '#374151' }, // gray-100 / gray-700\n};\n","export enum OrderItemType {\n TICKET = 'TICKET',\n PRODUCT = 'PRODUCT',\n}\n","export enum OrderStatus {\n ON_HOLD = 'on-hold',\n PENDING_PAYMENT = 'pending-payment',\n PROCESSING = 'processing',\n COMPLETED = 'completed',\n FAILED = 'failed',\n CANCELLED = 'cancelled',\n REFUNDED = 'refunded',\n}\n","export enum ShowType {\n PLAY = 'PLAY',\n CONCERT = 'CONCERT',\n STAND_UP_COMEDY = 'STAND_UP_COMEDY',\n OPERA = 'OPERA',\n MUSICAL = 'MUSICAL',\n DANCE = 'DANCE',\n SPORT = 'SPORT',\n OTHER = 'OTHER',\n DEFAULT = 'DEFAULT',\n}\n","export enum SelectedDiscountCardType {\n COUPON = 'COUPON',\n CORPORATE_BOND = 'CORPORATE_BOND',\n GIFT_BOND = 'GIFT_BOND',\n}\n","import { Customer } from '../interfaces/customers/customer.interface';\n\nexport const getCustomerFullname = (customer: Customer) => {\n return `${customer.first_name || ''} ${customer.last_name || ''}`.trim();\n};\n","export function parseJsonToFormDataAdvanced(imageGallery: any[]): FormData {\n const formData = new FormData();\n\n if (!Array.isArray(imageGallery)) {\n throw new Error('imageGallery debe ser un array');\n }\n\n if (imageGallery.length === 0) {\n throw new Error('No hay imágenes para procesar');\n }\n\n if (imageGallery.length > 10) {\n throw new Error('El backend acepta máximo 10 archivos por petición');\n }\n\n const processedFiles: any = [];\n\n imageGallery.forEach((image, index) => {\n try {\n if (!image.name) {\n throw new Error(`La imagen ${index + 1} no tiene nombre`);\n }\n\n if (!image.type || !image.type.startsWith('image/')) {\n throw new Error(`La imagen ${index + 1} no tiene un tipo MIME válido`);\n }\n\n if (!image.preview) {\n throw new Error(`La imagen ${index + 1} no tiene datos de preview`);\n }\n\n if (!image.preview.includes('data:image/') || !image.preview.includes('base64,')) {\n throw new Error(`La imagen ${index + 1} no tiene un formato base64 válido`);\n }\n\n const base64Data = image.preview.split(',')[1];\n const byteCharacters = atob(base64Data);\n const byteNumbers = new Array(byteCharacters.length);\n\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: image.type });\n\n const file = new File([blob], image.name, {\n type: image.type,\n lastModified: Date.now(),\n });\n\n if (file.size === 0) {\n throw new Error(`El archivo ${image.name} está vacío`);\n }\n\n formData.append('files', file);\n processedFiles.push({\n name: image.name,\n size: file.size,\n type: file.type,\n });\n } catch (error: any) {\n console.error(`Error procesando imagen ${index + 1}:`, error);\n throw new Error(\n `Error procesando ${image.name || 'imagen ' + (index + 1)}: ${error?.message}`,\n );\n }\n });\n\n return formData;\n}\n","import { ShowImage } from '../interfaces/shows/show-image.interface';\nimport { VenueImage } from '../interfaces/venues/venue-image.interface';\nimport { UploadedFile } from '../interfaces/uploaded-file.interface';\n\nexport const transformImageToFile = (image: ShowImage | VenueImage): UploadedFile => {\n return {\n preview: image.full_url,\n name: image.original_name,\n size: image.size,\n type: image.mime_type,\n extension: image.extension,\n } as UploadedFile;\n};\n","import { CitiesResponse } from '../interfaces/cities/cities-response.interface';\n\nexport const formatCitiesResponseToSelect = (res: CitiesResponse) => {\n if (!res.data.cities || res.data.cities.length < 1) {\n return [];\n }\n\n return res.data.cities?.map(({ id, name, search_text }) => ({\n value: id,\n label: search_text ?? name,\n }));\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn, FormGroup } from '@angular/forms';\n\nexport function MinTodayValidator(controlName: string): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const control = group.get(controlName);\n\n if (!control || !control.value) {\n return null;\n }\n\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n let selectedDate: Date;\n\n if (control.value instanceof Date) {\n selectedDate = new Date(control.value);\n } else if (typeof control.value === 'string') {\n const [year, month, day] = control.value.split('-').map(Number);\n selectedDate = new Date(Date.UTC(year, month - 1, day));\n } else {\n return null;\n }\n\n selectedDate.setUTCHours(0, 0, 0, 0);\n\n if (selectedDate < today) {\n control.setErrors({ minToday: true });\n return { minToday: true };\n } else {\n const currentErrors = control.errors;\n if (currentErrors) {\n delete currentErrors['minToday'];\n control.setErrors(Object.keys(currentErrors).length > 0 ? currentErrors : null);\n }\n return null;\n }\n };\n}\n\nexport function EndDateGreaterThanStartValidator(\n startDateControlName: string,\n endDateControlName: string,\n): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const startDateControl = group.get(startDateControlName);\n const endDateControl = group.get(endDateControlName);\n\n if (!startDateControl || !endDateControl || !startDateControl.value || !endDateControl.value) {\n return null;\n }\n\n let startDate: Date;\n let endDate: Date;\n\n if (startDateControl.value instanceof Date) {\n startDate = new Date(startDateControl.value);\n } else if (typeof startDateControl.value === 'string') {\n const [startYear, startMonth, startDay] = startDateControl.value.split('-').map(Number);\n startDate = new Date(Date.UTC(startYear, startMonth - 1, startDay));\n } else {\n return null;\n }\n\n if (endDateControl.value instanceof Date) {\n endDate = new Date(endDateControl.value);\n } else if (typeof endDateControl.value === 'string') {\n const [endYear, endMonth, endDay] = endDateControl.value.split('-').map(Number);\n endDate = new Date(Date.UTC(endYear, endMonth - 1, endDay));\n } else {\n return null;\n }\n\n startDate.setUTCHours(0, 0, 0, 0);\n endDate.setUTCHours(0, 0, 0, 0);\n\n if (endDate <= startDate) {\n endDateControl.setErrors({ endDateGreaterThanStart: true });\n return { endDateGreaterThanStart: true };\n } else {\n const currentErrors = endDateControl.errors;\n if (currentErrors) {\n delete currentErrors['endDateGreaterThanStart'];\n endDateControl.setErrors(Object.keys(currentErrors).length > 0 ? currentErrors : null);\n }\n return null;\n }\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn, FormGroup } from '@angular/forms';\n\nexport function MustMatchValidator(controlName: string, matchingControlName: string): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const control = group.get(controlName);\n const matchingControl = group.get(matchingControlName);\n\n if (!control || !matchingControl) {\n return null;\n }\n\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({ mustMatch: true });\n return { mustMatch: true };\n } else {\n matchingControl.setErrors(null);\n return null;\n }\n };\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { isPlatformBrowser } from '@angular/common';\nimport { TICKERA_COMPONENTS_CONFIG } from '../config/tickera-components.config';\nimport { TickeraComponentsConfig } from '../interfaces/tickera-components-config.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n private apiUrl: string;\n\n constructor(\n private http: HttpClient,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Inject(TICKERA_COMPONENTS_CONFIG) private config: TickeraComponentsConfig,\n ) {\n this.apiUrl = config.apiUrl;\n }\n\n private getHeaders(contentType?: string): HttpHeaders {\n let headers = new HttpHeaders();\n\n if (contentType) {\n headers = headers.set('Content-Type', contentType);\n }\n\n return headers;\n }\n\n private validateContentType(body: any): string | undefined {\n if (body instanceof FormData) {\n return undefined;\n }\n return 'application/json';\n }\n\n private handleError(error: HttpErrorResponse): Observable<never> {\n if (error.status === 401 && isPlatformBrowser(this.platformId)) {\n const currentRoute = window.location.pathname;\n if (currentRoute.startsWith('/admin')) {\n localStorage.removeItem('access_token');\n window.location.href = '/';\n }\n }\n return throwError(() => error);\n }\n\n get<T>(path: string): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(null));\n return this.http\n .get<T>(`${this.apiUrl}${path}`, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n post<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .post<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n patch<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .patch<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n put<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .put<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n delete<T>(path: string, body?: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .request<T>('DELETE', `${this.apiUrl}${path}`, { headers, body })\n .pipe(catchError(this.handleError.bind(this)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { toast } from 'ngx-sonner';\n\ntype ToastType = 'success' | 'error' | 'info';\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n show(message: string, type: ToastType = 'info') {\n toast[type](message);\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { DeleteConfirmationOpen } from '../interfaces/delete-confirmation-open.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class DeleteConfirmationService {\n title: WritableSignal<string> = signal('Confirmar eliminación');\n resourceName: WritableSignal<string> = signal('');\n confirmationText: WritableSignal<string> = signal('');\n isOpen: WritableSignal<boolean> = signal(false);\n confirmDeleteCallback: (() => void) | null = null;\n\n get modalTitle(): WritableSignal<string> {\n return this.title;\n }\n\n get modalResourceName(): WritableSignal<string> {\n return this.resourceName;\n }\n\n get modalConfirmationText(): WritableSignal<string> {\n return this.confirmationText;\n }\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n open(\n { title, resourceName, confirmationText }: DeleteConfirmationOpen,\n confirmCallback?: () => void,\n ) {\n this.title.set(title);\n this.resourceName.set(resourceName);\n this.confirmationText.set(confirmationText);\n this.confirmDeleteCallback = confirmCallback || null;\n this.isOpen.set(true);\n }\n\n close() {\n this.title.set('Confirmar eliminación');\n this.resourceName.set('');\n this.confirmationText.set('');\n this.confirmDeleteCallback = null;\n this.isOpen.set(false);\n }\n\n getConfirmDeleteCallback(): (() => void) | null {\n return this.confirmDeleteCallback;\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ChangePasswordFormService {\n resourceId: WritableSignal<number> = signal(0);\n isCustomer: WritableSignal<boolean> = signal(false);\n isAdmin: WritableSignal<boolean> = signal(false);\n isOpen: WritableSignal<boolean> = signal(false);\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n get isCustomerMode(): WritableSignal<boolean> {\n return this.isCustomer;\n }\n\n get isAdminMode(): WritableSignal<boolean> {\n return this.isAdmin;\n }\n\n get resourceIdValue(): WritableSignal<number> {\n return this.resourceId;\n }\n\n open(resourceId: number, isAdmin: boolean = false) {\n this.resourceId.set(resourceId);\n this.isCustomer.set(!isAdmin);\n this.isAdmin.set(isAdmin);\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n }\n}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { formatDate } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class DateService {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n formatDate(date: Date, format: string = 'yyyy-MM-dd'): string {\n const formattedDate = formatDate(date, format, this.locale);\n return formattedDate;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { AdminsResponse } from '../interfaces/admins/admins-response.interface';\nimport { ADMIN_API_ROUTES } from '../constants/api-routes/admin-api.routes';\n\n@Injectable({ providedIn: 'root' })\nexport class AdminService {\n constructor(private apiService: ApiService) {}\n\n fetchAdmins(\n page: number = 1,\n search: string = '',\n limit: number = 20,\n ): Observable<AdminsResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${ADMIN_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<AdminsResponse>(apiRoute);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(ADMIN_API_ROUTES.deleteOne(id));\n }\n\n createOne(data: any): Observable<any> {\n return this.apiService.post(ADMIN_API_ROUTES.CREATE, data);\n }\n\n updateOne(id: number, data: any): Observable<any> {\n return this.apiService.patch(ADMIN_API_ROUTES.updateOne(id), data);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { CITY_API_ENDPOINTS } from '../constants/api-routes/cities-api.routes';\nimport { CitiesResponse } from '../interfaces/cities/cities-response.interface';\nimport { City } from '../interfaces/cities/city.interface';\nimport { CityResponse } from '../interfaces/cities/city-response.interface';\nimport { FetchCitiesParams } from '../interfaces/cities/fetch-cities-params.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class CitiesService {\n constructor(private apiService: ApiService) {}\n\n fetchCities({ page, search, stateId }: FetchCitiesParams): Observable<CitiesResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (stateId) queryParams.append('state_id', stateId.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${CITY_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CitiesResponse>(apiRoute);\n }\n\n createOne(data: City): Observable<CityResponse> {\n return this.apiService.post(CITY_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: City): Observable<CityResponse> {\n return this.apiService.patch<CityResponse>(CITY_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(CITY_API_ENDPOINTS.delete(id));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { COUNTRY_API_ENDPOINTS } from '../constants/api-routes/countries-api.routes';\nimport { CountriesResponse } from '../interfaces/countries/countries-response.interface';\nimport { CountryResponse } from '../interfaces/countries/country-response.interface';\nimport { Country } from '../interfaces/countries/country.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class CountryService {\n constructor(private apiService: ApiService) {}\n\n fetchCountries(page?: number, search?: string): Observable<CountriesResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n const queryString = queryParams.toString();\n const apiRoute = `${COUNTRY_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CountriesResponse>(apiRoute);\n }\n\n createOne(data: Country): Observable<CountryResponse> {\n return this.apiService.post(COUNTRY_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: Country): Observable<CountryResponse> {\n return this.apiService.patch<CountryResponse>(COUNTRY_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(COUNTRY_API_ENDPOINTS.delete(id));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { STATE_API_ENDPOINTS } from '../constants/api-routes/states-api.routes';\nimport { StatesResponse } from '../interfaces/states/states-response.interface';\nimport { StateResponse } from '../interfaces/states/state-response.interface';\nimport { State } from '../interfaces/states/state.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class StatesService {\n constructor(private apiService: ApiService) {}\n\n fetchStates(page?: number, search?: string, countryId?: number): Observable<StatesResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (countryId) queryParams.append('country_id', countryId.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${STATE_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<StatesResponse>(apiRoute);\n }\n\n fetchStatesByCountryId(countryId: number): Observable<StatesResponse> {\n const apiRoute = `${STATE_API_ENDPOINTS.findAll}?country_id=${countryId}`;\n return this.apiService.get<StatesResponse>(apiRoute);\n }\n\n createOne(data: State): Observable<StateResponse> {\n return this.apiService.post(STATE_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: State): Observable<StateResponse> {\n return this.apiService.patch<StateResponse>(STATE_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(STATE_API_ENDPOINTS.delete(id));\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PERFORMANCES_API_ROUTES } from '../constants/api-routes/performances-api.routes';\nimport { ApiService } from './api.service';\nimport { PerformancesResponseInterface } from '../interfaces/performances/performances-response.interface';\nimport { Performance } from '../interfaces/performances/performance.interface';\nimport { PerformanceResponse } from '../interfaces/performances/performance-response.interface';\nimport { PerformanceBookingDataResponse } from '../interfaces/performances/performance-booking-data.interface';\nimport { PerformancesAvailableDaysResponse } from '../interfaces/performances/performances-available-days-response.interface';\nimport { FetchDailyPerformancesParams } from '../interfaces/daily-performances/fetch-daily-performances-params.interface';\nimport { DailyPerformancesResponse } from '../interfaces/daily-performances/daily-performances-response.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class PerformanceService {\n private performancesSubject = new BehaviorSubject<Performance[]>([]);\n public performances$ = this.performancesSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchPerformances(showId?: number, search?: string): Observable<PerformancesResponseInterface> {\n const queryParams = new URLSearchParams();\n if (showId) queryParams.append('show_id', showId.toString());\n if (search) queryParams.append('search', search);\n queryParams.append('limit', '100');\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<PerformancesResponseInterface>(apiRoute);\n }\n\n fetchDailyPerformances({\n show_id,\n search,\n limit,\n date,\n }: FetchDailyPerformancesParams): Observable<DailyPerformancesResponse> {\n const queryParams = new URLSearchParams();\n if (date) queryParams.append('date', date.toString());\n if (show_id) queryParams.append('show_id', show_id.toString());\n if (search) queryParams.append('search', search);\n queryParams.append('limit', limit?.toString() ?? '100');\n\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.publicAvailablePerformances}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<DailyPerformancesResponse>(apiRoute);\n }\n\n loadPerformances({ showId, search }: { showId?: number; search?: string } = {}): void {\n this.fetchPerformances(showId, search).subscribe({\n next: ({ data }) => {\n this.performancesSubject.next(data?.performances ?? []);\n },\n error: () => {\n this.performancesSubject.next([]);\n },\n });\n }\n\n getCurrentPerformances(): Performance[] {\n return this.performancesSubject.value;\n }\n\n fetchOneById(id: number): Observable<PerformanceResponse> {\n return this.apiService.get<PerformanceResponse>(PERFORMANCES_API_ROUTES.findOneById(id));\n }\n\n fetchOneBookingData(id: number): Observable<PerformanceBookingDataResponse> {\n const apiRoute = PERFORMANCES_API_ROUTES.findOneBookingData(id);\n return this.apiService.get<PerformanceBookingDataResponse>(apiRoute);\n }\n\n fetchAvailableDays(params?: { show_id?: number }): Observable<PerformancesAvailableDaysResponse> {\n const queryParams = new URLSearchParams();\n if (params?.show_id) queryParams.append('show_id', params.show_id.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.getAvailableDays}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<PerformancesAvailableDaysResponse>(apiRoute);\n }\n\n createOne(data: Performance): Observable<any> {\n return this.apiService.post(PERFORMANCES_API_ROUTES.create, data);\n }\n\n createMany(data: Partial<Performance>[]): Observable<any> {\n return this.apiService.post(PERFORMANCES_API_ROUTES.createBulk, { performances: data });\n }\n\n updateOne(id: number, data: any): Observable<PerformanceResponse> {\n return this.apiService.patch<PerformanceResponse>(PERFORMANCES_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PERFORMANCES_API_ROUTES.delete(id));\n }\n\n deleteMany(ids: number[]): Observable<any> {\n return this.apiService.delete(PERFORMANCES_API_ROUTES.deleteMany, { ids });\n }\n\n cancelPerformance(id: number, notifyUsers: boolean): Observable<any> {\n return this.apiService.patch(PERFORMANCES_API_ROUTES.cancel(id), { notify_users: notifyUsers });\n }\n\n publishInvenotry(id: number): Observable<any> {\n const apiRoute = PERFORMANCES_API_ROUTES.publishInventory(id);\n return this.apiService.post(apiRoute, {});\n }\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { DailyPerformanceItem, PerformanceAvailableDay } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class PerformancesListEventsService {\n private _selectedDay = signal<PerformanceAvailableDay | null>(null);\n private _selectedPerformance = signal<DailyPerformanceItem | null>(null);\n private _filteredShowId = signal<number | null>(null);\n\n readonly selectedDay = computed(() => this._selectedDay());\n readonly selectedDayDate = computed(() => this._selectedDay()?.date);\n readonly selectedPerformance = computed(() => this._selectedPerformance());\n readonly filteredShowId = computed(() => this._filteredShowId());\n\n setSelectedDay(day: PerformanceAvailableDay | null): void {\n this._selectedDay.set(day);\n }\n\n setSelectedPerformance(performance: DailyPerformanceItem | null) {\n this._selectedPerformance.set(performance);\n }\n\n setFilteredShowId(id: number | null): void {\n this._filteredShowId.set(id);\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { SHOWS_API_ROUTES } from '../constants/api-routes/shows-api.routes';\nimport { ApiService } from './api.service';\nimport { ShowsResponseInterface } from '../interfaces/shows/shows-response.interface';\nimport { Show } from '../interfaces/shows/show.interface';\nimport { ShowResponse } from '../interfaces/shows/show-response.interface';\nimport { ShowImage } from '../interfaces/shows/show-image.interface';\nimport { FetchShowsParams } from '../interfaces/shows/fetch-shows-params.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class ShowService {\n private showsSubject = new BehaviorSubject<Show[]>([]);\n public shows$ = this.showsSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n loadShows({ page, search }: FetchShowsParams = {}): void {\n this.fetchShows({ page, search }).subscribe({\n next: ({ data }) => {\n this.showsSubject.next(data?.shows ?? []);\n },\n error: () => {\n this.showsSubject.next([]);\n },\n });\n }\n\n getCurrentShows(): Show[] {\n return this.showsSubject.value;\n }\n\n fetchShows({ limit, page, search }: FetchShowsParams): Observable<ShowsResponseInterface> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${SHOWS_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ShowsResponseInterface>(apiRoute);\n }\n\n fetchAvailableShows({\n date,\n limit,\n page,\n search,\n }: FetchShowsParams): Observable<ShowsResponseInterface> {\n const queryParams = new URLSearchParams();\n if (date) queryParams.append('date', date);\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n\n const apiRoute = `${SHOWS_API_ROUTES.publicAvailablePerformances}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ShowsResponseInterface>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ShowResponse> {\n return this.apiService.get<ShowResponse>(SHOWS_API_ROUTES.findOneById(id));\n }\n\n createOne(data: Show): Observable<ShowResponse> {\n return this.apiService.post(SHOWS_API_ROUTES.create, data);\n }\n\n updateOne(id: number, data: any): Observable<ShowResponse> {\n return this.apiService.patch<ShowResponse>(SHOWS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(SHOWS_API_ROUTES.delete(id));\n }\n\n fetchImages(id: number): Observable<{ data: ShowImage[] }> {\n return this.apiService.get(SHOWS_API_ROUTES.getImages(id));\n }\n\n uploadImages(id: number, files?: FormData): Observable<{ data: ShowImage[] }> {\n return this.apiService.post(SHOWS_API_ROUTES.uploadGallery(id), files);\n }\n\n deleteOneImage(showId: number, imageId: number): Observable<any> {\n return this.apiService.delete(SHOWS_API_ROUTES.deleteOneImage(showId, imageId));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { CustomersResponse } from '../interfaces/customers/customers-response.interface';\nimport { CustomerResponse } from '../interfaces/customers/customer-response.interface';\nimport { CUSTOMERS_API_ROUTES } from '../constants/api-routes/customers-api.routes';\nimport { Customer } from '../interfaces/customers/customer.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomerService {\n constructor(private apiService: ApiService) {}\n\n createOne(data: Customer): Observable<CustomerResponse> {\n return this.apiService.post<CustomerResponse>(CUSTOMERS_API_ROUTES.create, data);\n }\n\n fetchCustomers(page: number, search: string, limit?: number): Observable<CustomersResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${CUSTOMERS_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CustomersResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<CustomerResponse> {\n return this.apiService.get<CustomerResponse>(CUSTOMERS_API_ROUTES.findOne(id));\n }\n\n updateOne(id: number, data: any): Observable<CustomerResponse> {\n return this.apiService.patch<CustomerResponse>(CUSTOMERS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(CUSTOMERS_API_ROUTES.delete(id));\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PRICE_ZONES_API_ROUTES } from '../constants/api-routes/price-zones-api.routes';\nimport { ApiService } from './api.service';\nimport { PriceZonesResponseInterface } from '../interfaces/price-zones/price-zones-response.interface';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\nimport { FindAllPriceZoneParams } from '../interfaces/price-zones/find-all-price-zone-params.interface';\nimport { PriceZoneResponse } from '../interfaces/price-zones/price-zone-response.interface';\nimport { PriceZoneUpdateResponse } from '../interfaces/price-zones/price-zone-update-response.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneService {\n private priceZonesSubject = new BehaviorSubject<PriceZone[]>([]);\n public priceZones$ = this.priceZonesSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchPriceZones({\n roomMapId,\n page,\n search,\n limit,\n }: FindAllPriceZoneParams = {}): Observable<PriceZonesResponseInterface> {\n const queryParams = new URLSearchParams();\n if (roomMapId) queryParams.append('room_map_id', roomMapId.toString());\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${PRICE_ZONES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<PriceZonesResponseInterface>(apiRoute);\n }\n\n loadPriceZones({ roomMapId, page, search, limit }: FindAllPriceZoneParams = {}): void {\n this.fetchPriceZones({ roomMapId, page, search, limit }).subscribe({\n next: ({ data }) => {\n this.priceZonesSubject.next(data?.price_zones ?? []);\n },\n error: () => {\n this.priceZonesSubject.next([]);\n },\n });\n }\n\n getCurrentPriceZones(): PriceZone[] {\n return this.priceZonesSubject.value;\n }\n\n fetchOneById(id: number): Observable<PriceZoneResponse> {\n return this.apiService.get<PriceZoneResponse>(PRICE_ZONES_API_ROUTES.findOneById(id));\n }\n\n createOne(data: PriceZone): Observable<any> {\n return this.apiService.post(PRICE_ZONES_API_ROUTES.CREATE, data);\n }\n\n duplicateOne(id: number, name: string): Observable<any> {\n return this.apiService.post(PRICE_ZONES_API_ROUTES.duplicate(id), { name });\n }\n\n updateOne(id: number, data: any): Observable<PriceZoneUpdateResponse> {\n return this.apiService.patch<PriceZoneUpdateResponse>(PRICE_ZONES_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PRICE_ZONES_API_ROUTES.delete(id));\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneEventService {\n private priceZoneDeleted$ = new Subject<void>();\n private priceZoneSaved$ = new Subject<void>();\n\n private _selectedPriceZone: WritableSignal<PriceZone | null> = signal(null);\n readonly selectedPriceZone$ = toObservable(this._selectedPriceZone);\n\n onPriceZoneDeleted() {\n this.priceZoneDeleted$.next();\n }\n\n getPriceZoneDeleted() {\n return this.priceZoneDeleted$.asObservable();\n }\n\n onPriceZoneSaved() {\n this.priceZoneSaved$.next();\n }\n\n getPriceZoneSaved() {\n return this.priceZoneSaved$.asObservable();\n }\n\n setSelectedPriceZone(priceZone: PriceZone | null) {\n this._selectedPriceZone.set(priceZone);\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\nimport { PriceZoneEventService } from './price-zone-event.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneFormModalService {\n priceZone: WritableSignal<PriceZone | null> = signal(null);\n isOpen: WritableSignal<boolean> = signal(false);\n\n constructor(private priceZoneEventService: PriceZoneEventService) {}\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n get currentPriceZone(): WritableSignal<PriceZone | null> {\n return this.priceZone;\n }\n\n open(priceZone: PriceZone | null = null) {\n this.priceZone.set(priceZone);\n this.priceZoneEventService.setSelectedPriceZone(priceZone);\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n this.priceZone.set(null);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport {\n FetchProductCategoriesParams,\n ProductCategoriesResponse,\n ProductCategory,\n ProductCategoryResponse,\n} from '../interfaces';\nimport { ApiService } from './api.service';\nimport { PRODUCT_CATEGORIES_API_ROUTES } from '../constants/api-routes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductCategoryService {\n constructor(private apiService: ApiService) {}\n\n fetchCategories({\n page,\n search,\n limit,\n }: FetchProductCategoriesParams): Observable<ProductCategoriesResponse> {\n const queryParams = new URLSearchParams();\n\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_CATEGORIES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductCategoriesResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductCategoryResponse> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.findById(id);\n return this.apiService.get<ProductCategoryResponse>(apiRoute);\n }\n\n createOne(data: ProductCategory): Observable<any> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductCategory): Observable<ProductCategoryResponse> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.update(id);\n return this.apiService.patch<ProductCategoryResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { ApiService } from './api.service';\nimport {\n FetchProductTagsParams,\n ProductTag,\n ProductTagResponse,\n ProductTagsResponse,\n} from '../interfaces';\nimport { PRODUCT_TAGS_API_ROUTES } from '../constants/api-routes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductTagService {\n constructor(private apiService: ApiService) {}\n\n fetchTags({ page, search, limit }: FetchProductTagsParams): Observable<ProductTagsResponse> {\n const queryParams = new URLSearchParams();\n\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_TAGS_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductTagsResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductTagResponse> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.findById(id);\n return this.apiService.get<ProductTagResponse>(apiRoute);\n }\n\n createOne(data: ProductTag): Observable<any> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductTag): Observable<ProductTagResponse> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.update(id);\n return this.apiService.patch<ProductTagResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { ApiService } from './api.service';\nimport {\n FetchProductTypesParams,\n ProductType,\n ProductTypeResponse,\n ProductTypesResponse,\n} from '../interfaces';\nimport { PRODUCT_TYPES_API_ROUTES } from '../constants/api-routes/product-types-api.routes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductTypeService {\n constructor(private apiService: ApiService) {}\n\n fetchTypes({ page, search, limit }: FetchProductTypesParams): Observable<ProductTypesResponse> {\n const queryParams = new URLSearchParams();\n\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_TYPES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductTypesResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductTypeResponse> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.findById(id);\n return this.apiService.get<ProductTypeResponse>(apiRoute);\n }\n\n createOne(data: ProductType): Observable<any> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductType): Observable<ProductTypeResponse> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.update(id);\n return this.apiService.patch<ProductTypeResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PRODUCTS_API_ROUTES } from '../constants/api-routes/products-api.routes';\nimport { ApiService } from './api.service';\nimport { ProductsResponseInterface } from '../interfaces/products/products-response.interface';\nimport { ProductResponse } from '../interfaces/products/product-response.interface';\nimport { Product } from '../interfaces/products/product.interface';\nimport { FetchProductsParams } from '../interfaces/products/fetch-products-params.interface';\nimport { ProductImage } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class ProductService {\n private productsSubject = new BehaviorSubject<Product[]>([]);\n public products$ = this.productsSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchProducts({\n page,\n search,\n limit,\n }: FetchProductsParams): Observable<ProductsResponseInterface> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCTS_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ProductsResponseInterface>(apiRoute);\n }\n\n loadProducts(params: FetchProductsParams): void {\n this.fetchProducts(params).subscribe({\n next: ({ data }) => {\n this.productsSubject.next(data?.products ?? []);\n },\n error: () => {\n this.productsSubject.next([]);\n },\n });\n }\n\n getCurrentProducts(): Product[] {\n return this.productsSubject.value;\n }\n\n fetchOneById(id: number): Observable<ProductResponse> {\n return this.apiService.get<ProductResponse>(PRODUCTS_API_ROUTES.findOneById(id));\n }\n\n createOne(data: Product): Observable<any> {\n return this.apiService.post(PRODUCTS_API_ROUTES.CREATE, data);\n }\n\n updateOne(id: number, data: any): Observable<ProductResponse> {\n return this.apiService.patch<ProductResponse>(PRODUCTS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PRODUCTS_API_ROUTES.delete(id));\n }\n\n fetchImages(id: number): Observable<{ data: ProductImage[] }> {\n const apiRoute = PRODUCTS_API_ROUTES.fetchImages(id);\n return this.apiService.get<{ data: ProductImage[] }>(apiRoute);\n }\n\n uploadImages(id: number, files?: FormData): Observable<{ data: ProductImage[] }> {\n const apiRoute = PRODUCTS_API_ROUTES.uploadImages(id);\n return this.apiService.post<{ data: ProductImage[] }>(apiRoute, files);\n }\n\n deleteOneImage(productId: number, imageId: number): Observable<any> {\n const apiRoute = PRODUCTS_API_ROUTES.deleteOneImage(productId, imageId);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { signal, WritableSignal } from '@angular/core';\n\nexport class BaseModalService {\n readonly isOpen: WritableSignal<boolean> = signal(false);\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n open() {\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n }\n}\n","import { Injectable, computed, signal } from '@angular/core';\nimport { FeedbackModalElement } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class FeedbackModalService {\n private _modals = signal<Map<string, FeedbackModalElement>>(new Map());\n\n readonly modals = computed(() => Array.from(this._modals().values()));\n\n addModal(modal: FeedbackModalElement): void {\n this._modals.update((modals) => {\n const newModals = new Map(modals);\n newModals.set(modal.id, modal);\n return newModals;\n });\n }\n\n removeModal(id: string): void {\n this._modals.update((modals) => {\n const newModals = new Map(modals);\n newModals.delete(id);\n return newModals;\n });\n }\n\n removeAllModals(): void {\n this._modals.set(new Map());\n }\n}\n","import { Injectable, signal, computed, WritableSignal } from '@angular/core';\nimport { DEFAULT_STAGE_CONFIG } from '../../constants/ticket-map';\nimport { processElementsToRenderData } from '../../helpers';\nimport {\n ElementRenderData,\n HallFloor,\n Performance,\n PerformanceBookingDataResponse,\n RoomMap,\n Show,\n} from '../../interfaces';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PerformanceBookingDataService {\n private _show = signal<Show | null>(null);\n private _performance = signal<Performance | null>(null);\n private _roomMap = signal<RoomMap | null>(null);\n private _hallFloors = signal<HallFloor[]>([]);\n private _selectedHallFloor = signal<HallFloor | null>(null);\n private _selectedTicketIds: WritableSignal<Set<number>> = signal(new Set());\n private _allRenderData = signal<ElementRenderData[]>([]);\n private _stageConfig = signal(DEFAULT_STAGE_CONFIG);\n\n readonly selectedCount = computed(() => this._selectedTicketIds().size);\n\n readonly selectedTicketIds = computed(() => this._selectedTicketIds());\n\n readonly show = computed(() => this._show());\n\n readonly hallFloors = computed(() => this._hallFloors());\n\n readonly selectedHallFloor = computed(() => this._selectedHallFloor());\n\n readonly performance = computed(() => this._performance());\n\n readonly stageConfig = computed(() => this._stageConfig());\n\n readonly roomMap = computed(() => this._roomMap());\n\n readonly renderData = computed(() => {\n return this._allRenderData()?.filter(({ hallFloorId }) => {\n return hallFloorId == this._selectedHallFloor()?.id;\n });\n });\n\n setPerformanceBookingData({ data }: PerformanceBookingDataResponse): void {\n this._performance.set(data.performance);\n this._show.set(data.show);\n\n const roomMap = data.room_map;\n this._roomMap.set(roomMap);\n\n const hallFloors = data.room_map?.hall?.hall_floors ?? [];\n const selectedHallFloor = hallFloors.length > 0 ? hallFloors[0] : null;\n this._hallFloors.set(hallFloors);\n this._selectedHallFloor.set(selectedHallFloor);\n\n const renderData = processElementsToRenderData(\n roomMap.elements,\n data.tickets,\n roomMap.price_zones,\n );\n this._allRenderData.set(renderData);\n\n const canvasSettings = roomMap.canvas_settings || {};\n this._stageConfig.set({\n ...DEFAULT_STAGE_CONFIG,\n width: canvasSettings.width || 800,\n height: canvasSettings.height || 600,\n });\n }\n\n setSelectedHallFloor(id: number): void {\n const hallFloor = this._hallFloors().find((hallFloor) => hallFloor.id === id);\n this._selectedHallFloor.set(hallFloor ?? null);\n }\n\n updateStageConfig(data: { [x: string]: any }) {\n this._stageConfig.set({\n ...this._stageConfig(),\n ...data,\n });\n }\n}\n","import { Injectable, signal, computed, WritableSignal } from '@angular/core';\nimport { Customer } from '../../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionDetailsService {\n private _customerEmail = signal<string | null>(null);\n private _customerId = signal<number | null>(null);\n private _paymentMethod = signal<string | null>(null);\n private _billingInformation: WritableSignal<Customer | null> = signal(null);\n\n readonly customerEmail = computed(() => this._customerEmail());\n\n readonly customerId = computed(() => this._customerId());\n\n readonly paymentMethod = computed(() => this._paymentMethod());\n\n readonly billingInformation = computed(() => this._billingInformation());\n\n setCustomerEmail(email: string | null): void {\n this._customerEmail.set(email);\n }\n\n setCustomerId(id: number | null): void {\n this._customerId.set(id);\n }\n\n setPaymentMethod(method: string | null): void {\n this._paymentMethod.set(method);\n }\n\n setBillingInformation(values: Customer) {\n this._billingInformation.set(values);\n }\n\n clearSelection(): void {\n this._customerEmail.set(null);\n this._customerId.set(null);\n this._paymentMethod.set(null);\n this._billingInformation.set(null);\n }\n}\n","import { Injectable, signal, computed, Signal } from '@angular/core';\nimport {\n CorporateBond,\n Coupon,\n GiftBond,\n SelectedDiscountCard,\n SelectedDiscountCardType,\n} from '../../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionDiscountService {\n private _coupon = signal<Coupon | null>(null);\n private _corporateBond = signal<CorporateBond | null>(null);\n private _corporateBondCode = signal<string | null>(null);\n private _giftBond = signal<GiftBond | null>(null);\n private _giftBondCode = signal<string | null>(null);\n\n readonly coupon = computed(() => this._coupon());\n\n readonly corporateBond = computed(() => this._corporateBond());\n\n readonly corporateBondCode = computed(() => this._corporateBondCode());\n\n readonly giftBond = computed(() => this._giftBond());\n\n readonly giftBondCode = computed(() => this._giftBondCode());\n\n readonly selectedDiscount: Signal<SelectedDiscountCard | null> = computed(() => {\n const coupon = this.coupon();\n if (!!coupon) {\n return {\n name: coupon.code,\n value: coupon.discount_value,\n type: SelectedDiscountCardType.COUPON,\n };\n }\n\n const giftBond = this.giftBond();\n if (!!giftBond) {\n return {\n name: giftBond.name,\n value: giftBond.value,\n type: SelectedDiscountCardType.GIFT_BOND,\n };\n }\n\n const [corporateBond, corporateBondCode] = [this.corporateBond(), this.corporateBondCode()];\n if (!!corporateBond && !!corporateBondCode) {\n return {\n name: corporateBondCode,\n value: corporateBond.value,\n type: SelectedDiscountCardType.CORPORATE_BOND,\n };\n }\n\n return null;\n });\n\n readonly selectedDiscountType = computed(() => {\n return this.selectedDiscount()?.type;\n });\n\n readonly selectedDiscountValue = computed(() => {\n return this.selectedDiscount()?.value ?? undefined;\n });\n\n setCoupon(coupon: Coupon | null): void {\n this._coupon.set(coupon);\n }\n\n setCorporateBond(corporateBond: CorporateBond | null): void {\n this._corporateBond.set(corporateBond);\n }\n\n setCorporateBondCode(code: string | null): void {\n this._corporateBondCode.set(code);\n }\n\n setGiftBond(giftBond: GiftBond | null): void {\n this._giftBond.set(giftBond);\n }\n\n setGiftBondCode(code: string | null): void {\n this._giftBondCode.set(code);\n }\n\n clearSelection(): void {\n this._coupon.set(null);\n this._corporateBond.set(null);\n this._corporateBondCode.set(null);\n this._giftBond.set(null);\n this._giftBondCode.set(null);\n }\n}\n","import { Injectable, signal, computed, WritableSignal, inject } from '@angular/core';\nimport { PerformanceBookingDataService } from './performance-booking-data.service';\nimport { TicketSelectionDiscountService } from './ticket-selection-discount.service';\nimport { TicketSelectionDetailsService } from './ticket-selection-details.service';\nimport {\n PerformanceTicket,\n Product,\n ReservePerformanceDto,\n TicketMapTooltipData,\n TicketMapZoneQuantityState,\n} from '../../interfaces';\nimport { TICKET_STATUS_COLORS, TICKET_STATUS_LABELS } from '../../constants/ticket-map';\nimport { PerformanceTicketStatus } from '../../enums';\nimport { FeedbackModalService } from '../feedback-modal.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionService {\n private bookingDataService = inject(PerformanceBookingDataService);\n private feedbackModalService = inject(FeedbackModalService);\n private selectionDetailsService = inject(TicketSelectionDetailsService);\n private selectionDiscountService = inject(TicketSelectionDiscountService);\n private _zoneQuantities = signal<Map<number, TicketMapZoneQuantityState>>(new Map());\n private _allTickets = signal<PerformanceTicket[]>([]);\n private _selectedTickets: WritableSignal<Set<PerformanceTicket>> = signal(new Set());\n private _selectedBlockedTickets: WritableSignal<Set<PerformanceTicket>> = signal(new Set());\n private _products: WritableSignal<Product[]> = signal([]);\n private _productQuantities: WritableSignal<Map<number, number>> = signal(new Map());\n\n readonly selectedTickets = computed<PerformanceTicket[]>(() => {\n const ids = this._selectedTickets();\n return this._allTickets().filter((t) => ids.has(t));\n });\n\n readonly selectedBlockedTickets = computed<PerformanceTicket[]>(() => {\n const ids = this._selectedBlockedTickets();\n return this._allTickets().filter((t) => ids.has(t));\n });\n\n readonly selectedCount = computed(() => this._selectedTickets().size);\n\n readonly blockedSelectedCount = computed(() => this._selectedBlockedTickets().size);\n\n readonly selectedTicketIds = computed<Set<PerformanceTicket>>(() => this._selectedTickets());\n\n readonly selectedBlockedTicketIds = computed<number[]>(() =>\n this.selectedBlockedTickets().map((t) => t.id),\n );\n\n readonly selectedTicketIdList = computed<number[]>(() => this.selectedTickets().map((t) => t.id));\n\n readonly products = computed(() => this._products());\n\n readonly productQuantities = computed(() => this._productQuantities());\n\n readonly selectedProductEntries = computed<{ id: number; quantity: number }[]>(() => {\n const entries: { id: number; quantity: number }[] = [];\n this._productQuantities().forEach((quantity, id) => {\n if (quantity > 0) {\n entries.push({ id, quantity });\n }\n });\n return entries;\n });\n\n readonly selectedProductCount = computed(() => this.selectedProductEntries().length);\n\n readonly serviceFee = computed(() => {\n return Number(this.bookingDataService.show()?.service_fee ?? '0');\n });\n\n setTickets(tickets: PerformanceTicket[]): void {\n this._allTickets.set(tickets);\n }\n\n setProducts(products: Product[]): void {\n this._products.set(products);\n }\n\n updateProductQuantity(productId: number, delta: number): void {\n this._productQuantities.update((map) => {\n const next = new Map(map);\n const current = next.get(productId) ?? 0;\n const newQty = Math.max(0, current + delta);\n if (newQty === 0) {\n next.delete(productId);\n } else {\n next.set(productId, newQty);\n }\n return next;\n });\n }\n\n getProductQuantity(productId: number): number {\n return this._productQuantities().get(productId) ?? 0;\n }\n\n private getListByStatus(\n ticket: PerformanceTicket,\n ): WritableSignal<Set<PerformanceTicket>> | null {\n const lists: { [x: string]: WritableSignal<Set<PerformanceTicket>> } = {\n [PerformanceTicketStatus.BLOCKED]: this._selectedBlockedTickets,\n [PerformanceTicketStatus.AVAILABLE]: this._selectedTickets,\n };\n\n return lists[ticket.status] ?? null;\n }\n\n setSelectedTickets(tickets: PerformanceTicket[]): void {\n this._selectedTickets.set(new Set(tickets));\n }\n\n toggle(ticket: PerformanceTicket): void {\n const list = this.getListByStatus(ticket);\n\n if (list) {\n list.update((ids) => {\n const next = new Set(ids);\n if (next.has(ticket)) {\n next.delete(ticket);\n } else {\n next.add(ticket);\n }\n return next;\n });\n }\n }\n\n select(ticket: PerformanceTicket): void {\n const list = this.getListByStatus(ticket);\n\n if (list) {\n list.update((ids) => {\n const next = new Set(ids);\n next.add(ticket);\n return next;\n });\n }\n }\n\n deselect(ticket: PerformanceTicket): void {\n const list = this.getListByStatus(ticket);\n\n if (list) {\n list.update((ids) => {\n const next = new Set(ids);\n next.delete(ticket);\n return next;\n });\n }\n }\n\n clearBlockedSelection(): void {\n this._selectedBlockedTickets.set(new Set());\n }\n\n clearSelection(): void {\n this._selectedTickets.set(new Set());\n this._zoneQuantities.set(new Map());\n this._productQuantities.set(new Map());\n this.selectionDetailsService.clearSelection();\n this.selectionDiscountService.clearSelection();\n }\n\n isSelected(ticket: PerformanceTicket): boolean {\n return this._selectedTickets().has(ticket);\n }\n\n initZoneQuantity(elementId: number, maxCapacity: number): void {\n this._zoneQuantities.update((map) => {\n const next = new Map(map);\n if (!next.has(elementId)) {\n next.set(elementId, { elementId, selectedCount: 0, maxCapacity });\n }\n return next;\n });\n }\n\n adjustZoneQuantity(elementId: number, delta: number): void {\n const zoneTickets = this._allTickets()\n .filter((t) => t.room_map_element_id === elementId)\n .sort((a, b) => ((a.seat_label || '') < (b.seat_label || '') ? -1 : 1));\n\n this._zoneQuantities.update((map) => {\n const next = new Map(map);\n const current = next.get(elementId);\n if (!current) return next;\n\n const newCount = Math.max(0, Math.min(current.maxCapacity, current.selectedCount + delta));\n next.set(elementId, { ...current, selectedCount: newCount });\n return next;\n });\n\n const state = this._zoneQuantities().get(elementId);\n const currentCount = state ? state.selectedCount : 0;\n\n this._selectedTickets.update((ids) => {\n const next = new Set(ids);\n const nowSelected = zoneTickets.filter((t) => next.has(t));\n\n if (delta > 0) {\n const toSelect = zoneTickets.find((t) => !next.has(t) && t.status === 'available');\n if (toSelect) next.add(toSelect);\n } else if (delta < 0 && nowSelected.length > 0) {\n const lastSelected = nowSelected[nowSelected.length - 1];\n next.delete(lastSelected);\n }\n\n return next;\n });\n }\n\n getZoneTickets(elementId: number): PerformanceTicket[] {\n return this._allTickets()\n .filter((t) => t.room_map_element_id === elementId)\n .sort((a, b) => ((a.seat_label || '') < (b.seat_label || '') ? -1 : 1));\n }\n\n buildTooltipData(\n ticket: PerformanceTicket,\n elementName: string,\n seatLabel: string | null,\n x: number,\n y: number,\n ): TicketMapTooltipData {\n return {\n x,\n y,\n elementName,\n seatLabel,\n price: Number(ticket.normal_price ?? '0'),\n status: ticket.status,\n statusLabel: TICKET_STATUS_LABELS[ticket.status] || ticket.status,\n statusColor: TICKET_STATUS_COLORS[ticket.status] || '#999',\n isSelected: this.isSelected(ticket),\n ticketId: ticket.id,\n };\n }\n\n buildReservePerformanceDto(\n paymentMethod = 'cash',\n termsAccepted = true,\n dataProcessingAccepted = true,\n ): ReservePerformanceDto {\n const billing = this.selectionDetailsService.billingInformation();\n\n return {\n ticket_ids: this.selectedTicketIdList(),\n coupon_code: this.selectionDiscountService.coupon()?.code ?? undefined,\n gift_bond_code: this.selectionDiscountService.giftBondCode() ?? undefined,\n corporate_bond_code: this.selectionDiscountService.corporateBondCode() ?? undefined,\n payment_method: paymentMethod,\n billing: {\n first_name: billing?.first_name ?? '',\n last_name: billing?.last_name ?? '',\n email: billing?.email ?? '',\n mobile: billing?.mobile ?? '',\n document_type: billing?.document_type ?? '',\n document_number: String(billing?.document_number ?? ''),\n address: billing?.address ?? '',\n city_id: billing?.city_id ?? 0,\n postal_code: billing?.postal_code ?? undefined,\n address_notes: undefined,\n terms_accepted: termsAccepted,\n data_processing_accepted: dataProcessingAccepted,\n comments: undefined,\n },\n };\n }\n}\n","import { Injectable, computed, inject } from '@angular/core';\nimport { PerformanceBookingDataService } from './performance-booking-data.service';\nimport { TicketSelectionService } from './ticket-selection.service';\nimport { TicketSelectionDiscountService } from './ticket-selection-discount.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionTotalsService {\n private bookingDataService = inject(PerformanceBookingDataService);\n private selectionService = inject(TicketSelectionService);\n private selectionDiscountService = inject(TicketSelectionDiscountService);\n\n readonly selectedProductEntries = computed<{ id: number; quantity: number }[]>(() => {\n const entries: { id: number; quantity: number }[] = [];\n this.selectionService.productQuantities().forEach((quantity, id) => {\n if (quantity > 0) {\n entries.push({ id, quantity });\n }\n });\n return entries;\n });\n\n readonly selectedProductCount = computed(() => this.selectedProductEntries().length);\n\n readonly productSubtotal = computed(() => {\n let total = 0;\n const products = this.selectionService.products();\n this.selectionService.productQuantities().forEach((quantity, id) => {\n if (quantity > 0) {\n const product = products.find((p) => p.id === id);\n if (product) {\n total += product.price * quantity;\n }\n }\n });\n return total;\n });\n\n readonly ticketSubtotal = computed(() => {\n return this.selectionService.selectedTickets().reduce((sum, ticket) => {\n return sum + Number(ticket?.normal_price || '0');\n }, 0);\n });\n\n readonly serviceFee = computed(() => {\n return Number(this.bookingDataService.show()?.service_fee ?? '0');\n });\n\n subtotalValue(): number {\n return (\n this.selectionService.selectedTickets().reduce((sum, ticket) => {\n return sum + Number(ticket?.normal_price || '0');\n }, 0) + this.productSubtotal()\n );\n }\n\n totalValue(): number {\n if (this.subtotalValue() < 1) {\n return 0;\n }\n\n return this.subtotalValue() + this.serviceFee();\n }\n\n totalDiscounted(): number | null {\n let total = null;\n\n if (this.subtotalValue() < 1) {\n return total;\n }\n\n total = this.subtotalValue();\n\n if (this.serviceFee() > 0) {\n total += this.serviceFee();\n }\n\n const discountValue = this.selectionDiscountService.selectedDiscountValue();\n if (!discountValue) {\n return null;\n }\n\n if (discountValue && discountValue > 0) {\n total = total - discountValue;\n }\n\n if (total && total < 0) {\n total = 0;\n }\n\n return total;\n }\n}\n","import { Injectable, signal, inject } from '@angular/core';\nimport { Stage } from 'konva/lib/Stage';\nimport { PerformanceBookingDataService } from './performance-booking-data.service';\nimport { TicketMapZoomConfig } from '../../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketMapZoomService {\n readonly currentZoom = signal<number>(1);\n private stage?: Stage;\n private bookingDataService = inject(PerformanceBookingDataService);\n\n private readonly defaultConfig: TicketMapZoomConfig = {\n minZoom: 0.3,\n maxZoom: 5,\n zoomStep: 0.1,\n scaleBy: 1.1,\n };\n\n constructor() {}\n\n /**\n * Set the Konva stage instance\n */\n setStage(stage: Stage): void {\n this.stage = stage;\n }\n\n /**\n * Zoom in by one step\n */\n zoomIn(): void {\n if (!this.stage) return;\n\n const newScale = Math.min(\n this.defaultConfig.maxZoom,\n this.currentZoom() + this.defaultConfig.zoomStep,\n );\n this.applyZoom(newScale);\n }\n\n /**\n * Zoom out by one step\n */\n zoomOut(): void {\n if (!this.stage) return;\n\n const newScale = Math.max(\n this.defaultConfig.minZoom,\n this.currentZoom() - this.defaultConfig.zoomStep,\n );\n this.applyZoom(newScale);\n }\n\n /**\n * Reset zoom to 100%\n */\n resetZoom(): void {\n if (!this.stage) return;\n this.applyZoom(1);\n }\n\n /**\n * Get current zoom as percentage string\n */\n getZoomPercentage(): string {\n return Math.round(this.currentZoom() * 100) + '%';\n }\n\n /**\n * Get current zoom value\n */\n getCurrentZoom(): number {\n return this.currentZoom();\n }\n\n /**\n * Apply zoom with center point\n */\n private applyZoom(newScale: number): void {\n if (!this.stage) return;\n\n const oldScale = this.stage.scaleX();\n const stageCenter = {\n x: this.stage.width() / 2,\n y: this.stage.height() / 2,\n };\n\n const mousePointTo = {\n x: (stageCenter.x - this.stage.x()) / oldScale,\n y: (stageCenter.y - this.stage.y()) / oldScale,\n };\n\n this.applyZoomScale(newScale, stageCenter, mousePointTo);\n }\n\n /**\n * Apply zoom scale with specific center point\n */\n private applyZoomScale(\n newScale: number,\n centerPoint: { x: number; y: number },\n mousePointTo: { x: number; y: number },\n ): void {\n if (!this.stage) return;\n\n this.stage.scaleX(newScale);\n this.stage.scaleY(newScale);\n\n const newPos = {\n x: centerPoint.x - mousePointTo.x * newScale,\n y: centerPoint.y - mousePointTo.y * newScale,\n };\n\n this.stage.position(newPos);\n this.stage.batchDraw();\n\n this.currentZoom.set(newScale);\n this.bookingDataService.updateStageConfig({\n scaleX: newScale,\n scaleY: newScale,\n x: this.stage.x(),\n y: this.stage.y(),\n });\n }\n\n /**\n * Handle mouse wheel zoom toward the cursor position\n */\n handleWheelZoom(deltaY: number): void {\n if (!this.stage) return;\n\n const oldScale = this.currentZoom();\n const pointer = this.stage.getPointerPosition();\n if (!pointer) return;\n\n const scaleBy = this.defaultConfig.scaleBy;\n const direction = deltaY > 0 ? -1 : 1;\n const newScale = direction > 0 ? oldScale * scaleBy : oldScale / scaleBy;\n\n if (newScale < this.defaultConfig.minZoom || newScale > this.defaultConfig.maxZoom) return;\n\n const mousePointTo = {\n x: (pointer.x - this.stage.x()) / oldScale,\n y: (pointer.y - this.stage.y()) / oldScale,\n };\n\n this.applyZoomScale(newScale, pointer, mousePointTo);\n }\n\n /**\n * Fit the content bounds to fill the stage container\n */\n fitToContainer(padding: number = 24): void {\n if (!this.stage) return;\n\n const containerEl = this.stage.container().parentElement;\n if (!containerEl) return;\n\n const containerWidth = containerEl.offsetWidth;\n const containerHeight = containerEl.offsetHeight;\n if (containerWidth === 0 || containerHeight === 0) return;\n\n const renderData = this.bookingDataService.renderData();\n if (renderData.length === 0) return;\n\n let minX = Infinity,\n minY = Infinity;\n let maxX = -Infinity,\n maxY = -Infinity;\n\n for (const el of renderData) {\n const c = el.shapeConfig;\n if (c['x'] !== undefined) {\n minX = Math.min(minX, c['x']);\n maxX = Math.max(maxX, c['x'] + (c['width'] || 0));\n }\n if (c['y'] !== undefined) {\n minY = Math.min(minY, c['y']);\n maxY = Math.max(maxY, c['y'] + (c['height'] || 0));\n }\n }\n\n if (!isFinite(minX)) return;\n\n const contentW = maxX - minX;\n const contentH = maxY - minY;\n if (contentW <= 0 || contentH <= 0) return;\n\n setTimeout(() => {\n if (this.stage) {\n this.fitToBounds(\n { x: minX, y: minY, width: contentW, height: contentH },\n containerWidth,\n containerHeight,\n padding,\n );\n }\n });\n }\n\n /**\n * Get current stage position\n */\n getStagePosition(): { x: number; y: number } {\n if (!this.stage) return { x: 0, y: 0 };\n return this.stage.position();\n }\n\n /**\n * Set stage position (useful for programmatic panning)\n */\n setStagePosition(position: { x: number; y: number }): void {\n if (!this.stage) return;\n this.stage.position(position);\n this.stage.batchDraw();\n }\n\n /**\n * Fit the stage content bounds to the container, centering and scaling\n * to show the full content with optional padding.\n */\n fitToBounds(\n contentBounds: { x: number; y: number; width: number; height: number },\n containerWidth: number,\n containerHeight: number,\n padding: number = 24,\n ): void {\n if (!this.stage) return;\n\n const { x, y, width, height } = contentBounds;\n const contentW = Math.max(width, 1);\n const contentH = Math.max(height, 1);\n\n const scaleX = (containerWidth - padding * 2) / contentW;\n const scaleY = (containerHeight - padding * 2) / contentH;\n const newScale = Math.min(scaleX, scaleY);\n\n const offsetX = (containerWidth - contentW * newScale) / 2;\n const offsetY = (containerHeight - contentH * newScale) / 2;\n\n this.stage.scaleX(newScale);\n this.stage.scaleY(newScale);\n this.stage.position({\n x: offsetX - x * newScale,\n y: offsetY - y * newScale,\n });\n this.stage.batchDraw();\n\n this.currentZoom.set(newScale);\n this.bookingDataService.updateStageConfig({\n scaleX: newScale,\n scaleY: newScale,\n x: this.stage.x(),\n y: this.stage.y(),\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseModalService } from '../base-modal.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfirmationOrderModalService extends BaseModalService {}\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { TICKERA_COMPONENTS_CONFIG } from '../config/tickera-components.config';\nimport { TickeraComponentsConfig } from '../interfaces/tickera-components-config.interface';\n\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n const platformId = inject(PLATFORM_ID);\n const config = inject(TICKERA_COMPONENTS_CONFIG) as TickeraComponentsConfig;\n\n if (isPlatformBrowser(platformId)) {\n const key = config.accessTokenKey ?? 'access_token';\n const token = localStorage.getItem(key);\n if (token) {\n req = req.clone({\n setHeaders: { Authorization: `Bearer ${token}` },\n });\n }\n }\n\n return next(req);\n};\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-button.component.html',\n styleUrl: './app-button.component.scss',\n})\nexport class AppButtonComponent {\n @Output() clicked = new EventEmitter<void>();\n @Input() disabled: boolean = false;\n @Input() loading: boolean = false;\n @Input() type: 'button' | 'submit' = 'button';\n @Input() variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent' = 'primary';\n @Input() text: string = '';\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n @Input() loadingText: string = '';\n @Input() icon: string = '';\n\n handleClick() {\n this.clicked.emit();\n }\n\n get buttonClasses(): string {\n return [\n 'btn',\n `btn-${this.variant}`,\n `btn-${this.size}`,\n this.disabled ? 'btn-disabled' : '',\n this.loading ? 'btn-loading' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<button\n [type]=\"type\"\n [disabled]=\"loading || disabled\"\n [class]=\"buttonClasses\"\n (click)=\"handleClick()\"\n>\n @if (icon && !loading) {\n <i class=\"btn-icon\" [ngClass]=\"icon\"></i>\n }\n\n @if (loading) {\n <i class=\"btn-icon btn-icon-spin ri-refresh-line\"></i>\n }\n\n {{ loading ? loadingText : text }}\n</button>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { RouterLink, RouterModule } from '@angular/router';\n\n@Component({\n selector: 'app-link-button',\n standalone: true,\n imports: [CommonModule, RouterLink, RouterModule, TranslocoModule],\n templateUrl: './app-link-button.component.html',\n styleUrls: ['../app-button/app-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppLinkButtonComponent {\n @Input() disabled: boolean = false;\n @Input() loading: boolean = false;\n @Input() target: '_blank' | '_self' | '_parent' | '_top' = '_self';\n @Input() text: string = '';\n @Input() icon: string = '';\n @Input() loadingText: string = '';\n @Input() route: string = '';\n @Input() queryParams: Record<string, any> = {};\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n @Input() variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent' = 'primary';\n\n get buttonClasses(): string {\n return [\n 'btn',\n `btn-${this.variant}`,\n `btn-${this.size}`,\n this.disabled ? 'btn-disabled' : '',\n this.loading ? 'btn-loading' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<a\n class=\"{{ buttonClasses }}\"\n [routerLink]=\"!disabled ? route : null\"\n [queryParams]=\"queryParams\"\n [target]=\"target\"\n>\n @if (icon) {\n <i [class]=\"icon\"></i>\n }\n\n {{ loading ? loadingText : text }}\n</a>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ALERT_ICONS } from '../../../constants/alerts';\n\n@Component({\n selector: 'app-alert',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-alert.component.html',\n styleUrls: ['./app-alert.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppAlertComponent {\n @Input() type: 'success' | 'error' | 'warning' | 'info' = 'success';\n @Input() text: string = '';\n @Input() closeable: boolean = false;\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n\n get alertIcon(): string {\n return ALERT_ICONS[this.type] ?? ALERT_ICONS.info;\n }\n}\n","<div class=\"alert\" [class]=\"'alert--' + type + ' alert--' + size\" role=\"alert\">\n <div class=\"alert-content\">\n <i class=\"{{ alertIcon }}\"></i>\n <span>{{ text }}</span>\n </div>\n\n @if (closeable) {\n <span class=\"alert-close\">\n <i class=\"ri-close-line\"></i>\n </span>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n WritableSignal,\n signal,\n HostListener,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalSize } from '../../../types/modals/modal-size.type';\n\n@Component({\n selector: 'app-modal',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-modal.component.html',\n styleUrls: ['./app-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppModalComponent {\n @Input() title: string = '';\n @Input() disableClose: boolean = false;\n @Input() showHeader: boolean = true;\n @Input() showCloseButton: boolean = true;\n @Input() showTitle: boolean = true;\n @Input() isOpen: WritableSignal<boolean> = signal(false);\n @Input() size: ModalSize = 'md';\n @Output() closeModal = new EventEmitter<void>();\n\n onCloseModal(): void {\n if (this.disableClose) return;\n this.closeModal.emit();\n }\n\n @HostListener('document:keydown.escape')\n onKeydownEscape(): void {\n if (this.isOpen()) {\n this.onCloseModal();\n }\n }\n}\n","@if (isOpen()) {\n <div class=\"modal-overlay\">\n <div class=\"modal-backdrop\" (click)=\"onCloseModal()\"></div>\n\n <div class=\"modal-dialog\" [class]=\"'modal-dialog--' + size\">\n @if (showHeader && ((showTitle && !!title) || (showCloseButton && !disableClose))) {\n <div class=\"modal-header\">\n @if (showTitle && !!title) {\n <h3 class=\"modal-title\">{{ title }}</h3>\n }\n\n @if (showCloseButton && !disableClose) {\n <button class=\"modal-close-button\" (click)=\"onCloseModal()\">&times;</button>\n }\n </div>\n }\n\n <div class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppModalComponent } from '../app-modal/app-modal.component';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { FeedbackModalType } from '../../../types';\n\n@Component({\n selector: 'feedback-modal',\n standalone: true,\n imports: [CommonModule, AppModalComponent, AppButtonComponent],\n templateUrl: './feedback-modal.component.html',\n styleUrls: ['./feedback-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class FeedbackModalComponent implements OnChanges, OnDestroy {\n @Input() isOpen: WritableSignal<boolean> = signal(false);\n @Input() type: FeedbackModalType = 'info';\n @Input() title: string = '';\n @Input() message: string = '';\n @Input() showHeader: boolean = false;\n @Input() showCloseButton: boolean = false;\n @Input() showTitle: boolean = false;\n @Input() autoClose: boolean = false;\n @Input() autoCloseDuration: number = 3000;\n @Input() buttonText: string = '';\n\n @Output() closed = new EventEmitter<void>();\n\n private autoCloseTimeout: ReturnType<typeof setTimeout> | null = null;\n\n get defaultButtonText(): string {\n return this.type === 'loading' ? 'Cancelar' : 'Cerrar';\n }\n\n get resolvedButtonText(): string {\n return this.buttonText || this.defaultButtonText;\n }\n\n get buttonVariant(): 'primary' | 'secondary' {\n return this.type === 'loading' ? 'secondary' : 'primary';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.autoClose && this.isOpen()) {\n this.scheduleAutoClose();\n }\n }\n\n ngOnDestroy(): void {\n this.clearAutoClose();\n }\n\n closeModal(): void {\n this.clearAutoClose();\n this.isOpen.set(false);\n this.closed.emit();\n }\n\n private scheduleAutoClose(): void {\n this.clearAutoClose();\n this.autoCloseTimeout = setTimeout(() => {\n this.closeModal();\n }, this.autoCloseDuration);\n }\n\n private clearAutoClose(): void {\n if (this.autoCloseTimeout) {\n clearTimeout(this.autoCloseTimeout);\n this.autoCloseTimeout = null;\n }\n }\n}\n","<app-modal\n [showHeader]=\"showHeader\"\n [showCloseButton]=\"showCloseButton\"\n [showTitle]=\"showTitle\"\n [isOpen]=\"isOpen\"\n size=\"sm\"\n (closeModal)=\"closeModal()\"\n>\n <div class=\"feedback-modal-body\" [ngClass]=\"'feedback-modal-body--' + type\">\n <div class=\"feedback-modal-icon-wrapper\">\n @switch (type) {\n @case ('loading') {\n <div class=\"feedback-modal-spinner\"></div>\n }\n @case ('success') {\n <i class=\"ri-check-line feedback-modal-icon feedback-modal-icon--success\"></i>\n }\n @case ('error') {\n <i class=\"ri-error-warning-line feedback-modal-icon feedback-modal-icon--error\"></i>\n }\n @case ('warning') {\n <i class=\"ri-alert-line feedback-modal-icon feedback-modal-icon--warning\"></i>\n }\n @case ('info') {\n <i class=\"ri-info-i feedback-modal-icon feedback-modal-icon--info\"></i>\n }\n }\n </div>\n\n <h3 class=\"feedback-modal-title\">{{ title }}</h3>\n\n @if (message) {\n <p class=\"feedback-modal-message\">{{ message }}</p>\n }\n\n @if (resolvedButtonText && showCloseButton) {\n <app-button [text]=\"resolvedButtonText\" [variant]=\"buttonVariant\" (clicked)=\"closeModal()\" />\n }\n </div>\n</app-modal>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { BASE_INPUT_CLASSES, ERROR_INPUT_CLASSES } from '../../../constants/form-fields';\n\n@Component({\n selector: 'form-input',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './form-input.component.html',\n styleUrls: ['./form-input.component.scss'],\n})\nexport class FormInputComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() type = 'text';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() minlength: number | null = null;\n @Input() min: number | null = null;\n @Input() step: number | null = 1;\n @Input() pattern: string | null = null;\n @Input() fieldGroupClass: string = '';\n @Input() autocomplete: boolean = true;\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'email') {\n return this.transloco.translate('formErrors.email');\n }\n\n return this.transloco.translate(`formErrors.${errorKey}`);\n }\n\n get inputClasses(): string {\n return this.showError ? ERROR_INPUT_CLASSES : BASE_INPUT_CLASSES;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <input\n [type]=\"type\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [minlength]=\"minlength\"\n [pattern]=\"pattern || ''\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n class=\"form-input\"\n [autocomplete]=\"autocomplete\"\n [min]=\"min\"\n [step]=\"step\"\n />\n </div>\n\n @if (showError) {\n <div class=\"form-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { FormInputComponent } from '../../forms/form-input/form-input.component';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\nimport { AppAlertComponent } from '../app-alert/app-alert.component';\nimport { DeleteConfirmationService } from '../../../services/delete-confirmation.service';\n\n@Component({\n selector: 'delete-confirmation',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n AppButtonComponent,\n FormInputComponent,\n AppModalComponent,\n AppAlertComponent,\n ],\n templateUrl: './delete-confirmation.component.html',\n styleUrls: ['./delete-confirmation.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DeleteConfirmationComponent {\n deleteConfirmationForm: FormGroup;\n\n constructor(\n private fb: FormBuilder,\n private deleteConfirmationService: DeleteConfirmationService,\n protected transloco: TranslocoService,\n ) {\n this.deleteConfirmationForm = this.fb.group({\n confirmationText: ['', [Validators.required]],\n });\n }\n\n get title() {\n return this.deleteConfirmationService.modalTitle();\n }\n\n get resourceName() {\n return this.deleteConfirmationService.modalResourceName();\n }\n\n get confirmationText() {\n return this.deleteConfirmationService.modalConfirmationText();\n }\n\n get isOpen() {\n return this.deleteConfirmationService.modalIsOpen;\n }\n\n get isConfirmationValid(): boolean {\n const value = this.deleteConfirmationForm.value.confirmationText?.trim()?.toLowerCase();\n const confirmation = this.confirmationText?.trim()?.toLowerCase();\n return value == confirmation;\n }\n\n onCloseModal(): void {\n this.deleteConfirmationForm.reset();\n this.deleteConfirmationService.close();\n }\n\n onConfirmDelete(): void {\n const callback = this.deleteConfirmationService.getConfirmDeleteCallback();\n if (callback) {\n callback();\n }\n this.deleteConfirmationForm.reset();\n this.deleteConfirmationService.close();\n }\n}\n","@if (isOpen()) {\n <app-modal [title]=\"title\" [isOpen]=\"isOpen\" (closeModal)=\"onCloseModal()\">\n <form\n [formGroup]=\"deleteConfirmationForm\"\n method=\"POST\"\n class=\"delete-confirmation-content\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <app-alert\n type=\"warning\"\n [text]=\"'deleteConfirmation.warning' | transloco\"\n size=\"sm\"\n [closeable]=\"false\"\n />\n\n <p class=\"delete-confirmation-instructions\">\n {{ 'deleteConfirmation.instructions' | transloco }}\n\n <span class=\"delete-confirmation-highlight\">\n {{ confirmationText }}\n </span>\n </p>\n\n <form-input\n name=\"confirmationText\"\n type=\"text\"\n class=\"delete-confirmation-field\"\n [required]=\"true\"\n [autocomplete]=\"false\"\n formControlName=\"confirmationText\"\n [placeholder]=\"\n transloco.translate('deleteConfirmation.placeholder', { text: confirmationText })\n \"\n />\n\n <div class=\"delete-confirmation-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'deleteConfirmation.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'deleteConfirmation.delete' | transloco\"\n [disabled]=\"!isConfirmationValid\"\n size=\"sm\"\n />\n </div>\n </form>\n </app-modal>\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-badge',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-badge.component.html',\n styleUrl: './app-badge.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppBadgeComponent {\n @Input() text: string = '';\n @Input() color: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' = 'primary';\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n @Input() backgroundColor: string = '';\n @Input() textColor: string = '';\n}\n","<span\n class=\"badge\"\n [class]=\"'badge--' + color + ' badge--' + size\"\n [style.background-color]=\"backgroundColor || null\"\n [style.color]=\"textColor || null\"\n [style.color]=\"textColor || null\"\n>\n {{ text }}\n</span>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { Auditable } from '../../../interfaces/auditable.interface';\n\n@Component({\n selector: 'app-audit-information',\n standalone: true,\n imports: [CommonModule, DatePipe],\n templateUrl: './audit-information.component.html',\n styleUrls: ['./audit-information.component.scss'],\n})\nexport class AuditInformationComponent {\n @Input() data: Auditable | null = null;\n}\n","@if (data) {\n <div class=\"audit-information\">\n <div class=\"audit-information-section\">\n <div class=\"audit-information-header\">\n <p class=\"audit-information-header-title\">Información de auditoria</p>\n </div>\n\n <div class=\"audit-information-body\">\n <ul class=\"audit-information-list\">\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Fecha de creación:</span>\n <span>{{ data.created_at | date: 'medium' }}</span>\n </li>\n\n @if (data.created_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Creado por:</span>\n <span>\n {{ data.created_by_admin.first_name }} - {{ data.created_by_admin.email }}\n </span>\n </li>\n }\n\n @if (data.updated_at) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Última actualización:</span>\n <span>{{ data.updated_at | date: 'medium' }}</span>\n </li>\n }\n\n @if (data.updated_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Actualizado por:</span>\n <span>\n {{ data.updated_by_admin.first_name }} - {{ data.updated_by_admin.email }}\n </span>\n </li>\n }\n\n @if (data.is_published && data.published_at) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Fecha de publicación:</span>\n <span>{{ data.published_at | date: 'medium' }}</span>\n </li>\n }\n\n @if (data.is_published && data.published_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Publicado por:</span>\n <span>\n {{ data.published_by_admin.first_name }} - {{ data.published_by_admin.email }}\n </span>\n </li>\n }\n </ul>\n </div>\n </div>\n </div>\n}\n","import { Component, EventEmitter, Input, Output, Type, Injector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'dynamic-table',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './dynamic-table.component.html',\n styleUrls: ['./dynamic-table.component.scss'],\n})\nexport class DynamicTableComponent {\n constructor(private injector: Injector) {}\n\n @Input() title: string = '';\n @Input() data: any[] = [];\n @Input() headers: any[] = [];\n @Input() columnComponents: { [key: string]: Type<any> } = {};\n\n // Inputs necesarios para la paginación remota\n @Input() isLoading: boolean = true;\n @Input() totalItems: number = 0;\n @Input() itemsPerPage: number = 10;\n @Input() currentPage: number = 1;\n\n // Eventos para avisar al Backend\n @Output() pageChange = new EventEmitter<number>();\n @Output() searchChange = new EventEmitter<string>();\n\n // Visualización de paginación\n @Input() showPagination: boolean = true;\n\n // Visualización de búsqueda\n @Input() showSearch: boolean = true;\n\n // Visualización de título\n @Input() showTitle: boolean = true;\n\n get totalPages(): number {\n return Math.ceil(this.totalItems / this.itemsPerPage) || 1;\n }\n\n onSearch(event: any) {\n this.data = [];\n const value = event.target.value;\n this.searchChange.emit(value); // El padre recibe el término y hace el fetch\n }\n\n changePage(delta: number) {\n const newPage = this.currentPage + delta;\n if (newPage > 0 && newPage <= this.totalPages) {\n this.pageChange.emit(newPage); // El padre recibe la nueva página\n }\n }\n\n createInjector(row: any): Injector {\n return Injector.create({\n providers: [{ provide: 'ROW_DATA', useValue: row }],\n parent: this.injector,\n });\n }\n}\n","<div class=\"dynamic-table\">\n @if (showTitle || showSearch) {\n <div class=\"dynamic-table-toolbar\">\n @if (showTitle) {\n <h2 class=\"dynamic-table-title\">{{ title }}</h2>\n }\n\n @if (showSearch) {\n <input\n type=\"text\"\n (input)=\"onSearch($event)\"\n placeholder=\"Buscar...\"\n class=\"dynamic-table-search\"\n />\n }\n </div>\n }\n\n <div class=\"dynamic-table-scroll\">\n <table class=\"dynamic-table-table\">\n <thead class=\"dynamic-table-head\">\n <tr>\n @for (header of headers; track header.key) {\n <th class=\"dynamic-table-head-cell\">\n {{ header.label }}\n </th>\n }\n </tr>\n </thead>\n\n <tbody class=\"dynamic-table-body\">\n @if (isLoading) {\n <tr class=\"dynamic-table-row\">\n @for (header of headers; track header.key) {\n <td class=\"dynamic-table-cell\">\n <div class=\"dynamic-table-skeleton\"></div>\n </td>\n }\n </tr>\n }\n\n @for (row of data; track row) {\n <tr class=\"dynamic-table-row\">\n @for (header of headers; track header.key) {\n <td class=\"dynamic-table-cell dynamic-table-cell--nowrap\">\n @if (columnComponents[header.key]) {\n <ng-container\n *ngComponentOutlet=\"columnComponents[header.key]; injector: createInjector(row)\"\n ></ng-container>\n } @else {\n {{ row[header.key] || '---' }}\n }\n </td>\n }\n </tr>\n }\n\n @if ((!data || data.length < 1) && !isLoading) {\n <tr>\n <td [attr.colspan]=\"headers.length\" class=\"dynamic-table-empty\">\n No se encontraron registros en el servidor.\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n @if (showPagination) {\n <div class=\"dynamic-table-pagination\">\n <div class=\"dynamic-table-pagination-info\">\n Mostrando página\n <span class=\"dynamic-table-pagination-strong\">{{ currentPage }}</span> de\n <span class=\"dynamic-table-pagination-strong\">{{ totalPages }}</span>\n <span class=\"dynamic-table-pagination-total\">({{ totalItems }} registros totales)</span>\n </div>\n\n <div class=\"dynamic-table-pagination-actions\">\n <button\n (click)=\"changePage(-1)\"\n [disabled]=\"currentPage === 1\"\n class=\"dynamic-table-pagination-button\"\n >\n Anterior\n </button>\n <button\n (click)=\"changePage(1)\"\n [disabled]=\"currentPage >= totalPages\"\n class=\"dynamic-table-pagination-button\"\n >\n Siguiente\n </button>\n </div>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppLinkButtonComponent } from '../../buttons/app-link-button/app-link-button.component';\nimport { Show } from '../../../interfaces';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { DateService } from '../../../services';\nimport { SHOW_TYPE_COLORS as COLORS } from '../../../constants/shows/show-type-colors';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\n\n@Component({\n selector: 'show-card',\n standalone: true,\n imports: [CommonModule, AppLinkButtonComponent, AppBadgeComponent, TranslocoModule],\n templateUrl: './show-card.component.html',\n styleUrls: ['./show-card.component.scss'],\n})\nexport class ShowCardComponent {\n @Input({ required: true }) show!: Show;\n @Input() linkText: string = 'Ver funciones';\n @Input() linkUrlFn?: (show: Show) => string;\n @Input() linkQueryParams?: Record<string, any>;\n\n transloco = inject(TranslocoService);\n dateService = inject(DateService);\n\n get showTypeColor(): { bg: string; text: string } {\n return this.show.show_type ? COLORS[this.show.show_type] : COLORS['DEFAULT'];\n }\n\n formatTimeDate(date: string): Date {\n return new Date(date);\n }\n}\n","<div class=\"show-card\">\n <div class=\"show-card__image\">\n <app-badge\n [text]=\"`show.showTypes.${show.show_type}` | transloco\"\n [backgroundColor]=\"this.showTypeColor.bg\"\n [textColor]=\"this.showTypeColor.text\"\n size=\"xs\"\n class=\"show-card__badge\"\n />\n\n @if (show.images && show.images.length > 0) {\n <img [src]=\"show.images[0].full_url\" class=\"show-card__image-img\" />\n } @else {\n <span class=\"show-card__image-placeholder\"></span>\n }\n </div>\n\n <div class=\"show-card__info\">\n <p class=\"show-card__title\">\n {{ show.title }}\n </p>\n\n @if (show.next_performance) {\n <div class=\"show-card__datetime\">\n <span class=\"show-card__datetime-title\">\n {{ 'show.next_performance' | transloco }}\n </span>\n\n <br />\n\n <span class=\"show-card__date\">\n {{ show.next_performance.start_time | date: `EEEE` | titlecase }}\n {{ show.next_performance.start_time | date: `dd 'de' MMMM, hh:mm a` }}\n </span>\n </div>\n }\n\n @if (show.days_of_week && show.days_of_week.length > 0) {\n <div class=\"show-card__days\">\n @for (day of show.days_of_week; track $index) {\n <app-badge\n [text]=\"`common.daysOfWeekByNumber.${day}` | transloco\"\n size=\"xs\"\n backgroundColor=\"#525252\"\n textColor=\"#e5e5e5\"\n />\n }\n </div>\n }\n\n @if (show.unique_start_times && show.unique_start_times.length > 0) {\n <div class=\"show-card__times\">\n @for (time of show.unique_start_times; track $index) {\n <app-badge\n [text]=\"dateService.formatDate(formatTimeDate(time), 'hh:mm a')\"\n size=\"xs\"\n backgroundColor=\"#525252\"\n textColor=\"#e5e5e5\"\n />\n }\n </div>\n }\n\n <app-link-button\n class=\"show-card__link\"\n [route]=\"linkUrlFn ? linkUrlFn(show) : '#'\"\n [queryParams]=\"linkQueryParams ?? {}\"\n [text]=\"linkText\"\n icon=\"ri-calendar-line\"\n variant=\"primary\"\n size=\"sm\"\n />\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'show-card-skeleton',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './show-card-skeleton.component.html',\n styleUrls: ['./show-card-skeleton.component.scss'],\n})\nexport class ShowCardSkeletonComponent {}\n","<div class=\"show-card-skeleton\">\n <div class=\"show-card-skeleton__image\">\n <div class=\"show-card-skeleton__badge\"></div>\n </div>\n\n <div class=\"show-card-skeleton__info\">\n <div class=\"show-card-skeleton__title\"></div>\n\n <div class=\"show-card-skeleton__text\"></div>\n <div class=\"show-card-skeleton__text-sm\"></div>\n\n <div class=\"show-card-skeleton__tags\">\n <div class=\"show-card-skeleton__tag\"></div>\n <div class=\"show-card-skeleton__tag\"></div>\n <div class=\"show-card-skeleton__tag\"></div>\n </div>\n\n <div class=\"show-card-skeleton__tags\">\n <div class=\"show-card-skeleton__tag\"></div>\n <div class=\"show-card-skeleton__tag\"></div>\n </div>\n\n <div class=\"show-card-skeleton__button\"></div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\nimport { setStoredLanguage } from '../../../i18n/language.utils';\n\n@Component({\n selector: 'language-switcher',\n standalone: true,\n imports: [CommonModule, TranslocoModule],\n templateUrl: './language-switcher.component.html',\n styleUrls: ['./language-switcher.component.scss'],\n})\nexport class LanguageSwitcherComponent {\n availableLangs = ['es', 'en'];\n\n constructor(protected transloco: TranslocoService) {}\n\n get activeLang(): string {\n return this.transloco.getActiveLang();\n }\n\n switchLang(lang: string): void {\n this.transloco.setActiveLang(lang);\n setStoredLanguage(lang);\n }\n}\n","<div class=\"lang-switcher\">\n @for (lang of availableLangs; track lang) {\n <button\n (click)=\"switchLang(lang)\"\n class=\"lang-switcher-btn\"\n [class.active]=\"activeLang === lang\"\n [class.inactive]=\"activeLang !== lang\"\n >\n {{ lang | uppercase }}\n </button>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\n@Component({\n selector: 'form-select',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './form-select.component.html',\n styleUrls: ['./form-select.component.scss'],\n})\nexport class FormSelectComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = 'Seleccione una opción';\n @Input() required = false;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() options: SelectOption[] = [];\n @Input() fieldGroupClass: string = '';\n @Input() showDefaultOption: boolean = true;\n @Input() defaultOptionLabel: string = '';\n\n value: any = '';\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onSelectChange(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidSelection'),\n );\n }\n\n get resolvedDefaultOptionLabel(): string {\n return this.defaultOptionLabel || this.transloco.translate('common.selectOption');\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-select-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-select-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <select\n [id]=\"inputId\"\n [name]=\"name\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onSelectChange($event)\"\n (blur)=\"onTouched()\"\n class=\"form-select\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n >\n @if (showDefaultOption) {\n <option [value]=\"null\" disabled selected>{{ resolvedDefaultOptionLabel }}</option>\n }\n\n @for (option of options; track option.value) {\n <option [value]=\"option.value\" [disabled]=\"option.disabled\">\n {{ option.label }}\n </option>\n }\n </select>\n </div>\n\n @if (showError) {\n <div class=\"form-select-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\n\n@Component({\n selector: 'form-textarea',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './form-textarea.component.html',\n styleUrls: ['./form-textarea.component.scss'],\n})\nexport class FormTextareaComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() minlength: number | null = null;\n @Input() maxlength: number | null = null;\n @Input() rows: number = 4;\n @Input() cols: number | null = null;\n @Input() fieldGroupClass: string = '';\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(`formErrors.${errorKey}`);\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-textarea-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-textarea-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <textarea\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n class=\"form-textarea\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n ></textarea>\n </div>\n\n @if (showError) {\n <div class=\"form-textarea-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { TranslocoService } from '@jsverse/transloco';\nimport {\n Editor,\n NgxEditorComponent,\n NgxEditorMenuComponent,\n DEFAULT_TOOLBAR,\n Toolbar,\n toHTML,\n} from 'ngx-editor';\n\n@Component({\n selector: 'form-editor',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n NgxEditorComponent,\n NgxEditorMenuComponent,\n ],\n templateUrl: './form-editor.component.html',\n styleUrls: ['./form-editor.component.scss'],\n})\nexport class FormEditorComponent implements ControlValueAccessor, OnInit, OnDestroy {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() toolbar: Toolbar = DEFAULT_TOOLBAR;\n @Input() fieldGroupClass = '';\n\n editor!: Editor;\n value: string = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n private subscription: Subscription | null = null;\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.editor = new Editor();\n\n if (this.value) {\n this.editor.setContent(this.value);\n }\n\n this.subscription = this.editor.valueChanges\n .pipe(distinctUntilChanged())\n .subscribe((doc: Record<string, unknown>) => {\n this.value = toHTML(doc);\n this.onChange(this.value);\n this.onTouched();\n });\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n this.editor?.destroy();\n }\n\n writeValue(value: any): void {\n this.value = value ?? '';\n\n if (this.editor) {\n this.editor.setContent(value ?? null);\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n return control.invalid ? control.dirty || control.touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-editor-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-editor-required\">*</span>\n }\n </label>\n }\n\n <div class=\"form-editor-wrapper\" [class.disabled]=\"disabled\">\n <ngx-editor [editor]=\"editor\" outputFormat=\"html\" [placeholder]=\"placeholder\">\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"toolbar\"\n [disabled]=\"disabled\"\n ></ngx-editor-menu>\n </ngx-editor>\n </div>\n\n @if (showError) {\n <div class=\"form-editor-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import {\n Component,\n Input,\n Self,\n Optional,\n ElementRef,\n HostListener,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'color-picker',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n})\nexport class ColorPickerComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '#000000';\n @Input() required = false;\n @Input() readonly = false;\n @Input() fieldGroupClass: string = '';\n @Input() showPreview = true;\n @Input() presetColors: string[] = [\n '#000000',\n '#FFFFFF',\n '#EF4444',\n '#F97316',\n '#F59E0B',\n '#EAB308',\n '#84CC16',\n '#22C55E',\n '#10B981',\n '#14B8A6',\n '#06B6D4',\n '#0EA5E9',\n '#3B82F6',\n '#6366F1',\n '#8B5CF6',\n '#A855F7',\n '#D946EF',\n '#EC4899',\n '#F43F5E',\n '#6B7280',\n ];\n @Output() colorChange = new EventEmitter<string>();\n\n value: string = '#000000';\n disabled = false;\n isDropdownOpen = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private elementRef: ElementRef,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\n if (!clickedInside && this.isDropdownOpen) {\n this.isDropdownOpen = false;\n }\n }\n\n // Control value accessor methods\n writeValue(value: string): void {\n if (value) {\n this.value = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onColorChange(color: string): void {\n this.value = color;\n this.onChange(color);\n this.onTouched();\n }\n\n onInputColorChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n this.onChange(input.value);\n this.onTouched();\n this.colorChange.emit(input.value);\n }\n\n toggleDropdown(): void {\n if (this.disabled || this.readonly) return;\n this.isDropdownOpen = !this.isDropdownOpen;\n }\n\n selectPresetColor(color: string): void {\n this.onColorChange(color);\n this.colorChange.emit(color);\n this.isDropdownOpen = false;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n\n isValidHexColor(color: string): boolean {\n return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(color);\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"color-picker-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"color-picker-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <div class=\"color-picker-row\">\n <!-- Color Input -->\n <div class=\"color-picker-input-wrapper\">\n <input\n type=\"text\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInputColorChange($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n class=\"color-picker-input\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n pattern=\"^#[0-9A-Fa-f]{6}$\"\n />\n\n <!-- Native Color Picker (Hidden) -->\n <input\n type=\"color\"\n class=\"color-picker-native-input\"\n [disabled]=\"disabled || readonly\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onColorChange($event)\"\n />\n </div>\n\n <!-- Color Preview -->\n @if (showPreview) {\n <div class=\"color-picker-preview-wrapper\">\n <div\n class=\"color-picker-swatch\"\n [style.background-color]=\"value\"\n (click)=\"toggleDropdown()\"\n [class.disabled]=\"disabled || readonly\"\n ></div>\n </div>\n }\n </div>\n\n <!-- Color Presets Dropdown -->\n @if (isDropdownOpen && !disabled && !readonly) {\n <div class=\"color-picker-dropdown\">\n <div class=\"color-picker-presets\">\n @for (color of presetColors; track color) {\n <button\n type=\"button\"\n class=\"color-picker-preset-button\"\n [style.background-color]=\"color\"\n (click)=\"selectPresetColor(color)\"\n [attr.aria-label]=\"`Select color ${color}`\"\n ></button>\n }\n </div>\n\n <!-- Custom Color Input -->\n <div class=\"color-picker-custom\">\n <label class=\"color-picker-custom-label\">Custom color:</label>\n <input\n type=\"color\"\n class=\"color-picker-custom-input\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onColorChange($event)\"\n />\n </div>\n </div>\n }\n </div>\n\n @if (showError) {\n <div class=\"color-picker-error-message\">Please enter a valid hex color (e.g., #FF5733)</div>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\n\n@Component({\n selector: 'date-input',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './date-input.component.html',\n styleUrls: ['./date-input.component.scss'],\n})\nexport class DateInputComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() type = 'date';\n @Input() includeTime = false;\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() min: string | null = null;\n @Input() max: string | null = null;\n @Input() fieldGroupClass: string = '';\n @Input() dateFormat: string = 'yyyy-MM-dd';\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n if (value) {\n if (value instanceof Date) {\n this.value = this.formatDateForInput(value);\n } else if (typeof value === 'string') {\n this.value = value;\n } else {\n this.value = '';\n }\n } else {\n this.value = '';\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n const dateValue = value ? new Date(value) : null;\n this.onChange(dateValue);\n this.onTouched();\n }\n\n private formatDateForInput(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n\n if (this.includeTime) {\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n return `${year}-${month}-${day}T${hours}:${minutes}`;\n }\n\n return `${year}-${month}-${day}`;\n }\n\n private parseDateFromString(dateString: string): Date | null {\n if (!dateString) return null;\n const date = new Date(dateString);\n return isNaN(date.getTime()) ? null : date;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"date-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"date-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <input\n [type]=\"includeTime ? 'datetime-local' : type\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [min]=\"min\"\n [max]=\"max\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled\"\n class=\"date-input\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n [readonly]=\"readonly\"\n />\n </div>\n\n @if (showError) {\n <div class=\"date-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'toggle-switch',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './toggle-switch.component.html',\n styleUrls: ['./toggle-switch.component.scss'],\n})\nexport class ToggleSwitchComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() required = false;\n @Input() disabled = false;\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() fieldGroupClass: string = '';\n @Input() description = '';\n @Output() toggleClick = new EventEmitter<boolean>();\n\n value: boolean = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(@Self() @Optional() public ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n // Control value accessor methods\n writeValue(value: any): void {\n this.value = value ?? false;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onToggle(): void {\n this.value = !this.value;\n this.onChange(this.value);\n this.onTouched();\n this.toggleClick.emit(this.value);\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"toggle-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"toggle-required\">*</span>\n }\n </label>\n }\n\n <div class=\"toggle-container\">\n <button\n type=\"button\"\n role=\"switch\"\n [id]=\"inputId\"\n [name]=\"name\"\n [attr.aria-checked]=\"value\"\n [attr.aria-required]=\"required\"\n [disabled]=\"disabled\"\n [class]=\"\n 'toggle-switch ' +\n size +\n (value ? ' checked' : ' unchecked') +\n (disabled ? ' disabled' : '')\n \"\n (click)=\"onToggle()\"\n >\n <span\n [class]=\"\n 'toggle-thumb ' +\n size +\n (value ? ' checked' : ' unchecked') +\n (disabled ? ' disabled' : '')\n \"\n ></span>\n </button>\n\n @if (description) {\n <span class=\"toggle-description\">{{ description }}</span>\n }\n </div>\n\n <!-- Hidden checkbox for form submission and accessibility -->\n <input\n type=\"checkbox\"\n [id]=\"inputId + '-hidden'\"\n [name]=\"name\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n class=\"toggle-hidden\"\n (change)=\"onToggle()\"\n />\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FileType } from '../../../enums/file-type.enum';\nimport { UploadedFile } from '../../../interfaces/uploaded-file.interface';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\n\n@Component({\n selector: 'file-upload-preview',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule, AppButtonComponent],\n templateUrl: './file-upload-preview.component.html',\n styleUrls: ['./file-upload-preview.component.scss'],\n})\nexport class FileUploadPreviewComponent {\n @Input({ required: true }) file: UploadedFile = {} as UploadedFile;\n @Output() remove = new EventEmitter<UploadedFile>();\n\n removeFile(): void {\n this.remove.emit(this.file);\n }\n\n getFileType(file: UploadedFile): FileType {\n if (file.type.startsWith('image/')) return FileType.IMAGE;\n if (file.type === 'application/pdf') return FileType.PDF;\n if (\n file.type.includes('spreadsheet') ||\n file.type.includes('excel') ||\n file.extension === 'xlsx' ||\n file.extension === 'xls' ||\n file.extension === 'csv'\n ) {\n return FileType.EXCEL;\n }\n if (\n file.type.includes('word') ||\n file.type.includes('document') ||\n file.extension === 'docx' ||\n file.extension === 'doc'\n ) {\n return FileType.WORD;\n }\n if (file.type.startsWith('text/') || file.extension === 'txt') {\n return FileType.TEXT;\n }\n return FileType.DEFAULT;\n }\n\n getFileIcon(fileType: FileType): string {\n switch (fileType) {\n case FileType.IMAGE:\n return 'ri-image-line';\n case FileType.PDF:\n return 'ri-file-pdf-line';\n case FileType.EXCEL:\n return 'ri-file-excel-line';\n case FileType.WORD:\n return 'ri-file-word-line';\n case FileType.TEXT:\n return 'ri-file-text-line';\n default:\n return 'ri-file-line';\n }\n }\n\n getFileTypeIcon(file: UploadedFile): string {\n return this.getFileIcon(this.getFileType(file));\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n}\n","<div class=\"file-preview-item\">\n <div class=\"file-preview-content\">\n <!-- File Preview/Icon -->\n <div class=\"file-preview-icon-wrapper\">\n @if (file.preview) {\n <img [src]=\"file.preview\" [alt]=\"file.name\" class=\"file-preview-image\" />\n } @else {\n <div class=\"file-preview-icon-placeholder\">\n <i [class]=\"getFileTypeIcon(file) + ' file-preview-icon'\"></i>\n </div>\n }\n </div>\n\n <!-- File Info -->\n <div class=\"file-preview-info\">\n <p class=\"file-preview-name\">\n {{ file.name }}\n </p>\n <p class=\"file-preview-meta\">\n @if (!!file.size) {\n {{ formatFileSize(file.size) }}\n }\n @if (file.extension) {\n • {{ file.extension.toUpperCase() }}\n }\n </p>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"file-preview-actions\">\n <app-button\n icon=\"ri-delete-bin-line\"\n (clicked)=\"removeFile()\"\n variant=\"primary\"\n size=\"xs\"\n title=\"Eliminar archivo\"\n />\n </div>\n</div>\n","import { Component, Input, Self, Optional, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\nimport { FileUploadConfig } from '../../../interfaces/file-upload-config.interface';\nimport { UploadedFile } from '../../../interfaces/uploaded-file.interface';\nimport { FileType } from '../../../enums/file-type.enum';\nimport { FileUploadPreviewComponent } from '../file-upload-preview/file-upload-preview.component';\n\n@Component({\n selector: 'file-upload',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n FileUploadPreviewComponent,\n ],\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n})\nexport class FileUploadComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() fieldGroupClass: string = '';\n @Input() config: FileUploadConfig = {};\n @Input() accept: string = '*/*';\n\n @Output() fileSelected = new EventEmitter<UploadedFile[]>();\n @Output() fileRemoved = new EventEmitter<UploadedFile>();\n @Output() validationError = new EventEmitter<string>();\n\n files: UploadedFile[] = [];\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n dragOver = false;\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: UploadedFile[] | null): void {\n this.files = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onFileSelect(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n this.handleFiles(Array.from(input.files));\n }\n input.value = '';\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = false;\n\n if (event.dataTransfer?.files && event.dataTransfer.files.length > 0) {\n this.handleFiles(Array.from(event.dataTransfer.files));\n }\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = true;\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = false;\n }\n\n private async handleFiles(fileList: File[]): Promise<void> {\n const newFiles: UploadedFile[] = [];\n\n for (const file of fileList) {\n const validationError = this.validateFile(file);\n if (validationError) {\n this.validationError.emit(validationError);\n continue;\n }\n\n const uploadedFile: UploadedFile = {\n file,\n name: file.name,\n size: file.size,\n type: file.type,\n extension: this.getFileExtension(file.name),\n };\n\n if (this.isImage(file)) {\n uploadedFile.preview = await this.generateImagePreview(file);\n }\n\n newFiles.push(uploadedFile);\n }\n\n if (this.config.multiple) {\n const maxFiles = this.config.maxFiles || 10;\n const totalFiles = [...this.files, ...newFiles].slice(0, maxFiles);\n this.files = totalFiles;\n } else {\n this.files = newFiles.slice(0, 1);\n }\n\n this.onChange(this.files);\n this.onTouched();\n this.fileSelected.emit(this.files);\n }\n\n private validateFile(file: File): string | null {\n if (this.config.maxFileSize && file.size > this.config.maxFileSize) {\n const maxSizeMB = this.config.maxFileSize / (1024 * 1024);\n return this.transloco.translate('fileUpload.sizeError', {\n fileName: file.name,\n maxSize: maxSizeMB.toFixed(2),\n });\n }\n\n if (this.config.allowedExtensions && this.config.allowedExtensions.length > 0) {\n const extension = this.getFileExtension(file.name);\n if (!this.config.allowedExtensions.includes(extension)) {\n return this.transloco.translate('fileUpload.extensionError', {\n fileName: file.name,\n extensions: this.config.allowedExtensions.join(', '),\n });\n }\n }\n\n return null;\n }\n\n private getFileExtension(filename: string): string {\n return filename.split('.').pop()?.toLowerCase() || '';\n }\n\n private isImage(file: File): boolean {\n return file.type.startsWith('image/');\n }\n\n private async generateImagePreview(file: File): Promise<string> {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = (e) => {\n resolve(e.target?.result as string);\n };\n reader.readAsDataURL(file);\n });\n }\n\n removeFile(index: number): void {\n const removedFile = this.files[index];\n this.files.splice(index, 1);\n this.onChange(this.files);\n this.onTouched();\n this.fileRemoved.emit(removedFile);\n }\n\n getFileType(file: UploadedFile): FileType {\n if (file.type.startsWith('image/')) return FileType.IMAGE;\n if (file.type === 'application/pdf') return FileType.PDF;\n if (\n file.type.includes('spreadsheet') ||\n file.type.includes('excel') ||\n file.extension === 'xlsx' ||\n file.extension === 'xls' ||\n file.extension === 'csv'\n ) {\n return FileType.EXCEL;\n }\n if (\n file.type.includes('word') ||\n file.type.includes('document') ||\n file.extension === 'docx' ||\n file.extension === 'doc'\n ) {\n return FileType.WORD;\n }\n if (file.type.startsWith('text/') || file.extension === 'txt') {\n return FileType.TEXT;\n }\n return FileType.DEFAULT;\n }\n\n getFileIcon(fileType: FileType): string {\n switch (fileType) {\n case FileType.IMAGE:\n return 'ri-image-line';\n case FileType.PDF:\n return 'ri-file-pdf-line';\n case FileType.EXCEL:\n return 'ri-file-excel-line';\n case FileType.WORD:\n return 'ri-file-word-line';\n case FileType.TEXT:\n return 'ri-file-text-line';\n default:\n return 'ri-file-line';\n }\n }\n\n getFileTypeIcon(file: UploadedFile): string {\n return this.getFileIcon(this.getFileType(file));\n }\n\n triggerFileInput(): void {\n const inputElement = document.getElementById(this.inputId) as HTMLInputElement;\n if (inputElement) {\n inputElement.click();\n }\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n\n get uploadAreaClasses(): string {\n const baseClasses = 'file-upload-area';\n\n if (this.disabled) {\n return `${baseClasses} disabled`;\n }\n\n if (this.dragOver) {\n return `${baseClasses} drag-over`;\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"file-upload-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"file-upload-required\">*</span>\n }\n </label>\n }\n\n <!-- Upload Area -->\n <div\n class=\"file-upload-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n >\n <div [class]=\"uploadAreaClasses\" (click)=\"!disabled && triggerFileInput()\">\n <input\n [id]=\"inputId\"\n [name]=\"name\"\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"config.multiple\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (change)=\"onFileSelect($event)\"\n (blur)=\"onTouched()\"\n class=\"file-upload-hidden\"\n />\n\n <div class=\"file-upload-content\">\n <i class=\"ri-upload-cloud-2-line file-upload-icon\"></i>\n <div class=\"file-upload-text\">\n <p class=\"file-upload-primary-text\">\n @if (config.multiple) {\n {{ 'fileUpload.dropMultiple' | transloco }}\n } @else {\n {{ 'fileUpload.dropSingle' | transloco }}\n }\n </p>\n <p class=\"file-upload-secondary-text\">\n @if (config.allowedExtensions && config.allowedExtensions.length > 0) {\n {{ 'fileUpload.allowedExtensions' | transloco }}\n {{ config.allowedExtensions.join(', ') }}\n }\n @if (config.maxFileSize) {\n • {{ 'fileUpload.maxSize' | transloco }} {{ formatFileSize(config.maxFileSize) }}\n }\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Files Preview -->\n @if (files.length > 0) {\n <div class=\"file-upload-list\">\n @for (file of files; track file; let i = $index) {\n <file-upload-preview [file]=\"file\" (remove)=\"removeFile(i)\" />\n }\n </div>\n }\n\n <!-- Validation Error -->\n @if (showError) {\n <div class=\"file-upload-error\">\n {{ errorMessage }}\n </div>\n }\n\n <!-- File Type Legend -->\n @if (files.length === 0) {\n <div class=\"file-upload-legend\">\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-image-line file-upload-legend-icon-blue\"></i>\n <span>{{ 'fileUpload.fileTypeImages' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-pdf-line file-upload-legend-icon-red\"></i>\n <span>PDF</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-excel-line file-upload-legend-icon-green\"></i>\n <span>{{ 'fileUpload.fileTypeExcel' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-word-line file-upload-legend-icon-word\"></i>\n <span>{{ 'fileUpload.fileTypeWord' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-text-line file-upload-legend-icon-gray\"></i>\n <span>{{ 'fileUpload.fileTypeText' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-line file-upload-legend-icon-muted\"></i>\n <span>{{ 'fileUpload.fileTypeOther' | transloco }}</span>\n </div>\n </div>\n }\n</div>\n","import {\n Component,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n forwardRef,\n inject,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, NgControl, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { Subject, Observable, of } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n switchMap,\n takeUntil,\n catchError,\n map,\n} from 'rxjs/operators';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\nexport interface AsyncSelectConfig<T = any> {\n load: (params?: { search?: string; parentId?: number }) => Observable<T>;\n map: (response: T) => SelectOption[];\n}\n\n@Component({\n selector: 'async-select',\n standalone: true,\n imports: [CommonModule, FormsModule, NgSelectModule],\n templateUrl: './async-select.component.html',\n styleUrls: ['./async-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AsyncSelectComponent),\n multi: true,\n },\n ],\n})\nexport class AsyncSelectComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\n @Input() config?: AsyncSelectConfig<any>;\n @Input() items: SelectOption[] = [];\n @Input() parentId?: number | null;\n @Input() label = '';\n @Input() placeholder = 'Seleccione...';\n @Input() name = '';\n @Input() required = false;\n @Input() multiple = false;\n @Input() clearable = true;\n @Input() searchable = true;\n @Input() loading = false;\n @Input() virtualScroll = false;\n @Input() notFoundText = 'No se encontraron resultados';\n @Input() bindLabel = 'label';\n @Input() bindValue = 'value';\n @Input() disabled = false;\n\n value: any = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n displayItems: SelectOption[] = [];\n loadingSignal = signal(false);\n private searchTerm$ = new Subject<string>();\n private destroy$ = new Subject<void>();\n private injector = inject(Injector);\n private _ngControl: NgControl | null = null;\n\n constructor() {}\n\n private get ngControl(): NgControl | null {\n if (!this._ngControl) {\n this._ngControl = this.injector.get(NgControl, null);\n }\n return this._ngControl;\n }\n\n ngOnInit() {\n this.setupSearch();\n if (this.config) {\n this.loadAndMap();\n } else {\n this.displayItems = this.items;\n this.searchMode();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['parentId'] && !changes['parentId'].firstChange) {\n this.handleParentIdChange();\n }\n if (changes['items'] && !changes['items'].firstChange && !this.config) {\n this.displayItems = this.items;\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private setupSearch() {\n this.searchTerm$\n .pipe(\n debounceTime(400),\n distinctUntilChanged(),\n switchMap((term) => {\n if (this.config) {\n this.loadingSignal.set(true);\n return this.fetchData({ search: term });\n }\n return of(this.displayItems);\n }),\n takeUntil(this.destroy$),\n )\n .subscribe((options) => {\n this.displayItems = options;\n this.loadingSignal.set(false);\n });\n }\n\n private searchMode() {\n this.searchTerm$\n .pipe(\n debounceTime(400),\n distinctUntilChanged(),\n switchMap((term) => {\n this.loadingSignal.set(true);\n setTimeout(() => this.loadingSignal.set(false), 150);\n return of(\n this.items.filter((item) => item.label.toLowerCase().includes(term.toLowerCase())),\n );\n }),\n takeUntil(this.destroy$),\n )\n .subscribe((options) => {\n this.displayItems = options;\n });\n }\n\n private loadAndMap(params?: { search?: string; parentId?: number }) {\n if (!this.config) return;\n this.loadingSignal.set(true);\n this.fetchData(params)\n .pipe(takeUntil(this.destroy$))\n .subscribe((options) => {\n this.displayItems = options;\n this.loadingSignal.set(false);\n });\n }\n\n private fetchData(params?: { search?: string; parentId?: number }): Observable<SelectOption[]> {\n if (!this.config) return of([]);\n\n const mergedParams = { ...params };\n if (this.parentId != null && mergedParams.parentId == null) {\n mergedParams.parentId = this.parentId;\n }\n\n return this.config.load(mergedParams).pipe(\n map((res) => this.config!.map(res)),\n catchError(() => of([])),\n );\n }\n\n private handleParentIdChange() {\n this.value = this.multiple ? [] : null;\n this.onChange(this.value);\n\n if (this.parentId != null && this.config) {\n this.loadAndMap({ parentId: this.parentId });\n } else if (this.config) {\n this.displayItems = [];\n this.loadingSignal.set(false);\n }\n }\n\n onSearch(event: any) {\n const term = event?.term || '';\n this.searchTerm$.next(term);\n }\n\n onSelectChange(value: any) {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get typeahead$(): Subject<string> {\n return this.searchTerm$;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n return control.invalid ? control.dirty || control.touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n const errorKey = Object.keys(this.ngControl.errors)[0];\n return 'Campo inválido';\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"async-select-wrapper\">\n @if (label) {\n <label class=\"async-select-label\">\n {{ label }}\n @if (required) {\n <span class=\"async-select-required\">*</span>\n }\n </label>\n }\n\n <ng-select\n [items]=\"displayItems\"\n [multiple]=\"multiple\"\n [searchable]=\"searchable\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [loading]=\"loading || loadingSignal()\"\n [virtualScroll]=\"virtualScroll\"\n [notFoundText]=\"notFoundText\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [ngModel]=\"value\"\n [typeahead]=\"typeahead$\"\n [closeOnSelect]=\"!multiple\"\n [disabled]=\"disabled\"\n [class.error]=\"showError\"\n (ngModelChange)=\"onSelectChange($event)\"\n (blur)=\"onTouched()\"\n (search)=\"onSearch($event)\"\n />\n\n @if (showError) {\n <div class=\"async-select-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, signal, ViewEncapsulation, WritableSignal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { FormInputComponent } from '../../forms/form-input/form-input.component';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\nimport { ChangePasswordFormService } from '../../../services/change-password-form.service';\nimport { MustMatchValidator } from '../../../validators/must-match.validator';\nimport { CustomerService } from '../../../services/customer.service';\nimport { AdminService } from '../../../services/admin.service';\nimport { ToastService } from '../../../services/toast.service';\n\n@Component({\n selector: 'change-password-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n AppButtonComponent,\n FormInputComponent,\n AppModalComponent,\n ],\n providers: [AdminService, CustomerService],\n templateUrl: './change-password-form.component.html',\n styleUrls: ['./change-password-form.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ChangePasswordFormComponent {\n changePasswordForm: FormGroup;\n loading: WritableSignal<boolean> = signal(false);\n\n constructor(\n private fb: FormBuilder,\n private changePasswordFormService: ChangePasswordFormService,\n private customerService: CustomerService,\n private adminService: AdminService,\n private toastService: ToastService,\n private transloco: TranslocoService,\n ) {\n this.changePasswordForm = this.fb.group(\n {\n password: ['', [Validators.required, Validators.minLength(6)]],\n confirm_password: ['', [Validators.required, Validators.minLength(6)]],\n },\n {\n validators: MustMatchValidator('password', 'confirm_password'),\n },\n );\n }\n\n get isOpen() {\n return this.changePasswordFormService.modalIsOpen;\n }\n\n get resourceId() {\n return this.changePasswordFormService.resourceId;\n }\n\n onCloseModal(): void {\n this.changePasswordForm.reset();\n this.changePasswordFormService.close();\n }\n\n onConfirmDelete(): void {\n this.loading.set(true);\n\n const service = this.changePasswordFormService.isAdminMode()\n ? this.adminService\n : this.customerService;\n\n const isAdmin = this.changePasswordFormService.isAdminMode();\n const successKey = isAdmin ? 'changePassword.adminSuccess' : 'changePassword.customerSuccess';\n const errorKey = isAdmin ? 'changePassword.adminError' : 'changePassword.customerError';\n\n service.updateOne(this.resourceId(), this.changePasswordForm.value).subscribe({\n next: () => {\n this.toastService.show(this.transloco.translate(successKey), 'success');\n this.changePasswordForm.reset();\n this.changePasswordFormService.close();\n this.loading.set(false);\n },\n error: (error: any) => {\n console.error('Error al actualizar contraseña:', error);\n this.toastService.show(this.transloco.translate(errorKey), 'error');\n this.loading.set(false);\n },\n });\n }\n}\n","@if (isOpen()) {\n <app-modal\n [title]=\"'changePassword.title' | transloco\"\n [isOpen]=\"isOpen\"\n (closeModal)=\"onCloseModal()\"\n >\n <form\n [formGroup]=\"changePasswordForm\"\n method=\"POST\"\n class=\"change-password-form-body\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <form-input\n [label]=\"'changePassword.newPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.newPasswordPlaceholder' | transloco\"\n name=\"password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n [autocomplete]=\"false\"\n formControlName=\"password\"\n />\n\n <form-input\n [label]=\"'changePassword.confirmPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.confirmPasswordPlaceholder' | transloco\"\n name=\"confirm_password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n [autocomplete]=\"false\"\n formControlName=\"confirm_password\"\n />\n\n <div class=\"change-password-form-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'changePassword.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n [disabled]=\"loading() || changePasswordForm.invalid || changePasswordForm.pristine\"\n [loading]=\"loading()\"\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'changePassword.save' | transloco\"\n [loadingText]=\"'changePassword.saving' | transloco\"\n size=\"sm\"\n />\n </div>\n </form>\n </app-modal>\n}\n","import { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { AbstractControl, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ControlValueAccessor, Validator } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { AdminService } from '../../../services/admin.service';\nimport { Admin } from '../../../interfaces/admins/admin.interface';\n\n@Component({\n selector: 'admin-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './admin-select.component.html',\n styleUrls: ['./admin-select.component.scss'],\n})\nexport class AdminSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Equipo de trabajo';\n @Input() placeholder: string = 'Selecciona un equipo de trabajo';\n @Input() name: string = 'admin_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() adminChange = new EventEmitter<number | null>();\n\n admins: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private adminService: AdminService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.loadAdmins();\n }\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadAdmins() {\n this.loading.set(true);\n this.adminService\n .fetchAdmins()\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { admins } }: { data: { admins: Admin[] } }) => {\n this.admins.set(\n admins?.map((admin) => ({\n value: admin.id,\n label: `${admin.first_name} ${admin.last_name} - ${admin.email}`,\n })) || [],\n );\n this.loading.set(false);\n },\n error: () => {\n this.admins.set([]);\n this.loading.set(false);\n },\n });\n }\n\n // In admin-select.component.ts\n onAdminSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n // Update the local value\n this.value = value;\n\n // Update the form control if it exists\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n // Emit the change event\n this.adminChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n // Helper method to check if control is invalid\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'country_id'\"\n [class]=\"customClass\"\n [options]=\"admins()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onAdminSelected($event)\"\n/>\n","import {\n Component,\n OnInit,\n OnDestroy,\n forwardRef,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormControl,\n NG_VALIDATORS,\n Validator,\n AbstractControl,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CitiesService } from '../../../services/cities.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { CitiesResponse } from '../../../interfaces/cities/cities-response.interface';\nimport { formatCitiesResponseToSelect } from '../../../helpers/format-cities-response-to-select.helper';\n\n@Component({\n selector: 'city-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './city-select.component.html',\n styleUrls: ['./city-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CitySelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CitySelectComponent),\n multi: true,\n },\n ],\n})\nexport class CitySelectComponent\n implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Ciudad';\n @Input() name: string = 'city_id';\n @Input() placeholder: string = 'Selecciona una ciudad';\n @Input() required: boolean = false;\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() stateId: number | null = null;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() cityChange = new EventEmitter<number | null>();\n\n cities: WritableSignal<SelectOption[]> = signal([]);\n loading: boolean = false;\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private citiesService: CitiesService) {}\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnInit() {\n this.loadCities();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['stateId'] && !changes['stateId'].firstChange) {\n this.value = null;\n this.onChange(null);\n this.cityChange.emit(null);\n\n if (this.stateId) {\n this.loadCities();\n } else {\n this.cities.set([]);\n }\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadCities() {\n this.loading = true;\n this.citiesService\n .fetchCities({ stateId: this.stateId ?? undefined })\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: (response: CitiesResponse) => {\n this.cities.set(formatCitiesResponseToSelect(response));\n this.loading = false;\n },\n error: () => {\n this.cities.set([]);\n this.loading = false;\n },\n });\n }\n\n onCitySelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.cityChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n\n get isDisabled(): boolean {\n return this.disabled || this.readonly || !this.stateId || this.loading;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [class]=\"customClass\"\n [required]=\"required\"\n [options]=\"cities()\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onCitySelected($event)\"\n/>\n","import { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { AbstractControl, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ControlValueAccessor, Validator } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { CountryService } from '../../../services/country.service';\n\n@Component({\n selector: 'country-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './country-select.component.html',\n styleUrls: ['./country-select.component.scss'],\n})\nexport class CountrySelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'País';\n @Input() placeholder: string = 'Selecciona un país';\n @Input() name: string = 'country_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() countryChange = new EventEmitter<number | null>();\n\n countries: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private countryService: CountryService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.loadCountries();\n }\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadCountries() {\n this.loading.set(true);\n this.countryService\n .fetchCountries()\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { countries } }: { data: { countries: any[] } }) => {\n this.countries.set(\n countries?.map((country) => ({\n value: country.id,\n label: country.name,\n })) || [],\n );\n this.loading.set(false);\n },\n error: () => {\n this.countries.set([]);\n this.loading.set(false);\n },\n });\n }\n\n // In country-select.component.ts\n onCountrySelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n // Update the local value\n this.value = value;\n\n // Update the form control if it exists\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n // Emit the change event\n this.countryChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n // Helper method to check if control is invalid\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'country_id'\"\n [class]=\"customClass\"\n [options]=\"countries()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onCountrySelected($event)\"\n></form-select>\n","import {\n Component,\n OnInit,\n OnDestroy,\n forwardRef,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormControl,\n NG_VALIDATORS,\n Validator,\n AbstractControl,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { StatesService } from '../../../services/states.service';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\n@Component({\n selector: 'state-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './state-select.component.html',\n styleUrls: ['./state-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => StateSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => StateSelectComponent),\n multi: true,\n },\n ],\n})\nexport class StateSelectComponent\n implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Departamento';\n @Input() name: string = 'state_id';\n @Input() placeholder: string = 'Selecciona un departamento';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() countryId: number | null = null;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() stateChange = new EventEmitter<number | null>();\n\n states: WritableSignal<SelectOption[]> = signal([]);\n loading: boolean = false;\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private statesService: StatesService) {}\n\n ngOnInit() {\n this.loadStates();\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['countryId'] && !changes['countryId'].firstChange) {\n this.value = null;\n this.onChange(null);\n this.stateChange.emit(null);\n\n if (this.countryId) {\n this.loadStates();\n } else {\n this.states.set([]);\n }\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadStates() {\n this.loading = true;\n this.statesService\n .fetchStates(1, undefined, this.countryId!)\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { states } }: { data: { states: any[] } }) => {\n this.states.set(states?.map(({ id, name }) => ({ value: id, label: name })) || []);\n this.loading = false;\n },\n error: () => {\n this.states.set([]);\n this.loading = false;\n },\n });\n }\n\n onStateSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.stateChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n\n get isDisabled(): boolean {\n return this.readonly || !this.countryId || this.loading;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'state_id'\"\n [class]=\"customClass\"\n [options]=\"states()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onStateSelected($event)\"\n></form-select>\n","import { Component, Input, EventEmitter, Output, forwardRef } from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n FormControl,\n FormsModule,\n} from '@angular/forms';\nimport {\n AsyncSelectComponent,\n AsyncSelectConfig,\n} from '../../../components/forms/async-select/async-select.component';\nimport { CustomerService } from '../../../services/customer.service';\nimport { Customer } from '../../../interfaces/customers/customer.interface';\nimport { getCustomerFullname } from '../../../helpers/get-formatted-customer.helper';\n\n@Component({\n selector: 'customer-select',\n standalone: true,\n imports: [AsyncSelectComponent, FormsModule],\n templateUrl: './customer-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CustomerSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CustomerSelectComponent),\n multi: true,\n },\n ],\n})\nexport class CustomerSelectComponent implements ControlValueAccessor, Validator {\n @Input() label: string = 'Cliente';\n @Input() placeholder: string = 'Selecciona un cliente';\n @Input() name: string = 'customer_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() multiple = false;\n\n @Output() customerChange = new EventEmitter<number | null>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n config: AsyncSelectConfig = {\n load: (params) => this.customerService.fetchCustomers(1, params?.search || '', 50),\n map: (res) =>\n res.data.customers?.map((customer: Customer) => ({\n value: customer.id,\n label: `${getCustomerFullname(customer)} - ${customer.email}`.trim(),\n })) || [],\n };\n\n constructor(private customerService: CustomerService) {}\n\n onInternalChange(value: any) {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.customerChange.emit(value);\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n}\n","<async-select\n [config]=\"config\"\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'customer_id'\"\n [required]=\"required\"\n [multiple]=\"multiple\"\n [clearable]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onInternalChange($event)\"\n/>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { PerformanceService } from '../../../services/performance.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Performance } from '../../../interfaces/performances/performance.interface';\n\n@Component({\n selector: 'performance-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './performance-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PerformanceSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PerformanceSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PerformanceSelectComponent\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Función';\n @Input() placeholder: string = 'Selecciona una función';\n @Input() name: string = 'performance_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() performanceChange = new EventEmitter<number | null>();\n\n performances: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private performanceService: PerformanceService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.performanceService.loadPerformances({ search: this.searchTerm });\n\n this.performanceService.performances$\n .pipe(takeUntil(this.destroy$))\n .subscribe((performances: Performance[]) => {\n this.performances.set(\n performances?.map((p) => ({\n value: p.id,\n label: `${p.show?.title || `Show #${p.show_id}`} - ${new Date(p.start_time).toLocaleDateString()}`,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.performanceService.loadPerformances({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onPerformanceSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.performanceChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'performance_id'\"\n [class]=\"customClass\"\n [options]=\"performances()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onPerformanceSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { PerformanceService } from '../../../services/performance.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Performance } from '../../../interfaces/performances/performance.interface';\n\n@Component({\n selector: 'performance-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './performance-multi-select.component.html',\n styleUrls: ['./performance-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PerformanceMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PerformanceMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Funciones';\n @Input() placeholder: string = 'Buscar funciones...';\n\n allPerformances: WritableSignal<SelectOption[]> = signal([]);\n filteredPerformances: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private performanceService: PerformanceService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.performanceService.loadPerformances({});\n\n this.performanceService.performances$\n .pipe(takeUntil(this.destroy$))\n .subscribe((performances: Performance[]) => {\n this.allPerformances.set(\n performances?.map((p) => ({\n value: p.id,\n label: `${p.show?.title || `Show #${p.show_id}`} - ${new Date(p.start_time).toLocaleString()}`,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.performanceService.loadPerformances({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredPerformances.set(\n this.allPerformances().filter((p) => p.label.toLowerCase().includes(term)),\n );\n } else {\n this.filteredPerformances.set([...this.allPerformances()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n togglePerformance(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n }\n\n removePerformance(id: number) {\n this.togglePerformance(id);\n }\n\n getPerformanceLabel(id: number): string {\n return this.allPerformances().find((p) => p.value === id)?.label || '';\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"performance-multi-select\">\n @if (label) {\n <label class=\"performance-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"performance-multi-select-tags\">\n @for (id of selectedIds; track id) {\n <span class=\"performance-multi-select-tag\">\n {{ getPerformanceLabel(id) }}\n <button\n type=\"button\"\n class=\"performance-multi-select-tag-remove\"\n (click)=\"removePerformance(id)\"\n >\n &times;\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"performance-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"performance-multi-select-loading\">\n <div class=\"performance-multi-select-spinner\"></div>\n Cargando funciones...\n </div>\n }\n\n @if (!loading() && filteredPerformances().length > 0) {\n <div class=\"performance-multi-select-list\">\n @for (p of filteredPerformances(); track p.value) {\n <label class=\"performance-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(p.value)\"\n (change)=\"togglePerformance(p.value)\"\n class=\"performance-multi-select-checkbox\"\n />\n <span class=\"performance-multi-select-option-label\">{{ p.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredPerformances().length === 0) {\n <p class=\"performance-multi-select-empty\">No se encontraron funciones</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { ProductService } from '../../../services/product.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Product } from '../../../interfaces/products/product.interface';\n\n@Component({\n selector: 'product-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './product-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ProductSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ProductSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ProductSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Producto';\n @Input() placeholder: string = 'Selecciona un producto';\n @Input() name: string = 'product_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() productChange = new EventEmitter<number | null>();\n\n products: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private productService: ProductService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.productService.loadProducts({ search: this.searchTerm });\n\n this.productService.products$\n .pipe(takeUntil(this.destroy$))\n .subscribe((products: Product[]) => {\n this.products.set(\n products?.map((product) => ({\n value: product.id,\n label: product.name,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.productService.loadProducts({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onProductSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.productChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'product_id'\"\n [class]=\"customClass\"\n [options]=\"products()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onProductSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { ProductService } from '../../../services/product.service';\nimport { Product } from '../../../interfaces/products/product.interface';\n\ninterface ProductOption {\n value: number;\n label: string;\n imageUrl: string | null;\n}\n\n@Component({\n selector: 'product-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './product-multi-select.component.html',\n styleUrls: ['./product-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ProductMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ProductMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Productos';\n @Input() placeholder: string = 'Buscar productos...';\n @Input() set initialSelection(ids: number[] | null) {\n this.selectedIds = ids ?? [];\n }\n @Output() selectionChange = new EventEmitter<number[]>();\n\n allProducts: WritableSignal<ProductOption[]> = signal([]);\n filteredProducts: WritableSignal<ProductOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private productService: ProductService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.productService.loadProducts({ search: this.searchTerm });\n\n this.productService.products$\n .pipe(takeUntil(this.destroy$))\n .subscribe((products: Product[]) => {\n this.allProducts.set(\n products?.map((p) => ({\n value: p.id,\n label: p.name,\n imageUrl: p.images?.[0]?.full_url ?? null,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.productService.loadProducts({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredProducts.set(\n this.allProducts().filter((p) => p.label.toLowerCase().includes(term)),\n );\n } else {\n this.filteredProducts.set([...this.allProducts()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n toggleProduct(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n this.selectionChange.emit(this.selectedIds);\n }\n\n removeProduct(id: number) {\n this.toggleProduct(id);\n }\n\n getProductOption(id: number): ProductOption | undefined {\n return this.allProducts().find((p) => p.value === id);\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"product-multi-select\">\n @if (label) {\n <label class=\"product-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"product-multi-select-tags\">\n @for (id of selectedIds; track id) {\n @let product = getProductOption(id);\n <span class=\"product-multi-select-tag\">\n @if (product?.imageUrl) {\n <img [src]=\"product!.imageUrl\" alt=\"\" class=\"product-multi-select-tag-image\" />\n }\n {{ product?.label ?? id }}\n <button type=\"button\" class=\"product-multi-select-tag-remove\" (click)=\"removeProduct(id)\">\n &times;\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"product-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"product-multi-select-loading\">\n <div class=\"product-multi-select-spinner\"></div>\n Cargando productos...\n </div>\n }\n\n @if (!loading() && filteredProducts().length > 0) {\n <div class=\"product-multi-select-list\">\n @for (p of filteredProducts(); track p.value) {\n <label class=\"product-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(p.value)\"\n (change)=\"toggleProduct(p.value)\"\n class=\"product-multi-select-checkbox\"\n />\n @if (p.imageUrl) {\n <img [src]=\"p.imageUrl\" alt=\"\" class=\"product-multi-select-option-image\" />\n } @else {\n <div class=\"product-multi-select-option-image-placeholder\">\n <i class=\"ri-image-line\"></i>\n </div>\n }\n <span class=\"product-multi-select-option-label\">{{ p.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredProducts().length === 0) {\n <p class=\"product-multi-select-empty\">No se encontraron productos</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { ShowService } from '../../../services/show.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Show } from '../../../interfaces/shows/show.interface';\n\n@Component({\n selector: 'show-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './show-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ShowSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ShowSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ShowSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Función';\n @Input() placeholder: string = 'Selecciona una función';\n @Input() name: string = 'show_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() showChange = new EventEmitter<number | null>();\n\n shows: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private showService: ShowService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.showService.loadShows({ search: this.searchTerm });\n\n this.showService.shows$.pipe(takeUntil(this.destroy$)).subscribe((shows: Show[]) => {\n const formatted = shows?.map((show) => ({ value: show.id, label: show.title })) || [];\n this.shows.set(formatted);\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.showService.loadShows({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onShowSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.showChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'show_id'\"\n [class]=\"customClass\"\n [options]=\"shows()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onShowSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { ShowService } from '../../../services/show.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Show } from '../../../interfaces/shows/show.interface';\n\n@Component({\n selector: 'show-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './show-multi-select.component.html',\n styleUrls: ['./show-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ShowMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ShowMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Funciones';\n @Input() placeholder: string = 'Buscar funciones...';\n\n allShows: WritableSignal<SelectOption[]> = signal([]);\n filteredShows: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private showService: ShowService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.showService.loadShows({});\n\n this.showService.shows$.pipe(takeUntil(this.destroy$)).subscribe((shows: Show[]) => {\n this.allShows.set(\n shows?.map((show) => ({\n value: show.id,\n label: show.title,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.showService.loadShows({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredShows.set(this.allShows().filter((s) => s.label.toLowerCase().includes(term)));\n } else {\n this.filteredShows.set([...this.allShows()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n toggleShow(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n }\n\n removeShow(id: number) {\n this.toggleShow(id);\n }\n\n getShowLabel(id: number): string {\n return this.allShows().find((s) => s.value === id)?.label || '';\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"show-multi-select\">\n @if (label) {\n <label class=\"show-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"show-multi-select-tags\">\n @for (id of selectedIds; track id) {\n <span class=\"show-multi-select-tag\">\n {{ getShowLabel(id) }}\n <button type=\"button\" class=\"show-multi-select-tag-remove\" (click)=\"removeShow(id)\">\n &times;\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"show-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"show-multi-select-loading\">\n <div class=\"show-multi-select-spinner\"></div>\n Cargando funciones...\n </div>\n }\n\n @if (!loading() && filteredShows().length > 0) {\n <div class=\"show-multi-select-list\">\n @for (show of filteredShows(); track show.value) {\n <label class=\"show-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(show.value)\"\n (change)=\"toggleShow(show.value)\"\n class=\"show-multi-select-checkbox\"\n />\n <span class=\"show-multi-select-option-label\">{{ show.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredShows().length === 0) {\n <p class=\"show-multi-select-empty\">No se encontraron funciones</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { PriceZoneService } from '../../../services/price-zone.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { PriceZone } from '../../../interfaces/price-zones/price-zone.interface';\n\n@Component({\n selector: 'price-zone-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './price-zone-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PriceZoneSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PriceZoneSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PriceZoneSelectComponent\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Categoría';\n @Input() placeholder: string = 'Selecciona una categoría';\n @Input() name: string = 'price_zone_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() priceZoneChange = new EventEmitter<number | null>();\n\n priceZones: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private priceZoneService: PriceZoneService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.priceZoneService.loadPriceZones({ search: this.searchTerm });\n\n this.priceZoneService.priceZones$\n .pipe(takeUntil(this.destroy$))\n .subscribe((priceZones: PriceZone[]) => {\n this.priceZones.set(\n priceZones?.map((pz) => ({\n value: pz.id,\n label: pz.name,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.priceZoneService.loadPriceZones({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onPriceZoneSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.priceZoneChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'price_zone_id'\"\n [class]=\"customClass\"\n [options]=\"priceZones()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onPriceZoneSelected($event)\"\n></form-select>\n","import {\n Component,\n effect,\n ElementRef,\n Inject,\n Input,\n PLATFORM_ID,\n signal,\n untracked,\n ViewChild,\n WritableSignal,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { AppAlertComponent } from '../../feedback/app-alert/app-alert.component';\nimport { PerformanceAvailableDay } from '../../../interfaces';\nimport { PerformanceService, ToastService } from '../../../services';\n\n@Component({\n selector: 'day-selector-grid',\n standalone: true,\n imports: [CommonModule, AppAlertComponent],\n templateUrl: './day-selector-grid.component.html',\n styleUrls: ['./day-selector-grid.component.scss'],\n})\nexport class DaySelectorGridComponent {\n @Input() displayMode: 'grid' | 'carousel' = 'grid';\n loadingData: WritableSignal<boolean> = signal(true);\n days: WritableSignal<PerformanceAvailableDay[]> = signal([]);\n @ViewChild('carouselTrack') carouselTrack?: ElementRef<HTMLElement>;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected performanceService: PerformanceService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n ) {\n effect(() => {\n if (isPlatformBrowser(this.platformId)) {\n this.days.set([]);\n this.listEventService.setSelectedDay(null);\n this.loadData();\n }\n });\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n const showId = this.listEventService.filteredShowId() ?? undefined;\n\n this.performanceService.fetchAvailableDays({ show_id: showId }).subscribe({\n next: (response) => {\n const days = response?.data?.days ?? [];\n this.days.set(days);\n if (days.length > 0 && !untracked(() => this.listEventService.selectedDay())) {\n this.listEventService.setSelectedDay(days[0]);\n }\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar los datos de la función.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n isDayActive(day: PerformanceAvailableDay): boolean {\n return day.date === this.listEventService.selectedDay()?.date;\n }\n\n onToggle(day: PerformanceAvailableDay): void {\n if (this.isDayActive(day)) return;\n this.listEventService.setSelectedPerformance(null);\n this.listEventService.setSelectedDay(day);\n }\n\n scrollCarousel(direction: 1 | -1): void {\n const track = this.carouselTrack?.nativeElement;\n if (!track) return;\n const item = track.children[0] as HTMLElement | undefined;\n const itemWidth = item?.offsetWidth ?? 112;\n track.scrollBy({ left: direction * (itemWidth + 8), behavior: 'smooth' });\n }\n}\n","@if (loadingData()) {\n <div class=\"day-selector-grid\">\n @for (i of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; track $index) {\n <div class=\"day-selector-grid-skeleton-item\"></div>\n }\n </div>\n}\n\n@if (!loadingData() && days().length < 1) {\n <app-alert\n type=\"error\"\n text=\"No se encontraron funciones disponibles\"\n size=\"md\"\n [closeable]=\"false\"\n />\n}\n\n@if (days().length > 0) {\n <p class=\"day-selector-heading\">Selecciona un día</p>\n}\n\n@if (displayMode === 'carousel' && days().length > 0) {\n <div class=\"day-selector-carousel\">\n <button\n type=\"button\"\n (click)=\"scrollCarousel(-1)\"\n class=\"day-selector-carousel-arrow day-selector-carousel-arrow--left\"\n aria-label=\"Anterior\"\n >\n <i class=\"ri-arrow-left-s-line\"></i>\n </button>\n <div #carouselTrack class=\"day-selector-carousel-track\">\n @for (item of days(); track $index) {\n <button\n (click)=\"onToggle(item)\"\n class=\"day-selector-carousel-item\"\n [class.day-selector-item--active]=\"isDayActive(item)\"\n >\n <span class=\"day-selector-item-weekday\">\n {{ item.date | date: 'EEE' | uppercase }}\n </span>\n <span class=\"day-selector-item-day\">\n {{ item.date | date: 'dd' }}\n </span>\n <span class=\"day-selector-item-month\">\n {{ item.date | date: 'MMM' }}\n </span>\n <span class=\"day-selector-item-count\">\n {{ item.count | number: '1.0-2' }}\n </span>\n </button>\n }\n </div>\n <button\n type=\"button\"\n (click)=\"scrollCarousel(1)\"\n class=\"day-selector-carousel-arrow day-selector-carousel-arrow--right\"\n aria-label=\"Siguiente\"\n >\n <i class=\"ri-arrow-right-s-line\"></i>\n </button>\n </div>\n} @else {\n <div class=\"day-selector-grid\">\n @for (item of days(); track $index) {\n <button\n (click)=\"onToggle(item)\"\n class=\"day-selector-grid-item\"\n [class.day-selector-item--active]=\"isDayActive(item)\"\n >\n <span class=\"day-selector-item-weekday\">\n {{ item.date | date: 'EEE' | uppercase }}\n </span>\n <span class=\"day-selector-item-day\">\n {{ item.date | date: 'dd' }}\n </span>\n <span class=\"day-selector-item-month\">\n {{ item.date | date: 'MMM' }}\n </span>\n <span class=\"day-selector-item-count\">\n {{ item.count | number: '1.0-2' }}\n </span>\n </button>\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { AppLinkButtonComponent } from '../../buttons/app-link-button/app-link-button.component';\nimport { DailyPerformanceItem } from '../../../interfaces';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { TICKET_MAP_LAST_TICKETS_LIMIT } from '../../../constants';\n\n@Component({\n selector: 'performance-card',\n standalone: true,\n imports: [CommonModule, AppLinkButtonComponent, AppBadgeComponent],\n templateUrl: './performance-card.component.html',\n styleUrls: ['./performance-card.component.scss'],\n})\nexport class PerformanceCardComponent {\n @Input({ required: true }) card!: DailyPerformanceItem;\n @Input() linkText: string = 'Comprar entradas';\n @Input() linkUrlFn?: (card: DailyPerformanceItem) => string;\n @Input() linkQueryParams?: Record<string, any>;\n\n constructor(protected listEventService: PerformancesListEventsService) {}\n\n get badgeColor(): 'success' | 'error' {\n return this.card.available_tickets_count > TICKET_MAP_LAST_TICKETS_LIMIT ? 'success' : 'error';\n }\n\n onSelect(): void {\n this.listEventService.setSelectedPerformance(this.card);\n }\n\n isSelected(): boolean {\n return this.listEventService.selectedPerformance()?.id === this.card.id;\n }\n}\n","<div class=\"performance-card\" [class.performance-card--selected]=\"isSelected()\">\n <div class=\"performance-card-image\">\n @if (card.show.images && card.show.images.length > 0) {\n <img [src]=\"card.show.images[0].full_url\" class=\"performance-card-image-img\" />\n } @else {\n <span class=\"performance-card-image-placeholder\"></span>\n }\n </div>\n\n <div class=\"performance-card-info\">\n <div class=\"performance-card-title\">\n {{ card.show.title }}\n </div>\n\n <div class=\"performance-card-datetime\">\n <span class=\"performance-card-date\">\n {{ card.start_time | date: `EEEE` | titlecase }}\n {{ card.start_time | date: `dd 'de' MMMM,` }}\n </span>\n\n <span class=\"performance-card-time\">\n {{ card.start_time | date: `hh:mm` }}\n </span>\n\n <span class=\"performance-card-meridiem\">\n {{ card.start_time | date: 'a' }}\n </span>\n </div>\n\n <ul class=\"performance-card-location\">\n @if (card.hall) {\n <li class=\"performance-card-location__item\">\n <i class=\"ri-armchair-line\"></i>\n <strong>Sala:</strong>\n <span>{{ card.hall.name }}</span>\n </li>\n }\n\n @if (card.venue) {\n <li class=\"performance-card-location__item\">\n <i class=\"ri-building-4-line\"></i>\n <strong>Teatro:</strong>\n <span>{{ card.venue.name }}</span>\n </li>\n }\n </ul>\n </div>\n\n <div class=\"performance-card-actions\">\n <app-badge\n [text]=\"`${card.available_tickets_count} entrada(s) disponible(s)`\"\n size=\"xs\"\n [color]=\"badgeColor\"\n />\n\n <div class=\"performance-card-price\">\n Desde\n\n <span class=\"performance-card-price-value\">\n ${{ card.zone_price_cheapest | number: '1.0-2' }}\n </span>\n </div>\n\n <app-link-button\n [style.width]=\"'100%'\"\n [route]=\"linkUrlFn ? linkUrlFn(card) : '#'\"\n [queryParams]=\"linkQueryParams ?? {}\"\n [text]=\"linkText\"\n icon=\"ri-coupon-line\"\n variant=\"primary\"\n size=\"xs\"\n />\n </div>\n</div>\n","import {\n Component,\n effect,\n Inject,\n Input,\n PLATFORM_ID,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformanceCardComponent } from '../performance-card/performance-card.component';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { DailyPerformanceItem } from '../../../interfaces';\nimport { PerformanceService, ToastService } from '../../../services';\n\n@Component({\n selector: 'performance-card-list',\n standalone: true,\n imports: [PerformanceCardComponent, CommonModule],\n templateUrl: './performance-card-list.component.html',\n styleUrls: ['./performance-card-list.component.scss'],\n})\nexport class PerformanceCardListComponent {\n @Input() linkText: string = 'Comprar entradas';\n @Input() linkUrlFn?: (card: DailyPerformanceItem) => string;\n @Input() linkQueryParams?: Record<string, any>;\n loadingData: WritableSignal<boolean> = signal(true);\n performances: WritableSignal<DailyPerformanceItem[]> = signal([]);\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected performanceService: PerformanceService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n ) {\n effect(() => {\n const date = this.listEventService.selectedDayDate();\n if (date) {\n this.loadData();\n }\n });\n\n effect(() => {\n this.listEventService.filteredShowId();\n this.performances.set([]);\n const date = this.listEventService.selectedDayDate();\n if (date) {\n this.loadData();\n }\n });\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.loadData();\n }\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n const date = this.listEventService.selectedDayDate();\n const showId = this.listEventService.filteredShowId() ?? undefined;\n if (!date) {\n this.loadingData.set(false);\n return;\n }\n\n this.performanceService.fetchDailyPerformances({ date, show_id: showId }).subscribe({\n next: (response) => {\n this.performances.set(response?.data?.performances ?? []);\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar los datos de la función.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n get selectedDayDate(): string | null {\n return this.listEventService.selectedDay()?.date ?? null;\n }\n}\n","@if (selectedDayDate) {\n <p class=\"performance-card-list-heading\">\n <span>Funciones disponibles:</span>\n <span class=\"performance-card-list-heading-date\">\n el {{ selectedDayDate | date: \"EEEE d 'de' MMMM\" }}\n </span>\n </p>\n}\n\n<div class=\"performance-card-list\">\n @if (loadingData()) {\n @for (i of [1, 2]; track $index) {\n <div class=\"performance-card-list-skeleton\"></div>\n }\n }\n\n @for (card of performances(); track $index) {\n <performance-card\n [card]=\"card\"\n [linkQueryParams]=\"linkQueryParams\"\n [linkText]=\"linkText\"\n [linkUrlFn]=\"linkUrlFn\"\n />\n }\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'performance-stepper',\n standalone: true,\n templateUrl: './performance-stepper.component.html',\n styleUrls: ['./performance-stepper.component.scss'],\n})\nexport class PerformanceStepperComponent {\n @Input({ required: true }) stepLabel!: string;\n @Input({ required: true }) title!: string;\n @Input({ required: true }) highlight!: string;\n}\n","<div class=\"performance-stepper-label\">\n <span class=\"performance-stepper-label-bar\"></span>\n {{ stepLabel }}\n</div>\n\n<h1 class=\"performance-stepper-title\">\n <span class=\"performance-stepper-title-main\">{{ title }} </span\n ><span class=\"performance-stepper-title-highlight\">{{ highlight }}</span>\n</h1>\n","import { Component, Inject, PLATFORM_ID, signal, WritableSignal } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { Router } from '@angular/router';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { Show } from '../../../interfaces';\nimport { ShowService, ToastService } from '../../../services';\nimport { AppAlertComponent } from '../../feedback/app-alert/app-alert.component';\n\n@Component({\n selector: 'shows-filter',\n standalone: true,\n imports: [AppButtonComponent, CommonModule, AppAlertComponent],\n templateUrl: './shows-filter.component.html',\n styleUrls: ['./shows-filter.component.scss'],\n})\nexport class ShowsFilterComponent {\n loadingData: WritableSignal<boolean> = signal(true);\n shows: WritableSignal<Show[]> = signal([]);\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected showService: ShowService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.loadData();\n }\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n\n this.showService.fetchAvailableShows({}).subscribe({\n next: (response) => {\n this.shows.set(response?.data?.shows ?? []);\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar shows del filtro.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n isActive(showId: number): boolean {\n return this.listEventService.filteredShowId() === showId;\n }\n\n onFilter(show: Show): void {\n const isCurrentlyActive = this.isActive(show.id);\n if (isCurrentlyActive) {\n this.listEventService.setFilteredShowId(null);\n this.router.navigate([], {\n queryParams: { show_id: null },\n queryParamsHandling: 'merge',\n });\n } else {\n this.listEventService.setFilteredShowId(show.id);\n this.router.navigate([], {\n queryParams: { show_id: show.id },\n queryParamsHandling: 'merge',\n });\n }\n this.listEventService.setSelectedDay(null);\n this.listEventService.setSelectedPerformance(null);\n }\n}\n","<div class=\"shows-filter\">\n <p class=\"shows-filter-heading\">Filtrar por evento</p>\n\n @if (loadingData()) {\n @for (i of [1, 2, 3]; track $index) {\n <div class=\"shows-filter-skeleton\"></div>\n }\n }\n\n @if (!loadingData() && shows().length < 1) {\n <app-alert text=\"No hay shows disponibles para filtrar\" size=\"xs\" type=\"error\" />\n }\n\n @for (show of shows(); track $index) {\n <div class=\"shows-filter-item\" [class.shows-filter-item--active]=\"isActive(show.id)\">\n <div class=\"shows-filter-item-info\">\n <span class=\"shows-filter-item-image\">\n @if (show.images.length > 0) {\n <img [src]=\"show.images[0].full_url\" class=\"shows-filter-item-image-img\" />\n } @else {\n <span class=\"shows-filter-item-image-placeholder\"></span>\n }\n </span>\n\n <div>\n <div class=\"shows-filter-item-title\">{{ show.title }}</div>\n @if (show.performances_quantity && show.performances_quantity > 0) {\n <div class=\"shows-filter-item-count\">{{ show.performances_quantity }} funciones</div>\n }\n </div>\n </div>\n\n <div class=\"shows-filter-item-actions\">\n @if (isActive(show.id)) {\n <app-button\n variant=\"tertiary\"\n icon=\"ri-close-line\"\n size=\"xs\"\n (clicked)=\"onFilter(show)\"\n />\n } @else {\n <app-button variant=\"primary\" text=\"Filtrar\" size=\"xs\" (clicked)=\"onFilter(show)\" />\n }\n </div>\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { PriceZoneItem } from '../../../interfaces/price-zones/price-zone-item.interface';\n\n@Component({\n selector: 'zone-price-item',\n standalone: true,\n templateUrl: './zone-price-item.component.html',\n styleUrls: ['./zone-price-item.component.scss'],\n imports: [],\n})\nexport class ZonePriceItemComponent {\n @Input({ required: true }) zone!: PriceZoneItem;\n}\n","<div class=\"zone-price-item\">\n <div class=\"zone-price-item__info\">\n <span class=\"zone-price-item__swatch\" [style.background-color]=\"zone.color || null\"></span>\n <div class=\"zone-price-item__texts\">\n <div class=\"zone-price-item__name\">\n {{ zone.name }}\n </div>\n <div class=\"zone-price-item__seats\">{{ zone.available_seats }} sillas disponibles</div>\n </div>\n </div>\n <div class=\"zone-price-item__price\">{{ zone.price }}</div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { ZonePriceItemComponent } from '../zone-price-item/zone-price-item.component';\nimport { PriceZoneItem } from '../../../interfaces/price-zones/price-zone-item.interface';\n\n@Component({\n selector: 'zone-price-list',\n standalone: true,\n imports: [ZonePriceItemComponent],\n templateUrl: './zone-price-list.component.html',\n styleUrls: ['./zone-price-list.component.scss'],\n})\nexport class ZonePriceListComponent {\n @Input({ required: true }) zones!: PriceZoneItem[];\n}\n","<p class=\"zone-price-list-title\">ZONAS Y PRECIOS</p>\n\n<div class=\"zone-price-list\">\n @for (zone of zones; track $index) {\n <zone-price-item [zone]=\"zone\" />\n }\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ticket-map-widget',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-widget.component.html',\n styleUrl: './ticket-map-widget.component.scss',\n})\nexport class TicketMapWidgetComponent {}\n","<div class=\"ticket-map-widget\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ticket-map-widget-header',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-widget-header.component.html',\n styleUrl: './ticket-map-widget-header.component.scss',\n})\nexport class TicketMapWidgetHeaderComponent {\n @Input() title: string = '';\n}\n","<div class=\"ticket-map-widget-header\">\n @if (title) {\n <p class=\"ticket-map-widget-header__title\">{{ title }}</p>\n }\n\n <div class=\"ticket-map-widget-header__content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapZoomService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-zoom-controls',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-zoom-controls.component.html',\n styleUrl: './ticket-map-zoom-controls.component.scss',\n})\nexport class TicketMapZoomControlsComponent {\n readonly currentZoom = computed(() => this.zoomService.currentZoom());\n readonly zoomPercentage = computed(() => this.zoomService.getZoomPercentage());\n\n constructor(private zoomService: TicketMapZoomService) {}\n\n zoomIn(): void {\n this.zoomService.zoomIn();\n }\n\n zoomOut(): void {\n this.zoomService.zoomOut();\n }\n\n resetZoom(): void {\n this.zoomService.resetZoom();\n }\n\n fitToContainer(): void {\n this.zoomService.fitToContainer();\n }\n\n handleZoomAction(action: string): void {\n switch (action) {\n case 'ZOOM_IN':\n this.zoomIn();\n break;\n case 'ZOOM_OUT':\n this.zoomOut();\n break;\n case 'ZOOM_RESET':\n this.resetZoom();\n break;\n }\n }\n}\n","<div class=\"ticket-map-zoom-controls\">\n <button (click)=\"zoomOut()\" class=\"canvas-button\" title=\"Zoom -\">\n <i class=\"ri-zoom-out-line text-sm\"></i>\n </button>\n\n <span class=\"zoom-percentage\">{{ zoomPercentage() }}</span>\n\n <button (click)=\"zoomIn()\" class=\"canvas-button\" title=\"Zoom +\">\n <i class=\"ri-zoom-in-line\"></i>\n </button>\n\n <button (click)=\"resetZoom()\" class=\"canvas-button\" title=\"Reset\">\n <i class=\"ri-refresh-line\"></i>\n </button>\n\n <button (click)=\"fitToContainer()\" class=\"canvas-button\" title=\"Ajustar al espacio\">\n <i class=\"ri-fullscreen-line\"></i>\n </button>\n</div>\n","import {\n Component,\n Inject,\n Input,\n Output,\n EventEmitter,\n OnDestroy,\n AfterViewInit,\n ViewChild,\n PLATFORM_ID,\n signal,\n effect,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { StageComponent, CoreShapeComponent } from 'ng2-konva';\nimport {\n ElementRenderData,\n HallFloorOption,\n PerformanceTicket,\n TicketMapTooltipData,\n} from '../../../interfaces';\nimport {\n FeedbackModalService,\n PerformanceBookingDataService,\n TicketMapZoomService,\n TicketSelectionService,\n} from '../../../services';\nimport { RoomMapElementType } from '../../../enums';\nimport { findElementAtPosition, findTicketAtPosition } from '../../../helpers';\n\n@Component({\n selector: 'performance-ticket-map',\n standalone: true,\n imports: [CommonModule, StageComponent, CoreShapeComponent],\n templateUrl: './performance-ticket-map.component.html',\n styleUrl: './performance-ticket-map.component.scss',\n})\nexport class PerformanceTicketMapComponent implements OnDestroy, AfterViewInit {\n @Output() selectionChange = new EventEmitter<PerformanceTicket[]>();\n @Output() needsLoginError = new EventEmitter();\n @Input() readOnly = false;\n @Input() needsLogin = false;\n @Input() isLoggedIn = true;\n\n @ViewChild(StageComponent) stageComponent?: StageComponent;\n\n protected tooltipData = signal<TicketMapTooltipData | null>(null);\n\n private stageReady = signal(false);\n private autoFitDone = false;\n private resizeObserver?: ResizeObserver;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected bookingDataService: PerformanceBookingDataService,\n protected feedbackModalService: FeedbackModalService,\n protected selectionService: TicketSelectionService,\n protected zoomService: TicketMapZoomService,\n ) {\n effect(() => {\n const dataReady = this.bookingDataService.renderData().length > 0;\n const stageOk = this.stageReady();\n if (dataReady && stageOk && !this.autoFitDone) {\n this.autoFitDone = true;\n this.zoomService.fitToContainer();\n }\n });\n\n effect(() => {\n const selectedTickets = this.selectionService.selectedTickets();\n const renderData = this.bookingDataService.renderData();\n const stage = this.stageComponent?.getStage();\n if (!stage) return;\n\n const selByElem = new Map<number, Set<string>>();\n for (const ticket of selectedTickets) {\n if (ticket.seat_numeration == null) continue;\n let set = selByElem.get(ticket.room_map_element_id);\n if (!set) {\n set = new Set<string>();\n selByElem.set(ticket.room_map_element_id, set);\n }\n set.add(ticket.seat_numeration);\n }\n\n let needsRedraw = false;\n for (const el of renderData) {\n if (el.type === RoomMapElementType.SEAT_BLOCK || el.type === RoomMapElementType.TABLE) {\n const shape = stage.findOne('.' + el.elementId);\n if (shape) {\n shape.setAttr('selectedNumerations', selByElem.get(el.elementId) ?? new Set<string>());\n needsRedraw = true;\n }\n }\n }\n\n if (needsRedraw) {\n stage.find('Shape').forEach((s: any) => s.getLayer()?.batchDraw());\n }\n });\n }\n\n protected get isBrowser(): boolean {\n return isPlatformBrowser(this.platformId);\n }\n\n ngAfterViewInit(): void {\n if (this.stageComponent) {\n const stage = this.stageComponent.getStage();\n if (stage) {\n this.feedbackModalService.removeAllModals();\n this.zoomService.setStage(stage);\n this.stageReady.set(true);\n this.syncStageToContainer();\n this.setupResizeObserver(stage);\n }\n }\n }\n\n private setupResizeObserver(stage: any): void {\n const container = stage.container().parentElement;\n if (!container) return;\n\n this.resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n if (width > 0 && height > 0) {\n const current = this.bookingDataService.stageConfig();\n if (current['width'] !== width || current['height'] !== height) {\n this.bookingDataService.updateStageConfig({ width, height });\n }\n }\n }\n });\n\n this.resizeObserver.observe(container);\n }\n\n private syncStageToContainer(): void {\n const stage = this.stageComponent?.getStage();\n if (!stage) return;\n const containerEl = stage.container().parentElement;\n if (!containerEl) return;\n const { width, height } = containerEl.getBoundingClientRect();\n if (width > 0 && height > 0) {\n this.bookingDataService.updateStageConfig({ width, height });\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n this.selectionService.clearSelection();\n }\n\n private getInternalPointer(stage: any): { x: number; y: number } {\n const pointer = stage.getPointerPosition();\n if (!pointer) return { x: 0, y: 0 };\n return {\n x: (pointer.x - stage.x()) / stage.scaleX(),\n y: (pointer.y - stage.y()) / stage.scaleY(),\n };\n }\n\n protected selectHallFloor(floorId: number): void {\n this.bookingDataService.setSelectedHallFloor(floorId);\n }\n\n protected handleStageClick(konvaEvent: any): void {\n if (this.readOnly) return;\n\n const stage =\n konvaEvent.angularComponent?.getStage?.() ?? konvaEvent.event?.target?.getStage?.();\n if (!stage) return;\n\n const internalPos = this.getInternalPointer(stage);\n const hit = findElementAtPosition(\n this.bookingDataService.renderData(),\n internalPos.x,\n internalPos.y,\n );\n if (!hit) return;\n\n const emitNeedsLoginError = this.needsLogin && !this.isLoggedIn;\n\n if (hit.element.type === RoomMapElementType.ZONE) {\n if (emitNeedsLoginError) {\n this.needsLoginError.emit();\n return;\n }\n\n const zoneId = hit.element.elementId;\n const zoneTickets = this.selectionService.getZoneTickets(zoneId);\n const selectedTickets = zoneTickets.filter((t) => this.selectionService.isSelected(t));\n\n this.selectionService.initZoneQuantity(zoneId, hit.element.zoneCapacity || 0);\n\n if (selectedTickets.length > 0) {\n this.selectionService.adjustZoneQuantity(zoneId, -1);\n } else {\n this.selectionService.adjustZoneQuantity(zoneId, 1);\n }\n\n this.selectionChange.emit(this.selectionService.selectedTickets());\n return;\n }\n\n const ticket = findTicketAtPosition(hit.element, hit.relX, hit.relY);\n if (ticket) {\n if (emitNeedsLoginError) {\n this.needsLoginError.emit();\n return;\n }\n\n this.selectionService.toggle(ticket);\n this.selectionChange.emit(this.selectionService.selectedTickets());\n }\n }\n\n protected handleStageMouseMove(konvaEvent: any): void {\n const stage =\n konvaEvent.angularComponent?.getStage?.() ?? konvaEvent.event?.target?.getStage?.();\n if (!stage) return;\n\n const internalPos = this.getInternalPointer(stage);\n const hit = findElementAtPosition(\n this.bookingDataService.renderData(),\n internalPos.x,\n internalPos.y,\n );\n if (!hit) {\n this.tooltipData.set(null);\n return;\n }\n\n let ticket: PerformanceTicket | null = null;\n let seatLabel: string | null = null;\n\n if (hit.element.type === RoomMapElementType.ZONE) {\n ticket = hit.element.tickets[0] || null;\n } else {\n ticket = findTicketAtPosition(hit.element, hit.relX, hit.relY);\n\n if (ticket) {\n seatLabel = ticket.seat_label;\n }\n }\n\n if (ticket) {\n const pointer = stage.getPointerPosition();\n const tooltip = this.selectionService.buildTooltipData(\n ticket,\n hit.element.elementName,\n seatLabel,\n (pointer?.x || 0) + 15,\n (pointer?.y || 0) + 15,\n );\n this.tooltipData.set(tooltip);\n } else {\n this.tooltipData.set(null);\n }\n }\n\n protected handleStageMouseLeave(): void {\n this.tooltipData.set(null);\n }\n\n protected handleWheel(konvaEvent: any): void {\n const nativeEvent = konvaEvent.event?.evt;\n if (!nativeEvent) return;\n nativeEvent.preventDefault();\n this.zoomService.handleWheelZoom(nativeEvent.deltaY);\n }\n\n protected trackByElementId(_index: number, item: ElementRenderData): number {\n return item.elementId;\n }\n\n protected trackByFloorId(_index: number, floor: HallFloorOption): HallFloorOption {\n return floor;\n }\n}\n","<div class=\"ticket-map-canvas-container\">\n @if (isBrowser) {\n <ko-stage\n [config]=\"bookingDataService.stageConfig()\"\n (click)=\"handleStageClick($event)\"\n (mousemove)=\"handleStageMouseMove($event)\"\n (mouseleave)=\"handleStageMouseLeave()\"\n (wheel)=\"handleWheel($event)\"\n >\n <ko-layer>\n @for (element of bookingDataService.renderData(); track trackByElementId($index, element)) {\n <ko-shape [config]=\"element.shapeConfig\" />\n }\n </ko-layer>\n </ko-stage>\n\n @if (tooltipData(); as tooltip) {\n <div class=\"ticket-tooltip\" [style.left.px]=\"tooltip.x\" [style.top.px]=\"tooltip.y\">\n <div class=\"tooltip-header\">{{ tooltip.elementName }}</div>\n @if (tooltip.seatLabel) {\n <div class=\"tooltip-row\">\n <span class=\"tooltip-label\">Asiento:</span>\n <span class=\"tooltip-value\">{{ tooltip.seatLabel }}</span>\n </div>\n }\n <div class=\"tooltip-row\">\n <span class=\"tooltip-label\">Precio:</span>\n <span class=\"tooltip-value\">${{ tooltip.price | number: '1.0-0' }}</span>\n </div>\n <div class=\"tooltip-row\">\n <span class=\"tooltip-label\">Estado:</span>\n <span class=\"tooltip-status\">\n <span class=\"status-dot\" [style.background]=\"tooltip.statusColor\"></span>\n {{ tooltip.statusLabel }}\n </span>\n </div>\n @if (tooltip.isSelected) {\n <div class=\"tooltip-selected-badge\">Seleccionado</div>\n }\n </div>\n }\n }\n</div>\n","import { Component, inject, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { PerformanceBookingDataService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-price-zones',\n imports: [CommonModule, TicketMapWidgetComponent, TicketMapWidgetHeaderComponent],\n templateUrl: './ticket-map-price-zones.component.html',\n styleUrl: './ticket-map-price-zones.component.scss',\n})\nexport class TicketMapPriceZonesComponent {\n @Input() title: string = 'Precios por zona';\n protected bookingDataService = inject(PerformanceBookingDataService);\n}\n","<ticket-map-widget>\n <ticket-map-widget-header [title]=\"title\" />\n\n <div class=\"ticket-map-price-zones\">\n @for (zone of bookingDataService.roomMap()?.price_zones ?? []; track zone.id) {\n <div class=\"ticket-map-price-zones__item\">\n <span\n class=\"ticket-map-price-zones__item-color\"\n [style.background-color]=\"zone.color\"\n ></span>\n <p class=\"ticket-map-price-zones__item-name\">{{ zone.name }}</p>\n <p class=\"ticket-map-price-zones__item-price\">${{ zone.normal_price | number: '1.0-2' }}</p>\n </div>\n }\n </div>\n</ticket-map-widget>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Product } from '../../../interfaces';\nimport { TicketSelectionService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-product-selection-item',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-product-selection-item.component.html',\n styleUrl: './ticket-map-product-selection-item.component.scss',\n})\nexport class TicketMapProductSelectionItemComponent {\n @Input({ required: true }) product!: Product;\n\n constructor(protected selectionService: TicketSelectionService) {}\n\n get quantity(): number {\n return this.selectionService.getProductQuantity(this.product.id);\n }\n\n get firstImage(): string | undefined {\n return this.product.images?.[0]?.full_url;\n }\n\n increment(): void {\n this.selectionService.updateProductQuantity(this.product.id, 1);\n }\n\n decrement(): void {\n this.selectionService.updateProductQuantity(this.product.id, -1);\n }\n}\n","<div class=\"ticket-map-product-selection-item\">\n <div class=\"ticket-map-product-selection-item__image\">\n @if (firstImage) {\n <img\n [src]=\"firstImage\"\n [alt]=\"product.name\"\n class=\"ticket-map-product-selection-item__image-img\"\n />\n } @else {\n <i class=\"ri-shopping-bag-line ticket-map-product-selection-item__image-icon\"></i>\n }\n </div>\n\n <div class=\"ticket-map-product-selection-item__content\">\n <div class=\"ticket-map-product-selection-item__content-name\">{{ product.name }}</div>\n\n @if (product.sku) {\n <div class=\"ticket-map-product-selection-item__content-sku\">SKU: {{ product.sku }}</div>\n }\n\n <div class=\"ticket-map-product-selection-item__content-price\">\n ${{ product.price | number: '1.0' }}\n </div>\n </div>\n\n <div class=\"ticket-map-product-selection-item__quantity\">\n <button\n type=\"button\"\n class=\"ticket-map-product-selection-item__quantity-button\"\n [disabled]=\"quantity <= 0\"\n (click)=\"decrement()\"\n >\n <i class=\"ri-subtract-line\"></i>\n </button>\n\n <input\n type=\"number\"\n class=\"ticket-map-product-selection-item__quantity-input\"\n [value]=\"quantity\"\n readonly\n />\n\n <button\n type=\"button\"\n class=\"ticket-map-product-selection-item__quantity-button\"\n (click)=\"increment()\"\n >\n <i class=\"ri-add-line\"></i>\n </button>\n </div>\n</div>\n","import { Component, computed, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapProductSelectionItemComponent } from '../ticket-map-product-selection-item/ticket-map-product-selection-item.component';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { PerformanceBookingDataService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-product-selection',\n standalone: true,\n imports: [\n CommonModule,\n TicketMapWidgetComponent,\n TicketMapWidgetHeaderComponent,\n TicketMapProductSelectionItemComponent,\n ],\n templateUrl: './ticket-map-product-selection.component.html',\n styleUrl: './ticket-map-product-selection.component.scss',\n})\nexport class TIcketMapProductSelectionComponent {\n private bookingDataService = inject(PerformanceBookingDataService);\n\n readonly products = computed(() => this.bookingDataService.roomMap()?.products ?? []);\n}\n","@if (products().length > 0) {\n <ticket-map-widget>\n <ticket-map-widget-header title=\"Productos\" />\n\n <div class=\"products-list\">\n @for (product of products(); track product.id) {\n <ticket-map-product-selection-item [product]=\"product\" />\n }\n </div>\n </ticket-map-widget>\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport {\n PerformanceBookingDataService,\n TicketSelectionDetailsService,\n TicketSelectionDiscountService,\n TicketSelectionService,\n TicketSelectionTotalsService,\n} from '../../../services';\n\n@Component({\n selector: 'ticket-map-totals',\n standalone: true,\n imports: [\n CommonModule,\n AppButtonComponent,\n TicketMapWidgetHeaderComponent,\n TicketMapWidgetComponent,\n ],\n templateUrl: './ticket-map-totals.component.html',\n styleUrl: './ticket-map-totals.component.scss',\n})\nexport class TicketMapTotalsComponent {\n @Input() title: string = 'Totales de la selección';\n @Input() buttonText: string = 'Generar orden de compra';\n @Input() loadingButtonText: string = 'Generando orden de compra...';\n @Input() isLoading: boolean = false;\n @Output() onPurchaseClick = new EventEmitter<void>();\n\n constructor(\n protected bookingDataService: PerformanceBookingDataService,\n protected selectionDetailsService: TicketSelectionDetailsService,\n protected selectionDiscountService: TicketSelectionDiscountService,\n protected selectionTotalsService: TicketSelectionTotalsService,\n protected selectionService: TicketSelectionService,\n private activatedRoute: ActivatedRoute,\n ) {}\n\n get serviceFee(): number {\n return Number(this.bookingDataService.show()?.service_fee ?? '0');\n }\n\n get performanceId(): number {\n return Number(this.activatedRoute.snapshot.paramMap.get('id'));\n }\n\n get selectedTicketIds(): number[] {\n return this.selectionService.selectedTicketIdList();\n }\n}\n","<ticket-map-widget class=\"w-full\">\n <ticket-map-widget-header [title]=\"title\" />\n\n <div class=\"ticket-map-totals\">\n <p class=\"ticket-map-totals__item\">\n <span>Entradas ({{ selectionService.selectedCount() | number: '1.0-2' }}):</span>\n <span> ${{ selectionTotalsService.ticketSubtotal() | number: '1.0-2' }} </span>\n </p>\n\n @if (selectionService.selectedProductCount() > 0) {\n <p class=\"ticket-map-totals__item\">\n <span>Productos ({{ selectionService.selectedProductCount() | number: '1.0-2' }}):</span>\n <span>${{ selectionTotalsService.productSubtotal() | number: '1.0-2' }}</span>\n </p>\n }\n\n @if (serviceFee > 0) {\n <p class=\"ticket-map-totals__item\">\n <span>Tarifa de servicio:</span>\n <span>${{ bookingDataService.show()?.service_fee ?? '0' | number: '1.0-2' }}</span>\n </p>\n }\n\n @if (!!selectionDiscountService.coupon()) {\n <p class=\"ticket-map-totals__item\">\n <span>Cupón de descuento:</span>\n <span class=\"line-through\">\n ${{ selectionDiscountService.coupon()?.discount_value ?? '0' | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (!!selectionDiscountService.corporateBond()) {\n <p class=\"ticket-map-totals__item\">\n <span>Bono corporativo:</span>\n <span class=\"line-through\">\n ${{ selectionDiscountService.corporateBond()?.value ?? '0' | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (!!selectionDiscountService.giftBond()) {\n <p class=\"ticket-map-totals__item\">\n <span>Bono de regalo:</span>\n <span class=\"line-through\">\n ${{ selectionDiscountService.giftBond()?.value ?? '0' | number: '1.0-2' }}\n </span>\n </p>\n }\n\n <hr class=\"ticket-map-totals__divider\" />\n\n <div class=\"ticket-map-totals__calculated\">\n <span class=\"ticket-map-totals__calculated-title\">Total:</span>\n\n @if (\n selectionTotalsService.totalDiscounted() || selectionTotalsService.totalDiscounted() === 0\n ) {\n <span class=\"ticket-map-totals__calculated-inline\">\n <span class=\"ticket-map-totals__calculated-discount\">\n ${{ selectionTotalsService.totalValue() | currency: 'COP' : 'symbol' : '1.0-2' }}\n </span>\n <span class=\"ticket-map-totals__calculated-total\">\n ${{ selectionTotalsService.totalDiscounted() | currency: 'COP' : 'symbol' : '1.0-2' }}\n </span>\n </span>\n } @else {\n <span class=\"ticket-map-totals__calculated-total\">\n ${{ selectionTotalsService.totalValue() | number: '1.0-2' }}\n </span>\n }\n </div>\n\n @if (selectionService.selectedCount() > 0 || selectionService.selectedProductCount() > 0) {\n <div class=\"flex flex-col gap-2\">\n <app-button\n (click)=\"onPurchaseClick.emit()\"\n size=\"sm\"\n icon=\"ri-dashboard-3-line\"\n [text]=\"buttonText\"\n [loadingText]=\"loadingButtonText\"\n [loading]=\"isLoading\"\n variant=\"primary\"\n />\n </div>\n }\n </div>\n</ticket-map-widget>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { TicketMapZoomControlsComponent } from '../ticket-map-zoom-controls/ticket-map-zoom-controls.component';\nimport { PerformanceTicketMapComponent } from '../performance-ticket-map/performance-ticket-map.component';\nimport { PerformanceTicket } from '../../../interfaces';\n\n@Component({\n selector: 'ticket-map-wrapper',\n standalone: true,\n imports: [\n CommonModule,\n TicketMapWidgetComponent,\n TicketMapWidgetHeaderComponent,\n TicketMapZoomControlsComponent,\n PerformanceTicketMapComponent,\n ],\n templateUrl: './ticket-map-wrapper.component.html',\n styleUrls: ['./ticket-map-wrapper.component.scss'],\n})\nexport class TicketMapWrapperComponent {\n @Output() selectionChange = new EventEmitter<PerformanceTicket[]>();\n @Output() needsLoginError = new EventEmitter();\n @Input() readOnly = false;\n @Input() needsLogin = false;\n @Input() isLoggedIn = true;\n}\n","<ticket-map-widget>\n <ticket-map-widget-header title=\"Plano de la sala\">\n <div class=\"zoom-controls-wrapper\">\n <ticket-map-zoom-controls />\n </div>\n </ticket-map-widget-header>\n\n <div class=\"seat-map-wrapper\" #wrapper>\n <performance-ticket-map\n [readOnly]=\"readOnly\"\n [needsLogin]=\"needsLogin\"\n [isLoggedIn]=\"isLoggedIn\"\n (needsLoginError)=\"needsLoginError.emit()\"\n (selectionChange)=\"selectionChange.emit()\"\n />\n </div>\n</ticket-map-widget>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'seat-selection-empty-summary',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './seat-selection-empty-summary.component.html',\n styleUrl: './seat-selection-empty-summary.component.scss',\n})\nexport class SeatSelectionEmptySummaryComponent {}\n","<div class=\"seat-selection-empty-summary\">\n <div class=\"seat-selection-empty-summary__icon\">\n <i class=\"ri-armchair-line seat-selection-empty-summary__icon--size\"></i>\n </div>\n <p class=\"seat-selection-empty-summary__title\">No has seleccionado asientos</p>\n <p class=\"seat-selection-empty-summary__subtitle\">\n Haz clic en el mapa para seleccionar los asientos\n </p>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketSelectionService } from '../../../services';\nimport { PerformanceTicket } from '../../../interfaces';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { getItemTypeIcon } from '../../../helpers';\n\n@Component({\n selector: 'seat-selection-summary-item',\n standalone: true,\n imports: [CommonModule, AppButtonComponent],\n templateUrl: './seat-selection-summary-item.component.html',\n styleUrl: './seat-selection-summary-item.component.scss',\n})\nexport class SeatSelectionSummaryItemComponent {\n @Input({ required: true }) item!: PerformanceTicket;\n\n constructor(protected selectionService: TicketSelectionService) {}\n\n getItemTypeIcon = getItemTypeIcon;\n\n removeItem(ticket: PerformanceTicket) {\n this.selectionService.deselect(ticket);\n }\n}\n","<div class=\"seat-selection-summary-item\">\n <div class=\"seat-selection-summary-item__icon\">\n {{ getItemTypeIcon(item) }}\n </div>\n\n <div class=\"seat-selection-summary-item__content\">\n <div class=\"seat-selection-summary-item__content-label\">{{ item.seat_label }}</div>\n\n <div class=\"seat-selection-summary-item__content-price\">\n ${{ item.normal_price | number: '1.0' }}\n </div>\n\n @if (item.element_qty && item.element_qty > 1) {\n <div class=\"seat-selection-summary-item__content-quantity\">\n Cantidad: {{ item.element_qty }}\n </div>\n }\n </div>\n\n <div class=\"seat-selection-summary-item__actions\">\n <app-button\n variant=\"transparent\"\n size=\"xs\"\n text=\"\"\n icon=\"ri-close-line\"\n (clicked)=\"removeItem(item)\"\n />\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SeatSelectionEmptySummaryComponent } from '../seat-selection-empty-summary/seat-selection-empty-summary.component';\nimport { SeatSelectionSummaryItemComponent } from '../seat-selection-summary-item/seat-selection-summary-item.component';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { TicketSelectionService } from '../../../services';\n\n@Component({\n selector: 'seat-selection-summary',\n standalone: true,\n imports: [\n CommonModule,\n AppButtonComponent,\n SeatSelectionEmptySummaryComponent,\n SeatSelectionSummaryItemComponent,\n TicketMapWidgetComponent,\n TicketMapWidgetHeaderComponent,\n ],\n templateUrl: './seat-selection-summary.component.html',\n})\nexport class SeatSelectionSummaryComponent {\n @Input() title: string = 'Resumen de la selección';\n @Input() clearButtonText: string = 'Limpiar todo';\n\n constructor(protected selectionService: TicketSelectionService) {}\n}\n","<ticket-map-widget>\n <ticket-map-widget-header [title]=\"title\" />\n\n @if (selectionService.selectedCount() > 0) {\n <div class=\"tickets-list\">\n @for (item of selectionService.selectedTickets(); track item.id) {\n <seat-selection-summary-item [item]=\"item\" />\n }\n </div>\n\n @if (selectionService.selectedCount() > 0) {\n <div class=\"tickets-actions\">\n <app-button\n size=\"xs\"\n [text]=\"clearButtonText\"\n icon=\"ri-delete-bin-line\"\n (clicked)=\"selectionService.clearSelection()\"\n />\n </div>\n }\n } @else {\n <seat-selection-empty-summary />\n }\n</ticket-map-widget>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConfirmationOrderModalService } from '../../../services/ticket-selection/confirmation-order-modal.service';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\nimport { PerformanceBookingDataService } from '../../../services/ticket-selection/performance-booking-data.service';\nimport { TicketSelectionDiscountService } from '../../../services/ticket-selection/ticket-selection-discount.service';\nimport { TicketSelectionService } from '../../../services/ticket-selection/ticket-selection.service';\nimport { TicketSelectionTotalsService } from '../../../services/ticket-selection/ticket-selection-totals.service';\n\n@Component({\n selector: 'confirmation-order-modal',\n standalone: true,\n imports: [CommonModule, AppButtonComponent, AppModalComponent],\n templateUrl: './confirmation-order-modal.component.html',\n styleUrls: ['./confirmation-order-modal.component.scss'],\n})\nexport class ConfirmationOrderModalComponent {\n @Input() modalTitle: string = 'Confirmación de compra';\n @Input() confirmButtonText: string = 'Confirmar compra';\n @Input() confirmButtonTextLoading: string = 'Confirmando compra...';\n @Input() loading: boolean = false;\n @Output() onConfirm = new EventEmitter();\n\n constructor(\n private confirmationOrderModalService: ConfirmationOrderModalService,\n private selectionDiscountService: TicketSelectionDiscountService,\n private selectionTotalsService: TicketSelectionTotalsService,\n private selectionService: TicketSelectionService,\n private bookingDataService: PerformanceBookingDataService,\n ) {}\n\n get isOpen() {\n return this.confirmationOrderModalService.modalIsOpen;\n }\n\n get selectedCount(): number {\n return this.selectionService.selectedCount();\n }\n\n get serviceFee(): number {\n return Number(this.bookingDataService.show()?.service_fee ?? '0');\n }\n\n get subtotalValue(): number {\n return this.selectionTotalsService.subtotalValue();\n }\n\n get ticketSubtotal(): number {\n return (\n this.selectionTotalsService.subtotalValue() - this.selectionTotalsService.productSubtotal()\n );\n }\n\n get productSubtotal(): number {\n return this.selectionTotalsService.productSubtotal();\n }\n\n get productCount(): number {\n return this.selectionService.selectedProductCount();\n }\n\n get totalValue(): number {\n return this.selectionTotalsService.totalValue();\n }\n\n get totalDiscounted(): number | null {\n return this.selectionTotalsService.totalDiscounted();\n }\n\n get coupon() {\n return this.selectionDiscountService.coupon();\n }\n\n get corporateBond() {\n return this.selectionDiscountService.corporateBond();\n }\n\n get giftBond() {\n return this.selectionDiscountService.giftBond();\n }\n\n onClose() {\n if (this.loading) return;\n this.confirmationOrderModalService.close();\n }\n\n confirmOrder() {\n this.onConfirm && this.onConfirm.emit();\n }\n}\n","<app-modal [title]=\"modalTitle\" [isOpen]=\"isOpen\" size=\"md\" (closeModal)=\"onClose()\">\n <div class=\"confirmation-modal\">\n <p class=\"confirmation-modal__description\">\n Revise los detalles de la compra antes de confirmar.\n </p>\n\n <p class=\"confirmation-modal__item\">\n <span>Entradas ({{ selectedCount | number: '1.0-0' }}):</span>\n <span>${{ ticketSubtotal | number: '1.0' }}</span>\n </p>\n\n @if (productCount > 0) {\n <p class=\"confirmation-modal__item\">\n <span>Productos ({{ productCount | number: '1.0-0' }}):</span>\n <span>${{ productSubtotal | number: '1.0' }}</span>\n </p>\n }\n\n @if (serviceFee > 0) {\n <p class=\"confirmation-modal__item\">\n <span>Tarifa de servicio:</span>\n <span>${{ serviceFee | number: '1.0' }}</span>\n </p>\n }\n\n @if (coupon) {\n <p class=\"confirmation-modal__item\">\n <span>Cupón de descuento:</span>\n <span class=\"confirmation-modal__discount\">\n ${{ coupon.discount_value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (corporateBond) {\n <p class=\"confirmation-modal__item\">\n <span>Bono corporativo:</span>\n <span class=\"confirmation-modal__discount\">\n ${{ corporateBond.value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (giftBond) {\n <p class=\"confirmation-modal__item\">\n <span>Bono de regalo:</span>\n <span class=\"confirmation-modal__discount\"> ${{ giftBond.value | number: '1.0-2' }} </span>\n </p>\n }\n\n <hr class=\"confirmation-modal__divider\" />\n\n <p class=\"confirmation-modal__totals\">\n <span class=\"confirmation-modal__totals-title\">Total:</span>\n\n @if (totalDiscounted || totalDiscounted === 0) {\n <span class=\"confirmation-modal__totals-discounted\">\n <span class=\"confirmation-modal__discount\">\n ${{ totalValue | currency: 'COP' : 'symbol' : '1.0' }}\n </span>\n <span class=\"confirmation-modal__price\">\n ${{ totalDiscounted | currency: 'COP' : 'symbol' : '1.0' }}\n </span>\n </span>\n } @else {\n <span class=\"confirmation-modal__price\">${{ totalValue | number: '1.0' }}</span>\n }\n </p>\n </div>\n\n <div class=\"confirmation-modal__actions\">\n <app-button\n size=\"sm\"\n variant=\"tertiary\"\n text=\"Cancelar\"\n (click)=\"onClose()\"\n [disabled]=\"loading\"\n />\n\n <app-button\n size=\"sm\"\n variant=\"primary\"\n [text]=\"confirmButtonText\"\n [loadingText]=\"confirmButtonTextLoading\"\n [loading]=\"loading\"\n [disabled]=\"loading\"\n (click)=\"confirmOrder()\"\n />\n </div>\n</app-modal>\n","// Config\nexport * from './lib/config/index';\n\n// i18n\nexport * from './lib/i18n/index';\n\n// Constants\nexport * from './lib/constants/index';\nexport * from './lib/constants/api-routes/index';\n\n// Enums\nexport * from './lib/enums/index';\n\n// Types\nexport * from './lib/types/index';\n\n// Interfaces\nexport * from './lib/interfaces/index';\n\n// Helpers\nexport * from './lib/helpers/index';\n\n// Validators\nexport * from './lib/validators/index';\n\n// Services\nexport * from './lib/services/index';\n\n// Interceptors\nexport * from './lib/interceptors/index';\n\n// Components - Buttons\nexport * from './lib/components/buttons/app-button/app-button.component';\nexport * from './lib/components/buttons/app-link-button/app-link-button.component';\n\n// Components - Feedback\nexport * from './lib/components/feedback/app-alert/app-alert.component';\nexport * from './lib/components/modals/feedback-modal/feedback-modal.component';\nexport * from './lib/components/feedback/delete-confirmation/delete-confirmation.component';\n\n// Components - Modals\nexport * from './lib/components/modals/app-modal/app-modal.component';\n\n// Components - Data Display\nexport * from './lib/components/data-display/app-badge/app-badge.component';\nexport * from './lib/components/data-display/audit-information/audit-information.component';\nexport * from './lib/components/data-display/dynamic-table/dynamic-table.component';\n\n// Components - Shows selection\nexport * from './lib/components/shows-selection/show-card/show-card.component';\nexport * from './lib/components/shows-selection/show-card-skeleton/show-card-skeleton.component';\n\n// Components - Navigation\nexport * from './lib/components/navigation/language-switcher/language-switcher.component';\n\n// Components - Forms\nexport * from './lib/components/forms/form-input/form-input.component';\nexport * from './lib/components/forms/form-select/form-select.component';\nexport * from './lib/components/forms/form-textarea/form-textarea.component';\nexport * from './lib/components/forms/form-editor/form-editor.component';\nexport * from './lib/components/forms/color-picker/color-picker.component';\nexport * from './lib/components/forms/date-input/date-input.component';\nexport * from './lib/components/forms/toggle-switch/toggle-switch.component';\nexport * from './lib/components/forms/file-upload/file-upload.component';\nexport * from './lib/components/forms/file-upload-preview/file-upload-preview.component';\nexport * from './lib/components/forms/async-select/async-select.component';\nexport * from './lib/components/forms/change-password-form/change-password-form.component';\n\n// Components - Select Integrations\nexport * from './lib/components/select-integrations/admin-select/admin-select.component';\nexport * from './lib/components/select-integrations/city-select/city-select.component';\nexport * from './lib/components/select-integrations/country-select/country-select.component';\nexport * from './lib/components/select-integrations/state-select/state-select.component';\nexport * from './lib/components/select-integrations/customer-select/customer-select.component';\nexport * from './lib/components/select-integrations/performance-select/performance-select.component';\nexport * from './lib/components/select-integrations/performance-multi-select/performance-multi-select.component';\nexport * from './lib/components/select-integrations/product-select/product-select.component';\nexport * from './lib/components/select-integrations/product-multi-select/product-multi-select.component';\nexport * from './lib/components/select-integrations/show-select/show-select.component';\nexport * from './lib/components/select-integrations/show-multi-select/show-multi-select.component';\nexport * from './lib/components/select-integrations/price-zone-select/price-zone-select.component';\n\n// Performance selection\nexport * from './lib/components/performances-selection/day-selector-grid/day-selector-grid.component';\nexport * from './lib/components/performances-selection/performance-card/performance-card.component';\nexport * from './lib/components/performances-selection/performance-card-list/performance-card-list.component';\nexport * from './lib/components/performances-selection/performance-stepper/performance-stepper.component';\nexport * from './lib/components/performances-selection/shows-filter/shows-filter.component';\nexport * from './lib/components/performances-selection/zone-price-item/zone-price-item.component';\nexport * from './lib/components/performances-selection/zone-price-list/zone-price-list.component';\n\n// Ticket Map\nexport * from './lib/components/ticket-map/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["drawChairIcon","numberToLetter","i1.ApiService","i1.PriceZoneEventService","i1","i2.DeleteConfirmationService","i3","COLORS","i2","i2.ChangePasswordFormService","i3.CustomerService","i4.AdminService","i5.ToastService","i6","i1.AdminService","i1.CitiesService","i1.CountryService","i1.StatesService","i1.CustomerService","i1.PerformanceService","i1.ProductService","i1.ShowService","i1.PriceZoneService","i2.PerformancesListEventsService","i1.ToastService","i1.PerformancesListEventsService","i1.TicketMapZoomService","i1.PerformanceBookingDataService","i1.FeedbackModalService","i1.TicketSelectionService","i1.TicketSelectionDetailsService","i1.TicketSelectionDiscountService","i1.TicketSelectionTotalsService","i1.ConfirmationOrderModalService","i2.TicketSelectionDiscountService","i3.TicketSelectionTotalsService","i4.TicketSelectionService","i5.PerformanceBookingDataService"],"mappings":"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"}