@dangl/angular-ava 1.5.2-beta0066 → 1.5.2-beta0076
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":"dangl-angular-ava.mjs","sources":["../../../projects/angular-ava/src/lib/ava-tree/model/tree-mode.model.ts","../../../projects/angular-ava/src/lib/version.ts","../../../projects/angular-ava/src/lib/ava-tree/services/tree-hover-tooltip.service.ts","../../../projects/angular-ava/src/lib/ava-tree/directives/hover-effect.directive.ts","../../../projects/angular-ava/src/lib/invoice/model/invoice-models.ts","../../../projects/angular-ava/src/lib/invoice/constants/defaultTextWordInvoice.ts","../../../projects/angular-ava/src/lib/invoice/constants/language.ts","../../../projects/angular-ava/src/lib/ava-tree/constants/defaultFilters.ts","../../../projects/angular-ava/src/lib/ava-tree/constants/defaultTextWords.ts","../../../projects/angular-ava/src/lib/ava-tree/constants/defaults.ts","../../../projects/angular-ava/src/lib/ava-tree/services/configuration-tree.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/expand-parent-group.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/flat-elements.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/select-element.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/keyboard-operation.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/tree-node-selection.service.ts","../../../projects/angular-ava/src/lib/ava-tree/directives/save-changing-view.directive.ts","../../../projects/angular-ava/src/lib/ava-tree/pipes/element-icon-name.pipe.ts","../../../projects/angular-ava/src/lib/ava-tree/pipes/element-item-number.pipe.ts","../../../projects/angular-ava/src/lib/ava-tree/pipes/element-text.pipe.ts","../../../projects/angular-ava/src/lib/ava-tree/components/tree-item/tree-item.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/tree-item/tree-item.component.html","../../../projects/angular-ava/src/lib/ava-tree/components/list-structure/list-structure.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/list-structure/list-structure.component.html","../../../projects/angular-ava/src/lib/ava-tree/components/table-structure/table-structure.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/table-structure/table-structure.component.html","../../../projects/angular-ava/src/lib/ava-tree/components/tree-node/tree-node.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/tree-node/tree-node.component.html","../../../projects/angular-ava/src/lib/ava-tree/components/ava-tree/ava-tree.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/ava-tree/ava-tree.component.html","../../../projects/angular-ava/src/lib/invoice/constants/alignment-options.ts","../../../projects/angular-ava/src/lib/invoice/services/configuration-invoice.service.ts","../../../projects/angular-ava/src/lib/invoice/pipes/currency-plus.pipe.ts","../../../projects/angular-ava/src/lib/invoice/pipes/line-split.pipe.ts","../../../projects/angular-ava/src/lib/invoice/pipes/percent-plus.pipe.ts","../../../projects/angular-ava/src/lib/invoice/pipes/invoice-attachment-mime-type.pipe.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-documents/invoice-documents.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-documents/invoice-documents.component.html","../../../projects/angular-ava/src/lib/invoice/pipes/number-plus.pipe.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-item-additional-info/invoice-line-item-additional-info.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-item-additional-info/invoice-line-item-additional-info.component.html","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-items-table/invoice-line-items-table.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-items-table/invoice-line-items-table.component.html","../../../projects/angular-ava/src/lib/invoice/components/organization-info/organization-info.component.ts","../../../projects/angular-ava/src/lib/invoice/components/organization-info/organization-info.component.html","../../../projects/angular-ava/src/lib/invoice/components/reference-and-delivery-information/reference-and-delivery-information.component.ts","../../../projects/angular-ava/src/lib/invoice/components/reference-and-delivery-information/reference-and-delivery-information.component.html","../../../projects/angular-ava/src/lib/invoice/components/invoice-display/invoice-display.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-display/invoice-display.component.html","../../../projects/angular-ava/src/public-api.ts","../../../projects/angular-ava/src/dangl-angular-ava.ts"],"sourcesContent":["export enum ModeViewType {\n Tree = 'Tree',\n List = 'List',\n Table = 'Table'\n}\n","// This file is automatically generated as part of the build process\n\nexport const version = {\n version: \"1.5.2-beta0066\",\n commitInfo: \"Branch.develop.Sha.af294a57a31bf511a811159b1c0d4a052ab021cf\",\n commitDate: \"2026-02-20\",\n commitHash: \"af294a57a31bf511a811159b1c0d4a052ab021cf\",\n informationalVersion: \"1.5.2-beta.66+Branch.develop.Sha.af294a57a31bf511a811159b1c0d4a052ab021cf\",\n buildDateUtc: new Date(Date.UTC(2026, 1, 20, 19, 35, 35))\n}\n","export class TreeHoverTooltipService {\n showElementOver(text: HTMLElement | null): void {\n if (!text) return;\n const rect = text.getBoundingClientRect();\n text.style.position = 'fixed';\n text.style.top = `${rect.top}px`;\n text.style.left = `${rect.left}px`;\n text.style.zIndex = '2000';\n }\n\n hideElementOver(text: HTMLElement | null): void {\n if (!text) return;\n text.style.position = 'static';\n text.style.top = ``;\n text.style.left = ``;\n text.style.zIndex = '';\n }\n}\n","import { Directive, HostListener, inject, input } from '@angular/core';\n\nimport { TreeItemComponent } from '../components/tree-item/tree-item.component';\nimport { TreeHoverTooltipService } from '../services/tree-hover-tooltip.service';\n\ntype TimeoutType = ReturnType<typeof setTimeout>;\n\n@Directive({\n selector: '[avaHoverEffect]',\n standalone: true\n})\nexport class HoverEffectDirective {\n itemText = input<TreeItemComponent | null>(null, { alias: 'avaHoverEffect' });\n private allowShow: TimeoutType | null = null;\n private treeHoverTooltipService = inject(TreeHoverTooltipService);\n\n @HostListener('mouseenter') onMouseEnter() {\n const itemText = this.itemText();\n if (itemText) {\n this.treeHoverTooltipService.showElementOver(itemText.textElement()?.nativeElement);\n }\n }\n @HostListener('mouseup') onMouseUp() {\n this.allowShow = setTimeout(() => {\n this.hide();\n const itemText = this.itemText();\n if (itemText) {\n this.treeHoverTooltipService.showElementOver(itemText.textElement()?.nativeElement);\n }\n }, 400);\n }\n\n @HostListener('wheel') onWheel() {\n this.hide();\n }\n @HostListener('scroll') onScroll() {\n this.hide();\n }\n @HostListener('mouseleave') onMouseLeave() {\n this.hide();\n }\n @HostListener('keydown') onKeyDown() {\n this.hide();\n }\n @HostListener('mouseout') onMouseOut() {\n this.hide();\n }\n\n @HostListener('mousemove', ['$event']) onMouseMove(event: MouseEvent) {\n const element = event.currentTarget as HTMLElement;\n const parent = element.closest('.ava-tree-wrapper');\n if (parent) {\n const rect = parent.getBoundingClientRect();\n if (event.x > rect.right) {\n this.onMouseLeave();\n }\n }\n }\n\n private hide(): void {\n if (this.allowShow) {\n clearTimeout(this.allowShow);\n this.allowShow = null;\n }\n const itemText = this.itemText();\n if (itemText) {\n this.treeHoverTooltipService.hideElementOver(itemText.textElement()?.nativeElement);\n }\n }\n}\n","import { ProjectDto } from '../../ava-tree/model';\n\n//----------------------\n// <auto-generated>\n// Generated using the NSwag toolchain v14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// </auto-generated>\n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\n/** This class represents an invoice */\nexport interface Invoice {\n /** The number of the invoice */\n invoiceNumber?: string | undefined;\n /** The date of the invoice */\n invoiceDate?: Date | undefined;\n /** The type of the invoice */\n invoiceType?: InvoiceType | undefined;\n /** The three letter ISO currency code */\n currencyCode?: string | undefined;\n /** Until when the payment is due */\n paymentDueDate?: Date | undefined;\n /** An object holding reference used in this invoice */\n references?: References | undefined;\n /** A text description of payment terms, e.g. cash discounts or payment conditions */\n paymentTerms?: string | undefined;\n /** In case of partial or final invoices, it's possible to reference the previous invoice numbers */\n previousInvoices?: PreviousInvoice[] | undefined;\n /** Information about the buyer */\n buyer?: Organization | undefined;\n /** Information about the seller */\n seller?: Organization | undefined;\n /** Information about the sellers tax representative */\n sellerTaxRepresentative?: Organization | undefined;\n /** A payee is someone who receives the payment that is different from the seller */\n payee?: Payee | undefined;\n /** If present, this is an unstructured text that can be used to give additional information\nabout the invoice. Field BG-1 */\n invoiceNotes?: InvoiceNote[] | undefined;\n /** The period during which the services or goods were delivered */\n invoicePeriod?: InvoicePeriod | undefined;\n /** Information about the delivery\nBG-13 in XRechnung */\n deliveryInformation?: DeliveryInformation | undefined;\n /** Totals for the invoice */\n totals?: InvoiceTotals | undefined;\n /** Instructions how to perform the payment */\n paymentInstructions?: PaymentInstructions | undefined;\n /** Attached documents to the invoice */\n documents?: SupportingDocument[] | undefined;\n /** This is used to list VAT by category, e.g. for invoices where parts are in different VAT categories */\n vatBreakdown?: VatBreakdown[] | undefined;\n /** Allowances / deductions on the invoice */\n allowances?: InvoiceAllowance[] | undefined;\n /** Charges / additional costs on the invoice */\n charges?: InvoiceCharge[] | undefined;\n /** Single line items in the invoice */\n lineItems?: InvoiceLineItem[] | undefined;\n /** The source type from which the invoice was created */\n sourceType?: SourceType | undefined;\n}\n\n/** Type of the invoice */\nexport enum InvoiceType {\n PartialInvoice = 326,\n CommercialInvoice = 380,\n CreditNote = 381,\n CorrectedInvoice = 384,\n SelfBilledInvoice = 389,\n PartialConstructionInvoice = 875,\n PartialFinalConstructionInvoice = 876,\n FinalConstructionInvoice = 877\n}\n\n/** This class holds typical references used in an invoice */\nexport interface References {\n /** An internal reference used by the buyer, this can also be used as the\n'Leitweg-ID' in Germany\nBT-10 in XRechnung. */\n buyerReference?: string | undefined;\n /** Reference to a project\nBT-11 in XRechnung. */\n projectReference?: string | undefined;\n /** Reference to a contract\nBT-12 in XRechnung. */\n contractReference?: string | undefined;\n /** Reference to a purchase order created by the buyer\nBT-13 in XRechnung. */\n purchaseOrderReference?: string | undefined;\n /** Reference to a sales order created by the seller\nBT-14 in XRechnung. */\n salesOrderReference?: string | undefined;\n /** Reference to a delivery note\nBT-15 in XRechnung. */\n receivingAdviceReference?: string | undefined;\n /** Reference to a dispatch advice\nBT-16 in XRechnung. */\n dispatchAdviceReference?: string | undefined;\n /** Reference to a tender or lot\nBT-17 in XRechnung. */\n tenderOrLotReference?: string | undefined;\n /** Reference to a custom item, e.g. a phone number, person,\ncontract or anything that would identify the invoice in the buyer's system\nBT-18 in XRechnung. */\n invoicedObjectIdentifier?: string | undefined;\n /** This is a reference for accounting, like a cost center or similar. In German,\nthis would be a \"Kostenstelle\".\nBT-19 in XRechnung. */\n accountingReference?: string | undefined;\n}\n\n/** References to previous invoices */\nexport interface PreviousInvoice {\n /** The date of the previous invoice */\n invoiceDate?: Date | undefined;\n /** The number of the previous invoice */\n invoiceNumber?: string | undefined;\n}\n\n/** Represents an organization, e.g. a buyer or a seller */\nexport interface Organization {\n /** The identifier of the organization */\n identifier?: string | undefined;\n /** The name of the organization */\n name?: string | undefined;\n /** A registration number, e.g. a Handelsregisternummer in Germany */\n registrationNumber?: string | undefined;\n /** The VAT ID for the organization */\n vatId?: string | undefined;\n /** The tax ID for the organization */\n taxId?: string | undefined;\n /** An email address for the organization */\n email?: string | undefined;\n /** The name of a contact person */\n contactPersonName?: string | undefined;\n /** The phone of a contact person */\n contactPersonPhone?: string | undefined;\n /** The email of a contact person */\n contactPersonEmail?: string | undefined;\n /** The address of the organization */\n address?: string | undefined;\n /** The city of the organization */\n city?: string | undefined;\n /** The zip code of the organization */\n zipCode?: string | undefined;\n /** The ISO 3166-1 2 letter country code */\n countryCode?: string | undefined;\n /** The state of the organization, e.g. a federal state in Germany */\n state?: string | undefined;\n /** This provides some additional legal information.\nBT-33 in XRechnung, and this is only used for the seller. */\n additionalLegalInformation?: string | undefined;\n}\n\n/** Represents a payee, meaning someone that receives the payment */\nexport interface Payee {\n /** The name of the payee */\n name?: string | undefined;\n /** The identifier of the payee */\n identifier?: string | undefined;\n /** A registered identifier for the payee, e.g. a VAT ID\nor Tax ID */\n legalRegistrationIdentifier?: string | undefined;\n}\n\n/** Represents a note / text in an invoice */\nexport interface InvoiceNote {\n /** Short summary / heading. Should be a text code from this list:\nhttps://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred4451.htm\nField BT-21 */\n shortText?: string | undefined;\n /** Short summary / heading type. This will be automatically parsed from ShortText\nand is a read-only property. */\n shortTextType?: ShortTextType | undefined;\n /** Explanation of this note\nField BT-22 */\n longText?: string | undefined;\n}\n\n/** Type qualifying the subject of the text. */\nexport enum ShortTextType {\n GoodsItemDescription = 0,\n PaymentTerm = 1,\n DangerousGoodsAdditionalInformation = 2,\n DangerousGoodsTechnicalName = 3,\n AcknowledgementDescription = 4,\n RateAdditionalInformation = 5,\n PartyInstructions = 6,\n GeneralInformation = 7,\n AdditionalConditionsOfSalePurchase = 8,\n PriceConditions = 9,\n GoodsDimensionsInCharacters = 10,\n EquipmentReUsageRestrictions = 11,\n HandlingRestriction = 12,\n ErrorDescriptionFreeText = 13,\n ResponseFreeText = 14,\n PackageContentsDescription = 15,\n TermsOfDelivery = 16,\n BillOfLadingRemarks = 17,\n ModeOfSettlementInformation = 18,\n ConsignmentInvoiceInformation = 19,\n ClearanceInvoiceInformation = 20,\n LetterOfCreditInformation = 21,\n LicenseInformation = 22,\n CertificationStatements = 23,\n AdditionalExportInformation = 24,\n TariffStatements = 25,\n MedicalHistory = 26,\n ConditionsOfSaleOrPurchase = 27,\n ContractDocumentType = 28,\n AdditionalTermsAndOrConditionsDocumentaryCredit = 29,\n InstructionsOrInformationAboutStandbyDocumentary = 30,\n InstructionsOrInformationAboutPartialShipments = 31,\n InstructionsOrInformationAboutTranshipments = 32,\n AdditionalHandlingInstructionsDocumentaryCredit = 33,\n DomesticRoutingInformation = 34,\n ChargeableCategoryOfEquipment = 35,\n GovernmentInformation = 36,\n OnwardRoutingInformation = 37,\n AccountingInformation = 38,\n DiscrepancyInformation = 39,\n ConfirmationInstructions = 40,\n MethodOfIssuance = 41,\n DocumentsDeliveryInstructions = 42,\n AdditionalConditions = 43,\n InformationInstructionsAboutAdditionalAmountsCovered = 44,\n DeferredPaymentTermedAdditional = 45,\n AcceptanceTermsAdditional = 46,\n NegotiationTermsAdditional = 47,\n DocumentNameAndDocumentaryRequirements = 48,\n InstructionsInformationAboutRevolvingDocumentaryCredit = 49,\n DocumentaryRequirements = 50,\n AdditionalInformation = 51,\n FactorAssignmentClause = 52,\n Reason = 53,\n Dispute = 54,\n AdditionalAttributeInformation = 55,\n AbsenceDeclaration = 56,\n AggregationStatement = 57,\n CompilationStatement = 58,\n DefinitionalException = 59,\n PrivacyStatement = 60,\n QualityStatement = 61,\n StatisticalDescription = 62,\n StatisticalDefinition = 63,\n StatisticalName = 64,\n StatisticalTitle = 65,\n OffDimensionInformation = 66,\n UnexpectedStopsInformation = 67,\n Principles = 68,\n TermsAndDefinition = 69,\n SegmentName = 70,\n SimpleDataElementName = 71,\n Scope = 72,\n MessageTypeName = 73,\n Introduction = 74,\n Glossary = 75,\n FunctionalDefinition = 76,\n Examples = 77,\n CoverPage = 78,\n DependencySyntaxNotes = 79,\n CodeValueName = 80,\n CodeListName = 81,\n ClarificationOfUsage = 82,\n CompositeDataElementName = 83,\n FieldOfApplication = 84,\n TypeOfAssetsAndLiabilities = 85,\n PromotionInformation = 86,\n MeterCondition = 87,\n MeterReadingInformation = 88,\n TypeOfTransactionReason = 89,\n TypeOfSurveyQuestion = 90,\n CarriersAgentCounterInformation = 91,\n DescriptionOfWorkItemOnEquipment = 92,\n MessageDefinition = 93,\n BookedItemInformation = 94,\n SourceOfDocument = 95,\n Note = 96,\n FixedPartOfSegmentClarificationText = 97,\n CharacteristicsOfGoods = 98,\n AdditionalDischargeInstructions = 99,\n ContainerStrippingInstructions = 100,\n CscContainerSafetyConventionPlateInformation = 101,\n CargoRemarks = 102,\n TemperatureControlInstructions = 103,\n TextRefersToExpectedData = 104,\n TextRefersToReceivedData = 105,\n SectionClarificationText = 106,\n InformationToTheBeneficiary = 107,\n InformationToTheApplicant = 108,\n InstructionsToTheBeneficiary = 109,\n InstructionsToTheApplicant = 110,\n ControlledAtmosphere = 111,\n TakeOffAnnotation = 112,\n PriceVariationNarrative = 113,\n DocumentaryCreditAmendmentInstructions = 114,\n StandardMethodNarrative = 115,\n ProjectNarrative = 116,\n RadioactiveGoodsAdditionalInformation = 117,\n BankToBankInformation = 118,\n ReimbursementInstructions = 119,\n ReasonForAmendingAMessage = 120,\n InstructionsToThePayingAndOrAcceptingAndOr = 121,\n InterestInstructions = 122,\n AgentCommission = 123,\n RemittingBankInstructions = 124,\n InstructionsToTheCollectingBank = 125,\n CollectionAmountInstructions = 126,\n InternalAuditingInformation = 127,\n Constraint = 128,\n Comment = 129,\n SemanticNote = 130,\n HelpText = 131,\n Legend = 132,\n BatchCodeStructure = 133,\n ProductApplication = 134,\n CustomerComplaint = 135,\n ProbableCauseOfFault = 136,\n DefectDescription = 137,\n RepairDescription = 138,\n ReviewComments = 139,\n Title = 140,\n DescriptionOfAmount = 141,\n Responsibilities = 142,\n Supplier = 143,\n PurchaseRegion = 144,\n Affiliation = 145,\n Borrower = 146,\n LineOfBusiness = 147,\n FinancialInstitution = 148,\n BusinessFounder = 149,\n BusinessHistory = 150,\n BankingArrangements = 151,\n BusinessOrigin = 152,\n BrandNamesDescription = 153,\n BusinessFinancingDetails = 154,\n Competition = 155,\n ConstructionProcessDetails = 156,\n ConstructionSpecialty = 157,\n ContractInformation = 158,\n CorporateFiling = 159,\n CustomerInformation = 160,\n CopyrightNotice = 161,\n ContingentDebt = 162,\n ConvictionDetails = 163,\n Equipment = 164,\n WorkforceDescription = 165,\n Exemption = 166,\n FuturePlans = 167,\n IntervieweeConversationInformation = 168,\n IntangibleAsset = 169,\n Inventory = 170,\n Investment = 171,\n IntercompanyRelationsInformation = 172,\n JointVenture = 173,\n Loan = 174,\n LongTermDebt = 175,\n Location = 176,\n CurrentLegalStructure = 177,\n MaritalContract = 178,\n MarketingActivities = 179,\n Merger = 180,\n MarketableSecurities = 181,\n BusinessDebt = 182,\n OriginalLegalStructure = 183,\n EmployeeSharingArrangements = 184,\n OrganizationDetails = 185,\n PublicRecordDetails = 186,\n PriceRange = 187,\n Qualifications = 188,\n RegisteredActivity = 189,\n CriminalSentence = 190,\n SalesMethod = 191,\n EducationalInstitutionInformation = 192,\n StatusDetails = 193,\n Sales = 194,\n SpouseInformation = 195,\n EducationalDegreeInformation = 196,\n ShareholdingInformation = 197,\n SalesTerritory = 198,\n AccountantsComments = 199,\n ExemptionLawLocation = 200,\n ShareClassifications = 201,\n Forecast = 202,\n EventLocation = 203,\n FacilityOccupancy = 204,\n ImportAndExportDetails = 205,\n AdditionalFacilityInformation = 206,\n InventoryValue = 207,\n Education = 208,\n Event = 209,\n Agent = 210,\n DomesticallyAgreedFinancialStatementDetails = 211,\n OtherCurrentAssetDescription = 212,\n OtherCurrentLiabilityDescription = 213,\n FormerBusinessActivity = 214,\n TradeNameUse = 215,\n SigningAuthority = 216,\n Guarantee = 217,\n HoldingCompanyOperation = 218,\n ConsignmentRouting = 219,\n LetterOfProtest = 220,\n Question = 221,\n PartyInformation = 222,\n AreaBoundariesDescription = 223,\n AdvertisementInformation = 224,\n FinancialStatementDetails = 225,\n AccessInstructions = 226,\n Liquidity = 227,\n CreditLine = 228,\n WarrantyTerms = 229,\n DivisionDescription = 230,\n ReportingInstruction = 231,\n ExaminationResult = 232,\n LaboratoryResult = 233,\n AllowanceChargeInformation = 234,\n XRayResult = 235,\n PathologyResult = 236,\n InterventionDescription = 237,\n SummaryOfAdmittance = 238,\n MedicalTreatmentCourseDetail = 239,\n Prognosis = 240,\n InstructionToPatient = 241,\n InstructionToPhysician = 242,\n AllDocuments = 243,\n MedicineTreatment = 244,\n MedicineDosageAndAdministration = 245,\n AvailabilityOfPatient = 246,\n ReasonForServiceRequest = 247,\n PurposeOfService = 248,\n ArrivalConditions = 249,\n ServiceRequestersComment = 250,\n Authentication = 251,\n RequestedLocationDescription = 252,\n MedicineAdministrationCondition = 253,\n PatientInformation = 254,\n PrecautionaryMeasure = 255,\n ServiceCharacteristic = 256,\n PlannedEventComment = 257,\n ExpectedDelayComment = 258,\n TransportRequirementsComment = 259,\n TemporaryApprovalCondition = 260,\n CustomsValuationInformation = 261,\n ValueAddedTaxVatMarginScheme = 262,\n PassengerBaggageInformation = 263,\n AdditionalProductInformationAddress = 264,\n InformationToBePrintedOnDespatchAdvice = 265,\n MissingGoodsRemarks = 266,\n NonAcceptanceInformation = 267,\n ReturnsInformation = 268,\n SubLineItemInformation = 269,\n TestInformation = 270,\n ExternalLink = 271,\n VatExemptionReason = 272,\n TransportContractDocumentClause = 273,\n InstructionToPrepareThePatient = 274,\n MedicineTreatmentComment = 275,\n ExaminationResultComment = 276,\n ServiceRequestComment = 277,\n PrescriptionReason = 278,\n PrescriptionComment = 279,\n ClinicalInvestigationComment = 280,\n MedicinalSpecificationComment = 281,\n EconomicContributionComment = 282,\n StatusOfAPlan = 283,\n RandomSampleTestInformation = 284,\n PeriodOfTime = 285,\n Legislation = 286,\n SecurityMeasuresRequested = 287,\n TransportContractDocumentRemark = 288,\n PreviousPortOfCallSecurityInformation = 289,\n SecurityInformation = 290,\n WasteInformation = 291,\n B2cMarketingInformationShortDescription = 292,\n B2bMarketingInformationLongDescription = 293,\n B2cMarketingInformationLongDescription = 294,\n ProductIngredients = 295,\n LocationShortName = 296,\n PackagingMaterialInformation = 297,\n FillerMaterialInformation = 298,\n ShipToShipActivityInformation = 299,\n PackageMaterialDescription = 300,\n ConsumerLevelPackageMarking = 301,\n CustomsClearanceInstructions = 302,\n CustomsClearanceInstructionsExport = 303,\n ChangeInformation = 304,\n CustomsClearanceInstructionImport = 305,\n ClearancePlaceRequested = 306,\n LoadingRemarks = 307,\n OrderInformation = 308,\n CustomerRemarks = 309,\n CustomsDeclarationInformation = 310,\n DamageRemarks = 311,\n DocumentIssuerDeclaration = 312,\n DeliveryInformation = 313,\n DeliveryInstructions = 314,\n DocumentationInstructions = 315,\n DutyDeclaration = 316,\n EffectiveUsedRouting = 317,\n FirstBlockToBePrintedOnTheTransportContract = 318,\n GovernmentBillOfLadingInformation = 319,\n EntireTransactionSet = 320,\n FurtherInformationConcerningGGVSPar7 = 321,\n ConsignmentHandlingInstruction = 322,\n HazardInformation = 323,\n ConsignmentInformationForConsignee = 324,\n InsuranceInstructions = 325,\n InvoiceMailingInstructions = 326,\n CommercialInvoiceItemDescription = 327,\n InsuranceInformation = 328,\n InvoiceInstruction = 329,\n InformationForRailwayPurpose = 330,\n InlandTransportDetails = 331,\n TestingInstructions = 332,\n LocationAlias = 333,\n LineItem = 334,\n LoadingInstruction = 335,\n MiscellaneousChargeOrder = 336,\n MaritimeDeclarationOfHealth = 337,\n AdditionalMarksNumbersInformation = 338,\n OrderInstruction = 339,\n OtherServiceInformation = 340,\n PackingMarkingInformation = 341,\n PaymentInstructionsInformation = 342,\n PayablesInformation = 343,\n PackagingInformation = 344,\n PackagingTermsInformation = 345,\n PaymentDetailRemittanceInformation = 346,\n PaymentInformation = 347,\n ProductInformation = 348,\n PriceCalculationFormula = 349,\n PriorityInformation = 350,\n PurchasingInformation = 351,\n QuarantineInstructions = 352,\n QualityDemandsRequirements = 353,\n QuotationInstructionInformation = 354,\n RiskAndHandlingInformation = 355,\n RegulatoryInformation = 356,\n ReturnToOriginInformation = 357,\n Receivables = 358,\n ConsignmentRoute = 359,\n SafetyInformation = 360,\n ConsignmentDocumentaryInstruction = 361,\n SpecialInstructions = 362,\n ShipLineRequested = 363,\n SpecialPermissionForTransportGenerally = 364,\n SpecialPermissionConcerningTheGoodsToBeTransported = 365,\n SpecialHandling = 366,\n SpecialPermissionConcerningPackage = 367,\n SpecialPermissionConcerningTransportMeans = 368,\n SubsidiaryRiskNumberIataDgr = 369,\n SpecialServiceRequest = 370,\n SupplierRemarks = 371,\n ConsignmentTariff = 372,\n ConsignmentTransport = 373,\n TransportationInformation = 374,\n RequestedTariff = 375,\n TaxDeclaration = 376,\n WarehouseInstructionInformation = 377,\n MutuallyDefined = 378\n}\n\n/** Represents an invoice period with start and end dates */\nexport interface InvoicePeriod {\n /** The start date */\n start?: Date | undefined;\n /** The end date */\n end?: Date | undefined;\n}\n\n/** Information about the delivery */\nexport interface DeliveryInformation {\n /** BT-70 in XRechnung */\n deliverToName?: string | undefined;\n /** BT-71 in XRechnung */\n deliverToLocationIdentifier?: string | undefined;\n /** BT-72 in XRechnung */\n deliveryDate?: Date | undefined;\n /** BG-15 in XRechnung */\n deliveryAddress?: DeliveryAddress | undefined;\n}\n\n/** Address for deliveries */\nexport interface DeliveryAddress {\n /** The address. BT-75, BT-76 and BT-165 in XRechnung. */\n address?: string | undefined;\n /** The city. BT-77 in XRechnung. */\n city?: string | undefined;\n /** The zip code. BT-78 in XRechnung. */\n zipCode?: string | undefined;\n /** The ISO 3166-1 2 letter country code. BT-80 in XRechnung. */\n countryCode?: string | undefined;\n}\n\n/** Totals for the invoice */\nexport interface InvoiceTotals {\n /** Sum of all invoice items in net.\nBT-106 in XRechnung. */\n totalNet?: number | undefined;\n /** This is the sum of all allowances (e.g. deductions or withheld tax) in the invoice\nBT-107 in XRechnung. */\n totalAllowances?: number | undefined;\n /** This is the sum of all charges in the invoice, except VAT. For example, late\nfees or surcharges.\nBT-108 in XRechnung. */\n totalCharges?: number | undefined;\n /** This is the total net value of the invoice after applied allowances and charges,\nmeaning the actual net sum to be paid.\nBT-109 in XRechnung. */\n totalAfterDeductions?: number | undefined;\n /** The total amount of VAT in the invoice.\nBT-110 in XRechnung. */\n totalVatAmount?: number | undefined;\n /** The total gross amount of the invoice, including all taxes and deductions.\nBT-112 in XRechnung. */\n totalGross?: number | undefined;\n /** The total amount that has already been paid for this invoice, e.g. used when\nprevious invoice sums are included here that have already been paid.\nBT-113 in XRechnung. */\n alreadyPaidTotal?: number | undefined;\n /** If this is given, this specifies if any rounding amount is applied to the invoice,\nbefore calculating the TotalToBePaid value.\nBT-114 in XRechnung. */\n payableRoundingAmount?: number | undefined;\n /** The sum that needs to be paid for this invoice. This is the total gross amount\nminus the already paid amount.\nBT-115 in XRechnung. */\n totalToBePaid?: number | undefined;\n}\n\n/** Instructions how payment for an invoice should be provided. */\nexport interface PaymentInstructions {\n /** Additional text to describe the payment instructions. */\n description?: string | undefined;\n /** This should be a code according to UNCL 4461\nto identify the type of payment. For example, code \"58\" means SEPA Credit Transfer,\nand code \"30\" means non-SEPA Credit Transfer.\nSee this list: https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/ */\n paymentTypeCode?: string | undefined;\n /** This should be a type according to UNCL 4461\nto identify the type of payment. */\n paymentType?: PaymentType | undefined;\n /** If a SEPA direct debit payment mean is used, then this reference should be provided.\nIt's the creditor identifier in SEPA, in German \"Gläubiger-Identifikationsnummer\".\nField BT-90 in XRechnung. */\n paymentCreditorIdentifier?: string | undefined;\n /** A list of payment means that can be used to pay the invoice. */\n paymentMeans?: PaymentMeans[] | undefined;\n}\n\n/** Indication of the instrument of payment, which may include a guarantee. Enumeration values are self-descriptive, so no comments needed here. According to UNCL 4461, see: https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/ */\nexport enum PaymentType {\n MutuallyDefined = 0,\n InstrumentNotDefined = 1,\n AutomatedClearingHouseCredit = 2,\n AutomatedClearingHouseDebit = 3,\n ACHDemandDebitReversal = 4,\n ACHDemandCreditReversal = 5,\n ACHDemandCredit = 6,\n ACHDemandDebit = 7,\n Hold = 8,\n NationalOrRegionalClearing = 9,\n InCash = 10,\n ACHSavingsCreditReversal = 11,\n ACHSavingsDebitReversal = 12,\n ACHSavingsCredit = 13,\n ACHSavingsDebit = 14,\n BookentryCredit = 15,\n BookentryDebit = 16,\n ACHDemandCashConcentrationDisbursementCCDCredit = 17,\n ACHDemandCashConcentrationDisbursementCCDDebit = 18,\n ACHDemandCorporateTradePaymentCTPCredit = 19,\n Cheque = 20,\n BankerSDraft = 21,\n CertifiedBankerSDraft = 22,\n BankChequeIssuedByABankingOrSimilarEstablishment = 23,\n BillOfExchangeAwaitingAcceptance = 24,\n CertifiedCheque = 25,\n LocalCheque = 26,\n ACHDemandCorporateTradePaymentCTPDebit = 27,\n ACHDemandCorporateTradeExchangeCTXCredit = 28,\n ACHDemandCorporateTradeExchangeCTXDebit = 29,\n CreditTransfer = 30,\n DebitTransfer = 31,\n ACHDemandCashConcentrationDisbursementPlusCCDCredit = 32,\n ACHDemandCashConcentrationDisbursementPlusCCDDebit = 33,\n ACHPrearrangedPaymentAndDepositPPD = 34,\n ACHSavingsCashConcentrationDisbursementCCDCredit = 35,\n ACHSavingsCashConcentrationDisbursementCCDDebit = 36,\n ACHSavingsCorporateTradePaymentCTPCredit = 37,\n ACHSavingsCorporateTradePaymentCTPDebit = 38,\n ACHSavingsCorporateTradeExchangeCTXCredit = 39,\n ACHSavingsCorporateTradeExchangeCTXDebit = 40,\n ACHSavingsCashConcentrationDisbursementPlusCCDCredit = 41,\n PaymentToBankAccount = 42,\n ACHSavingsCashConcentrationDisbursementPlusCCDDebit = 43,\n AcceptedBillOfExchange = 44,\n ReferencedHomeBankingCreditTransfer = 45,\n InterbankDebitTransfer = 46,\n HomeBankingDebitTransfer = 47,\n BankCard = 48,\n DirectDebit = 49,\n PaymentByPostgiro = 50,\n FRNorme697TelereglementCFONBFrenchOrganisationFor = 51,\n UrgentCommercialPayment = 52,\n UrgentTreasuryPayment = 53,\n CreditCard = 54,\n DebitCard = 55,\n Bankgiro = 56,\n StandingAgreement = 57,\n SEPACreditTransfer = 58,\n SEPADirectDebit = 59,\n PromissoryNote = 60,\n PromissoryNoteSignedByTheDebtor = 61,\n PromissoryNoteSignedByTheDebtorAndEndorsedByABank = 62,\n PromissoryNoteSignedByTheDebtorAndEndorsedByAThirdParty = 63,\n PromissoryNoteSignedByABank = 64,\n PromissoryNoteSignedByABankAndEndorsedByAnotherBank = 65,\n PromissoryNoteSignedByAThirdParty = 66,\n PromissoryNoteSignedByAThirdPartyAndEndorsedByABank = 67,\n OnlinePaymentService = 68,\n BillDrawnByTheCreditorOnTheDebtor = 70,\n BillDrawnByTheCreditorOnABank = 74,\n BillDrawnByTheCreditorEndorsedByAnotherBank = 75,\n BillDrawnByTheCreditorOnABankAndEndorsedByAThirdParty = 76,\n BillDrawnByTheCreditorOnAThirdParty = 77,\n BillDrawnByCreditorOnThirdPartyAcceptedAndEndorsedByBank = 78,\n NotTransferableBankerSDraft = 91,\n NotTransferableLocalCheque = 92,\n ReferenceGiro = 93,\n UrgentGiro = 94,\n FreeFormatGiro = 95,\n RequestedMethodForPaymentWasNotUsed = 96,\n ClearingBetweenPartners = 97,\n JPElectronicallyRecordedMonetaryClaims = 98\n}\n\n/** Represents a payment means for an invoice */\nexport interface PaymentMeans {\n /** This is typically the IBAN or account number\nBT-84 in XRechnung. */\n accountIdentifier?: string | undefined;\n /** The name for the account, typically the name of the owner for\na bank account.\nBT-85 in XRechnung. */\n accountName?: string | undefined;\n /** This can be the BIC\nBT-86 in XRechnung. */\n serviceProviderIdentifier?: string | undefined;\n /** If used, this is the mandate id for direct debit under which\nthe direct debit will be performed\nBT-89 in XRechnung. */\n directDebitMandateId?: string | undefined;\n /** If used, this is the IBAN for direct debit\nBT-91 in XRechnung. */\n directDebitIban?: string | undefined;\n /** The payment id, e.g. a reference number for the payment. In German,\nthis would be called \"Verwendungszweck\".\nBT-83 in XRechnung. */\n paymentId?: string | undefined;\n}\n\n/** Represents a document / attachment that is included with the invoice */\nexport interface SupportingDocument {\n /** This is typically an id or a name */\n documentReference?: string | undefined;\n /** A description of the document */\n description?: string | undefined;\n /** A link to the document in case this is an external reference */\n externalDocumentUrl?: string | undefined;\n /** The document in base64 encoded form as binary data. This is ignored if you set PlaceholderId. */\n documentBase64?: string | undefined;\n /** This should be present if DocumentBase64 is set. */\n fileName?: string | undefined;\n /** The type of the document */\n documentMimeType?: AttachmentMimeType | undefined;\n /** This is placeholder id to use instead of DocumentBase64 property for lazy-loading of documents. The use case of this is to avoid having the documents be processed in memory when they might be handled\nby the calling code. For example, in the AVACloud webservice, this placeholder can be used to avoid having to send the Base64 encoded document to the server and then downloading it again in the result. If this\nis given, the generated XML file will not be valid, since it will include the literal Guid value as a placeholder. You can use the 'xmlExportCallback' parameter in the XRechnungWriter to replace\nthe placeholder with the actual Base64 contents of the file in this library, or just use a string replace method if you're working with the XML in a different context. */\n placeholderId?: string | undefined;\n}\n\n/** Describes a mime type of a document */\nexport enum AttachmentMimeType {\n Unknown = 0,\n Pdf = 1,\n Png = 2,\n Jpeg = 3,\n Csv = 4,\n Excel = 5,\n OpenOfficeSpreadsheet = 6\n}\n\n/** Describes the VAT breakdown for an invoice in a single VAT category */\nexport interface VatBreakdown {\n /** The total net amount of this VAT category */\n netTaxableAmount?: number | undefined;\n /** The total VAT */\n vatAmount?: number | undefined;\n /** The category of the VAT */\n vatCategory?: VatCategory | undefined;\n /** The actual tax rate as a decimal value,\ne.g. 19% would be 0.19 */\n taxRate?: number | undefined;\n /** If the VAT is exempt, there should be a description here.\nFor example, in reverse charge scenarios, this text\nshould contain a reference to \"Reverse charge according to ...\". */\n vatExemptionReasonText?: string | undefined;\n /** A code from the VAT exemption reason code list(VATEX)“ */\n vatExemptionReasonCode?: string | undefined;\n}\n\n/** The category used in a VatBreakdown\"/> */\nexport enum VatCategory {\n Unknown = 0,\n StandardRate = 1,\n ZeroRatedGoods = 2,\n ExemptFromTax = 3,\n VatReverseCharge = 4,\n VatExemptReverseCharge = 5,\n FreeExportItem = 6,\n ServicesOutsideScopeOfTaxation = 7,\n CanaryIslandsGeneralIndirectTax = 8,\n TaxInCeutaAndMelilla = 9\n}\n\n/** This describes an allowance in an invoice, which is a deduction from the total amount */\nexport interface InvoiceAllowance {\n /** The net amount of the allowance */\n netAmount?: number | undefined;\n /** If this is a relative / percentage allowance, this should be set\nand give the base amount that is being used for the calculation */\n relativeAllowanceBaseAmount?: number | undefined;\n /** If this is a relative / percentage allowance, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n relativeAllowancePercentage?: number | undefined;\n /** The VAT category for the allowance */\n vatCategory?: VatCategory | undefined;\n /** The actual tax rate as a decimal value,\nmeaning 19% would be 0.19 */\n vatRate?: number | undefined;\n /** A description of the allowance. This should not be set it ReasonCode\nis provided, otherwise this one takes precedence. */\n reason?: string | undefined;\n /** A reason code for the allowance according to UNTDID 5189.\nSee this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred5189.htm */\n reasonCode?: string | undefined;\n /** A reason type for the allowance according to UNTDID 5189. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n reasonType?: AllowanceReasonType | undefined;\n}\n\n/** Type specifying the identification of an allowance from UNTDID 5189. See this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred5189.htm */\nexport enum AllowanceReasonType {\n HandlingCommission = 1,\n AmendmentCommission = 2,\n AcceptanceCommission = 3,\n CommissionForObtainingAcceptance = 4,\n CommissionOnDelivery = 5,\n AdvisingCommission = 6,\n ConfirmationCommission = 7,\n DeferredPaymentCommission = 8,\n CommissionForTakingUpDocuments = 9,\n OpeningCommission = 10,\n FeeForPaymentUnderReserve = 11,\n DiscrepancyFee = 12,\n DomicilationCommission = 13,\n CommissionForReleaseOfGoods = 14,\n CollectionCommission = 15,\n NegotiationCommission = 16,\n ReturnCommission = 17,\n BLSplittingCharges = 18,\n TrustCommission = 19,\n TransferCommission = 20,\n CommissionForOpeningIrrevocableDocumentaryCredits = 21,\n PreAdviceCommission = 22,\n SupervisoryCommission = 23,\n ModelCharges = 24,\n RiskCommission = 25,\n GuaranteeCommission = 26,\n ReimbursementCommission = 27,\n StampDuty = 28,\n Brokerage = 29,\n BankCharges = 30,\n BankChargesInformation = 31,\n CourierFee = 32,\n PhoneFee = 33,\n PostageFee = 34,\n SWIFTFee = 35,\n TelexFee = 36,\n PenaltyForLateDeliveryOfDocuments = 37,\n PenaltyForLateDeliveryOfValuationOfWorks = 38,\n PenaltyForExecutionOfWorksBehindSchedule = 39,\n OtherPenalties = 40,\n BonusForWorksAheadOfSchedule = 41,\n OtherBonus = 42,\n ProjectManagementCost = 44,\n ProRataRetention = 45,\n ContractualRetention = 46,\n OtherRetentions = 47,\n InterestOnArrears = 48,\n Interest = 49,\n ChargePerCreditCover = 50,\n ChargePerUnusedCreditCover = 51,\n MinimumCommission = 52,\n FactoringCommission = 53,\n ChamberOfCommerceCharge = 54,\n TransferCharges = 55,\n RepatriationCharges = 56,\n MiscellaneousCharges = 57,\n ForeignExchangeCharges = 58,\n AgreedDebitInterestCharge = 59,\n ManufacturersConsumerDiscount = 60,\n FaxAdviceCharge = 61,\n DueToMilitaryStatus = 62,\n DueToWorkAccident = 63,\n SpecialAgreement = 64,\n ProductionErrorDiscount = 65,\n NewOutletDiscount = 66,\n SampleDiscount = 67,\n EndOfRangeDiscount = 68,\n ChargeForACustomerSpecificFinish = 69,\n IncotermDiscount = 70,\n PointOfSalesThresholdAllowance = 71,\n TechnicalModificationCosts = 72,\n JobOrderProductionCosts = 73,\n OffPremisesCosts = 74,\n AdditionalProcessingCosts = 75,\n AttestingCharge = 76,\n RushDeliverySurcharge = 77,\n SpecialConstructionCosts = 78,\n FreightCharges = 79,\n PackingCharge = 80,\n RepairCharge = 81,\n LoadingCharge = 82,\n SetupCharge = 83,\n TestingCharge = 84,\n WarehousingCharge = 85,\n GoldSurcharge = 86,\n CopperSurcharge = 87,\n MaterialSurchargeDeduction = 88,\n LeadSurcharge = 89,\n PriceIndexSurcharge = 90,\n PlatinumSurcharge = 91,\n SilverSurcharge = 92,\n WolframSurcharge = 93,\n AluminumSurcharge = 94,\n Discount = 95,\n Insurance = 96,\n MinimumOrderMinimumBillingCharge = 97,\n MaterialSurchargeSpecialMaterials = 98,\n Surcharge = 99,\n SpecialRebate = 100,\n CarbonFootprintCharge = 101,\n FixedLongTerm = 102,\n Temporary = 103,\n Standard = 104,\n YearlyTurnover = 105\n}\n\n/** This describes an charge in an invoice, which is a surcharge to the total amount */\nexport interface InvoiceCharge {\n /** The net amount of the charge */\n netAmount?: number | undefined;\n /** If this is a relative / percentage charge, this should be set\nand give the base amount that is being used for the calculation */\n relativeChargeBaseAmount?: number | undefined;\n /** If this is a relative / percentage charge, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n relativeChargePercentage?: number | undefined;\n /** The VAT category for the charge */\n vatCategory?: VatCategory | undefined;\n /** The actual tax rate as a decimal value,\nmeaning 19% would be 0.19 */\n vatRate?: number | undefined;\n /** A description of the charge. This should not be set it ReasonCode\nis provided, otherwise this one takes precedence. */\n reason?: string | undefined;\n /** A reason code for the charge according to UNTDID 7161.\nSee this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred7161.htm */\n reasonCode?: string | undefined;\n /** A reason type for the charge according to UNTDID 7161. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n reasonType?: ChargeReasonType | undefined;\n}\n\n/** Type specifying a special service from UNTDID 7161. See this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred7161.htm */\nexport enum ChargeReasonType {\n Advertising = 0,\n Telecommunication = 1,\n TechnicalModification = 2,\n JobOrderProduction = 3,\n Outlays = 4,\n OffPremises = 5,\n AdditionalProcessing = 6,\n Attesting = 7,\n Acceptance = 8,\n RushDelivery = 9,\n SpecialConstruction = 10,\n AirportFacilities = 11,\n Concession = 12,\n CompulsoryStorage = 13,\n FuelRemoval = 14,\n IntoPlane = 15,\n Overtime = 16,\n Tooling = 17,\n Miscellaneous = 18,\n AdditionalPackaging = 19,\n Dunnage = 20,\n Containerisation = 21,\n CartonPacking = 22,\n HessianWrapped = 23,\n PolyethyleneWrapPacking = 24,\n MiscellaneousTreatment = 25,\n EnamellingTreatment = 26,\n HeatTreatment = 27,\n PlatingTreatment = 28,\n Painting = 29,\n Polishing = 30,\n Priming = 31,\n PreservationTreatment = 32,\n Fitting = 33,\n Consolidation = 34,\n BillOfLading = 35,\n Airbag = 36,\n Transfer = 37,\n Slipsheet = 38,\n Binding = 39,\n RepairOrReplacementOfBrokenReturnablePackage = 40,\n EfficientLogistics = 41,\n Merchandising = 42,\n ProductMix = 43,\n OtherServices = 44,\n PickUp = 45,\n ChronicIllness = 46,\n NewProductIntroduction = 47,\n DirectDelivery = 48,\n Diversion = 49,\n Disconnect = 50,\n Distribution = 51,\n HandlingOfHazardousCargo = 52,\n RentsAndLeases = 53,\n LocationDifferential = 54,\n AircraftRefueling = 55,\n FuelShippedIntoStorage = 56,\n CashOnDelivery = 57,\n SmallOrderProcessingService = 58,\n ClericalOrAdministrativeServices = 59,\n Guarantee = 60,\n CollectionAndRecycling = 61,\n CopyrightFeeCollection = 62,\n VeterinaryInspectionService = 63,\n PensionerService = 64,\n MedicineFreePassHolder = 65,\n EnvironmentalProtectionService = 66,\n EnvironmentalCleanUpService = 67,\n NationalChequeProcessingServiceOutsideAccountArea = 68,\n NationalPaymentServiceOutsideAccountArea = 69,\n NationalPaymentServiceWithinAccountArea = 70,\n Adjustments = 71,\n Authentication = 72,\n Cataloguing = 73,\n Cartage = 74,\n Certification = 75,\n CertificateOfConformance = 76,\n CertificateOfOrigin = 77,\n Cutting = 78,\n ConsularService = 79,\n CustomerCollection = 80,\n PayrollPaymentService = 81,\n CashTransportation = 82,\n HomeBankingService = 83,\n BilateralAgreementService = 84,\n InsuranceBrokerageService = 85,\n ChequeGeneration = 86,\n PreferentialMerchandisingLocation = 87,\n Crane = 88,\n SpecialColourService = 89,\n Sorting = 90,\n BatteryCollectionAndRecycling = 91,\n ProductTakeBackFee = 92,\n CarLoading = 93,\n Cleaning = 94,\n CigaretteStamping = 95,\n CountAndRecount = 96,\n LayoutDesign = 97,\n DriverAssignedUnloading = 98,\n Delivery = 99,\n Engraving = 100,\n Expediting = 101,\n ExchangeRateGuarantee = 102,\n Fabrication = 103,\n FreightEqualization = 104,\n FreightExtraordinaryHandling = 105,\n FreightService = 106,\n FillingHandling = 107,\n Financing = 108,\n Grinding = 109,\n Hose = 110,\n Handling = 111,\n HoistingAndHauling = 112,\n Installation = 113,\n InstallationAndWarranty = 114,\n InsideDelivery = 115,\n Inspection = 116,\n InstallationAndTraining = 117,\n Invoicing = 118,\n Koshering = 119,\n CarrierCount = 120,\n Labelling = 121,\n Labour = 122,\n RepairAndReturn = 123,\n Legalisation = 124,\n Mounting = 125,\n MailInvoice = 126,\n MailInvoiceToEachLocation = 127,\n NonReturnableContainers = 128,\n OutsideCableConnectors = 129,\n InvoiceWithShipment = 130,\n PhosphatizingSteelTreatment = 131,\n Packing = 132,\n Palletizing = 133,\n Repacking = 134,\n Repair = 135,\n ReturnableContainer = 136,\n Restocking = 137,\n ReDelivery = 138,\n Refurbishing = 139,\n RailWagonHire = 140,\n Loading = 141,\n Salvaging = 142,\n ShippingAndHandling = 143,\n SpecialPackaging = 144,\n Stamping = 145,\n ConsigneeUnload = 146,\n ShrinkWrap = 147,\n SpecialHandling = 148,\n SpecialFinish = 149,\n SetUp = 150,\n TankRenting = 151,\n Testing = 152,\n TransportationThirdPartyBilling = 153,\n TransportationByVendor = 154,\n DropYard = 155,\n DropDock = 156,\n Warehousing = 157,\n CombineAllSameDayShipment = 158,\n SplitPickUp = 159,\n MutuallyDefined = 160\n}\n\n/** Represents a single invoice line item */\nexport interface InvoiceLineItem {\n /** An unique identifier for the line item */\n identifier?: string | undefined;\n /** An unstructured note to classify line items */\n note?: string | undefined;\n /** A seller-defined object identifier for this line item,\nmeaning an identifier for the actual line. This could be\na numbering sequence or a reference to a product. */\n objectIdentifier?: string | undefined;\n /** The actual invoiced quantity of the line item */\n quantity?: number | undefined;\n /** A code for the unit of the quantity. This should be a code as defined\nin UN/ECE Recommendation No. 20 „Codes for Units of Measure Used in \nInternational Trade“ und UN/ECE Recommendation No 21 „Codes for Passengers,\nTypes of Cargo, Packages and Packaging Materials(with Complementary Codes for Package Names).\nSee here: https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Registry+of+supporting+artefacts+to+implement+EN16931 */\n unitCode?: string | undefined;\n /** The net amount for this line item. This is the total price for positions */\n netAmount?: number | undefined;\n /** A reference to an item in the buyers purachase order */\n purchaseOrderReference?: string | undefined;\n /** Information about the invoice period for this line item. */\n lineItemPeriod?: InvoicePeriod | undefined;\n /** Allowances specific to this line item */\n allowances?: LineItemAllowance[] | undefined;\n /** charges specific to this line item */\n charges?: LineItemCharge[] | undefined;\n /** Price details for this line item. */\n priceDetails?: LineItemPriceDetail | undefined;\n /** VAT information for this line item */\n vatInformation?: LineItemVatInformation[] | undefined;\n /** Information about this line item */\n itemInformation?: LineItemInformation | undefined;\n /** Line items can be nested, in which case this property holds the sub items */\n subItems?: InvoiceLineItem[] | undefined;\n}\n\n/** Allowance for a single line item */\nexport interface LineItemAllowance {\n /** The net amount of the allowance */\n netAmount?: number | undefined;\n /** If this is a relative / percentage allowance, this should be set\nand give the base amount that is being used for the calculation */\n relativeAllowanceBaseAmount?: number | undefined;\n /** If this is a relative / percentage allowance, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n relativeAllowancePercentage?: number | undefined;\n /** A description of the allowance. */\n reason?: string | undefined;\n /** A reason code for the allowance according to UNTDID 5189. Should be a code\nfrom this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred5189.htm */\n reasonCode?: string | undefined;\n /** A reason type for the allowance according to UNTDID 5189. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n reasonType?: AllowanceReasonType | undefined;\n}\n\n/** Charge for a single line item */\nexport interface LineItemCharge {\n /** The net amount of the charge */\n netAmount?: number | undefined;\n /** If this is a relative / percentage charge, this should be set\nand give the base amount that is being used for the calculation */\n relativeChargeBaseAmount?: number | undefined;\n /** If this is a relative / percentage charge, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n relativeChargePercentage?: number | undefined;\n /** A description of the charge. */\n reason?: string | undefined;\n /** A reason code for the charge according to UNTDID 7161.\nSee this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred7161.htm */\n reasonCode?: string | undefined;\n /** A reason type for the charge according to UNTDID 7161. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n reasonType?: ChargeReasonType | undefined;\n}\n\n/** Price details about a line item */\nexport interface LineItemPriceDetail {\n /** The net price of this line item. This is the unit price */\n netPrice?: number | undefined;\n /** A discount for this line item, given as an absolute value. It is essentially the difference between NetPrice (or the list price)\nand the actual invoiced price GrossPrice. */\n absoluteDiscountPerItem?: number | undefined;\n /** The gross price of this line item, meaning the price without taxes\nthat will be invoiced */\n grossPrice?: number | undefined;\n /** The quantity for which this price is valid. In combination with the NetPrice,\nyou basically specify the denominator of the unit price for a line item. */\n baseQuantity?: number | undefined;\n /** A code representing the unit for the base quantity */\n baseQuantityUnitCode?: string | undefined;\n}\n\n/** VAT information for a single line item */\nexport interface LineItemVatInformation {\n /** The VAT category for the charge */\n vatCategory?: VatCategory | undefined;\n /** The actual tax rate as a decimal value,\nmeaning 19% would be 0.19 */\n vatRate?: number | undefined;\n}\n\n/** Information about a single line item */\nexport interface LineItemInformation {\n /** A name for the line item */\n name?: string | undefined;\n /** A description for the line item */\n description?: string | undefined;\n /** An identifier assigned by the seller, e.g. an internal article number */\n sellerIdentifier?: string | undefined;\n /** An identifier assigned by the buyer, e.g. an internal article number */\n buyerIdentifier?: string | undefined;\n /** A standard identifier for the line item, e.g. an EAN or a GTIN */\n standardIdentifier?: string | undefined;\n /** If used together with StandardIdentifier, this is the scheme identifier\nfor which standard is used. */\n standardSchemeId?: string | undefined;\n /** A list of classification identifiers for the line item. You can further use ClassificationTypes to specify the scheme identifier for each classification identifier. */\n classificationIdentifiers?: string[] | undefined;\n /** This is used in connection with ClassificationIdentifiers. It is the scheme identifier\nfor each identifier. If this list is used, it should have the same length as ClassificationIdentifiers, with null or empty values used\nfor non-existing scheme identifiers. */\n classificationTypes?: string[] | undefined;\n /** The origin country code according to ISO 3166-1 in 2 letter format */\n countryOfOrigin?: string | undefined;\n /** Optional additional attributes for this line item */\n attributes?: LineItemAttribute[] | undefined;\n}\n\n/** A key-value pair for additional information */\nexport interface LineItemAttribute {\n /** The key / name of the attribute */\n name?: string | undefined;\n /** The value of the attribute */\n value?: string | undefined;\n}\n\n/** This enum represents the source of an invoice, e.g. from which format it was imported */\nexport enum SourceType {\n Self = 0,\n Ubl = 1,\n Cii = 2,\n FacturX = 3\n}\n\n/** This is a wrapper class that maps Dangl.AVA projects along with additional required information to create invoices */\nexport interface AvaProjectWrapper {\n /** The Dangl.AVA.Project from which to convert */\n project?: ProjectDto | undefined;\n /** The number of the invoice */\n invoiceNumber?: string | undefined;\n /** Attached documents to the invoice */\n documents?: SupportingDocument[] | undefined;\n /** The period during which the services or goods were delivered */\n invoicePeriod?: InvoicePeriod | undefined;\n /** Instructions how to perform the payment */\n paymentInstructions?: PaymentInstructions | undefined;\n /** The type of the invoice */\n invoiceType?: InvoiceType | undefined;\n /** If this is set to true, the invoice will be marked as a reverse charge invoice\nin all VAT rates. You still need to ensure that the actual tax rates are set\nto zero in all elements */\n isEuReverseChargeInvoice?: boolean | undefined;\n /** Until when the payment is due */\n paymentDueDate?: Date | undefined;\n /** A text description of payment terms, e.g. cash discounts or payment conditions */\n paymentTerms?: string | undefined;\n /** In case of partial of final invoices, it's possible to reference the previous invoice numbers */\n previousInvoices?: PreviousInvoice[] | undefined;\n /** If parts of this invoice (or of previous invoices) have already been paid,\nthen this property can be used to specify that some parts of the invoice\nare already paid and this will be deducted from the to be paid amount. */\n alreadyPaidTotalGross?: number | undefined;\n /** An object holding reference used in this invoice */\n references?: References | undefined;\n /** Optional document level allowances. For example, those can be used to supply\nglobal discounts e.g. for security deposits. When using this property, please\npay attention that a deduction factor on the exported ServiceSpecification\nwill also be exported as an allowance, in this case the total price of the\ninvoice might be different from the total price of the ServiceSpecification. */\n allowances?: InvoiceAllowance[] | undefined;\n /** Optional document level charges, e.g. for shipping or handling. When using this property,\nplease pay attention that the charges given here will be applied to the already calculated\ntotal price of the ServiceSpecification, in this case the total price of the invoice\nmight be different from the total price of the ServiceSpecification. */\n charges?: InvoiceCharge[] | undefined;\n /** Information about the delivery\nBG-13 in XRechnung */\n deliveryInformation?: DeliveryInformation | undefined;\n /** Information about the sellers tax representative. BG-11 in XRechnung */\n sellerTaxRepresentative?: Organization | undefined;\n}\n","import { ITextWordInvoice, InvoiceType } from '../model';\n\nexport const DEFAULT_TEXT_WORD_INVOICE: ITextWordInvoice = {\n invoiceTitle: {\n [InvoiceType.PartialInvoice]: 'Invoice',\n [InvoiceType.CommercialInvoice]: 'Invoice',\n [InvoiceType.CreditNote]: 'Credit Note',\n [InvoiceType.CorrectedInvoice]: 'Corrected Invoice',\n [InvoiceType.SelfBilledInvoice]: 'Invoice',\n [InvoiceType.PartialConstructionInvoice]: 'Invoice',\n [InvoiceType.PartialFinalConstructionInvoice]: 'Invoice',\n [InvoiceType.FinalConstructionInvoice]: 'Invoice'\n },\n invoiceBuyerTitle: 'Receiver',\n invoiceSellerTitle: 'Sender',\n vatId: 'VAT ID',\n detailsInvoiceNumber: 'Invoice Number',\n detailsInvoiceDate: 'Invoice Date',\n detailsPaymentDueDate: 'Due Date',\n detailsCurrencyCode: 'Currency',\n detailsPaymentTerms: 'Payment Terms',\n referencesTopic: 'References',\n referencesBuyerReference: 'Buyer Reference',\n referencesProjectReference: 'Project Reference',\n referencesContractReference: 'Contract Reference',\n referencesPurchaseOrderReference: 'Purchase Order Reference',\n referencesSalesOrderReference: 'Sales Order Reference',\n referencesReceivingAdviceReference: 'Receiving Advice Reference',\n referencesDispatchAdviceReference: 'Dispatch Advice Reference',\n referencesTenderOrLotReference: 'Tender or Lot Reference',\n referencesInvoicedObjectIdentifier: 'Invoiced Object Identifier',\n tableHeadDescription: 'Description',\n tableHeadQuantity: 'Quantity',\n tableHeadUnit: 'Unit',\n tableHeadNetPrice: 'Net Price',\n tableHeadNetAmount: 'Net Amount',\n totalsTopic: 'Totals',\n totalsTotalNet: 'Total Net',\n totalsTotalAllowances: 'Total Allowances',\n totalsTotalCharges: 'Total Charges',\n totalsTotalAfterDeductions: 'Total After Deductions',\n totalsTotalVatAmount: 'Total VAT Amount',\n totalsTotalGross: 'Total Gross',\n totalsAlreadyPaidTotal: 'Already Paid Total',\n totalsTotalToBePaid: 'Total to be Paid',\n instructionsTopic: 'Payment Instructions',\n instructionsAccountIdentifier: 'Account Identifier',\n instructionsAccountName: 'Account Name',\n instructionsServiceProviderIdentifier: 'Service Provider Identifier',\n notesTopic: 'Notes',\n attachmentsHeading: 'Attachments',\n attachmentsName: 'Name',\n attachmentsDescription: 'Description',\n attachmentsUrl: 'Url',\n attachmentsDataSize: 'Size',\n attachmentsMimeType: 'Mime Type',\n attachmentsFileName: 'File Name',\n attachmentsDownloadButton: 'Download',\n contactPersonName: 'Contact Person Name',\n contactPersonEmail: 'Contact Person Email',\n contactPersonPhone: 'Contact Person Phone',\n vat: 'VAT',\n taxRate: 'Tax Rate',\n deliveryInformationTitle: 'Delivery Information',\n deliverToName: 'Name',\n deliverToLocationIdentifier: 'Location Identifier',\n deliveryDate: 'Date',\n deliveryAddress: 'Address',\n taxesHeading: 'Taxes',\n invoiceAllowancesHeader: 'Allowances',\n invoiceAllowancesTableHeaderSum: 'Sum',\n invoiceAllowancesTableHeaderVatRate: 'VAT',\n invoiceAllowancesTableHeaderAllowance: 'Allowance',\n invoiceAllowancesTableHeaderBase: 'Base',\n invoiceChargesHeader: 'Charges',\n invoiceChargesTableHeaderSum: 'Sum',\n invoiceChargesTableHeaderVatRate: 'VAT',\n invoiceChargesTableHeaderCharge: 'Charge',\n invoiceChargesTableHeaderBase: 'Base',\n lineItemDiscount: 'Discount',\n lineItemCharges: 'Charges',\n lineItemAllowances: 'Allowances',\n lineItemReason: 'Reason',\n invoiceSellerTaxRepresentativeTitle: 'Tax Representative',\n previousInvoicesTopic: 'Previous Invoices',\n previousInvoiceNumber: 'Previous Invoice Number',\n previousInvoiceDate: 'Previous Invoice Date'\n};\n\nexport const germanTextsInvoice: ITextWordInvoice = {\n invoiceTitle: {\n [InvoiceType.PartialInvoice]: 'Rechnung',\n [InvoiceType.CommercialInvoice]: 'Rechnung',\n [InvoiceType.CreditNote]: 'Gutschrift',\n [InvoiceType.CorrectedInvoice]: 'Rechnungskorrektur',\n [InvoiceType.SelfBilledInvoice]: 'Rechnung',\n [InvoiceType.PartialConstructionInvoice]: 'Rechnung',\n [InvoiceType.PartialFinalConstructionInvoice]: 'Rechnung',\n [InvoiceType.FinalConstructionInvoice]: 'Rechnung'\n },\n invoiceBuyerTitle: 'Empfänger',\n invoiceSellerTitle: 'Rechnungssteller',\n vatId: 'USt.-ID',\n detailsInvoiceNumber: 'Rechnungsnummer',\n detailsInvoiceDate: 'Rechnungsdatum',\n detailsPaymentDueDate: 'Fälligkeitsdatum',\n detailsCurrencyCode: 'Währung',\n detailsPaymentTerms: 'Zahlungsbedingungen',\n referencesTopic: 'Referenzen',\n referencesBuyerReference: 'Käuferreferenz',\n referencesProjectReference: 'Projektreferenz',\n referencesContractReference: 'Vertragsreferenz',\n referencesPurchaseOrderReference: 'Bestellreferenz',\n referencesSalesOrderReference: 'Auftragsreferenz',\n referencesReceivingAdviceReference: 'Empfangsbestätigungsreferenz',\n referencesDispatchAdviceReference: 'Lieferreferenz',\n referencesTenderOrLotReference: 'Ausschreibungs- oder Losreferenz',\n referencesInvoicedObjectIdentifier: 'Objektreferenz',\n tableHeadDescription: 'Beschreibung',\n tableHeadQuantity: 'Menge',\n tableHeadUnit: 'Einheit',\n tableHeadNetPrice: 'Nettopreis',\n tableHeadNetAmount: 'Nettomenge',\n totalsTopic: 'Gesamt',\n totalsTotalNet: 'Gesamt Netto',\n totalsTotalAllowances: 'Gesamt Rabatt',\n totalsTotalCharges: 'Gesamt Zuschlag',\n totalsTotalAfterDeductions: 'Summe nach Rabatten',\n totalsTotalVatAmount: 'Summe Umsatzsteuer',\n totalsTotalGross: 'Gesamt Brutto',\n totalsAlreadyPaidTotal: 'Bereits bezahlt',\n totalsTotalToBePaid: 'Gesamt zu zahlen',\n instructionsTopic: 'Zahlungsanweisungen',\n instructionsAccountIdentifier: 'Kontonummer',\n instructionsAccountName: 'Kontoname',\n instructionsServiceProviderIdentifier: 'Bank',\n notesTopic: 'Hinweise',\n attachmentsHeading: 'Anhänge',\n attachmentsName: 'Name',\n attachmentsDescription: 'Beschreibung',\n attachmentsUrl: 'Url',\n attachmentsDataSize: 'Größe',\n attachmentsMimeType: 'Typ',\n attachmentsFileName: 'Dateiname',\n attachmentsDownloadButton: 'Download',\n contactPersonName: 'Name der Kontaktperson',\n contactPersonEmail: 'E-Mail der Kontaktperson',\n contactPersonPhone: 'Kontaktperson Telefon',\n vat: 'MwSt.',\n taxRate: 'Steuersatz',\n deliveryInformationTitle: 'Lieferinformationen',\n deliverToName: 'Liefername',\n deliverToLocationIdentifier: 'Lieferort',\n deliveryDate: 'Lieferdatum',\n deliveryAddress: 'Lieferadresse',\n taxesHeading: 'Steuer',\n invoiceAllowancesHeader: 'Nachlässe',\n invoiceAllowancesTableHeaderSum: 'Summe',\n invoiceAllowancesTableHeaderVatRate: 'Steuersatz',\n invoiceAllowancesTableHeaderAllowance: 'Nachlass',\n invoiceAllowancesTableHeaderBase: 'Basis',\n invoiceChargesHeader: 'Zuschläge',\n invoiceChargesTableHeaderSum: 'Summe',\n invoiceChargesTableHeaderVatRate: 'Steuersatz',\n invoiceChargesTableHeaderCharge: 'Zuschlag',\n invoiceChargesTableHeaderBase: 'Basis',\n lineItemDiscount: 'Rabatt',\n lineItemCharges: 'Zuschlag',\n lineItemAllowances: 'Nachlass',\n lineItemReason: 'Grund',\n invoiceSellerTaxRepresentativeTitle: 'Steuervertreter',\n previousInvoicesTopic: 'Vorherige Rechnungen',\n previousInvoiceNumber: 'Vorherige Rechnungsnummer',\n previousInvoiceDate: 'Vorheriges Rechnungsdatum'\n};\n","import { LanguageType } from '../model';\n\nexport const DEFAULT_DIGITS_INFO: string = '1.3-3';\nexport const DEFAULT_CURRENCY_CODE: string = 'USD';\nexport const DEFAULT_LANGUAGE: LanguageType = 'en';\nexport const localeTypes = {\n en: 'en-US',\n de: 'de-DE'\n};\n","import { ExecutionDescriptionDto, IElementDto, NoteTextDto, PositionDto, ServiceSpecificationGroupDto } from '../model';\nimport { FilterFunction } from '../model/config-tree.model';\n\nexport const DEFAULT_FILTERS: FilterFunction[] = [\n (element: IElementDto, filter: string) => {\n if (\n element.elementType === 'PositionDto' ||\n element.elementType === 'ServiceSpecificationGroupDto' ||\n element.elementType === 'NoteTextDto'\n ) {\n return (element as PositionDto | ServiceSpecificationGroupDto | NoteTextDto).shortText?.trim().toLocaleLowerCase().includes(filter);\n }\n\n return false;\n },\n (element: IElementDto, filter: string) => {\n if (element.elementType === 'ExecutionDescriptionDto') {\n return (element as ExecutionDescriptionDto).label?.trim().toLocaleLowerCase().includes(filter);\n }\n\n return false;\n },\n (element: IElementDto, filter: string) => {\n if (element.elementType === 'PositionDto' || element.elementType === 'ServiceSpecificationGroupDto') {\n return (element as PositionDto | ServiceSpecificationGroupDto).itemNumber?.stringRepresentation?.includes(filter);\n }\n\n return false;\n }\n];\n","import { LanguageType } from '../../invoice/model';\n\nexport interface ITextWords {\n language: LanguageType;\n textSearch: string;\n textNothing: string;\n textNothingFiltered: string;\n textAll: string;\n tooltipAllOpen: string;\n tooltipAllClose: string;\n tooltipAllAdd: string;\n tooltipAllRemove: string;\n defaultNameNoteText: string;\n defaultNameDescription: string;\n defaultNameGroup: string;\n defaultNamePosition: string;\n}\n\nexport const DEFAULT_TEXT_WORDS: ITextWords = {\n language: 'en',\n textSearch: 'Search',\n textNothing: 'Nothing',\n textNothingFiltered: 'No Filter',\n textAll: 'All',\n tooltipAllOpen: 'Expand all',\n tooltipAllClose: 'Collapse all',\n tooltipAllAdd: 'Add all',\n tooltipAllRemove: 'Remove all',\n defaultNameNoteText: 'Note Text',\n defaultNameDescription: 'Description',\n defaultNameGroup: 'Group',\n defaultNamePosition: 'Position'\n};\n\nexport const germanTextsAva: ITextWords = {\n language: 'de',\n textSearch: 'Suche',\n textNothing: 'Nichts',\n textNothingFiltered: 'Kein Filter',\n textAll: 'Alle',\n tooltipAllOpen: 'Alle aufklappen',\n tooltipAllClose: 'Alle zuklappen',\n tooltipAllAdd: 'Alle hinzufügen',\n tooltipAllRemove: 'Alle entfernen',\n defaultNameNoteText: 'Hinweis',\n defaultNameDescription: 'Beschreibung',\n defaultNameGroup: 'Gruppe',\n defaultNamePosition: 'Position'\n};\n","export const defaults = {\n doubleClickTimeoutInMilliseconds: 300\n};\n","import { BehaviorSubject, Observable, distinctUntilChanged, map } from 'rxjs';\n\nimport { DEFAULT_LANGUAGE, localeTypes } from '../../invoice/constants';\nimport { LanguageType } from '../../invoice/model';\n\nimport { DEFAULT_FILTERS } from '../constants';\nimport { ITextWords, germanTextsAva, DEFAULT_TEXT_WORDS } from '../constants/defaultTextWords';\nimport { FilterFunction, IConfigurationTree } from '../model/config-tree.model';\nimport { IFunctionViewLine } from '../model/function-view-line.model';\nimport { SelectedElement } from '../model/selecting.model';\nimport { TableColumnType } from '../model/tableColumnType';\nimport { IKeyboardOperationConfig } from '../services/keyboard-operation.service';\n\nexport class ConfigurationTreeService {\n private _language: LanguageType = DEFAULT_LANGUAGE;\n private _textWords: ITextWords = this.selectTextWords(this._language);\n private _indent = '20px';\n private _functionView: IFunctionViewLine[] = [];\n private _selectedColor: string = '';\n private _allowDblClick = true;\n private _mouseAwareKeyboardControl = true;\n private _addTableColumns: TableColumnType[] = [];\n private _isSelectionMode = false;\n private _initiallySelectedElements: SelectedElement[] = [];\n private _customKeyboardOperationConfig: IKeyboardOperationConfig | null = null;\n private _listFilterFunc: FilterFunction[] = DEFAULT_FILTERS;\n\n private treeConfigSource = new BehaviorSubject<IConfigurationTree>(this.getDefaultConfiguration());\n public treeConfig$: Observable<IConfigurationTree> = this.treeConfigSource.asObservable();\n constructor() {}\n\n public setTreeConfig(value: IConfigurationTree): void {\n this.treeConfigSource.next(value);\n }\n\n public getCurrentTreeConfig(): IConfigurationTree | null {\n return this.treeConfigSource.getValue();\n }\n\n public getTextWordsFromConfig(): Observable<ITextWords | null> {\n return this.treeConfig$.pipe(\n map((config) => {\n let configTextWords: ITextWords;\n if (typeof config?.textWords === 'string') {\n configTextWords = this.selectTextWords(config.textWords);\n } else {\n configTextWords = !config.textWords ? this._textWords : config.textWords;\n }\n this._language = configTextWords.language;\n return { ...configTextWords };\n }),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n private selectTextWords(languageWord: LanguageType): ITextWords {\n return languageWord === 'de' ? germanTextsAva : DEFAULT_TEXT_WORDS;\n }\n\n public getIndentFromConfig(): Observable<string> {\n return this.treeConfig$.pipe(\n map((config) => config?.indent || ''),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getFunctionViewFromConfig(): Observable<IFunctionViewLine[]> {\n return this.treeConfig$.pipe(\n map((config) => config?.functionView || []),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getSelectedColorFromConfig(): Observable<string> {\n return this.treeConfig$.pipe(\n map((config) => config?.selectedColor || ''),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getAllowDblClickFromConfig(): Observable<boolean> {\n return this.treeConfig$.pipe(\n map((config) => config?.allowDblClick || false),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getAddTableColumnsFromConfig(): Observable<TableColumnType[]> {\n return this.treeConfig$.pipe(\n map((config) => config?.addTableColumns || []),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getIsSelectionModeFromConfig(): Observable<boolean> {\n return this.treeConfig$.pipe(\n map((config) => config?.isSelectionMode || false),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getInitiallySelectedElementsViewFromConfig(): Observable<SelectedElement[]> {\n return this.treeConfig$.pipe(\n map((config) => config?.initiallySelectedElements || []),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getMouseAwareKeyboardControlFromConfig(): Observable<boolean> {\n return this.treeConfig$.pipe(\n map((config) => config?.mouseAwareKeyboardControl || false),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getCustomKeyboardOperationConfigFromConfig(): Observable<IKeyboardOperationConfig | null> {\n return this.treeConfig$.pipe(\n map((config) => config?.customKeyboardOperationConfig || null),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getListFilterFuncFromConfig(): Observable<FilterFunction[]> {\n return this.treeConfig$.pipe(\n map((config) => config?.listFilterFunc || this._listFilterFunc),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getHideParentItemNumbersFromConfig(): Observable<boolean> {\n return this.treeConfig$.pipe(\n map((config) => config?.hideParentItemNumbers || false),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n private getDefaultConfiguration(): IConfigurationTree {\n return {\n textWords: this._textWords,\n indent: this._indent,\n functionView: this._functionView,\n selectedColor: this._selectedColor,\n allowDblClick: this._allowDblClick,\n addTableColumns: this._addTableColumns,\n isSelectionMode: this._isSelectionMode,\n initiallySelectedElements: this._initiallySelectedElements,\n mouseAwareKeyboardControl: this._mouseAwareKeyboardControl,\n customKeyboardOperationConfig: this._customKeyboardOperationConfig,\n listFilterFunc: this._listFilterFunc\n };\n }\n\n get locale(): string {\n return localeTypes[this._language];\n }\n}\n","import { signal, WritableSignal } from '@angular/core';\n\nimport { IElementDto, ServiceSpecificationGroupDto } from '@dangl/ava-model';\n\nexport interface IExpansionState {\n [id: string]: boolean;\n}\nexport class ExpandParentGroupService {\n private expansionState = signal<IExpansionState>({});\n constructor() {}\n\n expandParentGroups(element: IElementDto, flatElements: IElementDto[] | null, expansionState: { [id: string]: boolean }): void {\n if (!flatElements?.length) {\n return;\n }\n\n const serviceSpecificationGroups = flatElements.filter(\n (item): item is ServiceSpecificationGroupDto => !!(item as ServiceSpecificationGroupDto).elements?.length\n );\n\n if (!serviceSpecificationGroups.length) {\n return;\n }\n\n const findAndExpandParent = (currentElement: IElementDto): ServiceSpecificationGroupDto | null => {\n for (const servSpec of serviceSpecificationGroups) {\n if (expansionState[servSpec.id]) {\n continue;\n }\n\n if (servSpec.elements?.find((item) => currentElement.id === item.id)) {\n expansionState[servSpec.id] = true;\n return servSpec;\n }\n }\n return null;\n };\n\n const expandRecursive = (innerElement: IElementDto): void => {\n const parentGroup = findAndExpandParent(innerElement);\n if (parentGroup) {\n expandRecursive(parentGroup);\n }\n };\n\n expandRecursive(element);\n }\n\n setExpansionState(state: IExpansionState): void {\n this.expansionState.set(state);\n }\n\n getExpansionState(): WritableSignal<IExpansionState> {\n return this.expansionState;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { IElementDto, ServiceSpecificationDto, ServiceSpecificationGroupDto } from '@dangl/ava-model';\n\nimport { Observable, ReplaySubject, of } from 'rxjs';\n\nimport { DEFAULT_FILTERS } from '../constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FlatElementsService {\n private _flatElementsDto: IElementDto[] = [];\n private flatElementsDtoSource = new ReplaySubject<IElementDto[]>(1);\n flatElementsDto = this.flatElementsDtoSource.asObservable();\n\n private objectElementsDto!: { [id: string]: IElementDto };\n\n listFilterFunc = DEFAULT_FILTERS;\n\n constructor() {}\n\n setElementsDto(elementsDto: ServiceSpecificationDto): void {\n this._flatElementsDto = FlatElementsService.getFlatElements(elementsDto);\n this.objectElementsDto = FlatElementsService.getObjectElements(this._flatElementsDto);\n this.flatElementsDtoSource.next(this._flatElementsDto);\n }\n\n public static getFlatElements(container: { elements?: IElementDto[] | null }): IElementDto[] {\n const flatElements: IElementDto[] = [];\n\n if (container.elements) {\n container.elements.forEach((e) => {\n flatElements.push(e);\n if (e.elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n const group = e as ServiceSpecificationGroupDto;\n flatElements.push(...this.getFlatElements(group));\n }\n });\n }\n\n return flatElements;\n }\n\n public static getObjectElements(elements: IElementDto[]): { [id: string]: IElementDto } {\n const objectElements: { [id: string]: IElementDto } = {};\n if (elements?.length) {\n elements.forEach((e) => {\n if (e?.id) {\n objectElements[e.id] = e;\n }\n });\n }\n return objectElements;\n }\n\n getOneElementById(id: string | null): Observable<IElementDto | null> {\n return of(id ? this.objectElementsDto?.[id] || null : null);\n }\n\n checkFilterValue(element: IElementDto, filterValue: string): boolean {\n const cleanFilter = filterValue.trim().toLocaleLowerCase();\n for (const func of this.listFilterFunc) {\n if (func(element, cleanFilter)) {\n return true;\n }\n }\n return false;\n }\n\n jumpNextNode(delta: number, currentElement: IElementDto | null, conditionFunc?: (e: IElementDto) => boolean): IElementDto | null {\n if (!this._flatElementsDto.length || (conditionFunc && !this._flatElementsDto.find((item) => conditionFunc(item)))) {\n return null;\n }\n const startElement = currentElement || this._flatElementsDto[0];\n let nextIndex = this._flatElementsDto.findIndex((item) => startElement.id === item.id);\n if (currentElement) {\n nextIndex = this.getNextIndex(this._flatElementsDto.length, nextIndex, delta);\n }\n while (conditionFunc && !conditionFunc(this._flatElementsDto[nextIndex])) {\n nextIndex = this.getNextIndex(this._flatElementsDto.length, nextIndex, delta);\n }\n return this._flatElementsDto[nextIndex];\n }\n\n private getNextIndex(length: number, index: number, delta: number): number {\n let nextIndex = index + delta;\n nextIndex = nextIndex < 0 ? length - 1 : nextIndex;\n nextIndex = nextIndex > length - 1 ? 0 : nextIndex;\n return nextIndex;\n }\n\n public getObjectElementsDto(): { [id: string]: IElementDto } {\n return this.objectElementsDto;\n }\n}\n","import { ReplaySubject } from 'rxjs';\n\nimport { IElementDto } from '../model';\n\nexport class SelectElementService {\n private preselectedElementSource = new ReplaySubject<IElementDto | null>(1);\n private preselectedElementWasNull = false;\n preselectedElement = this.preselectedElementSource.asObservable();\n\n private selectClickElementSource = new ReplaySubject<IElementDto | null>(1);\n selectClickElement = this.selectClickElementSource.asObservable();\n\n private selectDblClickElementSource = new ReplaySubject<IElementDto>(1);\n selectDblClickElement = this.selectDblClickElementSource.asObservable();\n\n private selectContextMenuElementSource = new ReplaySubject<{ position: { x: string; y: string }; node: IElementDto }>(1);\n selectContextMenuElement = this.selectContextMenuElementSource.asObservable();\n\n setPreselectedElement(element: IElementDto | null): void {\n this.preselectedElementSource.next(element);\n this.preselectedElementWasNull = element == null;\n }\n\n setClickElement(element: IElementDto | null): void {\n this.selectClickElementSource.next(element);\n if (!this.preselectedElementWasNull) {\n this.preselectedElementSource.next(null);\n }\n }\n\n setDblClickElement(element: IElementDto): void {\n this.selectDblClickElementSource.next(element);\n }\n\n setContextMenuElement(data: { position: { x: string; y: string }; node: IElementDto }): void {\n this.selectContextMenuElementSource.next(data);\n }\n}\n","import { inject } from '@angular/core';\n\nimport { IElementDto } from '@dangl/ava-model';\n\nimport { FlatElementsService } from './flat-elements.service';\nimport { SelectElementService } from './select-element.service';\n\nexport interface IKeyboardOperationConfig {\n operations: IKeyboardOperations;\n}\n\nexport enum KeyboardOperationType {\n MoveSelectedPositionUp = 'moveSelectedPositionUp',\n MoveSelectedPositionDown = 'moveSelectedPositionDown',\n MoveChosenPositionDown = 'moveChosenPositionDown',\n MoveChosenPositionUp = 'moveChosenPositionUp',\n ClearChosenPosition = 'clearChosenPosition',\n SelectChosenPosition = 'selectChosenPosition'\n}\n\nexport type IKeyboardOperations = {\n [key in KeyboardOperationType]?: IKeyboardOperation;\n};\n\nexport interface IKeyboardOperation {\n disabled?: boolean;\n keyEvent?: string;\n}\n\nexport class KeyboardOperationService {\n private defaultKeyboardOperationConfig: IKeyboardOperationConfig = {\n operations: {\n moveSelectedPositionUp: { disabled: false, keyEvent: 'F11' },\n moveSelectedPositionDown: { disabled: false, keyEvent: 'F12' },\n moveChosenPositionDown: { disabled: false, keyEvent: 'ArrowDown' },\n moveChosenPositionUp: { disabled: false, keyEvent: 'ArrowUp' },\n clearChosenPosition: { disabled: false, keyEvent: 'Escape' },\n selectChosenPosition: { disabled: false, keyEvent: 'Enter' }\n }\n };\n\n private flatElementsService = inject(FlatElementsService);\n private selectElementService = inject(SelectElementService);\n\n private currentConfig = { ...this.defaultKeyboardOperationConfig };\n\n constructor() {}\n\n getConfig() {\n return this.currentConfig;\n }\n\n mergeConfigOperation(config: IKeyboardOperationConfig) {\n this.currentConfig = this.deepMerge(this.currentConfig, config);\n }\n\n private deepMerge<T>(obj1: T, obj2: T): T {\n const mergedConfig: T = { ...obj1 };\n\n for (const key in obj2) {\n if (Object.prototype.hasOwnProperty.call(obj2, key)) {\n if (\n Object.prototype.hasOwnProperty.call(mergedConfig, key) &&\n typeof mergedConfig[key] === 'object' &&\n mergedConfig[key] !== null &&\n typeof obj2[key] === 'object' &&\n obj2[key] !== null\n ) {\n mergedConfig[key] = this.deepMerge(mergedConfig[key], obj2[key]);\n } else {\n mergedConfig[key] = obj2[key];\n }\n }\n }\n\n return mergedConfig;\n }\n\n handleKeyboardEvent(\n keyEvent: KeyboardEvent,\n element: IElementDto | null\n ): {\n operation: KeyboardOperationType;\n nextElement: IElementDto | null;\n } | null {\n let nextElement;\n\n if (\n this.currentConfig.operations.moveSelectedPositionUp?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.moveSelectedPositionUp?.disabled\n ) {\n keyEvent.preventDefault();\n nextElement = this.flatElementsService.jumpNextNode(-1, element);\n this.selectElementService.setClickElement(nextElement);\n return {\n operation: KeyboardOperationType.MoveSelectedPositionUp,\n nextElement: nextElement\n };\n }\n\n if (\n this.currentConfig.operations.moveSelectedPositionDown?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.moveSelectedPositionDown?.disabled\n ) {\n keyEvent.preventDefault();\n nextElement = this.flatElementsService.jumpNextNode(1, element);\n this.selectElementService.setClickElement(nextElement);\n return {\n operation: KeyboardOperationType.MoveSelectedPositionDown,\n nextElement: nextElement\n };\n }\n\n if (\n this.currentConfig.operations.moveChosenPositionDown?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.moveChosenPositionDown?.disabled\n ) {\n keyEvent.preventDefault();\n nextElement = this.flatElementsService.jumpNextNode(1, element);\n this.selectElementService.setPreselectedElement(nextElement?.id === element?.id ? null : nextElement);\n return {\n operation: KeyboardOperationType.MoveChosenPositionDown,\n nextElement: nextElement\n };\n }\n\n if (\n this.currentConfig.operations.moveChosenPositionUp?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.moveChosenPositionUp?.disabled\n ) {\n keyEvent.preventDefault();\n nextElement = this.flatElementsService.jumpNextNode(-1, element);\n this.selectElementService.setPreselectedElement(nextElement?.id === element?.id ? null : nextElement);\n return {\n operation: KeyboardOperationType.MoveChosenPositionUp,\n nextElement: nextElement\n };\n }\n\n if (\n this.currentConfig.operations.selectChosenPosition?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.selectChosenPosition?.disabled\n ) {\n keyEvent.preventDefault();\n this.selectElementService.setClickElement(element);\n return {\n operation: KeyboardOperationType.SelectChosenPosition,\n nextElement: null\n };\n }\n\n if (\n this.currentConfig.operations.clearChosenPosition?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.clearChosenPosition?.disabled\n ) {\n keyEvent.preventDefault();\n this.selectElementService.setPreselectedElement(null);\n return {\n operation: KeyboardOperationType.ClearChosenPosition,\n nextElement: null\n };\n }\n\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { IElementDto, ServiceSpecificationGroupDto } from '@dangl/ava-model';\n\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\n\nimport { SelectedElement, SelectingElementsType } from '../model/selecting.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TreeNodeSelectionService {\n private treeNodeSelectingSource = new BehaviorSubject<{ [elementId: string]: SelectingElementsType }>({});\n treeNodeSelecting = this.treeNodeSelectingSource.asObservable();\n private _selectingElementsTreeData: SelectingElementsType[] | null = null;\n\n private selectingChangedSource = new ReplaySubject<SelectingElementsType[]>(1);\n selectingChanged = this.selectingChangedSource.asObservable();\n\n flatSelectedListId: string[] = [];\n\n constructor() {}\n\n setSelectingChanged(selectingChanged: SelectingElementsType[]): void {\n this.selectingChangedSource.next(selectingChanged);\n }\n\n loadSelectingElements(\n elements: IElementDto[] | null | undefined,\n parent: SelectingElementsType | null | undefined = null\n ): SelectingElementsType[] {\n const list: SelectingElementsType[] = [];\n if (elements && elements.length) {\n elements.forEach((element: IElementDto) => {\n const obj = {\n parent,\n elementId: element.id,\n checked: false\n } as SelectingElementsType;\n if (element.elementType === 'ServiceSpecificationGroupDto') {\n obj.indeterminate = false;\n obj.children = this.loadSelectingElements((<ServiceSpecificationGroupDto>element).elements, obj);\n }\n list.push(obj);\n this.treeNodeSelectingSource.value[element.id] = obj;\n });\n this._selectingElementsTreeData = list;\n }\n return list;\n }\n\n getTreeData() {\n return this._selectingElementsTreeData;\n }\n\n private changeAllChild(children: SelectingElementsType[], value: boolean): void {\n children.forEach((item: SelectingElementsType) => {\n item.checked = value;\n if (item.children) {\n item.indeterminate = false;\n this.changeAllChild(item.children, value);\n }\n });\n }\n\n private changeAllParent(parent: SelectingElementsType, value: boolean): void {\n parent.checked = value;\n if (parent.parent) {\n this.changeAllParent(parent.parent, value);\n }\n }\n\n changeSelecting(value: boolean, id: string, isUserChanged = true): void {\n const selectingNode = this.treeNodeSelectingSource.value[id];\n if (!selectingNode) {\n return;\n }\n\n selectingNode.checked = value;\n if (selectingNode.children) {\n selectingNode.indeterminate = false;\n if (isUserChanged) {\n this.changeAllChild(selectingNode.children, value);\n }\n }\n if (selectingNode.parent) {\n this.changeAllParent(selectingNode.parent, value);\n }\n this.getIndeterminate(selectingNode?.parent || null);\n if (isUserChanged) {\n this.treeNodeSelectingSource.next(this.treeNodeSelectingSource.value);\n }\n }\n\n private getIndeterminate(parentNode: SelectingElementsType | null | undefined): void {\n if (!parentNode) {\n return;\n }\n\n if (!parentNode.children || !parentNode.children.length) {\n return;\n }\n\n let resultIndeterminateSome = false;\n let resultIndeterminateAll = false;\n parentNode.children.forEach((item: SelectingElementsType) => {\n if (item.checked || item.indeterminate) {\n resultIndeterminateSome = true;\n }\n if (!item.checked) {\n resultIndeterminateAll = true;\n }\n });\n if (!resultIndeterminateSome) {\n parentNode.indeterminate = false;\n parentNode.checked = false;\n } else if (resultIndeterminateAll) {\n parentNode.indeterminate = true;\n parentNode.checked = false;\n } else {\n parentNode.indeterminate = false;\n parentNode.checked = true;\n }\n this.getIndeterminate(parentNode.parent);\n }\n\n changeAll(value: boolean): void {\n Object.values(this.treeNodeSelectingSource.value).forEach((e) => {\n this.changeSelecting(value, e.elementId, false);\n });\n this.treeNodeSelectingSource.next(this.treeNodeSelectingSource.value);\n }\n\n getFlatSelectedListId(selectedElements: SelectedElement[]): void {\n selectedElements.forEach((el) => {\n if (el.children) {\n this.getFlatSelectedListId(el.children);\n } else {\n this.flatSelectedListId.push(el.elementId);\n }\n });\n }\n\n getTreeRoot(treeRoot: SelectingElementsType[]): SelectingElementsType[] {\n const list: SelectingElementsType[] = [];\n treeRoot.forEach((item: SelectingElementsType) => {\n if (item.checked || item.indeterminate) {\n const obj: SelectingElementsType = { elementId: item.elementId };\n if (item.children) {\n obj.children = this.getTreeRoot(item.children);\n }\n list.push(obj);\n }\n });\n return list;\n }\n}\n","import { AfterViewInit, Directive, ElementRef, EnvironmentInjector, inject, input, OnDestroy, Renderer2 } from '@angular/core';\n\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { IFunctionViewLine, IViewLine } from '../model';\nimport { ConfigurationTreeService } from '../services/configuration-tree.service';\nimport { FlatElementsService } from '../services/flat-elements.service';\n\n@Directive({ selector: '[saveChangingView]' })\nexport class SaveChangingViewDirective implements AfterViewInit, OnDestroy {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n private flatElementsService = inject(FlatElementsService);\n private configurationTreeService = inject(ConfigurationTreeService);\n\n saveChangingView = input<string>('text');\n private $destroy = new Subject<boolean>();\n private readonly injector = inject(EnvironmentInjector);\n\n ngOnDestroy(): void {\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n\n ngAfterViewInit(): void {\n this.updateElementStles();\n }\n\n private updateElementStles(): void {\n if (!this.el) {\n return;\n }\n const el = this.el.nativeElement;\n const id = el.id;\n\n if (!id) {\n return;\n }\n\n if (!this.renderer) {\n return;\n }\n this.configurationTreeService\n .getFunctionViewFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((functionView) => {\n const view: IViewLine | null = this.getChangedView(id, functionView);\n if (!view) {\n return;\n }\n\n switch (this.saveChangingView()) {\n case 'icon':\n if (view.iconName) {\n el.textContent = view.iconName;\n }\n if (view.iconColor) {\n this.renderer.setStyle(el, 'color', view.iconColor);\n }\n break;\n case 'text':\n if (view.textBold) {\n this.renderer.setStyle(el, 'font-weight', view.textBold);\n }\n if (view.textColor) {\n this.renderer.setStyle(el, 'color', view.textColor);\n }\n break;\n }\n });\n }\n\n private getChangedView(id: string, functionView: IFunctionViewLine[]): IViewLine | null {\n const objectElementsDto = this.flatElementsService.getObjectElementsDto();\n if (objectElementsDto) {\n const element = objectElementsDto[id];\n if (element && functionView?.length) {\n for (const objectView of functionView) {\n if (objectView.func(element)) {\n return objectView.view;\n }\n }\n }\n }\n\n return null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { IElementDto } from '../model';\n\n@Pipe({\n name: 'elementIconName'\n})\nexport class ElementIconNamePipe implements PipeTransform {\n transform(element: IElementDto): string {\n switch (element.elementTypeDiscriminator) {\n case 'NoteTextDto':\n return 'subject';\n case 'ExecutionDescriptionDto':\n return 'event';\n case 'ServiceSpecificationGroupDto':\n return 'folder_open';\n case 'PositionDto':\n return 'add';\n default:\n return '';\n }\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\n\nimport { IElementDto, PositionDto, ServiceSpecificationGroupDto } from '../model';\nimport { ConfigurationTreeService } from '../services/configuration-tree.service';\n\n@Pipe({\n name: 'elementItemNumber'\n})\nexport class ElementItemNumberPipe implements PipeTransform {\n private configurationTreeService = inject(ConfigurationTreeService);\n\n transform(element: IElementDto, depth: number = 0): string {\n let itemNumber = '';\n\n switch (element.elementTypeDiscriminator) {\n case 'ServiceSpecificationGroupDto':\n itemNumber = (element as ServiceSpecificationGroupDto).itemNumber?.stringRepresentation || '';\n break;\n case 'PositionDto':\n itemNumber = (element as PositionDto).itemNumber?.stringRepresentation || '';\n break;\n default:\n return '';\n }\n\n // Check if we should hide parent item numbers\n const currentConfig = this.configurationTreeService.getCurrentTreeConfig();\n const hideParentItemNumbers = currentConfig?.hideParentItemNumbers || false;\n\n if (hideParentItemNumbers && itemNumber && depth > 0) {\n return this.trimItemNumber(itemNumber, depth);\n }\n\n return itemNumber;\n }\n\n /**\n * Trims the item number based on hierarchy depth in the tree.\n * @param itemNumber - The full item number string (e.g., \"1.2.3.4\")\n * @param depth - The depth in the tree (0 = root level, 1 = first child level, etc.)\n * For example, with depth:\n * - depth 0: \"1.2.3.4\" -> \"1.2.3.4\" (show all)\n * - depth 1: \"1.2.3.4\" -> \"2.3.4\" (hide first number)\n * - depth 2: \"1.2.3.4\" -> \"3.4\" (hide first two numbers)\n * - depth 3: \"1.2.3.4\" -> \"4\" (hide first three numbers)\n */\n private trimItemNumber(itemNumber: string, depth: number): string {\n const parts = itemNumber.split('.');\n\n // Remove 'depth' number of parts from the beginning\n const trimmedParts = parts.slice(depth);\n\n // If all parts are trimmed, return the last part\n if (trimmedParts.length === 0) {\n return parts[parts.length - 1] || '';\n }\n\n return trimmedParts.join('.');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { ITextWords } from '../constants/defaultTextWords';\nimport { ExecutionDescriptionDto, IElementDto, NoteTextDto, PositionDto, ServiceSpecificationGroupDto } from '../model';\n\n@Pipe({\n name: 'elementText'\n})\nexport class ElementTextPipe implements PipeTransform {\n transform(element: IElementDto, treeWords: ITextWords): string {\n if (!element || !treeWords) {\n return '';\n }\n\n switch (element.elementTypeDiscriminator) {\n case 'NoteTextDto':\n return (element as NoteTextDto).shortText || treeWords.defaultNameNoteText || '';\n case 'ExecutionDescriptionDto':\n return `${(element as ExecutionDescriptionDto).identifier ? (element as ExecutionDescriptionDto).identifier + ' - ' : ''}${\n (element as ExecutionDescriptionDto).label || treeWords.defaultNameDescription || ''\n }`;\n case 'ServiceSpecificationGroupDto':\n return (element as ServiceSpecificationGroupDto).shortText || treeWords.defaultNameGroup || '';\n case 'PositionDto':\n return (element as PositionDto).shortText || treeWords.defaultNamePosition || '';\n default:\n return '';\n }\n }\n}\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n input,\n linkedSignal,\n OnDestroy,\n OnInit,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { IElementDto } from '@dangl/ava-model';\n\nimport { combineLatestWith, Observable, Subject, take, takeUntil } from 'rxjs';\n\nimport { defaults } from '../../constants';\nimport { ITextWords } from '../../constants/defaultTextWords';\nimport { SaveChangingViewDirective } from '../../directives/save-changing-view.directive';\nimport { SelectingElementsType } from '../../model/selecting.model';\nimport { ElementIconNamePipe } from '../../pipes/element-icon-name.pipe';\nimport { ElementItemNumberPipe } from '../../pipes/element-item-number.pipe';\nimport { ElementTextPipe } from '../../pipes/element-text.pipe';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { ExpandParentGroupService } from '../../services/expand-parent-group.service';\nimport { SelectElementService } from '../../services/select-element.service';\nimport { TreeNodeSelectionService } from '../../services/tree-node-selection.service';\n\n@Component({\n selector: 'ava-tree-item',\n templateUrl: './tree-item.component.html',\n styleUrls: ['./tree-item.component.scss'],\n imports: [\n SaveChangingViewDirective,\n AsyncPipe,\n ElementItemNumberPipe,\n ElementTextPipe,\n ElementIconNamePipe,\n NgTemplateOutlet,\n MatCheckboxModule,\n FormsModule,\n MatIconModule\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreeItemComponent implements OnInit, OnDestroy {\n selectElementService = inject(SelectElementService);\n private treeNodeSelectionService = inject(TreeNodeSelectionService);\n private cdr = inject(ChangeDetectorRef);\n private configurationTreeService = inject(ConfigurationTreeService);\n\n _element = input<IElementDto>({} as IElementDto, { alias: 'element' });\n element = linkedSignal({\n source: this._element,\n computation: (el) => {\n return { ...el } as IElementDto;\n }\n });\n depth = input<number>(0);\n isSelect = input<boolean>(false);\n backgroundColor = input<string | null>('');\n\n textElement = viewChild.required<ElementRef<HTMLElement>>('textItem');\n\n selectedElement: IElementDto | null = null;\n preselectedElement: IElementDto | null = null;\n private isAllowOneClick = true;\n private timerStop: ReturnType<typeof setTimeout> | null = null;\n private $destroy = new Subject<boolean>();\n\n readonly textWords$: Observable<ITextWords | null> = this.configurationTreeService.getTextWordsFromConfig();\n isSelectionMode = false;\n\n checkedElements: { [elementId: string]: SelectingElementsType } = {};\n private expandParentGroupService = inject(ExpandParentGroupService);\n\n ngOnInit(): void {\n this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.selectedElement = element;\n this.cdr.markForCheck();\n });\n this.selectElementService.preselectedElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.preselectedElement = element;\n this.cdr.markForCheck();\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((isSelectionMode) => {\n this.isSelectionMode = isSelectionMode;\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(combineLatestWith(this.treeNodeSelectionService.treeNodeSelecting), takeUntil(this.$destroy))\n .subscribe(([isSelectionMode, treeNodeSelecting]) => {\n if (isSelectionMode) {\n this.checkedElements = treeNodeSelecting;\n this.cdr.detectChanges();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.timerStop && clearTimeout(this.timerStop);\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n\n private expand(): void {\n if (this.element) {\n const state = this.expandParentGroupService.getExpansionState()();\n if (state) {\n state[this.element().id] = true;\n }\n this.expandParentGroupService.setExpansionState(state);\n }\n }\n\n select(): void {\n const clickElement = () => {\n this.selectElementService.setClickElement(this.selectedElement?.id === this.element().id ? null : this.element());\n if (this.element().elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n this.expand();\n }\n };\n this.configurationTreeService\n .getAllowDblClickFromConfig()\n .pipe(take(1))\n .subscribe((allowDblClick) => {\n if (!allowDblClick) {\n clickElement();\n } else if (this.isAllowOneClick) {\n this.isAllowOneClick = false;\n this.timerStop = setTimeout(() => {\n clickElement();\n this.isAllowOneClick = true;\n }, defaults.doubleClickTimeoutInMilliseconds);\n }\n });\n }\n\n dblSelect(): void {\n this.configurationTreeService\n .getAllowDblClickFromConfig()\n .pipe(take(1))\n .subscribe((allowDblClick) => {\n if (!allowDblClick) {\n return;\n }\n\n this.timerStop && clearTimeout(this.timerStop);\n\n this.selectElementService.setDblClickElement(this.element());\n if (this.element().elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n this.expand();\n }\n this.isAllowOneClick = true;\n });\n }\n\n openContextMenu(event: MouseEvent): void {\n event.preventDefault();\n this.selectElementService.setContextMenuElement({ position: { x: `${event.x}px`, y: `${event.y}px` }, node: this.element() });\n }\n\n changeSelecting(element: IElementDto, isSelected: boolean): void {\n this.treeNodeSelectionService.changeSelecting(isSelected, element.id);\n }\n}\n","@if (element()) {\n <div\n (click)=\"select()\"\n (dblclick)=\"dblSelect()\"\n (contextmenu)=\"openContextMenu($event)\"\n class=\"ava-tree-item\"\n [id]=\"element().id\"\n >\n <mat-icon\n class=\"ava-tree-item__icon\"\n saveChangingView=\"icon\"\n [id]=\"element().id\"\n >{{ element() | elementIconName }}</mat-icon\n >\n @if (!isSelectionMode) {\n <div\n #textItem\n class=\"ava-tree-item__text\"\n [class.choose]=\"!isSelectionMode && element().id === preselectedElement?.id\"\n [id]=\"element().id\"\n saveChangingView=\"text\"\n [class.select]=\"isSelect()\"\n [style.backgroundColor]=\"backgroundColor()\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n }\n @if (isSelectionMode && checkedElements[element().id]) {\n <mat-checkbox\n class=\"ava-tree-item__checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element().id].indeterminate\"\n [(ngModel)]=\"checkedElements[element().id].checked\"\n (ngModelChange)=\"changeSelecting(element(), $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n <div\n #textItem\n class=\"ava-tree-item__text\"\n saveChangingView=\"text\"\n [id]=\"element().id\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n </mat-checkbox>\n }\n </div>\n}\n\n<ng-template #text>\n @if (textWords$ | async; as textWords) {\n @if (element().elementTypeDiscriminator === 'ServiceSpecificationGroupDto' || element().elementTypeDiscriminator === 'PositionDto') {\n <ng-container> {{ element() | elementItemNumber: depth() }} - {{ element() | elementText: textWords }} </ng-container>\n } @else {\n <ng-container>{{ element() | elementText: textWords }}</ng-container>\n }\n }\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, OnDestroy, OnInit, inject } from '@angular/core';\n\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nimport { HoverEffectDirective } from '../../directives/hover-effect.directive';\nimport { IElementDto } from '../../model';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { SelectElementService } from '../../services/select-element.service';\n\nimport { TreeItemComponent } from '../tree-item/tree-item.component';\n\n@Component({\n selector: 'ava-list-structure',\n templateUrl: './list-structure.component.html',\n styleUrls: ['./list-structure.component.scss'],\n imports: [TreeItemComponent, AsyncPipe, HoverEffectDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ListStructureComponent implements OnDestroy, OnInit {\n selectElementService = inject(SelectElementService);\n private configurationTreeService = inject(ConfigurationTreeService);\n\n filteredElementList = input<IElementDto[]>([]);\n\n selectedElement: IElementDto | null = null;\n private $destroy = new Subject<boolean>();\n\n readonly selectedColor$: Observable<string> = this.configurationTreeService.getSelectedColorFromConfig();\n isSelectionMode = false;\n\n ngOnInit(): void {\n this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.selectedElement = element;\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((isSelectionMode) => {\n this.isSelectionMode = isSelectionMode;\n });\n }\n\n ngOnDestroy(): void {\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n}\n","@for (element of filteredElementList(); track element.id) {\n <ng-container>\n <div\n [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [style.backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n [id]=\"'hover-element-id-' + element.id\"\n [avaHoverEffect]=\"avaItem\"\n >\n <ava-tree-item\n #avaItem\n [element]=\"element\"\n [isSelect]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n ></ava-tree-item>\n </div>\n </ng-container>\n}\n","import { AsyncPipe, DecimalPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTableModule } from '@angular/material/table';\n\nimport { combineLatestWith, map, Observable, of, Subject, switchMap, take, takeUntil } from 'rxjs';\n\nimport { defaults } from '../../constants';\nimport { ITextWords } from '../../constants/defaultTextWords';\nimport { SaveChangingViewDirective } from '../../directives/save-changing-view.directive';\nimport { IElementDto, TableColumnType } from '../../model';\nimport { SelectingElementsObjectType } from '../../model/selecting.model';\nimport { ElementIconNamePipe } from '../../pipes/element-icon-name.pipe';\nimport { ElementItemNumberPipe } from '../../pipes/element-item-number.pipe';\nimport { ElementTextPipe } from '../../pipes/element-text.pipe';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { SelectElementService } from '../../services/select-element.service';\nimport { TreeNodeSelectionService } from '../../services/tree-node-selection.service';\n\n@Component({\n selector: 'ava-table-structure',\n templateUrl: './table-structure.component.html',\n styleUrls: ['./table-structure.component.scss'],\n imports: [\n NgClass,\n AsyncPipe,\n ElementTextPipe,\n ElementItemNumberPipe,\n ElementIconNamePipe,\n DecimalPipe,\n MatTableModule,\n MatIconModule,\n MatCheckboxModule,\n FormsModule,\n SaveChangingViewDirective\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableStructureComponent implements OnInit, OnDestroy {\n selectElementService = inject(SelectElementService);\n private treeNodeSelectionService = inject(TreeNodeSelectionService);\n private cdr = inject(ChangeDetectorRef);\n configurationTreeService = inject(ConfigurationTreeService);\n\n filteredElementList = input<IElementDto[]>([]);\n\n displayedColumns: string[] = [];\n private isAllowOneClick = true;\n selectedElement: IElementDto | null = null;\n preselectedElement: IElementDto | null = null;\n private timerStop: ReturnType<typeof setTimeout> | null = null;\n checkedElements: SelectingElementsObjectType = {};\n\n private $destroy = new Subject<boolean>();\n readonly textWords$: Observable<ITextWords | null> = this.configurationTreeService.getTextWordsFromConfig();\n readonly selectedColor$: Observable<string> = this.configurationTreeService.getSelectedColorFromConfig();\n readonly addTableColumns$: Observable<TableColumnType[]> = this.configurationTreeService.getAddTableColumnsFromConfig();\n isSelectionMode = false;\n\n ngOnInit(): void {\n this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.selectedElement = element;\n this.cdr.markForCheck();\n });\n this.selectElementService.preselectedElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.preselectedElement = element;\n this.cdr.markForCheck();\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((isSelectionMode) => {\n this.isSelectionMode = isSelectionMode;\n });\n\n this.configureTableColumns();\n\n this.treeNodeSelectionService.treeNodeSelecting.pipe(takeUntil(this.$destroy)).subscribe((treeNodeSelecting) => {\n this.checkedElements = treeNodeSelecting;\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.timerStop && clearTimeout(this.timerStop);\n\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n\n select(row: IElementDto): void {\n if (this.isSelectionMode) {\n return;\n }\n\n const clickElement = () => {\n this.selectElementService.setClickElement(this.selectedElement?.id === row.id ? null : row);\n };\n this.configurationTreeService\n .getAllowDblClickFromConfig()\n .pipe(take(1))\n .subscribe((allowDblClick) => {\n if (!allowDblClick) {\n clickElement();\n } else if (this.isAllowOneClick) {\n this.isAllowOneClick = false;\n this.timerStop = setTimeout(() => {\n clickElement();\n this.isAllowOneClick = true;\n }, defaults.doubleClickTimeoutInMilliseconds);\n }\n });\n }\n\n dblSelect(row: IElementDto): void {\n this.configurationTreeService\n .getAllowDblClickFromConfig()\n .pipe(take(1))\n .subscribe((allowDblClick) => {\n if (!allowDblClick) {\n return;\n }\n\n if (this.isSelectionMode) {\n return;\n }\n\n this.timerStop && clearTimeout(this.timerStop);\n\n this.selectElementService.setDblClickElement(row);\n this.isAllowOneClick = true;\n });\n }\n\n openContextMenu(event: MouseEvent, row: IElementDto): void {\n event.preventDefault();\n this.selectElementService.setContextMenuElement({ position: { x: `${event.x}px`, y: `${event.y}px` }, node: row });\n }\n\n changeSelecting(element: IElementDto, event: boolean): void {\n this.treeNodeSelectionService.changeSelecting(event, element.id);\n }\n\n configureTableColumns(): void {\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(\n combineLatestWith(this.addTableColumns$.pipe(map((c) => c.map((item) => item.name)))),\n switchMap(([isSelectionMode, addColumns]) => {\n if (isSelectionMode) {\n return of(['icon', 'checkbox', 'itemNumber', 'text', ...addColumns]);\n } else {\n return of(['icon', 'itemNumber', 'text', ...addColumns]);\n }\n }),\n takeUntil(this.$destroy)\n )\n .subscribe((columns) => {\n this.displayedColumns = [...columns];\n });\n }\n}\n","<table\n mat-table\n [dataSource]=\"filteredElementList()\"\n>\n <ng-container matColumnDef=\"icon\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-cell-small-width\"\n >\n <mat-icon\n class=\"icon-element\"\n saveChangingView=\"icon\"\n [id]=\"row.id\"\n >\n {{ row | elementIconName }}\n </mat-icon>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"checkbox\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"table-cell-small-width\"\n >\n @if (checkedElements[element.id]) {\n <mat-checkbox\n class=\"checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n </mat-checkbox>\n }\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"itemNumber\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n OZ\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [style.width.ch]=\"row?.itemNumber?.stringRepresentation.length\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementItemNumber }}\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"text\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n Text\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-text\"\n >\n @if (textWords$ | async; as textWords) {\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementText: textWords }}\n </div>\n }\n </td>\n </ng-container>\n @for (oneColumn of addTableColumns$ | async; track oneColumn.name) {\n <ng-container>\n <ng-container matColumnDef=\"{{ oneColumn.name }}\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n {{ oneColumn.title }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n >\n <div\n [style.textAlign]=\"oneColumn.align\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{\n !oneColumn.numberFormat\n ? row[oneColumn.name]\n : (row[oneColumn.name] | number: oneColumn.numberFormat : configurationTreeService.locale)\n }}\n </div>\n </td>\n </ng-container>\n </ng-container>\n }\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns; sticky: true\"\n class=\"mat-header-row\"\n ></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"select(row)\"\n (dblclick)=\"dblSelect(row)\"\n (contextmenu)=\"openContextMenu($event, row)\"\n [ngClass]=\"{\n choose: !isSelectionMode && row.id === preselectedElement?.id,\n select: !isSelectionMode && row.id === selectedElement?.id,\n }\"\n [style.background]=\"!isSelectionMode && row.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n [id]=\"row.id\"\n ></tr>\n</table>\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, input, linkedSignal, OnDestroy, OnInit } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nimport { HoverEffectDirective } from '../../directives/hover-effect.directive';\nimport { IElementDto, ServiceSpecificationGroupDto } from '../../model';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { ExpandParentGroupService } from '../../services/expand-parent-group.service';\nimport { SelectElementService } from '../../services/select-element.service';\n\nimport { TreeItemComponent } from '../tree-item/tree-item.component';\n\n@Component({\n selector: 'ava-tree-node',\n templateUrl: './tree-node.component.html',\n styleUrls: ['./tree-node.component.scss'],\n imports: [TreeItemComponent, MatIconModule, AsyncPipe, HoverEffectDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreeNodeComponent implements OnDestroy, OnInit {\n selectElementService = inject(SelectElementService);\n private configurationTreeService = inject(ConfigurationTreeService);\n\n _elementList = input<IElementDto[] | null>([], { alias: 'elementList' });\n elementList = linkedSignal<IElementDto[] | null, IElementDto[]>({\n source: this._elementList,\n computation: () => {\n const s = this._elementList();\n if (s === null) {\n return [];\n }\n // Create deep copies including nested elements array to ensure change detection works\n return s.map((el) => ({\n ...el,\n elements: (el as ServiceSpecificationGroupDto).elements ? [...((el as ServiceSpecificationGroupDto)?.elements || [])] : []\n })) as ServiceSpecificationGroupDto[];\n }\n });\n\n elementsById = linkedSignal<IElementDto[], { [id: string]: IElementDto }>({\n source: this.elementList,\n computation: () => {\n const list = this.elementList();\n return list == null ? {} : Object.fromEntries(list.map((el) => [el.id, el]));\n }\n });\n\n depth = input<number>(0);\n\n selectedElement: IElementDto | null = null;\n private $destroy = new Subject<boolean>();\n\n readonly indent$: Observable<string> = this.configurationTreeService.getIndentFromConfig();\n readonly selectedColor$: Observable<string> = this.configurationTreeService.getSelectedColorFromConfig();\n isSelectionMode = false;\n private cdr = inject(ChangeDetectorRef);\n private expandParentGroupService = inject(ExpandParentGroupService);\n expansionState = this.expandParentGroupService.getExpansionState();\n\n ngOnInit(): void {\n this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.selectedElement = element;\n this.cdr.markForCheck();\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((isSelectionMode) => {\n this.isSelectionMode = isSelectionMode;\n });\n }\n\n ngOnDestroy(): void {\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n\n expand(element: IElementDto): void {\n const state = this.expansionState();\n this.expandParentGroupService.setExpansionState({\n ...state,\n [element.id]: !state[element.id]\n });\n }\n}\n","@for (element of elementList(); track element.id) {\n <ng-container>\n <div\n [id]=\"'hover-element-id-' + element.id\"\n class=\"tree-node-wrapper\"\n [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [style.backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n [avaHoverEffect]=\"avaItem\"\n >\n <div class=\"tree-node-wrapper__content\">\n @if (element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n <mat-icon\n matRipple\n (click)=\"expand(element)\"\n class=\"tree-node__icon\"\n >\n {{ expansionState()[element.id] ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n } @else {\n <mat-icon></mat-icon>\n }\n\n <ava-tree-item\n #avaItem\n [element]=\"element\"\n [depth]=\"depth()\"\n [isSelect]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n ></ava-tree-item>\n </div>\n </div>\n @if (element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto' && expansionState()[element.id]) {\n <div [style.paddingLeft]=\"indent$ | async\">\n <ava-tree-node\n [elementList]=\"$any(elementsById()[element.id])?.elements || []\"\n [depth]=\"depth() + 1\"\n ></ava-tree-node>\n </div>\n }\n </ng-container>\n}\n","import { AsyncPipe, registerLocaleData } from '@angular/common';\nimport localeDe from '@angular/common/locales/de';\nimport localeEn from '@angular/common/locales/en';\nimport localeDeExtra from '@angular/common/locales/extra/de';\nimport localeEnExtra from '@angular/common/locales/extra/en';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n inject,\n ElementRef,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n linkedSignal,\n EnvironmentInjector,\n runInInjectionContext,\n output,\n viewChild\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IElementDto } from '@dangl/ava-model';\n\nimport { Observable, ReplaySubject, Subject, combineLatest, debounceTime, filter, fromEvent, map, switchMap, takeUntil, tap } from 'rxjs';\n\nimport { ITextWords } from '../../constants/defaultTextWords';\nimport { HoverEffectDirective } from '../../directives/hover-effect.directive';\nimport { ContextMenuDataType, IConfigurationTree, ModeViewType, ProjectDto, SelectedElement } from '../../model';\nimport { SelectingElementsType } from '../../model/selecting.model';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { ExpandParentGroupService, IExpansionState } from '../../services/expand-parent-group.service';\nimport { FlatElementsService } from '../../services/flat-elements.service';\nimport { IKeyboardOperationConfig, KeyboardOperationService, KeyboardOperationType } from '../../services/keyboard-operation.service';\nimport { SelectElementService } from '../../services/select-element.service';\nimport { TreeHoverTooltipService } from '../../services/tree-hover-tooltip.service';\nimport { TreeNodeSelectionService } from '../../services/tree-node-selection.service';\n\nimport { ListStructureComponent } from '../list-structure/list-structure.component';\nimport { TableStructureComponent } from '../table-structure/table-structure.component';\nimport { TreeNodeComponent } from '../tree-node/tree-node.component';\n\nregisterLocaleData(localeDe, 'de-DE', localeDeExtra);\nregisterLocaleData(localeEn, 'en-US', localeEnExtra);\n\n@Component({\n selector: 'ava-tree',\n templateUrl: './ava-tree.component.html',\n styleUrls: ['./ava-tree.component.scss'],\n imports: [\n TreeNodeComponent,\n ListStructureComponent,\n TableStructureComponent,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatTooltipModule,\n FormsModule,\n MatInputModule,\n AsyncPipe\n ],\n providers: [\n FlatElementsService,\n SelectElementService,\n TreeNodeSelectionService,\n ExpandParentGroupService,\n KeyboardOperationService,\n ConfigurationTreeService,\n TreeHoverTooltipService,\n SelectElementService,\n HoverEffectDirective\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AvaTreeComponent implements OnInit, OnDestroy, AfterViewInit {\n private flatElementsService = inject(FlatElementsService, { self: true });\n private selectElementService = inject(SelectElementService, { self: true });\n private treeNodeSelectionService = inject(TreeNodeSelectionService, { self: true });\n private expandParentGroupService = inject(ExpandParentGroupService, { self: true });\n private keyboardOperationService = inject(KeyboardOperationService, { self: true });\n private configurationTreeService = inject(ConfigurationTreeService);\n\n private readonly injector = inject(EnvironmentInjector);\n private transformFn = <T>(data: T | string): T | null => {\n if (typeof data === 'string') {\n try {\n return JSON.parse(data) as T;\n } catch (e) {\n return null;\n }\n } else {\n return data;\n }\n };\n\n /**\n * This is the main data element for the tree structure. You should supply a ProjectDto with\n * exactly one service specification in it.\n */\n project = input.required<ProjectDto | null, ProjectDto>({ transform: this.transformFn<ProjectDto> });\n\n /**\n * Optionally, you can supply a map of expansion states for the tree. The keys should be the\n * id properties of the elements in the tree, and the values should be true if the element is\n * expanded, and false if it is collapsed.\n */\n readonly expansionstate = input<IExpansionState | null, IExpansionState>(null, { transform: this.transformFn<IExpansionState> });\n /**\n * Optionally, you can supply the id of the node that should be selected in the tree initially.\n */\n readonly selectednodeid = input<string | null>(null);\n\n /**\n * You can specify which view type to use for the tree. The default is ModeViewType.Tree, but you can also use\n * ModeViewType.List or ModeViewType.Table.\n */\n readonly modeview = input<ModeViewType>(ModeViewType.Tree);\n\n /**\n * You can optionally supply a list of elements that should be selected initially. This is only used if\n * isSelectionMode is true.\n */\n private initiallySelectedElements: SelectedElement[] | null = null;\n\n /**\n * You can supply a map of strings to be used for the text in the tree. This allows you to translate\n * the text in the tree to other languages.\n * {\n * textSearch: string,\n * textNothing: string,\n * textNothingFiltered: string,\n * textAll: string,\n * tooltipAllOpen: string,\n * tooltipAllClose: string,\n * tooltipAllAdd:string,\n * tooltipAllRemove: string,\n * }\n */\n readonly textWords$: Observable<ITextWords | null> = this.configurationTreeService.getTextWordsFromConfig();\n readonly isSelectionMode$: Observable<boolean> = this.configurationTreeService.getIsSelectionModeFromConfig();\n private isSelectionMode = false;\n /**\n * Defaults to true. If this is enabled, then navigating in the tree with the keyboard only works\n * if the mouse is over the tree area. This limitation is useful if you have multiple trees or other components\n * that might be using keyboard input.\n */\n private mouseAwareKeyboardControl = true;\n\n /**\n * With this parameter, you can configure which keys will be listenend to switch the tree elements,\n * and also to disable the functionality of the keys */\n private set customKeyboardOperationConfig(config: IKeyboardOperationConfig) {\n this.keyboardOperationService.mergeConfigOperation(config);\n }\n\n readonly config = input<IConfigurationTree | null, IConfigurationTree>(null, { transform: this.transformFn<IConfigurationTree> });\n\n /**\n * This is emitted when an element is selected by clicking on it. The selected element is emitted as the event value.\n */\n selectClick = output<IElementDto | null>();\n\n /**\n * This is emitted when an element is selected by double clicking on it. The selected element is emitted as the event value.\n */\n selectDblClick = output<IElementDto>();\n\n /**\n * This is emitted when an element is selected by right clicking on it. The selected element is emitted as the event value.\n */\n contextMenuEvent = output<ContextMenuDataType>();\n\n /**\n * This is emitted when the selected elements in the tree are changed. The selected elements are emitted as the event value.\n * Selected elements are elements whose checkboxes are checked, and are different than elements that are in an active selection state.\n * Typcial use cases for this include e.g. selecting multiple elements within a service specification without\n * actually focussing them, e.g. for further processing.\n */\n selectedElementsChanged = output<SelectedElement[]>();\n\n avaTreeWrapper = viewChild.required<ElementRef<HTMLDivElement>>('avaTreeWrapper');\n avaMainWrapper = viewChild.required<ElementRef<HTMLDivElement>>('avaMainWrapper');\n avaTreeFilterInput = viewChild.required<ElementRef<HTMLInputElement>>('avaTreeFilterInput');\n private selectedElement: IElementDto | null = null;\n private previousServiceSpecificationId: string | null = null;\n serviceSpecification = linkedSignal({\n source: this.project,\n computation: () => {\n const s = this.project()?.serviceSpecifications?.[0] || null;\n if (s !== null) {\n this.flatElementsService.setElementsDto(s);\n }\n return s;\n }\n });\n elements = linkedSignal({\n source: this.project,\n computation: (p) => {\n return [...(p?.serviceSpecifications?.[0]?.elements || [])];\n }\n });\n\n private isEmiteSelectedElements = false;\n private selectingElementsTreeData: SelectingElementsType[] = [];\n flatElements: IElementDto[] | null = null;\n preselectedElement: IElementDto | null = null;\n filterInput = '';\n listModeViewType = ModeViewType;\n private filter = '';\n private $filter = new ReplaySubject<string>(1);\n filteredElementList: IElementDto[] = [];\n private $destroy = new Subject<boolean>();\n private cdr = inject(ChangeDetectorRef);\n\n ngOnInit(): void {\n this.selectElementService.preselectedElement.pipe(takeUntil(this.$destroy)).subscribe((e) => (this.preselectedElement = e));\n this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((e) => {\n this.selectedElement = e;\n this.selectClick.emit(e);\n });\n this.selectElementService.selectDblClickElement.pipe(takeUntil(this.$destroy)).subscribe((e) => this.selectDblClick.emit(e));\n this.selectElementService.selectContextMenuElement.pipe(takeUntil(this.$destroy)).subscribe((e) => this.contextMenuEvent.emit(e));\n this.flatElementsService.flatElementsDto.pipe(takeUntil(this.$destroy)).subscribe((e) => {\n this.flatElements = e;\n this.getFilteredList();\n });\n\n this.$filter.pipe(takeUntil(this.$destroy), debounceTime(250)).subscribe((filter) => {\n this.filter = filter;\n this.getFilteredList();\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((isSelectionMode) => {\n this.isSelectionMode = isSelectionMode;\n });\n\n this.configurationTreeService\n .getMouseAwareKeyboardControlFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((mouseAwareKeyboardControl) => {\n this.mouseAwareKeyboardControl = mouseAwareKeyboardControl;\n });\n\n this.configurationTreeService\n .getListFilterFuncFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((listFilterFunc) => {\n this.flatElementsService.listFilterFunc = listFilterFunc;\n });\n\n this.configurationTreeService\n .getCustomKeyboardOperationConfigFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((config) => {\n if (config) {\n this.customKeyboardOperationConfig = config;\n }\n });\n\n runInInjectionContext(this.injector, () => {\n toObservable(this.serviceSpecification)\n .pipe(\n tap((serviceSpecification) => {\n const currentId = serviceSpecification?.id || null;\n const isNewServiceSpecification = currentId !== this.previousServiceSpecificationId;\n\n this.selectingElementsTreeData = this.treeNodeSelectionService.loadSelectingElements(serviceSpecification?.elements);\n\n // Only reset expansion state when loading a completely different service specification\n if (isNewServiceSpecification) {\n this.expandParentGroupService.setExpansionState({});\n this.previousServiceSpecificationId = currentId;\n }\n }),\n takeUntil(this.$destroy)\n )\n .subscribe();\n\n toObservable(this.selectednodeid)\n .pipe(\n tap((id) => this.selectElementById(id)),\n takeUntil(this.$destroy)\n )\n .subscribe();\n\n toObservable(this.config)\n .pipe(\n tap((config) => {\n const c = { ...this.configurationTreeService.getCurrentTreeConfig(), ...config };\n this.configurationTreeService.setTreeConfig(c);\n const elements = this.serviceSpecification()?.elements;\n this.selectingElementsTreeData = this.treeNodeSelectionService.loadSelectingElements(elements);\n }),\n map((config) => config?.isSelectionMode),\n filter((isSelectionMode) => !!isSelectionMode),\n\n switchMap(() => this.treeNodeSelectionService.treeNodeSelecting),\n takeUntil(this.$destroy)\n )\n .subscribe(() => {\n if (this.isEmiteSelectedElements) {\n setTimeout(() => {\n const selectingTree = this.treeNodeSelectionService.getTreeRoot(this.selectingElementsTreeData);\n this.selectedElementsChanged.emit(selectingTree);\n });\n }\n });\n\n combineLatest([\n toObservable(this.project),\n this.configurationTreeService.treeConfig$.pipe(\n map(({ isSelectionMode, initiallySelectedElements }) => ({ isSelectionMode, initiallySelectedElements })),\n filter(({ isSelectionMode }) => !!isSelectionMode),\n tap(({ initiallySelectedElements }) => {\n if (initiallySelectedElements?.length) {\n this.initiallySelectedElements = initiallySelectedElements;\n }\n })\n )\n ])\n .pipe(takeUntil(this.$destroy))\n .subscribe(() => {\n this.formSelectingList();\n });\n\n toObservable(this.expansionstate)\n .pipe(takeUntil(this.$destroy))\n .subscribe((s) => {\n if (s === null) {\n this.expandParentGroupService.setExpansionState({});\n } else {\n this.expandParentGroupService.setExpansionState(s);\n }\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.initializeEventListeners();\n }\n\n ngOnDestroy(): void {\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n\n private handleGlobalKeyboardEvent(event: Event): void {\n const keyEvent = event as KeyboardEvent;\n if (!this.mouseAwareKeyboardControl || this.avaMainWrapper().nativeElement.matches(':hover')) {\n const element = this.preselectedElement || this.selectedElement;\n\n const { operation, nextElement } = this.keyboardOperationService.handleKeyboardEvent(keyEvent, element) || { nextElement: null };\n switch (operation) {\n case KeyboardOperationType.MoveSelectedPositionUp:\n this.showElement(nextElement, '.select');\n break;\n case KeyboardOperationType.MoveSelectedPositionDown:\n this.showElement(nextElement, '.select');\n break;\n case KeyboardOperationType.MoveChosenPositionDown:\n this.showElement(nextElement, nextElement?.id === this.selectedElement?.id ? '.select' : '.choose');\n break;\n case KeyboardOperationType.MoveChosenPositionUp:\n this.showElement(nextElement, nextElement?.id === this.selectedElement?.id ? '.select' : '.choose');\n break;\n default:\n break;\n }\n }\n }\n\n private showElement(element: IElementDto | null, nameQuery: string): void {\n if (element) {\n if (this.modeview() === ModeViewType.Tree) {\n this.expandParentGroups(element);\n }\n setTimeout(() => this.scrollLine(nameQuery), 0);\n }\n }\n\n private scrollLine(nameQuery: string): void {\n const parentRect = this.avaTreeWrapper()?.nativeElement.getBoundingClientRect();\n const showedElement = this.avaTreeWrapper()?.nativeElement.querySelector(nameQuery) as HTMLElement;\n\n if (!showedElement) {\n return;\n }\n\n const childRect = showedElement.getBoundingClientRect();\n if (\n childRect.bottom > parentRect.bottom ||\n childRect.top < parentRect.top ||\n (this.modeview() === ModeViewType.Table && childRect.top < parentRect.top + 24)\n ) {\n showedElement?.scrollIntoView();\n this.avaTreeWrapper()?.nativeElement.scrollTo({ left: 0 });\n if (this.modeview() === ModeViewType.Table) {\n setTimeout(() => this.correctScrollTableLine(showedElement, parentRect), 0);\n }\n }\n }\n\n private correctScrollTableLine(showedElement: HTMLElement, parentRect: DOMRect): void {\n const childRect = showedElement.getBoundingClientRect();\n if (childRect.top < parentRect.top + 24) {\n this.avaTreeWrapper().nativeElement.scrollTop -= 24;\n }\n }\n\n expandParentGroups(element: IElementDto): void {\n this.expandParentGroupService.expandParentGroups(element, this.flatElements, this.expandParentGroupService.getExpansionState()());\n }\n\n onFilter(value: string): void {\n this.$filter.next(value);\n }\n\n changeAllElementsExpansionStatus(isExpanded: boolean): void {\n const state = this.expandParentGroupService.getExpansionState()();\n if (!isExpanded) {\n Object.keys(state).forEach((id: string) => {\n delete state[id];\n const newExpansionState = { ...state };\n this.expandParentGroupService.setExpansionState(newExpansionState);\n });\n } else {\n this.flatElements?.forEach((item) => {\n if (item.elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n state[item.id] = true;\n const newExpansionState = { ...state };\n this.expandParentGroupService.setExpansionState(newExpansionState);\n }\n });\n }\n }\n\n private formSelectingList(): void {\n this.isEmiteSelectedElements = false;\n if (!this.initiallySelectedElements) {\n this.isEmiteSelectedElements = true;\n return;\n }\n\n this.treeNodeSelectionService.getFlatSelectedListId(this.initiallySelectedElements);\n this.treeNodeSelectionService.flatSelectedListId.forEach((id, index) => {\n this.treeNodeSelectionService.changeSelecting(true, id);\n if (index === this.treeNodeSelectionService.flatSelectedListId.length - 1) {\n this.isEmiteSelectedElements = true;\n }\n });\n }\n\n selectOrDeselectAll(value: boolean): void {\n this.treeNodeSelectionService.changeAll(value);\n }\n\n private getFilteredList(): void {\n if (this.flatElements?.length) {\n if (!this.filter) {\n this.filteredElementList = this.flatElements;\n } else {\n this.filteredElementList = this.flatElements.filter((item) => this.flatElementsService.checkFilterValue(item, this.filter));\n }\n }\n this.cdr.markForCheck();\n }\n\n private initializeEventListeners(): void {\n if (!this.isSelectionMode) {\n fromEvent(document, 'keydown')\n .pipe(\n takeUntil(this.$destroy),\n filter(() => !this.mouseAwareKeyboardControl || this.avaMainWrapper().nativeElement.matches(':hover'))\n )\n .subscribe((event: Event) => {\n if (this.avaMainWrapper().nativeElement.matches(':hover')) {\n this.avaTreeFilterInput()?.nativeElement.focus();\n }\n this.handleGlobalKeyboardEvent(event);\n });\n }\n }\n\n private selectElementById(id: string | null): void {\n this.flatElementsService.getOneElementById(id).subscribe((e) => {\n if (e) {\n this.selectElementService.setClickElement(e);\n }\n });\n }\n}\n","@if (textWords$ | async; as textWords) {\n <div\n class=\"main-wrapper\"\n #avaMainWrapper\n >\n <div\n class=\"control\"\n #control\n >\n <mat-form-field class=\"control-filter\">\n <mat-label>{{ textWords.textSearch }}</mat-label>\n <input\n matInput\n [ngModel]=\"filterInput\"\n (ngModelChange)=\"onFilter($event)\"\n #avaTreeFilterInput\n />\n </mat-form-field>\n @if (modeview() === listModeViewType.Tree) {\n <ng-container>\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(true)\"\n [matTooltip]=\"textWords.tooltipAllOpen || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">add</mat-icon>\n </button>\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(false)\"\n [matTooltip]=\"textWords.tooltipAllClose || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">remove</mat-icon>\n </button>\n </ng-container>\n }\n @if (isSelectionMode$ | async) {\n <ng-container>\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(true)\"\n [matTooltip]=\"textWords.tooltipAllAdd || ''\"\n class=\"control-button ava-tree-selection-all-btn\"\n >\n <mat-icon>add</mat-icon>\n <span>{{ textWords.textAll }}</span>\n </button>\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(false)\"\n [matTooltip]=\"textWords.tooltipAllRemove || ''\"\n class=\"control-button ava-tree-selection-all-btn\"\n >\n <mat-icon>remove</mat-icon>\n <span>{{ textWords.textAll }}</span>\n </button>\n </ng-container>\n }\n </div>\n @if (serviceSpecification()) {\n <div\n [style.height]=\"'calc(100% - ' + control.offsetHeight + 'px)'\"\n class=\"ava-tree-wrapper\"\n #avaTreeWrapper\n >\n @if (flatElements?.length) {\n <ng-container>\n @if (filteredElementList.length) {\n <ng-container>\n @if (modeview() === listModeViewType.Tree && !avaTreeFilterInput.value) {\n <ava-tree-node [elementList]=\"elements() || []\"> </ava-tree-node>\n }\n\n @if (modeview() === listModeViewType.List || (modeview() === listModeViewType.Tree && avaTreeFilterInput.value)) {\n <ava-list-structure [filteredElementList]=\"filteredElementList\"> </ava-list-structure>\n }\n @if (modeview() === listModeViewType.Table) {\n <ava-table-structure [filteredElementList]=\"filteredElementList\"> </ava-table-structure>\n }\n </ng-container>\n } @else {\n <ng-container> {{ textWords.textNothingFiltered }}</ng-container>\n }\n </ng-container>\n } @else {\n <ng-container>\n {{ textWords.textNothing }}\n </ng-container>\n }\n </div>\n }\n </div>\n}\n","import { IAlignmentOptions } from '../model/configInvoice.model';\n\nexport const ALIGNMENT_OPTIONS: IAlignmentOptions = {\n previousInvoiceAlignment: 'right'\n};\n","import { BehaviorSubject, Observable, distinctUntilChanged, map } from 'rxjs';\n\nimport { DEFAULT_CURRENCY_CODE, DEFAULT_DIGITS_INFO, DEFAULT_LANGUAGE, localeTypes } from '../constants';\nimport { ALIGNMENT_OPTIONS } from '../constants/alignment-options';\nimport { DEFAULT_TEXT_WORD_INVOICE, germanTextsInvoice } from '../constants/defaultTextWordInvoice';\nimport { IConfigurationInvoice, ITextWordInvoice, LanguageType } from '../model';\nimport { IAlignmentOptions, IColorSettings } from '../model/configInvoice.model';\n\nexport class ConfigurationInvoiceService {\n private _language: LanguageType = DEFAULT_LANGUAGE;\n private _textWords: ITextWordInvoice = this.getDefaultTextWords(this._language);\n private _pdfViewEnabled = false;\n private _quantityDecimalPlaces = DEFAULT_DIGITS_INFO;\n private _currencyCode = DEFAULT_CURRENCY_CODE;\n private _colorSettings: IColorSettings | null = null;\n private _alignmentOptions = ALIGNMENT_OPTIONS;\n private invoiceConfigSource = new BehaviorSubject<IConfigurationInvoice>(this.getDefaultInvoiceConfiguration());\n public invoiceConfig$: Observable<IConfigurationInvoice> = this.invoiceConfigSource.asObservable();\n\n constructor() {}\n\n public setInvoiceConfig(value: IConfigurationInvoice): void {\n if (value.quantityDecimalPlaces) {\n this._quantityDecimalPlaces = value.quantityDecimalPlaces;\n }\n if (value.language) {\n this._language = value.language;\n }\n this.invoiceConfigSource.next(value);\n }\n\n public getCurrentInvoiceConfig(): IConfigurationInvoice {\n return this.invoiceConfigSource.getValue();\n }\n\n public getTextWordsFromConfig(): Observable<ITextWordInvoice | null> {\n return this.invoiceConfig$.pipe(\n map((config) => config?.textWords || (config?.language ? this.getDefaultTextWords(config.language) : null)),\n map((textWords) => (textWords === null ? this._textWords : { ...textWords })),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getPdfViewEnabledFromConfig(): Observable<boolean> {\n return this.invoiceConfig$.pipe(\n map((config) => (config === null ? false : config.pdfViewEnabled || false)),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getAlignmentOptionsFromConfig(): Observable<IAlignmentOptions | null> {\n return this.invoiceConfig$.pipe(\n map((config) => config?.alignmentOptions || null),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n private getDefaultInvoiceConfiguration(): IConfigurationInvoice {\n return {\n textWords: this._textWords,\n pdfViewEnabled: this._pdfViewEnabled,\n language: this._language,\n quantityDecimalPlaces: this._quantityDecimalPlaces,\n colorSettings: this._colorSettings,\n alignmentOptions: this._alignmentOptions\n };\n }\n\n getColorSettingsFromConfig(): Observable<IColorSettings | null> {\n return this.invoiceConfig$.pipe(\n map((config) => config?.colorSettings || null),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n getDefaultTextWords(languageWord: LanguageType): ITextWordInvoice {\n return languageWord === 'de' ? germanTextsInvoice : DEFAULT_TEXT_WORD_INVOICE;\n }\n\n get locale(): string {\n return localeTypes[this._language];\n }\n\n set quantityDecimalPlaces(value: string) {\n this._quantityDecimalPlaces = value;\n }\n\n get quantityDecimalPlaces(): string {\n return this._quantityDecimalPlaces;\n }\n\n set currencyCode(value: string) {\n this._currencyCode = value;\n }\n\n get currencyCode(): string {\n return this._currencyCode;\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\n\nimport { ConfigurationInvoiceService } from '../services/configuration-invoice.service';\n\n@Pipe({\n name: 'currencyPlus',\n standalone: true\n})\nexport class CurrencyPlusPipe implements PipeTransform {\n currencyPipe = inject(CurrencyPipe);\n configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n transform(money?: number): string | null {\n return typeof money === 'number'\n ? this.currencyPipe.transform(\n money,\n this.configurationInvoiceService.currencyCode,\n 'symbol',\n '',\n this.configurationInvoiceService.locale\n )\n : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'lineSplit'\n})\nexport class LineSplitPipe implements PipeTransform {\n transform(value: string): string[] {\n if (value == null) {\n return [value];\n }\n\n return value.split(/\\r\\n?|\\n/);\n }\n}\n","import { PercentPipe } from '@angular/common';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\n\nimport { ConfigurationInvoiceService } from '../services/configuration-invoice.service';\n\n@Pipe({\n name: 'percentPlus'\n})\nexport class PercentPlusPipe implements PipeTransform {\n percentPipe = inject(PercentPipe);\n configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n transform(value?: number, digitsInfo?: string): string | null {\n return typeof value === 'number' ? this.percentPipe.transform(value, digitsInfo || '', this.configurationInvoiceService.locale) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { AttachmentMimeType } from '../model';\n\n@Pipe({\n name: 'invoiceAttachmentMimeType',\n standalone: true\n})\nexport class InvoiceAttachmentMimeTypePipe implements PipeTransform {\n transform(attachmentMimeType: AttachmentMimeType): string {\n switch (attachmentMimeType) {\n case AttachmentMimeType.Pdf:\n return 'PDF';\n case AttachmentMimeType.Png:\n return 'PNG';\n case AttachmentMimeType.Jpeg:\n return 'JPEG';\n case AttachmentMimeType.Csv:\n return 'CSV';\n case AttachmentMimeType.Excel:\n return 'Excel';\n case AttachmentMimeType.OpenOfficeSpreadsheet:\n return 'Open Office Spreadsheet';\n\n case AttachmentMimeType.Unknown:\n default:\n return 'Unknown';\n }\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, OnInit, ViewChild, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { SupportingDocument } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { InvoiceAttachmentMimeTypePipe } from '../../pipes/invoice-attachment-mime-type.pipe';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n selector: 'ava-invoice-documents',\n imports: [MatExpansionModule, MatButtonModule, InvoiceAttachmentMimeTypePipe, AsyncPipe],\n templateUrl: './invoice-documents.component.html',\n styleUrl: './invoice-documents.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InvoiceDocumentsComponent implements OnInit, AfterViewInit {\n private configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n documents = input<SupportingDocument[]>([]);\n\n @ViewChild('documentsPanel') documentsPanel: MatExpansionPanel | null = null;\n\n private destroyRef = inject(DestroyRef);\n\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n public pdfViewEnabled = false;\n\n ngOnInit(): void {\n this.configurationInvoiceService\n .getPdfViewEnabledFromConfig()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((pdfViewEnabled) => {\n this.pdfViewEnabled = pdfViewEnabled;\n });\n }\n\n ngAfterViewInit(): void {\n if (this.documentsPanel && this.pdfViewEnabled) {\n // In a static PDF view, we always want to open the documents panel\n this.documentsPanel.open();\n }\n }\n\n public download(documentValue: SupportingDocument): void {\n if (documentValue.documentBase64) {\n this.downloadAny(documentValue);\n } else {\n this.downloadLink(documentValue);\n }\n }\n\n private downloadAny(documentValue: SupportingDocument): void {\n if (documentValue.documentBase64) {\n const byteCharacters = atob(documentValue.documentBase64);\n const byteNumbers = new Array(byteCharacters.length);\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: 'application/octet-stream' });\n this.saveAs(blob, documentValue.fileName as string);\n }\n }\n\n private async downloadLink(documentValue: SupportingDocument): Promise<void> {\n try {\n const response = await fetch(documentValue.externalDocumentUrl as string);\n const blob = await response.blob();\n this.saveAs(blob, documentValue.fileName as string);\n } catch (error) {\n console.error(error);\n }\n }\n\n private saveAs(blob: Blob, fileName: string): void {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = fileName;\n link.click();\n }\n}\n","@if (textWords$ | async; as textWords) {\n @if ((colorSettings$ | async) || true; as colorSettings) {\n <mat-accordion>\n <mat-expansion-panel\n [hideToggle]=\"pdfViewEnabled\"\n #documentsPanel\n >\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ textWords.attachmentsHeading }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n @for (document of documents(); track document.documentReference) {\n <div class=\"document\">\n @if (document.documentReference) {\n <div>\n <strong>{{ textWords.attachmentsName }}: </strong>\n <span>{{ document.documentReference }}</span>\n </div>\n }\n @if (document.description) {\n <div>\n <strong>{{ textWords.attachmentsDescription }}: </strong>\n <span>{{ document.description }}</span>\n </div>\n }\n @if (document.externalDocumentUrl) {\n <div>\n <strong>{{ textWords.attachmentsUrl }}: </strong>\n <span>{{ document.externalDocumentUrl }}</span>\n </div>\n } @else if (document.documentBase64) {\n <div>\n <strong>{{ textWords.attachmentsDataSize }}: </strong>\n <span>{{ document.documentBase64.length }}</span>\n </div>\n\n @if (document.documentMimeType) {\n <div>\n <strong>{{ textWords.attachmentsMimeType }}: </strong>\n <span>{{ document.documentMimeType | invoiceAttachmentMimeType }}</span>\n </div>\n }\n }\n @if (document.fileName) {\n <div>\n <strong>{{ textWords.attachmentsFileName }}: </strong>\n <span>{{ document.fileName }}</span>\n </div>\n }\n @if (!pdfViewEnabled) {\n <button\n mat-raised-button\n [style.backgroundColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n color=\"primary\"\n (click)=\"download(document)\"\n [disabled]=\"!document.externalDocumentUrl && !document.documentBase64\"\n >\n <span [style.color]=\"colorSettings === true ? null : colorSettings?.textColor\">\n {{ textWords.attachmentsDownloadButton }}\n </span>\n </button>\n }\n </div>\n }\n </mat-expansion-panel>\n </mat-accordion>\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform, inject } from '@angular/core';\n\nimport { ConfigurationInvoiceService } from '../services/configuration-invoice.service';\n\n@Pipe({\n name: 'numberPlus'\n})\nexport class NumberPlusPipe implements PipeTransform {\n currencyPipe = inject(DecimalPipe);\n configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n transform(value?: number): string | null {\n return typeof value === 'number'\n ? this.currencyPipe.transform(value, this.configurationInvoiceService.quantityDecimalPlaces, this.configurationInvoiceService.locale)\n : '';\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { InvoiceLineItem } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n selector: 'ava-invoice-line-item-additional-info',\n imports: [AsyncPipe],\n templateUrl: './invoice-line-item-additional-info.component.html',\n styleUrl: './invoice-line-item-additional-info.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InvoiceLineItemAdditionalInfoComponent {\n @Input() lineItem!: InvoiceLineItem;\n private configurationInvoiceService = inject(ConfigurationInvoiceService);\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n}\n","@if (textWords$ | async; as textWords) {\n @if (lineItem) {\n @if (lineItem.allowances && lineItem.allowances.length) {\n <div>\n <h3>{{ textWords.lineItemAllowances }}</h3>\n <div class=\"allowances\">\n <p>\n <strong>{{ textWords.lineItemReason }}:</strong> {{ lineItem.allowances[0].reason }}\n </p>\n <p>\n <strong>{{ textWords.tableHeadNetAmount }}:</strong> {{ lineItem.allowances[0].netAmount }}\n </p>\n </div>\n </div>\n }\n @if (lineItem.charges && lineItem.charges.length) {\n <div>\n <h3>{{ textWords.lineItemCharges }}</h3>\n <div class=\"charges\">\n <p>\n <strong>{{ textWords.lineItemReason }}:</strong> {{ lineItem.charges[0].reason }}\n </p>\n <p>\n <strong>{{ textWords.tableHeadNetAmount }}:</strong> {{ lineItem.charges[0].netAmount }}\n </p>\n </div>\n </div>\n }\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { AsyncPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, inject, input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTableModule } from '@angular/material/table';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { InvoiceLineItem } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { CurrencyPlusPipe } from '../../pipes/currency-plus.pipe';\nimport { NumberPlusPipe } from '../../pipes/number-plus.pipe';\nimport { PercentPlusPipe } from '../../pipes/percent-plus.pipe';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\nimport { InvoiceLineItemAdditionalInfoComponent } from '../invoice-line-item-additional-info/invoice-line-item-additional-info.component';\n\nexport interface IInvoiceLineItemsPuls extends InvoiceLineItem {\n indentLevel: number | undefined;\n}\n\n@Component({\n selector: 'ava-invoice-line-items-table',\n animations: [\n trigger('detailExpand', [\n state('collapsed,void', style({ height: '0px', minHeight: '0' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\n ])\n ],\n imports: [\n PercentPlusPipe,\n CurrencyPlusPipe,\n NumberPlusPipe,\n AsyncPipe,\n MatTableModule,\n MatButtonModule,\n NgClass,\n InvoiceLineItemAdditionalInfoComponent\n ],\n templateUrl: './invoice-line-items-table.component.html',\n styleUrl: './invoice-line-items-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InvoiceLineItemsTableComponent implements OnInit {\n lineItems = input<InvoiceLineItem[]>([]);\n flatLineItems: IInvoiceLineItemsPuls[] = [];\n private configurationInvoiceService = inject(ConfigurationInvoiceService);\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n readonly pdfViewEnabled$: Observable<boolean> = this.configurationInvoiceService.getPdfViewEnabledFromConfig();\n readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n\n public readonly displayedColumns = ['number', 'description', 'quantity', 'unit', 'netPrice', 'vat', 'discount', 'netAmount'];\n\n private expandedElements: Set<IInvoiceLineItemsPuls> = new Set();\n\n ngOnInit() {\n this.flatLineItems = this.getFlatLineItems(this.lineItems(), 0);\n }\n\n public toggleRow(row: IInvoiceLineItemsPuls) {\n if (this.expandedElements.has(row)) {\n this.expandedElements.delete(row);\n } else {\n this.expandedElements.add(row);\n }\n }\n\n public isRowExpanded(row: IInvoiceLineItemsPuls): boolean {\n return this.expandedElements.has(row);\n }\n\n private getFlatLineItems(lineItemsList: InvoiceLineItem[], indentLevel: number): IInvoiceLineItemsPuls[] {\n return lineItemsList.reduce((acc: IInvoiceLineItemsPuls[], lineItem: InvoiceLineItem) => {\n acc.push({ ...lineItem, indentLevel });\n if (lineItem.subItems && lineItem.subItems.length) {\n acc.push(...this.getFlatLineItems(lineItem.subItems, indentLevel + 1));\n }\n return acc;\n }, []);\n }\n}\n","@if (textWords$ | async; as textWords) {\n @if ((colorSettings$ | async) || true; as colorSettings) {\n <table\n mat-table\n [dataSource]=\"flatLineItems\"\n multiTemplateDataRows\n class=\"mat-elevation-z8 invoice-table\"\n >\n <ng-container matColumnDef=\"number\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n #\n </th>\n <td\n mat-cell\n *matCellDef=\"let element; let i = dataIndex\"\n [class.children]=\"element.indentLevel\"\n >\n {{ element.identifier || element.objectIdentifier || i + 1 }}\n @if (element.indentLevel) {\n <div\n class=\"children-mark\"\n [style.width.px]=\"element.indentLevel * 8\"\n ></div>\n }\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.tableHeadDescription }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n >\n {{ element.itemInformation?.description || element.itemInformation?.name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"quantity\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.tableHeadQuantity }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n >\n {{ element.quantity | numberPlus }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"unit\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.tableHeadUnit }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n >\n {{ element.unitCode }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"netPrice\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.tableHeadNetPrice }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"currency-table-cell\"\n >\n {{ element.priceDetails?.netPrice | currencyPlus }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"discount\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.lineItemDiscount }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"currency-table-cell\"\n >\n @if (element.priceDetails?.absoluteDiscountPerItem) {\n {{ element.priceDetails?.absoluteDiscountPerItem | currencyPlus }}\n }\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"netAmount\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.tableHeadNetAmount }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"currency-table-cell\"\n >\n {{ element.netAmount | currencyPlus }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"vat\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.vat }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"currency-table-cell\"\n >\n @if (element && element.vatInformation && element.vatInformation.length > 0) {\n {{ element.vatInformation[0].vatRate | percentPlus: '1.0-2' }}\n }\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td\n mat-cell\n *matCellDef=\"let element\"\n [attr.colspan]=\"displayedColumns.length\"\n >\n <div [@detailExpand]=\"isRowExpanded(element) || (pdfViewEnabled$ | async) ? 'expanded' : 'collapsed'\">\n <ava-invoice-line-item-additional-info [lineItem]=\"element\"></ava-invoice-line-item-additional-info>\n </div>\n </td>\n </ng-container>\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns\"\n ></tr>\n\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"(row.allowances || row.charges) && toggleRow(row)\"\n [ngClass]=\"{\n expanding: !(pdfViewEnabled$ | async) && (row.allowances || row.charges),\n 'expanded-row': isRowExpanded(row) && colorSettings === true,\n 'expanded-row-pdf-view': (pdfViewEnabled$ | async) && !row.indentLevel,\n }\"\n [style.backgroundColor]=\"\n colorSettings === true ? null : isRowExpanded(row) ? 'color-mix(in srgb,' + colorSettings?.backgroundColor + ', white 70%)' : null\n \"\n ></tr>\n\n <tr\n mat-row\n *matRowDef=\"let row; columns: ['expandedDetail']\"\n class=\"detail-row\"\n ></tr>\n </table>\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { Organization } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n selector: 'ava-organization-info',\n imports: [AsyncPipe, MatDividerModule],\n templateUrl: './organization-info.component.html',\n styleUrls: ['./organization-info.component.scss']\n})\nexport class OrganizationInfoComponent {\n organizationInfo = input<Organization | null>(null);\n private configurationInvoiceService = inject(ConfigurationInvoiceService);\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n}\n","@if (textWords$ | async; as textWords) {\n @if ((colorSettings$ | async) || true; as colorSettings) {\n @if (organizationInfo(); as organizationInfo) {\n <div class=\"buyer-info\">\n <ng-content #header></ng-content>\n\n <p>\n <strong>{{ organizationInfo.name }}</strong>\n </p>\n <p>{{ organizationInfo.address }}</p>\n <p>{{ organizationInfo.city }}, {{ organizationInfo.zipCode }}</p>\n <p>{{ organizationInfo.countryCode }}</p>\n @if (organizationInfo.vatId) {\n <p>\n <strong>{{ textWords.vatId }}: </strong>\n <br />\n <span>{{ organizationInfo.vatId }}</span>\n </p>\n }\n <mat-divider></mat-divider>\n @if (organizationInfo.contactPersonName) {\n <p>\n <strong>{{ textWords.contactPersonName }}: </strong>\n <br />\n <span>{{ organizationInfo.contactPersonName }}</span>\n </p>\n }\n @if (organizationInfo.contactPersonPhone) {\n <p>\n <strong>{{ textWords.contactPersonPhone }}: </strong>\n <br />\n <span>{{ organizationInfo.contactPersonPhone }}</span>\n </p>\n }\n @if (organizationInfo.contactPersonEmail) {\n <p>\n <strong>{{ textWords.contactPersonEmail }}: </strong>\n <br />\n <span>{{ organizationInfo.contactPersonEmail }}</span>\n </p>\n }\n </div>\n }\n }\n}\n","import { AsyncPipe, DatePipe } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { DeliveryInformation, References } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n selector: 'ava-reference-and-delivery-information',\n imports: [AsyncPipe, DatePipe],\n templateUrl: './reference-and-delivery-information.component.html',\n styleUrl: './reference-and-delivery-information.component.scss'\n})\nexport class ReferenceAndDeliveryInformationComponent {\n deliveryInformation = input<DeliveryInformation | null>(null);\n references = input<References | null>(null);\n public configurationInvoiceService = inject(ConfigurationInvoiceService);\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n}\n","@if (textWords$ | async; as textWords) {\n @if ((colorSettings$ | async) || true; as colorSettings) {\n <div class=\"invoice-info\">\n <section class=\"invoice-references\">\n @if (textWords.referencesTopic) {\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.referencesTopic }}\n </h2>\n }\n <div class=\"invoice-references-details\">\n @if (references()?.buyerReference) {\n <p>\n <strong>{{ textWords.referencesBuyerReference }}: </strong>\n <br />\n <span>{{ references()?.buyerReference }}</span>\n </p>\n }\n @if (references()?.projectReference) {\n <p>\n <strong>{{ textWords.referencesProjectReference }}: </strong>\n <br />\n <span>{{ references()?.projectReference }}</span>\n </p>\n }\n @if (references()?.contractReference) {\n <p>\n <strong>{{ textWords.referencesContractReference }}: </strong>\n <br />\n <span>{{ references()?.contractReference }}</span>\n </p>\n }\n @if (references()?.purchaseOrderReference) {\n <p>\n <strong>{{ textWords.referencesPurchaseOrderReference }}: </strong>\n <br />\n <span>{{ references()?.purchaseOrderReference }}</span>\n </p>\n }\n @if (references()?.salesOrderReference) {\n <p>\n <strong>{{ textWords.referencesSalesOrderReference }}: </strong>\n <br />\n <span>{{ references()?.salesOrderReference }}</span>\n </p>\n }\n @if (references()?.receivingAdviceReference) {\n <p>\n <strong>{{ textWords.referencesReceivingAdviceReference }}: </strong>\n <br />\n <span>{{ references()?.receivingAdviceReference }}</span>\n </p>\n }\n @if (references()?.dispatchAdviceReference) {\n <p>\n <strong>{{ textWords.referencesDispatchAdviceReference }}: </strong>\n <br />\n <span> {{ references()?.dispatchAdviceReference }}</span>\n </p>\n }\n @if (references()?.tenderOrLotReference) {\n <p>\n <strong>{{ textWords.referencesTenderOrLotReference }}: </strong>\n <br />\n <span>{{ references()?.tenderOrLotReference }}</span>\n </p>\n }\n @if (references()?.invoicedObjectIdentifier) {\n <p>\n <strong>{{ textWords.referencesInvoicedObjectIdentifier }}: </strong>\n <br />\n <span>{{ references()?.invoicedObjectIdentifier }}</span>\n </p>\n }\n </div>\n </section>\n @if (deliveryInformation()) {\n <section class=\"invoice-delivery\">\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.deliveryInformationTitle }}\n </h2>\n\n @if (deliveryInformation()?.deliverToName) {\n <p>\n <strong>{{ textWords.deliverToName }}: </strong>\n <br />\n <span>{{ deliveryInformation()?.deliverToName }}</span>\n </p>\n }\n @if (deliveryInformation()?.deliverToLocationIdentifier) {\n <p>\n <strong>{{ textWords.deliverToLocationIdentifier }}: </strong>\n <br />\n <span>{{ deliveryInformation()?.deliverToLocationIdentifier }}</span>\n </p>\n }\n @if (deliveryInformation()?.deliveryDate) {\n <p>\n <strong>{{ textWords.deliveryDate }}: </strong>\n <br />\n <span>{{\n configurationInvoiceService.locale === 'de-DE'\n ? (deliveryInformation()?.deliveryDate | date: 'dd.MM.yyyy')\n : (deliveryInformation()?.deliveryDate | date: 'dd/MM/yyyy')\n }}</span>\n </p>\n }\n @if (deliveryInformation()?.deliveryAddress) {\n <p>\n <strong>{{ textWords.deliveryAddress }}: </strong>\n <span>\n @if (deliveryInformation()?.deliveryAddress?.address) {\n <p>{{ deliveryInformation()?.deliveryAddress?.address }}</p>\n }\n @if (deliveryInformation()?.deliveryAddress?.city) {\n <span>{{ deliveryInformation()?.deliveryAddress?.city }},</span>\n }\n @if (deliveryInformation()?.deliveryAddress?.zipCode) {\n <span>{{ deliveryInformation()?.deliveryAddress?.zipCode }}</span>\n }\n @if (deliveryInformation()?.deliveryAddress?.countryCode) {\n <p>{{ deliveryInformation()?.deliveryAddress?.countryCode }}</p>\n }\n </span>\n </p>\n }\n </section>\n }\n </div>\n }\n}\n","import { AsyncPipe, CurrencyPipe, DatePipe, DecimalPipe, PercentPipe, registerLocaleData } from '@angular/common';\nimport localeDe from '@angular/common/locales/de';\nimport localeEn from '@angular/common/locales/en';\nimport localeDeExtra from '@angular/common/locales/extra/de';\nimport localeEnExtra from '@angular/common/locales/extra/en';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n LOCALE_ID,\n OnInit,\n effect,\n inject,\n input,\n linkedSignal,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { Observable } from 'rxjs';\n\nimport { IConfigurationInvoice, ITextWordInvoice } from '../../model';\nimport { Invoice } from '../../model';\nimport { IAlignmentOptions, IColorSettings } from '../../model/configInvoice.model';\nimport { CurrencyPlusPipe } from '../../pipes/currency-plus.pipe';\nimport { LineSplitPipe } from '../../pipes/line-split.pipe';\nimport { PercentPlusPipe } from '../../pipes/percent-plus.pipe';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\nimport { InvoiceDocumentsComponent } from '../invoice-documents/invoice-documents.component';\nimport { InvoiceLineItemsTableComponent } from '../invoice-line-items-table/invoice-line-items-table.component';\nimport { OrganizationInfoComponent } from '../organization-info/organization-info.component';\nimport { ReferenceAndDeliveryInformationComponent } from '../reference-and-delivery-information/reference-and-delivery-information.component';\n\nregisterLocaleData(localeDe, 'de-DE', localeDeExtra);\nregisterLocaleData(localeEn, 'en-US', localeEnExtra);\n\n@Component({\n selector: 'ava-invoice-display',\n imports: [\n PercentPlusPipe,\n CurrencyPlusPipe,\n DatePipe,\n AsyncPipe,\n MatDividerModule,\n InvoiceDocumentsComponent,\n MatIconModule,\n InvoiceLineItemsTableComponent,\n ReferenceAndDeliveryInformationComponent,\n OrganizationInfoComponent,\n LineSplitPipe\n ],\n templateUrl: './invoice-display.component.html',\n styleUrl: './invoice-display.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n ConfigurationInvoiceService,\n CurrencyPipe,\n DecimalPipe,\n PercentPipe,\n {\n provide: LOCALE_ID,\n useFactory: (configurationInvoiceService: ConfigurationInvoiceService) => configurationInvoiceService.locale,\n deps: [ConfigurationInvoiceService]\n }\n ]\n})\nexport class InvoiceDisplayComponent implements OnInit {\n configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n private transformFn = (invoice: Invoice | string) => {\n if (typeof invoice === 'string') {\n let parsedInvoice: Invoice;\n\n try {\n parsedInvoice = JSON.parse(invoice);\n } catch (e) {\n return null;\n }\n\n return parsedInvoice;\n } else {\n return invoice;\n }\n };\n\n readonly invoice = input.required<Invoice | null, Invoice>({ transform: this.transformFn });\n readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n readonly pdfViewEnabled$: Observable<boolean> = this.configurationInvoiceService.getPdfViewEnabledFromConfig();\n readonly alignmentOptions$: Observable<IAlignmentOptions | null> = this.configurationInvoiceService.getAlignmentOptionsFromConfig();\n private readonly currencyCode = linkedSignal(() => this.invoice()?.currencyCode || '');\n /**\n * You can supply a map of strings to be used for the text in the tree. This allows you to translate\n * the text in the tree to other languages.\n * {\n * invoiceTitle: string;\n * vatId: string;\n * detailsInvoiceNumber: string;\n * detailsInvoiceDate: string;\n * detailsPaymentDueDate: string;\n * detailsCurrencyCode: string;\n * detailsPaymentTerms: string;\n * referencesTopic: string;\n * referencesBuyerReference: string;\n * referencesProjectReference: string;\n * referencesContractReference: string;\n * referencesPurchaseOrderReference: string;\n * referencesSalesOrderReference: string;\n * referencesReceivingAdviceReference: string;\n * referencesDispatchAdviceReference: string;\n * referencesTenderOrLotReference: string;\n * referencesInvoicedObjectIdentifier: string;\n * tableHeadDescription: string;\n * tableHeadQuantity: string;\n * tableHeadUnit: string;\n * tableHeadNetPrice: string;\n * tableHeadNetAmount: string;\n * totalsTopic: string;\n * totalsTotalNet: string;\n * totalsTotalAllowances: string;\n * totalsTotalCharges: string;\n * totalsTotalAfterDeductions: string;\n * totalsTotalVatAmount: string;\n * totalsTotalGross: string;\n * totalsAlreadyPaidTotal: string;\n * totalsTotalToBePaid: string;\n * instructionsTopic: string;\n * instructionsAccountIdentifier: string;\n * instructionsAccountName: string;\n * instructionsServiceProviderIdentifier: string;\n * notesTopic: string;\n * attachmentsHeading: string;\n * attachmentsName: string;\n * attachmentsDescription: string;\n * attachmentsUrl: string;\n * attachmentsDataSize: string;\n * attachmentsMimeType: string;\n * attachmentsFileName: string;\n * attachmentsDownloadButton: string;\n *\n * }\n */\n readonly config = input.required<IConfigurationInvoice | null, IConfigurationInvoice>({\n transform: (config: IConfigurationInvoice) => {\n if (typeof config === 'string') {\n let parsedConfig: IConfigurationInvoice;\n\n try {\n parsedConfig = JSON.parse(config);\n } catch (e) {\n return null;\n }\n\n return parsedConfig;\n } else {\n return config;\n }\n }\n });\n\n private readonly linkedConfig = linkedSignal(() => {\n return { ...this.configurationInvoiceService.getCurrentInvoiceConfig(), ...this.config(), textWords: this.config()?.textWords };\n });\n invoiceTitle = signal<string>('');\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n effect(() => {\n if (this.invoice() === null) {\n console.error('Invalid JSON string provided. Please provide a valid JSON object.');\n }\n });\n }\n\n ngOnInit(): void {\n this.configurationInvoiceService.currencyCode = this.currencyCode();\n this.configurationInvoiceService.setInvoiceConfig(this.linkedConfig());\n\n this.configurationInvoiceService\n .getTextWordsFromConfig()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((textWords) => {\n if (textWords) {\n const invoiceType = this.invoice()?.invoiceType;\n if (invoiceType) {\n this.invoiceTitle.set(textWords.invoiceTitle[invoiceType]);\n }\n }\n });\n }\n}\n","@if (textWords$ | async; as textWords) {\n @if ((colorSettings$ | async) || true; as colorSettings) {\n @if (invoice() !== null) {\n <div class=\"invoice-container\">\n <!-- Seller and Buyer Information -->\n <h1 class=\"invoice-title\">{{ invoiceTitle() }}</h1>\n\n <header class=\"invoice-header\">\n <div class=\"buyer-info\">\n <ava-organization-info [organizationInfo]=\"invoice()?.buyer || null\">\n <h2\n class=\"header-title\"\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceBuyerTitle }}\n </h2>\n </ava-organization-info>\n </div>\n <div class=\"invoice-details\">\n @if (invoice()?.invoiceNumber) {\n <p>\n <strong>{{ textWords.detailsInvoiceNumber }}: </strong>\n <span>{{ invoice()?.invoiceNumber }}</span>\n </p>\n }\n @if (invoice()?.invoiceDate) {\n <div class=\"invoice-date\">\n <strong>{{ textWords.detailsInvoiceDate }}: </strong>\n <span>\n {{\n configurationInvoiceService.locale === 'de-DE'\n ? (invoice()?.invoiceDate | date: 'dd.MM.yyyy')\n : (invoice()?.invoiceDate | date: 'dd/MM/yyyy')\n }}</span\n >\n </div>\n }\n @if (invoice()?.paymentDueDate) {\n <div class=\"invoice-date\">\n <strong>{{ textWords.detailsPaymentDueDate }}: </strong>\n <span>\n {{\n configurationInvoiceService.locale === 'de-DE'\n ? (invoice()?.paymentDueDate | date: 'dd.MM.yyyy')\n : (invoice()?.paymentDueDate | date: 'dd/MM/yyyy')\n }}</span\n >\n </div>\n }\n @if (invoice()?.currencyCode) {\n <p>\n <strong>{{ textWords.detailsCurrencyCode }}: </strong>\n <span>{{ invoice()?.currencyCode }}</span>\n </p>\n }\n @if (invoice()?.paymentTerms) {\n <p>\n <strong>{{ textWords.detailsPaymentTerms }}: </strong>\n <span>{{ invoice()?.paymentTerms }}</span>\n </p>\n }\n </div>\n\n <div class=\"seller-tax-representive\">\n <ava-organization-info [organizationInfo]=\"invoice()?.sellerTaxRepresentative || null\">\n <h2\n class=\"header-title\"\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceSellerTaxRepresentativeTitle }}\n </h2>\n </ava-organization-info>\n </div>\n <div class=\"seller-info\">\n <ava-organization-info [organizationInfo]=\"invoice()?.seller || null\">\n <h2\n class=\"header-title\"\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceSellerTitle }}\n </h2>\n </ava-organization-info>\n </div>\n </header>\n <mat-divider></mat-divider>\n\n <ava-reference-and-delivery-information\n [deliveryInformation]=\"invoice()?.deliveryInformation || null\"\n [references]=\"invoice()?.references || null\"\n ></ava-reference-and-delivery-information>\n <ava-invoice-line-items-table [lineItems]=\"invoice()?.lineItems || []\"></ava-invoice-line-items-table>\n\n <div class=\"addition-info\">\n <section class=\"taxes-and-allowances\">\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.taxesHeading }}\n </h2>\n <table class=\"tax-report-table\">\n <thead>\n <tr>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.vat }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.totalsTotalNet }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.totalsTotalVatAmount }}\n </th>\n </tr>\n </thead>\n <tbody>\n @for (tax of invoice()?.vatBreakdown; track tax.taxRate) {\n @if (tax.vatExemptionReasonText || tax.vatExemptionReasonCode) {\n <tr>\n <td colspan=\"3\">\n <span>{{ tax.vatExemptionReasonText }} / {{ tax.vatExemptionReasonCode }}</span>\n </td>\n </tr>\n }\n\n <tr>\n <td class=\"currency-table-cell\">\n @if (tax.taxRate != null) {\n <span>{{ tax.taxRate | percentPlus: '1.0-2' }}</span>\n }\n </td>\n <td class=\"currency-table-cell\">\n @if (tax.netTaxableAmount != null) {\n <span>{{ tax.netTaxableAmount | currencyPlus }}</span>\n }\n </td>\n <td class=\"currency-table-cell\">\n @if (tax.vatAmount != null) {\n <span>{{ tax.vatAmount | currencyPlus }}</span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n @if (invoice()?.allowances && (invoice()?.allowances?.length || 0) > 0) {\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.invoiceAllowancesHeader }}\n </h2>\n\n <table class=\"tax-report-table\">\n <thead>\n <tr>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceAllowancesTableHeaderSum }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceAllowancesTableHeaderVatRate }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceAllowancesTableHeaderAllowance }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceAllowancesTableHeaderBase }}\n </th>\n </tr>\n </thead>\n <tbody>\n @for (allowance of invoice()?.allowances; track allowance) {\n <tr>\n <td colspan=\"4\">\n @if (allowance.reason && allowance.reasonCode) {\n <span>{{ allowance.reason }} / {{ allowance.reasonCode }}</span>\n }\n @if (allowance.reason && !allowance.reasonCode) {\n <span>{{ allowance.reason }}</span>\n }\n\n @if (!allowance.reason && allowance.reasonCode) {\n <span>{{ allowance.reasonCode }}</span>\n }\n </td>\n </tr>\n <tr>\n <td class=\"currency-table-cell\">\n <span>\n {{ allowance.netAmount | currencyPlus }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ allowance.vatRate | percentPlus: '1.0-2' }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ allowance.relativeAllowancePercentage | percentPlus: '1.0-2' }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ allowance.relativeAllowanceBaseAmount | currencyPlus }}\n </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n @if (invoice()?.charges && (invoice()?.charges?.length || 0) > 0) {\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.invoiceChargesHeader }}\n </h2>\n\n <table class=\"tax-report-table\">\n <thead>\n <tr>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceChargesTableHeaderSum }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceChargesTableHeaderVatRate }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceChargesTableHeaderCharge }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceChargesTableHeaderBase }}\n </th>\n </tr>\n </thead>\n <tbody>\n @for (charge of invoice()?.charges; track charge) {\n <tr>\n <td colspan=\"4\">\n @if (charge.reason && charge.reasonCode) {\n <span>{{ charge.reason }} / {{ charge.reasonCode }}</span>\n }\n @if (charge.reason && !charge.reasonCode) {\n <span>{{ charge.reason }}</span>\n }\n\n @if (!charge.reason && charge.reasonCode) {\n <span>{{ charge.reasonCode }}</span>\n }\n </td>\n </tr>\n <tr>\n <td class=\"currency-table-cell\">\n <span>\n {{ charge.netAmount | currencyPlus }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ charge.vatRate | percentPlus: '1.0-2' }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ charge.relativeChargePercentage | percentPlus: '1.0-2' }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ charge.relativeChargeBaseAmount | currencyPlus }}\n </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n </section>\n\n <section class=\"payment-instructions\">\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.instructionsTopic }}\n </h2>\n @if (invoice()?.paymentInstructions?.description) {\n <p>{{ invoice()?.paymentInstructions?.description }}</p>\n }\n @for (means of invoice()?.paymentInstructions?.paymentMeans; track means) {\n <div>\n @if (means.accountIdentifier) {\n <p>\n <strong>{{ textWords.instructionsAccountIdentifier }}: </strong>\n <br />\n <span>{{ means.accountIdentifier }}</span>\n </p>\n }\n @if (means.accountName) {\n <p>\n <strong>{{ textWords.instructionsAccountName }}: </strong>\n <br />\n <span>{{ means.accountName }}</span>\n </p>\n }\n @if (means.serviceProviderIdentifier) {\n <p>\n <strong>{{ textWords.instructionsServiceProviderIdentifier }}: </strong>\n <br />\n <span>{{ means.serviceProviderIdentifier }}</span>\n </p>\n }\n </div>\n }\n </section>\n\n <section class=\"invoice-totals\">\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.totalsTopic }}\n </h2>\n\n @if (invoice()?.totals?.totalNet) {\n <p>\n <strong>{{ textWords.totalsTotalNet }}: </strong>\n <br />\n <span>{{ invoice()?.totals?.totalNet | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalAllowances) {\n <p>\n <strong>{{ textWords.totalsTotalAllowances }}: </strong>\n <br />\n <span> {{ invoice()?.totals?.totalAllowances | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalCharges) {\n <p>\n <strong>{{ textWords.totalsTotalCharges }}: </strong>\n <br />\n <span> {{ invoice()?.totals?.totalCharges | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalAfterDeductions) {\n <p>\n <strong>{{ textWords.totalsTotalAfterDeductions }}: </strong>\n <br />\n <span>{{ invoice()?.totals?.totalAfterDeductions | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalVatAmount) {\n <p>\n <strong>{{ textWords.totalsTotalVatAmount }}: </strong>\n <br />\n <span>{{ invoice()?.totals?.totalVatAmount | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalGross) {\n <p>\n <strong>{{ textWords.totalsTotalGross }}: </strong>\n <br />\n <span> {{ invoice()?.totals?.totalGross | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.alreadyPaidTotal) {\n <p>\n <strong>{{ textWords.totalsAlreadyPaidTotal }}: </strong>\n <br />\n <span>{{ invoice()?.totals?.alreadyPaidTotal | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalToBePaid) {\n <p\n class=\"total\"\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n <strong>{{ textWords.totalsTotalToBePaid }}: </strong>\n <br />\n <strong> {{ invoice()?.totals?.totalToBePaid | currencyPlus }}</strong>\n </p>\n }\n </section>\n </div>\n @if (invoice()?.previousInvoices && invoice()?.previousInvoices?.length) {\n <section\n class=\"previous-invoices\"\n [style]=\"{\n justifyContent: (alignmentOptions$ | async)?.previousInvoiceAlignment || '',\n }\"\n >\n <div class=\"previous-invoices-wrapper\">\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.previousInvoicesTopic }}\n </h2>\n\n <table class=\"previous-invoices-table\">\n <thead>\n <tr>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.previousInvoiceNumber }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.previousInvoiceDate }}\n </th>\n </tr>\n </thead>\n <tbody>\n @for (prevInvoice of invoice()?.previousInvoices; track prevInvoice) {\n <tr>\n <td>\n {{ prevInvoice.invoiceNumber }}\n </td>\n <td>\n {{ prevInvoice.invoiceDate | date: 'shortDate' }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </section>\n }\n\n @if (invoice()?.invoiceNotes?.length) {\n <section class=\"invoice-notes\">\n <h2>{{ textWords.notesTopic }}</h2>\n @for (note of invoice()?.invoiceNotes; track note) {\n <div>\n @if (note?.shortText) {\n <p>\n <strong>{{ note?.shortText }}</strong>\n </p>\n }\n @if (note?.longText) {\n <p>\n @for (line of note.longText! | lineSplit; track line; let isLast = $last) {\n {{ line }}\n\n @if (!isLast) {\n <br />\n }\n }\n </p>\n }\n </div>\n }\n </section>\n }\n @if (invoice()?.documents?.length) {\n <section class=\"invoice-attachments\">\n <ava-invoice-documents [documents]=\"invoice()?.documents || []\"></ava-invoice-documents>\n </section>\n }\n </div>\n } @else if (invoice() === null && (pdfViewEnabled$ | async)) {\n <div class=\"error-container\">\n <div class=\"error-message\">\n <mat-icon>error_outline</mat-icon>\n <h2>Oops! Something went wrong.</h2>\n <p>We couldn't retrieve the invoice data. Please try again later.</p>\n </div>\n </div>\n } @else {\n <div></div>\n }\n }\n}\n","/*\n * Public API Surface of angular-ava\n */\n\nexport * from './lib/ava-tree/model';\nexport * from './lib/version';\nexport * from './lib/ava-tree/components/ava-tree/ava-tree.component';\nexport * from './lib/ava-tree/constants';\nexport * from './lib/invoice/components/invoice-display/invoice-display.component';\nexport * from './lib/invoice/constants';\nexport * from './lib/invoice/model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dangl-angular-ava.mjs","sources":["../../../projects/angular-ava/src/lib/ava-tree/model/tree-mode.model.ts","../../../projects/angular-ava/src/lib/version.ts","../../../projects/angular-ava/src/lib/ava-tree/services/tree-hover-tooltip.service.ts","../../../projects/angular-ava/src/lib/ava-tree/directives/hover-effect.directive.ts","../../../projects/angular-ava/src/lib/invoice/model/invoice-models.ts","../../../projects/angular-ava/src/lib/invoice/constants/defaultTextWordInvoice.ts","../../../projects/angular-ava/src/lib/invoice/constants/language.ts","../../../projects/angular-ava/src/lib/ava-tree/constants/defaultFilters.ts","../../../projects/angular-ava/src/lib/ava-tree/constants/defaultTextWords.ts","../../../projects/angular-ava/src/lib/ava-tree/constants/defaults.ts","../../../projects/angular-ava/src/lib/ava-tree/services/configuration-tree.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/expand-parent-group.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/flat-elements.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/select-element.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/keyboard-operation.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/tree-node-selection.service.ts","../../../projects/angular-ava/src/lib/ava-tree/directives/save-changing-view.directive.ts","../../../projects/angular-ava/src/lib/ava-tree/pipes/element-icon-name.pipe.ts","../../../projects/angular-ava/src/lib/ava-tree/pipes/element-item-number.pipe.ts","../../../projects/angular-ava/src/lib/ava-tree/pipes/element-text.pipe.ts","../../../projects/angular-ava/src/lib/ava-tree/components/tree-item/tree-item.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/tree-item/tree-item.component.html","../../../projects/angular-ava/src/lib/ava-tree/components/list-structure/list-structure.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/list-structure/list-structure.component.html","../../../projects/angular-ava/src/lib/ava-tree/components/table-structure/table-structure.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/table-structure/table-structure.component.html","../../../projects/angular-ava/src/lib/ava-tree/pipes/group-child-elements.pipe.ts","../../../projects/angular-ava/src/lib/ava-tree/components/tree-node/tree-node.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/tree-node/tree-node.component.html","../../../projects/angular-ava/src/lib/ava-tree/components/ava-tree/ava-tree.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/ava-tree/ava-tree.component.html","../../../projects/angular-ava/src/lib/invoice/constants/alignment-options.ts","../../../projects/angular-ava/src/lib/invoice/services/configuration-invoice.service.ts","../../../projects/angular-ava/src/lib/invoice/pipes/currency-plus.pipe.ts","../../../projects/angular-ava/src/lib/invoice/pipes/line-split.pipe.ts","../../../projects/angular-ava/src/lib/invoice/pipes/percent-plus.pipe.ts","../../../projects/angular-ava/src/lib/invoice/pipes/invoice-attachment-mime-type.pipe.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-documents/invoice-documents.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-documents/invoice-documents.component.html","../../../projects/angular-ava/src/lib/invoice/pipes/number-plus.pipe.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-item-additional-info/invoice-line-item-additional-info.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-item-additional-info/invoice-line-item-additional-info.component.html","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-items-table/invoice-line-items-table.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-items-table/invoice-line-items-table.component.html","../../../projects/angular-ava/src/lib/invoice/components/organization-info/organization-info.component.ts","../../../projects/angular-ava/src/lib/invoice/components/organization-info/organization-info.component.html","../../../projects/angular-ava/src/lib/invoice/components/reference-and-delivery-information/reference-and-delivery-information.component.ts","../../../projects/angular-ava/src/lib/invoice/components/reference-and-delivery-information/reference-and-delivery-information.component.html","../../../projects/angular-ava/src/lib/invoice/components/invoice-display/invoice-display.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-display/invoice-display.component.html","../../../projects/angular-ava/src/public-api.ts","../../../projects/angular-ava/src/dangl-angular-ava.ts"],"sourcesContent":["export enum ModeViewType {\n Tree = 'Tree',\n List = 'List',\n Table = 'Table'\n}\n","// This file is automatically generated as part of the build process\n\nexport const version = {\n version: \"1.5.2-beta0076\",\n commitInfo: \"Branch.develop.Sha.40e14a764b956a5d820f2712a47b05f764cbcfba\",\n commitDate: \"2026-02-26\",\n commitHash: \"40e14a764b956a5d820f2712a47b05f764cbcfba\",\n informationalVersion: \"1.5.2-beta.76+Branch.develop.Sha.40e14a764b956a5d820f2712a47b05f764cbcfba\",\n buildDateUtc: new Date(Date.UTC(2026, 1, 26, 10, 23, 41))\n}\n","export class TreeHoverTooltipService {\n showElementOver(text: HTMLElement | null): void {\n if (!text) return;\n const rect = text.getBoundingClientRect();\n text.style.position = 'fixed';\n text.style.top = `${rect.top}px`;\n text.style.left = `${rect.left}px`;\n text.style.zIndex = '2000';\n }\n\n hideElementOver(text: HTMLElement | null): void {\n if (!text) return;\n text.style.position = 'static';\n text.style.top = ``;\n text.style.left = ``;\n text.style.zIndex = '';\n }\n}\n","import { Directive, HostListener, inject, input } from '@angular/core';\n\nimport { TreeItemComponent } from '../components/tree-item/tree-item.component';\nimport { TreeHoverTooltipService } from '../services/tree-hover-tooltip.service';\n\ntype TimeoutType = ReturnType<typeof setTimeout>;\n\n@Directive({\n selector: '[avaHoverEffect]',\n standalone: true\n})\nexport class HoverEffectDirective {\n itemText = input<TreeItemComponent | null>(null, { alias: 'avaHoverEffect' });\n private allowShow: TimeoutType | null = null;\n private treeHoverTooltipService = inject(TreeHoverTooltipService);\n\n @HostListener('mouseenter') onMouseEnter() {\n const itemText = this.itemText();\n if (itemText) {\n this.treeHoverTooltipService.showElementOver(itemText.textElement()?.nativeElement);\n }\n }\n @HostListener('mouseup') onMouseUp() {\n this.allowShow = setTimeout(() => {\n this.hide();\n const itemText = this.itemText();\n if (itemText) {\n this.treeHoverTooltipService.showElementOver(itemText.textElement()?.nativeElement);\n }\n }, 400);\n }\n\n @HostListener('wheel') onWheel() {\n this.hide();\n }\n @HostListener('scroll') onScroll() {\n this.hide();\n }\n @HostListener('mouseleave') onMouseLeave() {\n this.hide();\n }\n @HostListener('keydown') onKeyDown() {\n this.hide();\n }\n @HostListener('mouseout') onMouseOut() {\n this.hide();\n }\n\n @HostListener('mousemove', ['$event']) onMouseMove(event: MouseEvent) {\n const element = event.currentTarget as HTMLElement;\n const parent = element.closest('.ava-tree-wrapper');\n if (parent) {\n const rect = parent.getBoundingClientRect();\n if (event.x > rect.right) {\n this.onMouseLeave();\n }\n }\n }\n\n private hide(): void {\n if (this.allowShow) {\n clearTimeout(this.allowShow);\n this.allowShow = null;\n }\n const itemText = this.itemText();\n if (itemText) {\n this.treeHoverTooltipService.hideElementOver(itemText.textElement()?.nativeElement);\n }\n }\n}\n","import { ProjectDto } from '../../ava-tree/model';\n\n//----------------------\n// <auto-generated>\n// Generated using the NSwag toolchain v14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// </auto-generated>\n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\n/** This class represents an invoice */\nexport interface Invoice {\n /** The number of the invoice */\n invoiceNumber?: string | undefined;\n /** The date of the invoice */\n invoiceDate?: Date | undefined;\n /** The type of the invoice */\n invoiceType?: InvoiceType | undefined;\n /** The three letter ISO currency code */\n currencyCode?: string | undefined;\n /** Until when the payment is due */\n paymentDueDate?: Date | undefined;\n /** An object holding reference used in this invoice */\n references?: References | undefined;\n /** A text description of payment terms, e.g. cash discounts or payment conditions */\n paymentTerms?: string | undefined;\n /** In case of partial or final invoices, it's possible to reference the previous invoice numbers */\n previousInvoices?: PreviousInvoice[] | undefined;\n /** Information about the buyer */\n buyer?: Organization | undefined;\n /** Information about the seller */\n seller?: Organization | undefined;\n /** Information about the sellers tax representative */\n sellerTaxRepresentative?: Organization | undefined;\n /** A payee is someone who receives the payment that is different from the seller */\n payee?: Payee | undefined;\n /** If present, this is an unstructured text that can be used to give additional information\nabout the invoice. Field BG-1 */\n invoiceNotes?: InvoiceNote[] | undefined;\n /** The period during which the services or goods were delivered */\n invoicePeriod?: InvoicePeriod | undefined;\n /** Information about the delivery\nBG-13 in XRechnung */\n deliveryInformation?: DeliveryInformation | undefined;\n /** Totals for the invoice */\n totals?: InvoiceTotals | undefined;\n /** Instructions how to perform the payment */\n paymentInstructions?: PaymentInstructions | undefined;\n /** Attached documents to the invoice */\n documents?: SupportingDocument[] | undefined;\n /** This is used to list VAT by category, e.g. for invoices where parts are in different VAT categories */\n vatBreakdown?: VatBreakdown[] | undefined;\n /** Allowances / deductions on the invoice */\n allowances?: InvoiceAllowance[] | undefined;\n /** Charges / additional costs on the invoice */\n charges?: InvoiceCharge[] | undefined;\n /** Single line items in the invoice */\n lineItems?: InvoiceLineItem[] | undefined;\n /** The source type from which the invoice was created */\n sourceType?: SourceType | undefined;\n}\n\n/** Type of the invoice */\nexport enum InvoiceType {\n PartialInvoice = 326,\n CommercialInvoice = 380,\n CreditNote = 381,\n CorrectedInvoice = 384,\n SelfBilledInvoice = 389,\n PartialConstructionInvoice = 875,\n PartialFinalConstructionInvoice = 876,\n FinalConstructionInvoice = 877\n}\n\n/** This class holds typical references used in an invoice */\nexport interface References {\n /** An internal reference used by the buyer, this can also be used as the\n'Leitweg-ID' in Germany\nBT-10 in XRechnung. */\n buyerReference?: string | undefined;\n /** Reference to a project\nBT-11 in XRechnung. */\n projectReference?: string | undefined;\n /** Reference to a contract\nBT-12 in XRechnung. */\n contractReference?: string | undefined;\n /** Reference to a purchase order created by the buyer\nBT-13 in XRechnung. */\n purchaseOrderReference?: string | undefined;\n /** Reference to a sales order created by the seller\nBT-14 in XRechnung. */\n salesOrderReference?: string | undefined;\n /** Reference to a delivery note\nBT-15 in XRechnung. */\n receivingAdviceReference?: string | undefined;\n /** Reference to a dispatch advice\nBT-16 in XRechnung. */\n dispatchAdviceReference?: string | undefined;\n /** Reference to a tender or lot\nBT-17 in XRechnung. */\n tenderOrLotReference?: string | undefined;\n /** Reference to a custom item, e.g. a phone number, person,\ncontract or anything that would identify the invoice in the buyer's system\nBT-18 in XRechnung. */\n invoicedObjectIdentifier?: string | undefined;\n /** This is a reference for accounting, like a cost center or similar. In German,\nthis would be a \"Kostenstelle\".\nBT-19 in XRechnung. */\n accountingReference?: string | undefined;\n}\n\n/** References to previous invoices */\nexport interface PreviousInvoice {\n /** The date of the previous invoice */\n invoiceDate?: Date | undefined;\n /** The number of the previous invoice */\n invoiceNumber?: string | undefined;\n}\n\n/** Represents an organization, e.g. a buyer or a seller */\nexport interface Organization {\n /** The identifier of the organization */\n identifier?: string | undefined;\n /** The name of the organization */\n name?: string | undefined;\n /** A registration number, e.g. a Handelsregisternummer in Germany */\n registrationNumber?: string | undefined;\n /** The VAT ID for the organization */\n vatId?: string | undefined;\n /** The tax ID for the organization */\n taxId?: string | undefined;\n /** An email address for the organization */\n email?: string | undefined;\n /** The name of a contact person */\n contactPersonName?: string | undefined;\n /** The phone of a contact person */\n contactPersonPhone?: string | undefined;\n /** The email of a contact person */\n contactPersonEmail?: string | undefined;\n /** The address of the organization */\n address?: string | undefined;\n /** The city of the organization */\n city?: string | undefined;\n /** The zip code of the organization */\n zipCode?: string | undefined;\n /** The ISO 3166-1 2 letter country code */\n countryCode?: string | undefined;\n /** The state of the organization, e.g. a federal state in Germany */\n state?: string | undefined;\n /** This provides some additional legal information.\nBT-33 in XRechnung, and this is only used for the seller. */\n additionalLegalInformation?: string | undefined;\n}\n\n/** Represents a payee, meaning someone that receives the payment */\nexport interface Payee {\n /** The name of the payee */\n name?: string | undefined;\n /** The identifier of the payee */\n identifier?: string | undefined;\n /** A registered identifier for the payee, e.g. a VAT ID\nor Tax ID */\n legalRegistrationIdentifier?: string | undefined;\n}\n\n/** Represents a note / text in an invoice */\nexport interface InvoiceNote {\n /** Short summary / heading. Should be a text code from this list:\nhttps://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred4451.htm\nField BT-21 */\n shortText?: string | undefined;\n /** Short summary / heading type. This will be automatically parsed from ShortText\nand is a read-only property. */\n shortTextType?: ShortTextType | undefined;\n /** Explanation of this note\nField BT-22 */\n longText?: string | undefined;\n}\n\n/** Type qualifying the subject of the text. */\nexport enum ShortTextType {\n GoodsItemDescription = 0,\n PaymentTerm = 1,\n DangerousGoodsAdditionalInformation = 2,\n DangerousGoodsTechnicalName = 3,\n AcknowledgementDescription = 4,\n RateAdditionalInformation = 5,\n PartyInstructions = 6,\n GeneralInformation = 7,\n AdditionalConditionsOfSalePurchase = 8,\n PriceConditions = 9,\n GoodsDimensionsInCharacters = 10,\n EquipmentReUsageRestrictions = 11,\n HandlingRestriction = 12,\n ErrorDescriptionFreeText = 13,\n ResponseFreeText = 14,\n PackageContentsDescription = 15,\n TermsOfDelivery = 16,\n BillOfLadingRemarks = 17,\n ModeOfSettlementInformation = 18,\n ConsignmentInvoiceInformation = 19,\n ClearanceInvoiceInformation = 20,\n LetterOfCreditInformation = 21,\n LicenseInformation = 22,\n CertificationStatements = 23,\n AdditionalExportInformation = 24,\n TariffStatements = 25,\n MedicalHistory = 26,\n ConditionsOfSaleOrPurchase = 27,\n ContractDocumentType = 28,\n AdditionalTermsAndOrConditionsDocumentaryCredit = 29,\n InstructionsOrInformationAboutStandbyDocumentary = 30,\n InstructionsOrInformationAboutPartialShipments = 31,\n InstructionsOrInformationAboutTranshipments = 32,\n AdditionalHandlingInstructionsDocumentaryCredit = 33,\n DomesticRoutingInformation = 34,\n ChargeableCategoryOfEquipment = 35,\n GovernmentInformation = 36,\n OnwardRoutingInformation = 37,\n AccountingInformation = 38,\n DiscrepancyInformation = 39,\n ConfirmationInstructions = 40,\n MethodOfIssuance = 41,\n DocumentsDeliveryInstructions = 42,\n AdditionalConditions = 43,\n InformationInstructionsAboutAdditionalAmountsCovered = 44,\n DeferredPaymentTermedAdditional = 45,\n AcceptanceTermsAdditional = 46,\n NegotiationTermsAdditional = 47,\n DocumentNameAndDocumentaryRequirements = 48,\n InstructionsInformationAboutRevolvingDocumentaryCredit = 49,\n DocumentaryRequirements = 50,\n AdditionalInformation = 51,\n FactorAssignmentClause = 52,\n Reason = 53,\n Dispute = 54,\n AdditionalAttributeInformation = 55,\n AbsenceDeclaration = 56,\n AggregationStatement = 57,\n CompilationStatement = 58,\n DefinitionalException = 59,\n PrivacyStatement = 60,\n QualityStatement = 61,\n StatisticalDescription = 62,\n StatisticalDefinition = 63,\n StatisticalName = 64,\n StatisticalTitle = 65,\n OffDimensionInformation = 66,\n UnexpectedStopsInformation = 67,\n Principles = 68,\n TermsAndDefinition = 69,\n SegmentName = 70,\n SimpleDataElementName = 71,\n Scope = 72,\n MessageTypeName = 73,\n Introduction = 74,\n Glossary = 75,\n FunctionalDefinition = 76,\n Examples = 77,\n CoverPage = 78,\n DependencySyntaxNotes = 79,\n CodeValueName = 80,\n CodeListName = 81,\n ClarificationOfUsage = 82,\n CompositeDataElementName = 83,\n FieldOfApplication = 84,\n TypeOfAssetsAndLiabilities = 85,\n PromotionInformation = 86,\n MeterCondition = 87,\n MeterReadingInformation = 88,\n TypeOfTransactionReason = 89,\n TypeOfSurveyQuestion = 90,\n CarriersAgentCounterInformation = 91,\n DescriptionOfWorkItemOnEquipment = 92,\n MessageDefinition = 93,\n BookedItemInformation = 94,\n SourceOfDocument = 95,\n Note = 96,\n FixedPartOfSegmentClarificationText = 97,\n CharacteristicsOfGoods = 98,\n AdditionalDischargeInstructions = 99,\n ContainerStrippingInstructions = 100,\n CscContainerSafetyConventionPlateInformation = 101,\n CargoRemarks = 102,\n TemperatureControlInstructions = 103,\n TextRefersToExpectedData = 104,\n TextRefersToReceivedData = 105,\n SectionClarificationText = 106,\n InformationToTheBeneficiary = 107,\n InformationToTheApplicant = 108,\n InstructionsToTheBeneficiary = 109,\n InstructionsToTheApplicant = 110,\n ControlledAtmosphere = 111,\n TakeOffAnnotation = 112,\n PriceVariationNarrative = 113,\n DocumentaryCreditAmendmentInstructions = 114,\n StandardMethodNarrative = 115,\n ProjectNarrative = 116,\n RadioactiveGoodsAdditionalInformation = 117,\n BankToBankInformation = 118,\n ReimbursementInstructions = 119,\n ReasonForAmendingAMessage = 120,\n InstructionsToThePayingAndOrAcceptingAndOr = 121,\n InterestInstructions = 122,\n AgentCommission = 123,\n RemittingBankInstructions = 124,\n InstructionsToTheCollectingBank = 125,\n CollectionAmountInstructions = 126,\n InternalAuditingInformation = 127,\n Constraint = 128,\n Comment = 129,\n SemanticNote = 130,\n HelpText = 131,\n Legend = 132,\n BatchCodeStructure = 133,\n ProductApplication = 134,\n CustomerComplaint = 135,\n ProbableCauseOfFault = 136,\n DefectDescription = 137,\n RepairDescription = 138,\n ReviewComments = 139,\n Title = 140,\n DescriptionOfAmount = 141,\n Responsibilities = 142,\n Supplier = 143,\n PurchaseRegion = 144,\n Affiliation = 145,\n Borrower = 146,\n LineOfBusiness = 147,\n FinancialInstitution = 148,\n BusinessFounder = 149,\n BusinessHistory = 150,\n BankingArrangements = 151,\n BusinessOrigin = 152,\n BrandNamesDescription = 153,\n BusinessFinancingDetails = 154,\n Competition = 155,\n ConstructionProcessDetails = 156,\n ConstructionSpecialty = 157,\n ContractInformation = 158,\n CorporateFiling = 159,\n CustomerInformation = 160,\n CopyrightNotice = 161,\n ContingentDebt = 162,\n ConvictionDetails = 163,\n Equipment = 164,\n WorkforceDescription = 165,\n Exemption = 166,\n FuturePlans = 167,\n IntervieweeConversationInformation = 168,\n IntangibleAsset = 169,\n Inventory = 170,\n Investment = 171,\n IntercompanyRelationsInformation = 172,\n JointVenture = 173,\n Loan = 174,\n LongTermDebt = 175,\n Location = 176,\n CurrentLegalStructure = 177,\n MaritalContract = 178,\n MarketingActivities = 179,\n Merger = 180,\n MarketableSecurities = 181,\n BusinessDebt = 182,\n OriginalLegalStructure = 183,\n EmployeeSharingArrangements = 184,\n OrganizationDetails = 185,\n PublicRecordDetails = 186,\n PriceRange = 187,\n Qualifications = 188,\n RegisteredActivity = 189,\n CriminalSentence = 190,\n SalesMethod = 191,\n EducationalInstitutionInformation = 192,\n StatusDetails = 193,\n Sales = 194,\n SpouseInformation = 195,\n EducationalDegreeInformation = 196,\n ShareholdingInformation = 197,\n SalesTerritory = 198,\n AccountantsComments = 199,\n ExemptionLawLocation = 200,\n ShareClassifications = 201,\n Forecast = 202,\n EventLocation = 203,\n FacilityOccupancy = 204,\n ImportAndExportDetails = 205,\n AdditionalFacilityInformation = 206,\n InventoryValue = 207,\n Education = 208,\n Event = 209,\n Agent = 210,\n DomesticallyAgreedFinancialStatementDetails = 211,\n OtherCurrentAssetDescription = 212,\n OtherCurrentLiabilityDescription = 213,\n FormerBusinessActivity = 214,\n TradeNameUse = 215,\n SigningAuthority = 216,\n Guarantee = 217,\n HoldingCompanyOperation = 218,\n ConsignmentRouting = 219,\n LetterOfProtest = 220,\n Question = 221,\n PartyInformation = 222,\n AreaBoundariesDescription = 223,\n AdvertisementInformation = 224,\n FinancialStatementDetails = 225,\n AccessInstructions = 226,\n Liquidity = 227,\n CreditLine = 228,\n WarrantyTerms = 229,\n DivisionDescription = 230,\n ReportingInstruction = 231,\n ExaminationResult = 232,\n LaboratoryResult = 233,\n AllowanceChargeInformation = 234,\n XRayResult = 235,\n PathologyResult = 236,\n InterventionDescription = 237,\n SummaryOfAdmittance = 238,\n MedicalTreatmentCourseDetail = 239,\n Prognosis = 240,\n InstructionToPatient = 241,\n InstructionToPhysician = 242,\n AllDocuments = 243,\n MedicineTreatment = 244,\n MedicineDosageAndAdministration = 245,\n AvailabilityOfPatient = 246,\n ReasonForServiceRequest = 247,\n PurposeOfService = 248,\n ArrivalConditions = 249,\n ServiceRequestersComment = 250,\n Authentication = 251,\n RequestedLocationDescription = 252,\n MedicineAdministrationCondition = 253,\n PatientInformation = 254,\n PrecautionaryMeasure = 255,\n ServiceCharacteristic = 256,\n PlannedEventComment = 257,\n ExpectedDelayComment = 258,\n TransportRequirementsComment = 259,\n TemporaryApprovalCondition = 260,\n CustomsValuationInformation = 261,\n ValueAddedTaxVatMarginScheme = 262,\n PassengerBaggageInformation = 263,\n AdditionalProductInformationAddress = 264,\n InformationToBePrintedOnDespatchAdvice = 265,\n MissingGoodsRemarks = 266,\n NonAcceptanceInformation = 267,\n ReturnsInformation = 268,\n SubLineItemInformation = 269,\n TestInformation = 270,\n ExternalLink = 271,\n VatExemptionReason = 272,\n TransportContractDocumentClause = 273,\n InstructionToPrepareThePatient = 274,\n MedicineTreatmentComment = 275,\n ExaminationResultComment = 276,\n ServiceRequestComment = 277,\n PrescriptionReason = 278,\n PrescriptionComment = 279,\n ClinicalInvestigationComment = 280,\n MedicinalSpecificationComment = 281,\n EconomicContributionComment = 282,\n StatusOfAPlan = 283,\n RandomSampleTestInformation = 284,\n PeriodOfTime = 285,\n Legislation = 286,\n SecurityMeasuresRequested = 287,\n TransportContractDocumentRemark = 288,\n PreviousPortOfCallSecurityInformation = 289,\n SecurityInformation = 290,\n WasteInformation = 291,\n B2cMarketingInformationShortDescription = 292,\n B2bMarketingInformationLongDescription = 293,\n B2cMarketingInformationLongDescription = 294,\n ProductIngredients = 295,\n LocationShortName = 296,\n PackagingMaterialInformation = 297,\n FillerMaterialInformation = 298,\n ShipToShipActivityInformation = 299,\n PackageMaterialDescription = 300,\n ConsumerLevelPackageMarking = 301,\n CustomsClearanceInstructions = 302,\n CustomsClearanceInstructionsExport = 303,\n ChangeInformation = 304,\n CustomsClearanceInstructionImport = 305,\n ClearancePlaceRequested = 306,\n LoadingRemarks = 307,\n OrderInformation = 308,\n CustomerRemarks = 309,\n CustomsDeclarationInformation = 310,\n DamageRemarks = 311,\n DocumentIssuerDeclaration = 312,\n DeliveryInformation = 313,\n DeliveryInstructions = 314,\n DocumentationInstructions = 315,\n DutyDeclaration = 316,\n EffectiveUsedRouting = 317,\n FirstBlockToBePrintedOnTheTransportContract = 318,\n GovernmentBillOfLadingInformation = 319,\n EntireTransactionSet = 320,\n FurtherInformationConcerningGGVSPar7 = 321,\n ConsignmentHandlingInstruction = 322,\n HazardInformation = 323,\n ConsignmentInformationForConsignee = 324,\n InsuranceInstructions = 325,\n InvoiceMailingInstructions = 326,\n CommercialInvoiceItemDescription = 327,\n InsuranceInformation = 328,\n InvoiceInstruction = 329,\n InformationForRailwayPurpose = 330,\n InlandTransportDetails = 331,\n TestingInstructions = 332,\n LocationAlias = 333,\n LineItem = 334,\n LoadingInstruction = 335,\n MiscellaneousChargeOrder = 336,\n MaritimeDeclarationOfHealth = 337,\n AdditionalMarksNumbersInformation = 338,\n OrderInstruction = 339,\n OtherServiceInformation = 340,\n PackingMarkingInformation = 341,\n PaymentInstructionsInformation = 342,\n PayablesInformation = 343,\n PackagingInformation = 344,\n PackagingTermsInformation = 345,\n PaymentDetailRemittanceInformation = 346,\n PaymentInformation = 347,\n ProductInformation = 348,\n PriceCalculationFormula = 349,\n PriorityInformation = 350,\n PurchasingInformation = 351,\n QuarantineInstructions = 352,\n QualityDemandsRequirements = 353,\n QuotationInstructionInformation = 354,\n RiskAndHandlingInformation = 355,\n RegulatoryInformation = 356,\n ReturnToOriginInformation = 357,\n Receivables = 358,\n ConsignmentRoute = 359,\n SafetyInformation = 360,\n ConsignmentDocumentaryInstruction = 361,\n SpecialInstructions = 362,\n ShipLineRequested = 363,\n SpecialPermissionForTransportGenerally = 364,\n SpecialPermissionConcerningTheGoodsToBeTransported = 365,\n SpecialHandling = 366,\n SpecialPermissionConcerningPackage = 367,\n SpecialPermissionConcerningTransportMeans = 368,\n SubsidiaryRiskNumberIataDgr = 369,\n SpecialServiceRequest = 370,\n SupplierRemarks = 371,\n ConsignmentTariff = 372,\n ConsignmentTransport = 373,\n TransportationInformation = 374,\n RequestedTariff = 375,\n TaxDeclaration = 376,\n WarehouseInstructionInformation = 377,\n MutuallyDefined = 378\n}\n\n/** Represents an invoice period with start and end dates */\nexport interface InvoicePeriod {\n /** The start date */\n start?: Date | undefined;\n /** The end date */\n end?: Date | undefined;\n}\n\n/** Information about the delivery */\nexport interface DeliveryInformation {\n /** BT-70 in XRechnung */\n deliverToName?: string | undefined;\n /** BT-71 in XRechnung */\n deliverToLocationIdentifier?: string | undefined;\n /** BT-72 in XRechnung */\n deliveryDate?: Date | undefined;\n /** BG-15 in XRechnung */\n deliveryAddress?: DeliveryAddress | undefined;\n}\n\n/** Address for deliveries */\nexport interface DeliveryAddress {\n /** The address. BT-75, BT-76 and BT-165 in XRechnung. */\n address?: string | undefined;\n /** The city. BT-77 in XRechnung. */\n city?: string | undefined;\n /** The zip code. BT-78 in XRechnung. */\n zipCode?: string | undefined;\n /** The ISO 3166-1 2 letter country code. BT-80 in XRechnung. */\n countryCode?: string | undefined;\n}\n\n/** Totals for the invoice */\nexport interface InvoiceTotals {\n /** Sum of all invoice items in net.\nBT-106 in XRechnung. */\n totalNet?: number | undefined;\n /** This is the sum of all allowances (e.g. deductions or withheld tax) in the invoice\nBT-107 in XRechnung. */\n totalAllowances?: number | undefined;\n /** This is the sum of all charges in the invoice, except VAT. For example, late\nfees or surcharges.\nBT-108 in XRechnung. */\n totalCharges?: number | undefined;\n /** This is the total net value of the invoice after applied allowances and charges,\nmeaning the actual net sum to be paid.\nBT-109 in XRechnung. */\n totalAfterDeductions?: number | undefined;\n /** The total amount of VAT in the invoice.\nBT-110 in XRechnung. */\n totalVatAmount?: number | undefined;\n /** The total gross amount of the invoice, including all taxes and deductions.\nBT-112 in XRechnung. */\n totalGross?: number | undefined;\n /** The total amount that has already been paid for this invoice, e.g. used when\nprevious invoice sums are included here that have already been paid.\nBT-113 in XRechnung. */\n alreadyPaidTotal?: number | undefined;\n /** If this is given, this specifies if any rounding amount is applied to the invoice,\nbefore calculating the TotalToBePaid value.\nBT-114 in XRechnung. */\n payableRoundingAmount?: number | undefined;\n /** The sum that needs to be paid for this invoice. This is the total gross amount\nminus the already paid amount.\nBT-115 in XRechnung. */\n totalToBePaid?: number | undefined;\n}\n\n/** Instructions how payment for an invoice should be provided. */\nexport interface PaymentInstructions {\n /** Additional text to describe the payment instructions. */\n description?: string | undefined;\n /** This should be a code according to UNCL 4461\nto identify the type of payment. For example, code \"58\" means SEPA Credit Transfer,\nand code \"30\" means non-SEPA Credit Transfer.\nSee this list: https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/ */\n paymentTypeCode?: string | undefined;\n /** This should be a type according to UNCL 4461\nto identify the type of payment. */\n paymentType?: PaymentType | undefined;\n /** If a SEPA direct debit payment mean is used, then this reference should be provided.\nIt's the creditor identifier in SEPA, in German \"Gläubiger-Identifikationsnummer\".\nField BT-90 in XRechnung. */\n paymentCreditorIdentifier?: string | undefined;\n /** A list of payment means that can be used to pay the invoice. */\n paymentMeans?: PaymentMeans[] | undefined;\n}\n\n/** Indication of the instrument of payment, which may include a guarantee. Enumeration values are self-descriptive, so no comments needed here. According to UNCL 4461, see: https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/ */\nexport enum PaymentType {\n MutuallyDefined = 0,\n InstrumentNotDefined = 1,\n AutomatedClearingHouseCredit = 2,\n AutomatedClearingHouseDebit = 3,\n ACHDemandDebitReversal = 4,\n ACHDemandCreditReversal = 5,\n ACHDemandCredit = 6,\n ACHDemandDebit = 7,\n Hold = 8,\n NationalOrRegionalClearing = 9,\n InCash = 10,\n ACHSavingsCreditReversal = 11,\n ACHSavingsDebitReversal = 12,\n ACHSavingsCredit = 13,\n ACHSavingsDebit = 14,\n BookentryCredit = 15,\n BookentryDebit = 16,\n ACHDemandCashConcentrationDisbursementCCDCredit = 17,\n ACHDemandCashConcentrationDisbursementCCDDebit = 18,\n ACHDemandCorporateTradePaymentCTPCredit = 19,\n Cheque = 20,\n BankerSDraft = 21,\n CertifiedBankerSDraft = 22,\n BankChequeIssuedByABankingOrSimilarEstablishment = 23,\n BillOfExchangeAwaitingAcceptance = 24,\n CertifiedCheque = 25,\n LocalCheque = 26,\n ACHDemandCorporateTradePaymentCTPDebit = 27,\n ACHDemandCorporateTradeExchangeCTXCredit = 28,\n ACHDemandCorporateTradeExchangeCTXDebit = 29,\n CreditTransfer = 30,\n DebitTransfer = 31,\n ACHDemandCashConcentrationDisbursementPlusCCDCredit = 32,\n ACHDemandCashConcentrationDisbursementPlusCCDDebit = 33,\n ACHPrearrangedPaymentAndDepositPPD = 34,\n ACHSavingsCashConcentrationDisbursementCCDCredit = 35,\n ACHSavingsCashConcentrationDisbursementCCDDebit = 36,\n ACHSavingsCorporateTradePaymentCTPCredit = 37,\n ACHSavingsCorporateTradePaymentCTPDebit = 38,\n ACHSavingsCorporateTradeExchangeCTXCredit = 39,\n ACHSavingsCorporateTradeExchangeCTXDebit = 40,\n ACHSavingsCashConcentrationDisbursementPlusCCDCredit = 41,\n PaymentToBankAccount = 42,\n ACHSavingsCashConcentrationDisbursementPlusCCDDebit = 43,\n AcceptedBillOfExchange = 44,\n ReferencedHomeBankingCreditTransfer = 45,\n InterbankDebitTransfer = 46,\n HomeBankingDebitTransfer = 47,\n BankCard = 48,\n DirectDebit = 49,\n PaymentByPostgiro = 50,\n FRNorme697TelereglementCFONBFrenchOrganisationFor = 51,\n UrgentCommercialPayment = 52,\n UrgentTreasuryPayment = 53,\n CreditCard = 54,\n DebitCard = 55,\n Bankgiro = 56,\n StandingAgreement = 57,\n SEPACreditTransfer = 58,\n SEPADirectDebit = 59,\n PromissoryNote = 60,\n PromissoryNoteSignedByTheDebtor = 61,\n PromissoryNoteSignedByTheDebtorAndEndorsedByABank = 62,\n PromissoryNoteSignedByTheDebtorAndEndorsedByAThirdParty = 63,\n PromissoryNoteSignedByABank = 64,\n PromissoryNoteSignedByABankAndEndorsedByAnotherBank = 65,\n PromissoryNoteSignedByAThirdParty = 66,\n PromissoryNoteSignedByAThirdPartyAndEndorsedByABank = 67,\n OnlinePaymentService = 68,\n BillDrawnByTheCreditorOnTheDebtor = 70,\n BillDrawnByTheCreditorOnABank = 74,\n BillDrawnByTheCreditorEndorsedByAnotherBank = 75,\n BillDrawnByTheCreditorOnABankAndEndorsedByAThirdParty = 76,\n BillDrawnByTheCreditorOnAThirdParty = 77,\n BillDrawnByCreditorOnThirdPartyAcceptedAndEndorsedByBank = 78,\n NotTransferableBankerSDraft = 91,\n NotTransferableLocalCheque = 92,\n ReferenceGiro = 93,\n UrgentGiro = 94,\n FreeFormatGiro = 95,\n RequestedMethodForPaymentWasNotUsed = 96,\n ClearingBetweenPartners = 97,\n JPElectronicallyRecordedMonetaryClaims = 98\n}\n\n/** Represents a payment means for an invoice */\nexport interface PaymentMeans {\n /** This is typically the IBAN or account number\nBT-84 in XRechnung. */\n accountIdentifier?: string | undefined;\n /** The name for the account, typically the name of the owner for\na bank account.\nBT-85 in XRechnung. */\n accountName?: string | undefined;\n /** This can be the BIC\nBT-86 in XRechnung. */\n serviceProviderIdentifier?: string | undefined;\n /** If used, this is the mandate id for direct debit under which\nthe direct debit will be performed\nBT-89 in XRechnung. */\n directDebitMandateId?: string | undefined;\n /** If used, this is the IBAN for direct debit\nBT-91 in XRechnung. */\n directDebitIban?: string | undefined;\n /** The payment id, e.g. a reference number for the payment. In German,\nthis would be called \"Verwendungszweck\".\nBT-83 in XRechnung. */\n paymentId?: string | undefined;\n}\n\n/** Represents a document / attachment that is included with the invoice */\nexport interface SupportingDocument {\n /** This is typically an id or a name */\n documentReference?: string | undefined;\n /** A description of the document */\n description?: string | undefined;\n /** A link to the document in case this is an external reference */\n externalDocumentUrl?: string | undefined;\n /** The document in base64 encoded form as binary data. This is ignored if you set PlaceholderId. */\n documentBase64?: string | undefined;\n /** This should be present if DocumentBase64 is set. */\n fileName?: string | undefined;\n /** The type of the document */\n documentMimeType?: AttachmentMimeType | undefined;\n /** This is placeholder id to use instead of DocumentBase64 property for lazy-loading of documents. The use case of this is to avoid having the documents be processed in memory when they might be handled\nby the calling code. For example, in the AVACloud webservice, this placeholder can be used to avoid having to send the Base64 encoded document to the server and then downloading it again in the result. If this\nis given, the generated XML file will not be valid, since it will include the literal Guid value as a placeholder. You can use the 'xmlExportCallback' parameter in the XRechnungWriter to replace\nthe placeholder with the actual Base64 contents of the file in this library, or just use a string replace method if you're working with the XML in a different context. */\n placeholderId?: string | undefined;\n}\n\n/** Describes a mime type of a document */\nexport enum AttachmentMimeType {\n Unknown = 0,\n Pdf = 1,\n Png = 2,\n Jpeg = 3,\n Csv = 4,\n Excel = 5,\n OpenOfficeSpreadsheet = 6\n}\n\n/** Describes the VAT breakdown for an invoice in a single VAT category */\nexport interface VatBreakdown {\n /** The total net amount of this VAT category */\n netTaxableAmount?: number | undefined;\n /** The total VAT */\n vatAmount?: number | undefined;\n /** The category of the VAT */\n vatCategory?: VatCategory | undefined;\n /** The actual tax rate as a decimal value,\ne.g. 19% would be 0.19 */\n taxRate?: number | undefined;\n /** If the VAT is exempt, there should be a description here.\nFor example, in reverse charge scenarios, this text\nshould contain a reference to \"Reverse charge according to ...\". */\n vatExemptionReasonText?: string | undefined;\n /** A code from the VAT exemption reason code list(VATEX)“ */\n vatExemptionReasonCode?: string | undefined;\n}\n\n/** The category used in a VatBreakdown\"/> */\nexport enum VatCategory {\n Unknown = 0,\n StandardRate = 1,\n ZeroRatedGoods = 2,\n ExemptFromTax = 3,\n VatReverseCharge = 4,\n VatExemptReverseCharge = 5,\n FreeExportItem = 6,\n ServicesOutsideScopeOfTaxation = 7,\n CanaryIslandsGeneralIndirectTax = 8,\n TaxInCeutaAndMelilla = 9\n}\n\n/** This describes an allowance in an invoice, which is a deduction from the total amount */\nexport interface InvoiceAllowance {\n /** The net amount of the allowance */\n netAmount?: number | undefined;\n /** If this is a relative / percentage allowance, this should be set\nand give the base amount that is being used for the calculation */\n relativeAllowanceBaseAmount?: number | undefined;\n /** If this is a relative / percentage allowance, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n relativeAllowancePercentage?: number | undefined;\n /** The VAT category for the allowance */\n vatCategory?: VatCategory | undefined;\n /** The actual tax rate as a decimal value,\nmeaning 19% would be 0.19 */\n vatRate?: number | undefined;\n /** A description of the allowance. This should not be set it ReasonCode\nis provided, otherwise this one takes precedence. */\n reason?: string | undefined;\n /** A reason code for the allowance according to UNTDID 5189.\nSee this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred5189.htm */\n reasonCode?: string | undefined;\n /** A reason type for the allowance according to UNTDID 5189. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n reasonType?: AllowanceReasonType | undefined;\n}\n\n/** Type specifying the identification of an allowance from UNTDID 5189. See this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred5189.htm */\nexport enum AllowanceReasonType {\n HandlingCommission = 1,\n AmendmentCommission = 2,\n AcceptanceCommission = 3,\n CommissionForObtainingAcceptance = 4,\n CommissionOnDelivery = 5,\n AdvisingCommission = 6,\n ConfirmationCommission = 7,\n DeferredPaymentCommission = 8,\n CommissionForTakingUpDocuments = 9,\n OpeningCommission = 10,\n FeeForPaymentUnderReserve = 11,\n DiscrepancyFee = 12,\n DomicilationCommission = 13,\n CommissionForReleaseOfGoods = 14,\n CollectionCommission = 15,\n NegotiationCommission = 16,\n ReturnCommission = 17,\n BLSplittingCharges = 18,\n TrustCommission = 19,\n TransferCommission = 20,\n CommissionForOpeningIrrevocableDocumentaryCredits = 21,\n PreAdviceCommission = 22,\n SupervisoryCommission = 23,\n ModelCharges = 24,\n RiskCommission = 25,\n GuaranteeCommission = 26,\n ReimbursementCommission = 27,\n StampDuty = 28,\n Brokerage = 29,\n BankCharges = 30,\n BankChargesInformation = 31,\n CourierFee = 32,\n PhoneFee = 33,\n PostageFee = 34,\n SWIFTFee = 35,\n TelexFee = 36,\n PenaltyForLateDeliveryOfDocuments = 37,\n PenaltyForLateDeliveryOfValuationOfWorks = 38,\n PenaltyForExecutionOfWorksBehindSchedule = 39,\n OtherPenalties = 40,\n BonusForWorksAheadOfSchedule = 41,\n OtherBonus = 42,\n ProjectManagementCost = 44,\n ProRataRetention = 45,\n ContractualRetention = 46,\n OtherRetentions = 47,\n InterestOnArrears = 48,\n Interest = 49,\n ChargePerCreditCover = 50,\n ChargePerUnusedCreditCover = 51,\n MinimumCommission = 52,\n FactoringCommission = 53,\n ChamberOfCommerceCharge = 54,\n TransferCharges = 55,\n RepatriationCharges = 56,\n MiscellaneousCharges = 57,\n ForeignExchangeCharges = 58,\n AgreedDebitInterestCharge = 59,\n ManufacturersConsumerDiscount = 60,\n FaxAdviceCharge = 61,\n DueToMilitaryStatus = 62,\n DueToWorkAccident = 63,\n SpecialAgreement = 64,\n ProductionErrorDiscount = 65,\n NewOutletDiscount = 66,\n SampleDiscount = 67,\n EndOfRangeDiscount = 68,\n ChargeForACustomerSpecificFinish = 69,\n IncotermDiscount = 70,\n PointOfSalesThresholdAllowance = 71,\n TechnicalModificationCosts = 72,\n JobOrderProductionCosts = 73,\n OffPremisesCosts = 74,\n AdditionalProcessingCosts = 75,\n AttestingCharge = 76,\n RushDeliverySurcharge = 77,\n SpecialConstructionCosts = 78,\n FreightCharges = 79,\n PackingCharge = 80,\n RepairCharge = 81,\n LoadingCharge = 82,\n SetupCharge = 83,\n TestingCharge = 84,\n WarehousingCharge = 85,\n GoldSurcharge = 86,\n CopperSurcharge = 87,\n MaterialSurchargeDeduction = 88,\n LeadSurcharge = 89,\n PriceIndexSurcharge = 90,\n PlatinumSurcharge = 91,\n SilverSurcharge = 92,\n WolframSurcharge = 93,\n AluminumSurcharge = 94,\n Discount = 95,\n Insurance = 96,\n MinimumOrderMinimumBillingCharge = 97,\n MaterialSurchargeSpecialMaterials = 98,\n Surcharge = 99,\n SpecialRebate = 100,\n CarbonFootprintCharge = 101,\n FixedLongTerm = 102,\n Temporary = 103,\n Standard = 104,\n YearlyTurnover = 105\n}\n\n/** This describes an charge in an invoice, which is a surcharge to the total amount */\nexport interface InvoiceCharge {\n /** The net amount of the charge */\n netAmount?: number | undefined;\n /** If this is a relative / percentage charge, this should be set\nand give the base amount that is being used for the calculation */\n relativeChargeBaseAmount?: number | undefined;\n /** If this is a relative / percentage charge, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n relativeChargePercentage?: number | undefined;\n /** The VAT category for the charge */\n vatCategory?: VatCategory | undefined;\n /** The actual tax rate as a decimal value,\nmeaning 19% would be 0.19 */\n vatRate?: number | undefined;\n /** A description of the charge. This should not be set it ReasonCode\nis provided, otherwise this one takes precedence. */\n reason?: string | undefined;\n /** A reason code for the charge according to UNTDID 7161.\nSee this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred7161.htm */\n reasonCode?: string | undefined;\n /** A reason type for the charge according to UNTDID 7161. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n reasonType?: ChargeReasonType | undefined;\n}\n\n/** Type specifying a special service from UNTDID 7161. See this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred7161.htm */\nexport enum ChargeReasonType {\n Advertising = 0,\n Telecommunication = 1,\n TechnicalModification = 2,\n JobOrderProduction = 3,\n Outlays = 4,\n OffPremises = 5,\n AdditionalProcessing = 6,\n Attesting = 7,\n Acceptance = 8,\n RushDelivery = 9,\n SpecialConstruction = 10,\n AirportFacilities = 11,\n Concession = 12,\n CompulsoryStorage = 13,\n FuelRemoval = 14,\n IntoPlane = 15,\n Overtime = 16,\n Tooling = 17,\n Miscellaneous = 18,\n AdditionalPackaging = 19,\n Dunnage = 20,\n Containerisation = 21,\n CartonPacking = 22,\n HessianWrapped = 23,\n PolyethyleneWrapPacking = 24,\n MiscellaneousTreatment = 25,\n EnamellingTreatment = 26,\n HeatTreatment = 27,\n PlatingTreatment = 28,\n Painting = 29,\n Polishing = 30,\n Priming = 31,\n PreservationTreatment = 32,\n Fitting = 33,\n Consolidation = 34,\n BillOfLading = 35,\n Airbag = 36,\n Transfer = 37,\n Slipsheet = 38,\n Binding = 39,\n RepairOrReplacementOfBrokenReturnablePackage = 40,\n EfficientLogistics = 41,\n Merchandising = 42,\n ProductMix = 43,\n OtherServices = 44,\n PickUp = 45,\n ChronicIllness = 46,\n NewProductIntroduction = 47,\n DirectDelivery = 48,\n Diversion = 49,\n Disconnect = 50,\n Distribution = 51,\n HandlingOfHazardousCargo = 52,\n RentsAndLeases = 53,\n LocationDifferential = 54,\n AircraftRefueling = 55,\n FuelShippedIntoStorage = 56,\n CashOnDelivery = 57,\n SmallOrderProcessingService = 58,\n ClericalOrAdministrativeServices = 59,\n Guarantee = 60,\n CollectionAndRecycling = 61,\n CopyrightFeeCollection = 62,\n VeterinaryInspectionService = 63,\n PensionerService = 64,\n MedicineFreePassHolder = 65,\n EnvironmentalProtectionService = 66,\n EnvironmentalCleanUpService = 67,\n NationalChequeProcessingServiceOutsideAccountArea = 68,\n NationalPaymentServiceOutsideAccountArea = 69,\n NationalPaymentServiceWithinAccountArea = 70,\n Adjustments = 71,\n Authentication = 72,\n Cataloguing = 73,\n Cartage = 74,\n Certification = 75,\n CertificateOfConformance = 76,\n CertificateOfOrigin = 77,\n Cutting = 78,\n ConsularService = 79,\n CustomerCollection = 80,\n PayrollPaymentService = 81,\n CashTransportation = 82,\n HomeBankingService = 83,\n BilateralAgreementService = 84,\n InsuranceBrokerageService = 85,\n ChequeGeneration = 86,\n PreferentialMerchandisingLocation = 87,\n Crane = 88,\n SpecialColourService = 89,\n Sorting = 90,\n BatteryCollectionAndRecycling = 91,\n ProductTakeBackFee = 92,\n CarLoading = 93,\n Cleaning = 94,\n CigaretteStamping = 95,\n CountAndRecount = 96,\n LayoutDesign = 97,\n DriverAssignedUnloading = 98,\n Delivery = 99,\n Engraving = 100,\n Expediting = 101,\n ExchangeRateGuarantee = 102,\n Fabrication = 103,\n FreightEqualization = 104,\n FreightExtraordinaryHandling = 105,\n FreightService = 106,\n FillingHandling = 107,\n Financing = 108,\n Grinding = 109,\n Hose = 110,\n Handling = 111,\n HoistingAndHauling = 112,\n Installation = 113,\n InstallationAndWarranty = 114,\n InsideDelivery = 115,\n Inspection = 116,\n InstallationAndTraining = 117,\n Invoicing = 118,\n Koshering = 119,\n CarrierCount = 120,\n Labelling = 121,\n Labour = 122,\n RepairAndReturn = 123,\n Legalisation = 124,\n Mounting = 125,\n MailInvoice = 126,\n MailInvoiceToEachLocation = 127,\n NonReturnableContainers = 128,\n OutsideCableConnectors = 129,\n InvoiceWithShipment = 130,\n PhosphatizingSteelTreatment = 131,\n Packing = 132,\n Palletizing = 133,\n Repacking = 134,\n Repair = 135,\n ReturnableContainer = 136,\n Restocking = 137,\n ReDelivery = 138,\n Refurbishing = 139,\n RailWagonHire = 140,\n Loading = 141,\n Salvaging = 142,\n ShippingAndHandling = 143,\n SpecialPackaging = 144,\n Stamping = 145,\n ConsigneeUnload = 146,\n ShrinkWrap = 147,\n SpecialHandling = 148,\n SpecialFinish = 149,\n SetUp = 150,\n TankRenting = 151,\n Testing = 152,\n TransportationThirdPartyBilling = 153,\n TransportationByVendor = 154,\n DropYard = 155,\n DropDock = 156,\n Warehousing = 157,\n CombineAllSameDayShipment = 158,\n SplitPickUp = 159,\n MutuallyDefined = 160\n}\n\n/** Represents a single invoice line item */\nexport interface InvoiceLineItem {\n /** An unique identifier for the line item */\n identifier?: string | undefined;\n /** An unstructured note to classify line items */\n note?: string | undefined;\n /** A seller-defined object identifier for this line item,\nmeaning an identifier for the actual line. This could be\na numbering sequence or a reference to a product. */\n objectIdentifier?: string | undefined;\n /** The actual invoiced quantity of the line item */\n quantity?: number | undefined;\n /** A code for the unit of the quantity. This should be a code as defined\nin UN/ECE Recommendation No. 20 „Codes for Units of Measure Used in \nInternational Trade“ und UN/ECE Recommendation No 21 „Codes for Passengers,\nTypes of Cargo, Packages and Packaging Materials(with Complementary Codes for Package Names).\nSee here: https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Registry+of+supporting+artefacts+to+implement+EN16931 */\n unitCode?: string | undefined;\n /** The net amount for this line item. This is the total price for positions */\n netAmount?: number | undefined;\n /** A reference to an item in the buyers purachase order */\n purchaseOrderReference?: string | undefined;\n /** Information about the invoice period for this line item. */\n lineItemPeriod?: InvoicePeriod | undefined;\n /** Allowances specific to this line item */\n allowances?: LineItemAllowance[] | undefined;\n /** charges specific to this line item */\n charges?: LineItemCharge[] | undefined;\n /** Price details for this line item. */\n priceDetails?: LineItemPriceDetail | undefined;\n /** VAT information for this line item */\n vatInformation?: LineItemVatInformation[] | undefined;\n /** Information about this line item */\n itemInformation?: LineItemInformation | undefined;\n /** Line items can be nested, in which case this property holds the sub items */\n subItems?: InvoiceLineItem[] | undefined;\n}\n\n/** Allowance for a single line item */\nexport interface LineItemAllowance {\n /** The net amount of the allowance */\n netAmount?: number | undefined;\n /** If this is a relative / percentage allowance, this should be set\nand give the base amount that is being used for the calculation */\n relativeAllowanceBaseAmount?: number | undefined;\n /** If this is a relative / percentage allowance, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n relativeAllowancePercentage?: number | undefined;\n /** A description of the allowance. */\n reason?: string | undefined;\n /** A reason code for the allowance according to UNTDID 5189. Should be a code\nfrom this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred5189.htm */\n reasonCode?: string | undefined;\n /** A reason type for the allowance according to UNTDID 5189. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n reasonType?: AllowanceReasonType | undefined;\n}\n\n/** Charge for a single line item */\nexport interface LineItemCharge {\n /** The net amount of the charge */\n netAmount?: number | undefined;\n /** If this is a relative / percentage charge, this should be set\nand give the base amount that is being used for the calculation */\n relativeChargeBaseAmount?: number | undefined;\n /** If this is a relative / percentage charge, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n relativeChargePercentage?: number | undefined;\n /** A description of the charge. */\n reason?: string | undefined;\n /** A reason code for the charge according to UNTDID 7161.\nSee this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred7161.htm */\n reasonCode?: string | undefined;\n /** A reason type for the charge according to UNTDID 7161. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n reasonType?: ChargeReasonType | undefined;\n}\n\n/** Price details about a line item */\nexport interface LineItemPriceDetail {\n /** The net price of this line item. This is the unit price */\n netPrice?: number | undefined;\n /** A discount for this line item, given as an absolute value. It is essentially the difference between NetPrice (or the list price)\nand the actual invoiced price GrossPrice. */\n absoluteDiscountPerItem?: number | undefined;\n /** The gross price of this line item, meaning the price without taxes\nthat will be invoiced */\n grossPrice?: number | undefined;\n /** The quantity for which this price is valid. In combination with the NetPrice,\nyou basically specify the denominator of the unit price for a line item. */\n baseQuantity?: number | undefined;\n /** A code representing the unit for the base quantity */\n baseQuantityUnitCode?: string | undefined;\n}\n\n/** VAT information for a single line item */\nexport interface LineItemVatInformation {\n /** The VAT category for the charge */\n vatCategory?: VatCategory | undefined;\n /** The actual tax rate as a decimal value,\nmeaning 19% would be 0.19 */\n vatRate?: number | undefined;\n}\n\n/** Information about a single line item */\nexport interface LineItemInformation {\n /** A name for the line item */\n name?: string | undefined;\n /** A description for the line item */\n description?: string | undefined;\n /** An identifier assigned by the seller, e.g. an internal article number */\n sellerIdentifier?: string | undefined;\n /** An identifier assigned by the buyer, e.g. an internal article number */\n buyerIdentifier?: string | undefined;\n /** A standard identifier for the line item, e.g. an EAN or a GTIN */\n standardIdentifier?: string | undefined;\n /** If used together with StandardIdentifier, this is the scheme identifier\nfor which standard is used. */\n standardSchemeId?: string | undefined;\n /** A list of classification identifiers for the line item. You can further use ClassificationTypes to specify the scheme identifier for each classification identifier. */\n classificationIdentifiers?: string[] | undefined;\n /** This is used in connection with ClassificationIdentifiers. It is the scheme identifier\nfor each identifier. If this list is used, it should have the same length as ClassificationIdentifiers, with null or empty values used\nfor non-existing scheme identifiers. */\n classificationTypes?: string[] | undefined;\n /** The origin country code according to ISO 3166-1 in 2 letter format */\n countryOfOrigin?: string | undefined;\n /** Optional additional attributes for this line item */\n attributes?: LineItemAttribute[] | undefined;\n}\n\n/** A key-value pair for additional information */\nexport interface LineItemAttribute {\n /** The key / name of the attribute */\n name?: string | undefined;\n /** The value of the attribute */\n value?: string | undefined;\n}\n\n/** This enum represents the source of an invoice, e.g. from which format it was imported */\nexport enum SourceType {\n Self = 0,\n Ubl = 1,\n Cii = 2,\n FacturX = 3\n}\n\n/** This is a wrapper class that maps Dangl.AVA projects along with additional required information to create invoices */\nexport interface AvaProjectWrapper {\n /** The Dangl.AVA.Project from which to convert */\n project?: ProjectDto | undefined;\n /** The number of the invoice */\n invoiceNumber?: string | undefined;\n /** Attached documents to the invoice */\n documents?: SupportingDocument[] | undefined;\n /** The period during which the services or goods were delivered */\n invoicePeriod?: InvoicePeriod | undefined;\n /** Instructions how to perform the payment */\n paymentInstructions?: PaymentInstructions | undefined;\n /** The type of the invoice */\n invoiceType?: InvoiceType | undefined;\n /** If this is set to true, the invoice will be marked as a reverse charge invoice\nin all VAT rates. You still need to ensure that the actual tax rates are set\nto zero in all elements */\n isEuReverseChargeInvoice?: boolean | undefined;\n /** Until when the payment is due */\n paymentDueDate?: Date | undefined;\n /** A text description of payment terms, e.g. cash discounts or payment conditions */\n paymentTerms?: string | undefined;\n /** In case of partial of final invoices, it's possible to reference the previous invoice numbers */\n previousInvoices?: PreviousInvoice[] | undefined;\n /** If parts of this invoice (or of previous invoices) have already been paid,\nthen this property can be used to specify that some parts of the invoice\nare already paid and this will be deducted from the to be paid amount. */\n alreadyPaidTotalGross?: number | undefined;\n /** An object holding reference used in this invoice */\n references?: References | undefined;\n /** Optional document level allowances. For example, those can be used to supply\nglobal discounts e.g. for security deposits. When using this property, please\npay attention that a deduction factor on the exported ServiceSpecification\nwill also be exported as an allowance, in this case the total price of the\ninvoice might be different from the total price of the ServiceSpecification. */\n allowances?: InvoiceAllowance[] | undefined;\n /** Optional document level charges, e.g. for shipping or handling. When using this property,\nplease pay attention that the charges given here will be applied to the already calculated\ntotal price of the ServiceSpecification, in this case the total price of the invoice\nmight be different from the total price of the ServiceSpecification. */\n charges?: InvoiceCharge[] | undefined;\n /** Information about the delivery\nBG-13 in XRechnung */\n deliveryInformation?: DeliveryInformation | undefined;\n /** Information about the sellers tax representative. BG-11 in XRechnung */\n sellerTaxRepresentative?: Organization | undefined;\n}\n","import { ITextWordInvoice, InvoiceType } from '../model';\n\nexport const DEFAULT_TEXT_WORD_INVOICE: ITextWordInvoice = {\n invoiceTitle: {\n [InvoiceType.PartialInvoice]: 'Invoice',\n [InvoiceType.CommercialInvoice]: 'Invoice',\n [InvoiceType.CreditNote]: 'Credit Note',\n [InvoiceType.CorrectedInvoice]: 'Corrected Invoice',\n [InvoiceType.SelfBilledInvoice]: 'Invoice',\n [InvoiceType.PartialConstructionInvoice]: 'Invoice',\n [InvoiceType.PartialFinalConstructionInvoice]: 'Invoice',\n [InvoiceType.FinalConstructionInvoice]: 'Invoice'\n },\n invoiceBuyerTitle: 'Receiver',\n invoiceSellerTitle: 'Sender',\n vatId: 'VAT ID',\n detailsInvoiceNumber: 'Invoice Number',\n detailsInvoiceDate: 'Invoice Date',\n detailsPaymentDueDate: 'Due Date',\n detailsCurrencyCode: 'Currency',\n detailsPaymentTerms: 'Payment Terms',\n referencesTopic: 'References',\n referencesBuyerReference: 'Buyer Reference',\n referencesProjectReference: 'Project Reference',\n referencesContractReference: 'Contract Reference',\n referencesPurchaseOrderReference: 'Purchase Order Reference',\n referencesSalesOrderReference: 'Sales Order Reference',\n referencesReceivingAdviceReference: 'Receiving Advice Reference',\n referencesDispatchAdviceReference: 'Dispatch Advice Reference',\n referencesTenderOrLotReference: 'Tender or Lot Reference',\n referencesInvoicedObjectIdentifier: 'Invoiced Object Identifier',\n tableHeadDescription: 'Description',\n tableHeadQuantity: 'Quantity',\n tableHeadUnit: 'Unit',\n tableHeadNetPrice: 'Net Price',\n tableHeadNetAmount: 'Net Amount',\n totalsTopic: 'Totals',\n totalsTotalNet: 'Total Net',\n totalsTotalAllowances: 'Total Allowances',\n totalsTotalCharges: 'Total Charges',\n totalsTotalAfterDeductions: 'Total After Deductions',\n totalsTotalVatAmount: 'Total VAT Amount',\n totalsTotalGross: 'Total Gross',\n totalsAlreadyPaidTotal: 'Already Paid Total',\n totalsTotalToBePaid: 'Total to be Paid',\n instructionsTopic: 'Payment Instructions',\n instructionsAccountIdentifier: 'Account Identifier',\n instructionsAccountName: 'Account Name',\n instructionsServiceProviderIdentifier: 'Service Provider Identifier',\n notesTopic: 'Notes',\n attachmentsHeading: 'Attachments',\n attachmentsName: 'Name',\n attachmentsDescription: 'Description',\n attachmentsUrl: 'Url',\n attachmentsDataSize: 'Size',\n attachmentsMimeType: 'Mime Type',\n attachmentsFileName: 'File Name',\n attachmentsDownloadButton: 'Download',\n contactPersonName: 'Contact Person Name',\n contactPersonEmail: 'Contact Person Email',\n contactPersonPhone: 'Contact Person Phone',\n vat: 'VAT',\n taxRate: 'Tax Rate',\n deliveryInformationTitle: 'Delivery Information',\n deliverToName: 'Name',\n deliverToLocationIdentifier: 'Location Identifier',\n deliveryDate: 'Date',\n deliveryAddress: 'Address',\n taxesHeading: 'Taxes',\n invoiceAllowancesHeader: 'Allowances',\n invoiceAllowancesTableHeaderSum: 'Sum',\n invoiceAllowancesTableHeaderVatRate: 'VAT',\n invoiceAllowancesTableHeaderAllowance: 'Allowance',\n invoiceAllowancesTableHeaderBase: 'Base',\n invoiceChargesHeader: 'Charges',\n invoiceChargesTableHeaderSum: 'Sum',\n invoiceChargesTableHeaderVatRate: 'VAT',\n invoiceChargesTableHeaderCharge: 'Charge',\n invoiceChargesTableHeaderBase: 'Base',\n lineItemDiscount: 'Discount',\n lineItemCharges: 'Charges',\n lineItemAllowances: 'Allowances',\n lineItemReason: 'Reason',\n invoiceSellerTaxRepresentativeTitle: 'Tax Representative',\n previousInvoicesTopic: 'Previous Invoices',\n previousInvoiceNumber: 'Previous Invoice Number',\n previousInvoiceDate: 'Previous Invoice Date'\n};\n\nexport const germanTextsInvoice: ITextWordInvoice = {\n invoiceTitle: {\n [InvoiceType.PartialInvoice]: 'Rechnung',\n [InvoiceType.CommercialInvoice]: 'Rechnung',\n [InvoiceType.CreditNote]: 'Gutschrift',\n [InvoiceType.CorrectedInvoice]: 'Rechnungskorrektur',\n [InvoiceType.SelfBilledInvoice]: 'Rechnung',\n [InvoiceType.PartialConstructionInvoice]: 'Rechnung',\n [InvoiceType.PartialFinalConstructionInvoice]: 'Rechnung',\n [InvoiceType.FinalConstructionInvoice]: 'Rechnung'\n },\n invoiceBuyerTitle: 'Empfänger',\n invoiceSellerTitle: 'Rechnungssteller',\n vatId: 'USt.-ID',\n detailsInvoiceNumber: 'Rechnungsnummer',\n detailsInvoiceDate: 'Rechnungsdatum',\n detailsPaymentDueDate: 'Fälligkeitsdatum',\n detailsCurrencyCode: 'Währung',\n detailsPaymentTerms: 'Zahlungsbedingungen',\n referencesTopic: 'Referenzen',\n referencesBuyerReference: 'Käuferreferenz',\n referencesProjectReference: 'Projektreferenz',\n referencesContractReference: 'Vertragsreferenz',\n referencesPurchaseOrderReference: 'Bestellreferenz',\n referencesSalesOrderReference: 'Auftragsreferenz',\n referencesReceivingAdviceReference: 'Empfangsbestätigungsreferenz',\n referencesDispatchAdviceReference: 'Lieferreferenz',\n referencesTenderOrLotReference: 'Ausschreibungs- oder Losreferenz',\n referencesInvoicedObjectIdentifier: 'Objektreferenz',\n tableHeadDescription: 'Beschreibung',\n tableHeadQuantity: 'Menge',\n tableHeadUnit: 'Einheit',\n tableHeadNetPrice: 'Nettopreis',\n tableHeadNetAmount: 'Nettomenge',\n totalsTopic: 'Gesamt',\n totalsTotalNet: 'Gesamt Netto',\n totalsTotalAllowances: 'Gesamt Rabatt',\n totalsTotalCharges: 'Gesamt Zuschlag',\n totalsTotalAfterDeductions: 'Summe nach Rabatten',\n totalsTotalVatAmount: 'Summe Umsatzsteuer',\n totalsTotalGross: 'Gesamt Brutto',\n totalsAlreadyPaidTotal: 'Bereits bezahlt',\n totalsTotalToBePaid: 'Gesamt zu zahlen',\n instructionsTopic: 'Zahlungsanweisungen',\n instructionsAccountIdentifier: 'Kontonummer',\n instructionsAccountName: 'Kontoname',\n instructionsServiceProviderIdentifier: 'Bank',\n notesTopic: 'Hinweise',\n attachmentsHeading: 'Anhänge',\n attachmentsName: 'Name',\n attachmentsDescription: 'Beschreibung',\n attachmentsUrl: 'Url',\n attachmentsDataSize: 'Größe',\n attachmentsMimeType: 'Typ',\n attachmentsFileName: 'Dateiname',\n attachmentsDownloadButton: 'Download',\n contactPersonName: 'Name der Kontaktperson',\n contactPersonEmail: 'E-Mail der Kontaktperson',\n contactPersonPhone: 'Kontaktperson Telefon',\n vat: 'MwSt.',\n taxRate: 'Steuersatz',\n deliveryInformationTitle: 'Lieferinformationen',\n deliverToName: 'Liefername',\n deliverToLocationIdentifier: 'Lieferort',\n deliveryDate: 'Lieferdatum',\n deliveryAddress: 'Lieferadresse',\n taxesHeading: 'Steuer',\n invoiceAllowancesHeader: 'Nachlässe',\n invoiceAllowancesTableHeaderSum: 'Summe',\n invoiceAllowancesTableHeaderVatRate: 'Steuersatz',\n invoiceAllowancesTableHeaderAllowance: 'Nachlass',\n invoiceAllowancesTableHeaderBase: 'Basis',\n invoiceChargesHeader: 'Zuschläge',\n invoiceChargesTableHeaderSum: 'Summe',\n invoiceChargesTableHeaderVatRate: 'Steuersatz',\n invoiceChargesTableHeaderCharge: 'Zuschlag',\n invoiceChargesTableHeaderBase: 'Basis',\n lineItemDiscount: 'Rabatt',\n lineItemCharges: 'Zuschlag',\n lineItemAllowances: 'Nachlass',\n lineItemReason: 'Grund',\n invoiceSellerTaxRepresentativeTitle: 'Steuervertreter',\n previousInvoicesTopic: 'Vorherige Rechnungen',\n previousInvoiceNumber: 'Vorherige Rechnungsnummer',\n previousInvoiceDate: 'Vorheriges Rechnungsdatum'\n};\n","import { LanguageType } from '../model';\n\nexport const DEFAULT_DIGITS_INFO: string = '1.3-3';\nexport const DEFAULT_CURRENCY_CODE: string = 'USD';\nexport const DEFAULT_LANGUAGE: LanguageType = 'en';\nexport const localeTypes = {\n en: 'en-US',\n de: 'de-DE'\n};\n","import { ExecutionDescriptionDto, IElementDto, NoteTextDto, PositionDto, ServiceSpecificationGroupDto } from '../model';\nimport { FilterFunction } from '../model/config-tree.model';\n\nexport const DEFAULT_FILTERS: FilterFunction[] = [\n (element: IElementDto, filter: string) => {\n if (\n element.elementType === 'PositionDto' ||\n element.elementType === 'ServiceSpecificationGroupDto' ||\n element.elementType === 'NoteTextDto'\n ) {\n return (element as PositionDto | ServiceSpecificationGroupDto | NoteTextDto).shortText?.trim().toLocaleLowerCase().includes(filter);\n }\n\n return false;\n },\n (element: IElementDto, filter: string) => {\n if (element.elementType === 'ExecutionDescriptionDto') {\n return (element as ExecutionDescriptionDto).label?.trim().toLocaleLowerCase().includes(filter);\n }\n\n return false;\n },\n (element: IElementDto, filter: string) => {\n if (element.elementType === 'PositionDto' || element.elementType === 'ServiceSpecificationGroupDto') {\n return (element as PositionDto | ServiceSpecificationGroupDto).itemNumber?.stringRepresentation?.includes(filter);\n }\n\n return false;\n }\n];\n","import { LanguageType } from '../../invoice/model';\n\nexport interface ITextWords {\n language: LanguageType;\n textSearch: string;\n textNothing: string;\n textNothingFiltered: string;\n textAll: string;\n tooltipAllOpen: string;\n tooltipAllClose: string;\n tooltipAllAdd: string;\n tooltipAllRemove: string;\n defaultNameNoteText: string;\n defaultNameDescription: string;\n defaultNameGroup: string;\n defaultNamePosition: string;\n}\n\nexport const DEFAULT_TEXT_WORDS: ITextWords = {\n language: 'en',\n textSearch: 'Search',\n textNothing: 'Nothing',\n textNothingFiltered: 'No Filter',\n textAll: 'All',\n tooltipAllOpen: 'Expand all',\n tooltipAllClose: 'Collapse all',\n tooltipAllAdd: 'Add all',\n tooltipAllRemove: 'Remove all',\n defaultNameNoteText: 'Note Text',\n defaultNameDescription: 'Description',\n defaultNameGroup: 'Group',\n defaultNamePosition: 'Position'\n};\n\nexport const germanTextsAva: ITextWords = {\n language: 'de',\n textSearch: 'Suche',\n textNothing: 'Nichts',\n textNothingFiltered: 'Kein Filter',\n textAll: 'Alle',\n tooltipAllOpen: 'Alle aufklappen',\n tooltipAllClose: 'Alle zuklappen',\n tooltipAllAdd: 'Alle hinzufügen',\n tooltipAllRemove: 'Alle entfernen',\n defaultNameNoteText: 'Hinweis',\n defaultNameDescription: 'Beschreibung',\n defaultNameGroup: 'Gruppe',\n defaultNamePosition: 'Position'\n};\n","export const defaults = {\n doubleClickTimeoutInMilliseconds: 300\n};\n","import { BehaviorSubject, Observable, distinctUntilChanged, map } from 'rxjs';\n\nimport { DEFAULT_LANGUAGE, localeTypes } from '../../invoice/constants';\nimport { LanguageType } from '../../invoice/model';\n\nimport { DEFAULT_FILTERS } from '../constants';\nimport { ITextWords, germanTextsAva, DEFAULT_TEXT_WORDS } from '../constants/defaultTextWords';\nimport { FilterFunction, IConfigurationTree } from '../model/config-tree.model';\nimport { IFunctionViewLine } from '../model/function-view-line.model';\nimport { SelectedElement } from '../model/selecting.model';\nimport { TableColumnType } from '../model/tableColumnType';\nimport { IKeyboardOperationConfig } from '../services/keyboard-operation.service';\n\nexport class ConfigurationTreeService {\n private _language: LanguageType = DEFAULT_LANGUAGE;\n private _textWords: ITextWords = this.selectTextWords(this._language);\n private _indent = '20px';\n private _functionView: IFunctionViewLine[] = [];\n private _selectedColor: string = '';\n private _allowDblClick = true;\n private _mouseAwareKeyboardControl = true;\n private _addTableColumns: TableColumnType[] = [];\n private _isSelectionMode = false;\n private _initiallySelectedElements: SelectedElement[] = [];\n private _customKeyboardOperationConfig: IKeyboardOperationConfig | null = null;\n private _listFilterFunc: FilterFunction[] = DEFAULT_FILTERS;\n\n private treeConfigSource = new BehaviorSubject<IConfigurationTree>(this.getDefaultConfiguration());\n public treeConfig$: Observable<IConfigurationTree> = this.treeConfigSource.asObservable();\n constructor() {}\n\n public setTreeConfig(value: IConfigurationTree): void {\n this.treeConfigSource.next(value);\n }\n\n public getCurrentTreeConfig(): IConfigurationTree | null {\n return this.treeConfigSource.getValue();\n }\n\n public getTextWordsFromConfig(): Observable<ITextWords | null> {\n return this.treeConfig$.pipe(\n map((config) => {\n let configTextWords: ITextWords;\n if (typeof config?.textWords === 'string') {\n configTextWords = this.selectTextWords(config.textWords);\n } else {\n configTextWords = !config.textWords ? this._textWords : config.textWords;\n }\n this._language = configTextWords.language;\n return { ...configTextWords };\n }),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n private selectTextWords(languageWord: LanguageType): ITextWords {\n return languageWord === 'de' ? germanTextsAva : DEFAULT_TEXT_WORDS;\n }\n\n public getIndentFromConfig(): Observable<string> {\n return this.treeConfig$.pipe(\n map((config) => config?.indent || ''),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getFunctionViewFromConfig(): Observable<IFunctionViewLine[]> {\n return this.treeConfig$.pipe(\n map((config) => config?.functionView || []),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getSelectedColorFromConfig(): Observable<string> {\n return this.treeConfig$.pipe(\n map((config) => config?.selectedColor || ''),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getAllowDblClickFromConfig(): Observable<boolean> {\n return this.treeConfig$.pipe(\n map((config) => config?.allowDblClick || false),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getAddTableColumnsFromConfig(): Observable<TableColumnType[]> {\n return this.treeConfig$.pipe(\n map((config) => config?.addTableColumns || []),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getIsSelectionModeFromConfig(): Observable<boolean> {\n return this.treeConfig$.pipe(\n map((config) => config?.isSelectionMode || false),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getInitiallySelectedElementsViewFromConfig(): Observable<SelectedElement[]> {\n return this.treeConfig$.pipe(\n map((config) => config?.initiallySelectedElements || []),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getMouseAwareKeyboardControlFromConfig(): Observable<boolean> {\n return this.treeConfig$.pipe(\n map((config) => config?.mouseAwareKeyboardControl || false),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getCustomKeyboardOperationConfigFromConfig(): Observable<IKeyboardOperationConfig | null> {\n return this.treeConfig$.pipe(\n map((config) => config?.customKeyboardOperationConfig || null),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getListFilterFuncFromConfig(): Observable<FilterFunction[]> {\n return this.treeConfig$.pipe(\n map((config) => config?.listFilterFunc || this._listFilterFunc),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getHideParentItemNumbersFromConfig(): Observable<boolean> {\n return this.treeConfig$.pipe(\n map((config) => config?.hideParentItemNumbers || false),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n private getDefaultConfiguration(): IConfigurationTree {\n return {\n textWords: this._textWords,\n indent: this._indent,\n functionView: this._functionView,\n selectedColor: this._selectedColor,\n allowDblClick: this._allowDblClick,\n addTableColumns: this._addTableColumns,\n isSelectionMode: this._isSelectionMode,\n initiallySelectedElements: this._initiallySelectedElements,\n mouseAwareKeyboardControl: this._mouseAwareKeyboardControl,\n customKeyboardOperationConfig: this._customKeyboardOperationConfig,\n listFilterFunc: this._listFilterFunc\n };\n }\n\n get locale(): string {\n return localeTypes[this._language];\n }\n}\n","import { signal, WritableSignal } from '@angular/core';\n\nimport { IElementDto, ServiceSpecificationGroupDto } from '@dangl/ava-model';\n\nexport interface IExpansionState {\n [id: string]: boolean;\n}\nexport class ExpandParentGroupService {\n private expansionState = signal<IExpansionState>({});\n constructor() {}\n\n expandParentGroups(element: IElementDto, flatElements: IElementDto[] | null, expansionState: { [id: string]: boolean }): void {\n if (!flatElements?.length) {\n return;\n }\n\n const serviceSpecificationGroups = flatElements.filter(\n (item): item is ServiceSpecificationGroupDto => !!(item as ServiceSpecificationGroupDto).elements?.length\n );\n\n if (!serviceSpecificationGroups.length) {\n return;\n }\n\n const findAndExpandParent = (currentElement: IElementDto): ServiceSpecificationGroupDto | null => {\n for (const servSpec of serviceSpecificationGroups) {\n if (expansionState[servSpec.id]) {\n continue;\n }\n\n if (servSpec.elements?.find((item) => currentElement.id === item.id)) {\n expansionState[servSpec.id] = true;\n return servSpec;\n }\n }\n return null;\n };\n\n const expandRecursive = (innerElement: IElementDto): void => {\n const parentGroup = findAndExpandParent(innerElement);\n if (parentGroup) {\n expandRecursive(parentGroup);\n }\n };\n\n expandRecursive(element);\n }\n\n setExpansionState(state: IExpansionState): void {\n this.expansionState.set(state);\n }\n\n getExpansionState(): WritableSignal<IExpansionState> {\n return this.expansionState;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { IElementDto, ServiceSpecificationDto, ServiceSpecificationGroupDto } from '@dangl/ava-model';\n\nimport { Observable, ReplaySubject, Subject, of } from 'rxjs';\n\nimport { DEFAULT_FILTERS } from '../constants';\nimport { IElementUpdate } from '../model/element-update.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FlatElementsService {\n private _flatElementsDto: IElementDto[] = [];\n private flatElementsDtoSource = new ReplaySubject<IElementDto[]>(1);\n flatElementsDto = this.flatElementsDtoSource.asObservable();\n\n private objectElementsDto!: { [id: string]: IElementDto };\n\n /**\n * Emits when an element is updated. Subscribers can use this to react to element changes.\n */\n private elementUpdatedSource = new Subject<IElementUpdate>();\n elementUpdated$ = this.elementUpdatedSource.asObservable();\n\n listFilterFunc = DEFAULT_FILTERS;\n\n constructor() {}\n\n setElementsDto(elementsDto: ServiceSpecificationDto): void {\n this._flatElementsDto = FlatElementsService.getFlatElements(elementsDto);\n this.objectElementsDto = FlatElementsService.getObjectElements(this._flatElementsDto);\n this.flatElementsDtoSource.next(this._flatElementsDto);\n }\n\n public static getFlatElements(container: { elements?: IElementDto[] | null }): IElementDto[] {\n const flatElements: IElementDto[] = [];\n\n if (container.elements) {\n container.elements.forEach((e) => {\n flatElements.push(e);\n if (e.elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n const group = e as ServiceSpecificationGroupDto;\n flatElements.push(...this.getFlatElements(group));\n }\n });\n }\n\n return flatElements;\n }\n\n public static getObjectElements(elements: IElementDto[]): { [id: string]: IElementDto } {\n const objectElements: { [id: string]: IElementDto } = {};\n if (elements?.length) {\n elements.forEach((e) => {\n if (e?.id) {\n objectElements[e.id] = e;\n }\n });\n }\n return objectElements;\n }\n\n getOneElementById(id: string | null): Observable<IElementDto | null> {\n return of(id ? this.objectElementsDto?.[id] || null : null);\n }\n\n checkFilterValue(element: IElementDto, filterValue: string): boolean {\n const cleanFilter = filterValue.trim().toLocaleLowerCase();\n for (const func of this.listFilterFunc) {\n if (func(element, cleanFilter)) {\n return true;\n }\n }\n return false;\n }\n\n jumpNextNode(delta: number, currentElement: IElementDto | null, conditionFunc?: (e: IElementDto) => boolean): IElementDto | null {\n if (!this._flatElementsDto.length || (conditionFunc && !this._flatElementsDto.find((item) => conditionFunc(item)))) {\n return null;\n }\n const startElement = currentElement || this._flatElementsDto[0];\n let nextIndex = this._flatElementsDto.findIndex((item) => startElement.id === item.id);\n if (currentElement) {\n nextIndex = this.getNextIndex(this._flatElementsDto.length, nextIndex, delta);\n }\n while (conditionFunc && !conditionFunc(this._flatElementsDto[nextIndex])) {\n nextIndex = this.getNextIndex(this._flatElementsDto.length, nextIndex, delta);\n }\n return this._flatElementsDto[nextIndex];\n }\n\n private getNextIndex(length: number, index: number, delta: number): number {\n let nextIndex = index + delta;\n nextIndex = nextIndex < 0 ? length - 1 : nextIndex;\n nextIndex = nextIndex > length - 1 ? 0 : nextIndex;\n return nextIndex;\n }\n\n public getObjectElementsDto(): { [id: string]: IElementDto } {\n return this.objectElementsDto;\n }\n\n /**\n * Updates an element by its ID with the provided partial updates.\n * This will update both the flat array and the object map, and emit a notification\n * that can be used by components to react to the change.\n * @param id The ID of the element to update\n * @param updates Partial properties to update on the element (e.g., { shortText: 'New text' })\n * @returns true if the element was found and updated, false otherwise\n */\n updateElementById(id: string, updates: Partial<IElementDto>): boolean {\n if (!id || !this.objectElementsDto?.[id]) {\n return false;\n }\n\n const element = this.objectElementsDto[id];\n Object.assign(element, updates);\n\n // Emit notification about the update\n this.elementUpdatedSource.next({ id, updates });\n\n return true;\n }\n}\n","import { ReplaySubject } from 'rxjs';\n\nimport { IElementDto } from '../model';\n\nexport class SelectElementService {\n private preselectedElementSource = new ReplaySubject<IElementDto | null>(1);\n private preselectedElementWasNull = false;\n preselectedElement = this.preselectedElementSource.asObservable();\n\n private selectClickElementSource = new ReplaySubject<IElementDto | null>(1);\n selectClickElement = this.selectClickElementSource.asObservable();\n\n private selectDblClickElementSource = new ReplaySubject<IElementDto>(1);\n selectDblClickElement = this.selectDblClickElementSource.asObservable();\n\n private selectContextMenuElementSource = new ReplaySubject<{ position: { x: string; y: string }; node: IElementDto }>(1);\n selectContextMenuElement = this.selectContextMenuElementSource.asObservable();\n\n setPreselectedElement(element: IElementDto | null): void {\n this.preselectedElementSource.next(element);\n this.preselectedElementWasNull = element == null;\n }\n\n setClickElement(element: IElementDto | null): void {\n this.selectClickElementSource.next(element);\n if (!this.preselectedElementWasNull) {\n this.preselectedElementSource.next(null);\n }\n }\n\n setDblClickElement(element: IElementDto): void {\n this.selectDblClickElementSource.next(element);\n }\n\n setContextMenuElement(data: { position: { x: string; y: string }; node: IElementDto }): void {\n this.selectContextMenuElementSource.next(data);\n }\n}\n","import { inject } from '@angular/core';\n\nimport { IElementDto } from '@dangl/ava-model';\n\nimport { FlatElementsService } from './flat-elements.service';\nimport { SelectElementService } from './select-element.service';\n\nexport interface IKeyboardOperationConfig {\n operations: IKeyboardOperations;\n}\n\nexport enum KeyboardOperationType {\n MoveSelectedPositionUp = 'moveSelectedPositionUp',\n MoveSelectedPositionDown = 'moveSelectedPositionDown',\n MoveChosenPositionDown = 'moveChosenPositionDown',\n MoveChosenPositionUp = 'moveChosenPositionUp',\n ClearChosenPosition = 'clearChosenPosition',\n SelectChosenPosition = 'selectChosenPosition'\n}\n\nexport type IKeyboardOperations = {\n [key in KeyboardOperationType]?: IKeyboardOperation;\n};\n\nexport interface IKeyboardOperation {\n disabled?: boolean;\n keyEvent?: string;\n}\n\nexport class KeyboardOperationService {\n private defaultKeyboardOperationConfig: IKeyboardOperationConfig = {\n operations: {\n moveSelectedPositionUp: { disabled: false, keyEvent: 'F11' },\n moveSelectedPositionDown: { disabled: false, keyEvent: 'F12' },\n moveChosenPositionDown: { disabled: false, keyEvent: 'ArrowDown' },\n moveChosenPositionUp: { disabled: false, keyEvent: 'ArrowUp' },\n clearChosenPosition: { disabled: false, keyEvent: 'Escape' },\n selectChosenPosition: { disabled: false, keyEvent: 'Enter' }\n }\n };\n\n private flatElementsService = inject(FlatElementsService);\n private selectElementService = inject(SelectElementService);\n\n private currentConfig = { ...this.defaultKeyboardOperationConfig };\n\n constructor() {}\n\n getConfig() {\n return this.currentConfig;\n }\n\n mergeConfigOperation(config: IKeyboardOperationConfig) {\n this.currentConfig = this.deepMerge(this.currentConfig, config);\n }\n\n private deepMerge<T>(obj1: T, obj2: T): T {\n const mergedConfig: T = { ...obj1 };\n\n for (const key in obj2) {\n if (Object.prototype.hasOwnProperty.call(obj2, key)) {\n if (\n Object.prototype.hasOwnProperty.call(mergedConfig, key) &&\n typeof mergedConfig[key] === 'object' &&\n mergedConfig[key] !== null &&\n typeof obj2[key] === 'object' &&\n obj2[key] !== null\n ) {\n mergedConfig[key] = this.deepMerge(mergedConfig[key], obj2[key]);\n } else {\n mergedConfig[key] = obj2[key];\n }\n }\n }\n\n return mergedConfig;\n }\n\n handleKeyboardEvent(\n keyEvent: KeyboardEvent,\n element: IElementDto | null\n ): {\n operation: KeyboardOperationType;\n nextElement: IElementDto | null;\n } | null {\n let nextElement;\n\n if (\n this.currentConfig.operations.moveSelectedPositionUp?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.moveSelectedPositionUp?.disabled\n ) {\n keyEvent.preventDefault();\n nextElement = this.flatElementsService.jumpNextNode(-1, element);\n this.selectElementService.setClickElement(nextElement);\n return {\n operation: KeyboardOperationType.MoveSelectedPositionUp,\n nextElement: nextElement\n };\n }\n\n if (\n this.currentConfig.operations.moveSelectedPositionDown?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.moveSelectedPositionDown?.disabled\n ) {\n keyEvent.preventDefault();\n nextElement = this.flatElementsService.jumpNextNode(1, element);\n this.selectElementService.setClickElement(nextElement);\n return {\n operation: KeyboardOperationType.MoveSelectedPositionDown,\n nextElement: nextElement\n };\n }\n\n if (\n this.currentConfig.operations.moveChosenPositionDown?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.moveChosenPositionDown?.disabled\n ) {\n keyEvent.preventDefault();\n nextElement = this.flatElementsService.jumpNextNode(1, element);\n this.selectElementService.setPreselectedElement(nextElement?.id === element?.id ? null : nextElement);\n return {\n operation: KeyboardOperationType.MoveChosenPositionDown,\n nextElement: nextElement\n };\n }\n\n if (\n this.currentConfig.operations.moveChosenPositionUp?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.moveChosenPositionUp?.disabled\n ) {\n keyEvent.preventDefault();\n nextElement = this.flatElementsService.jumpNextNode(-1, element);\n this.selectElementService.setPreselectedElement(nextElement?.id === element?.id ? null : nextElement);\n return {\n operation: KeyboardOperationType.MoveChosenPositionUp,\n nextElement: nextElement\n };\n }\n\n if (\n this.currentConfig.operations.selectChosenPosition?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.selectChosenPosition?.disabled\n ) {\n keyEvent.preventDefault();\n this.selectElementService.setClickElement(element);\n return {\n operation: KeyboardOperationType.SelectChosenPosition,\n nextElement: null\n };\n }\n\n if (\n this.currentConfig.operations.clearChosenPosition?.keyEvent === keyEvent.key &&\n !this.currentConfig.operations.clearChosenPosition?.disabled\n ) {\n keyEvent.preventDefault();\n this.selectElementService.setPreselectedElement(null);\n return {\n operation: KeyboardOperationType.ClearChosenPosition,\n nextElement: null\n };\n }\n\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { IElementDto, ServiceSpecificationGroupDto } from '@dangl/ava-model';\n\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\n\nimport { SelectedElement, SelectingElementsType } from '../model/selecting.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TreeNodeSelectionService {\n private treeNodeSelectingSource = new BehaviorSubject<{ [elementId: string]: SelectingElementsType }>({});\n treeNodeSelecting = this.treeNodeSelectingSource.asObservable();\n private _selectingElementsTreeData: SelectingElementsType[] | null = null;\n\n private selectingChangedSource = new ReplaySubject<SelectingElementsType[]>(1);\n selectingChanged = this.selectingChangedSource.asObservable();\n\n flatSelectedListId: string[] = [];\n\n constructor() {}\n\n setSelectingChanged(selectingChanged: SelectingElementsType[]): void {\n this.selectingChangedSource.next(selectingChanged);\n }\n\n loadSelectingElements(\n elements: IElementDto[] | null | undefined,\n parent: SelectingElementsType | null | undefined = null\n ): SelectingElementsType[] {\n const list: SelectingElementsType[] = [];\n if (elements && elements.length) {\n elements.forEach((element: IElementDto) => {\n const obj = {\n parent,\n elementId: element.id,\n checked: false\n } as SelectingElementsType;\n if (element.elementType === 'ServiceSpecificationGroupDto') {\n obj.indeterminate = false;\n obj.children = this.loadSelectingElements((<ServiceSpecificationGroupDto>element).elements, obj);\n }\n list.push(obj);\n this.treeNodeSelectingSource.value[element.id] = obj;\n });\n this._selectingElementsTreeData = list;\n }\n return list;\n }\n\n getTreeData() {\n return this._selectingElementsTreeData;\n }\n\n private changeAllChild(children: SelectingElementsType[], value: boolean): void {\n children.forEach((item: SelectingElementsType) => {\n item.checked = value;\n if (item.children) {\n item.indeterminate = false;\n this.changeAllChild(item.children, value);\n }\n });\n }\n\n private changeAllParent(parent: SelectingElementsType, value: boolean): void {\n parent.checked = value;\n if (parent.parent) {\n this.changeAllParent(parent.parent, value);\n }\n }\n\n changeSelecting(value: boolean, id: string, isUserChanged = true): void {\n const selectingNode = this.treeNodeSelectingSource.value[id];\n if (!selectingNode) {\n return;\n }\n\n selectingNode.checked = value;\n if (selectingNode.children) {\n selectingNode.indeterminate = false;\n if (isUserChanged) {\n this.changeAllChild(selectingNode.children, value);\n }\n }\n if (selectingNode.parent) {\n this.changeAllParent(selectingNode.parent, value);\n }\n this.getIndeterminate(selectingNode?.parent || null);\n if (isUserChanged) {\n this.treeNodeSelectingSource.next(this.treeNodeSelectingSource.value);\n }\n }\n\n private getIndeterminate(parentNode: SelectingElementsType | null | undefined): void {\n if (!parentNode) {\n return;\n }\n\n if (!parentNode.children || !parentNode.children.length) {\n return;\n }\n\n let resultIndeterminateSome = false;\n let resultIndeterminateAll = false;\n parentNode.children.forEach((item: SelectingElementsType) => {\n if (item.checked || item.indeterminate) {\n resultIndeterminateSome = true;\n }\n if (!item.checked) {\n resultIndeterminateAll = true;\n }\n });\n if (!resultIndeterminateSome) {\n parentNode.indeterminate = false;\n parentNode.checked = false;\n } else if (resultIndeterminateAll) {\n parentNode.indeterminate = true;\n parentNode.checked = false;\n } else {\n parentNode.indeterminate = false;\n parentNode.checked = true;\n }\n this.getIndeterminate(parentNode.parent);\n }\n\n changeAll(value: boolean): void {\n Object.values(this.treeNodeSelectingSource.value).forEach((e) => {\n this.changeSelecting(value, e.elementId, false);\n });\n this.treeNodeSelectingSource.next(this.treeNodeSelectingSource.value);\n }\n\n getFlatSelectedListId(selectedElements: SelectedElement[]): void {\n selectedElements.forEach((el) => {\n if (el.children) {\n this.getFlatSelectedListId(el.children);\n } else {\n this.flatSelectedListId.push(el.elementId);\n }\n });\n }\n\n getTreeRoot(treeRoot: SelectingElementsType[]): SelectingElementsType[] {\n const list: SelectingElementsType[] = [];\n treeRoot.forEach((item: SelectingElementsType) => {\n if (item.checked || item.indeterminate) {\n const obj: SelectingElementsType = { elementId: item.elementId };\n if (item.children) {\n obj.children = this.getTreeRoot(item.children);\n }\n list.push(obj);\n }\n });\n return list;\n }\n}\n","import { AfterViewInit, Directive, ElementRef, EnvironmentInjector, inject, input, OnDestroy, Renderer2 } from '@angular/core';\n\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { IFunctionViewLine, IViewLine } from '../model';\nimport { ConfigurationTreeService } from '../services/configuration-tree.service';\nimport { FlatElementsService } from '../services/flat-elements.service';\n\n@Directive({ selector: '[saveChangingView]' })\nexport class SaveChangingViewDirective implements AfterViewInit, OnDestroy {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n private flatElementsService = inject(FlatElementsService);\n private configurationTreeService = inject(ConfigurationTreeService);\n\n saveChangingView = input<string>('text');\n private $destroy = new Subject<boolean>();\n private readonly injector = inject(EnvironmentInjector);\n\n ngOnDestroy(): void {\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n\n ngAfterViewInit(): void {\n this.updateElementStles();\n }\n\n private updateElementStles(): void {\n if (!this.el) {\n return;\n }\n const el = this.el.nativeElement;\n const id = el.id;\n\n if (!id) {\n return;\n }\n\n if (!this.renderer) {\n return;\n }\n this.configurationTreeService\n .getFunctionViewFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((functionView) => {\n const view: IViewLine | null = this.getChangedView(id, functionView);\n if (!view) {\n return;\n }\n\n switch (this.saveChangingView()) {\n case 'icon':\n if (view.iconName) {\n el.textContent = view.iconName;\n }\n if (view.iconColor) {\n this.renderer.setStyle(el, 'color', view.iconColor);\n }\n break;\n case 'text':\n if (view.textBold) {\n this.renderer.setStyle(el, 'font-weight', view.textBold);\n }\n if (view.textColor) {\n this.renderer.setStyle(el, 'color', view.textColor);\n }\n break;\n }\n });\n }\n\n private getChangedView(id: string, functionView: IFunctionViewLine[]): IViewLine | null {\n const objectElementsDto = this.flatElementsService.getObjectElementsDto();\n if (objectElementsDto) {\n const element = objectElementsDto[id];\n if (element && functionView?.length) {\n for (const objectView of functionView) {\n if (objectView.func(element)) {\n return objectView.view;\n }\n }\n }\n }\n\n return null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { IElementDto } from '../model';\n\n@Pipe({\n name: 'elementIconName'\n})\nexport class ElementIconNamePipe implements PipeTransform {\n transform(element: IElementDto): string {\n switch (element.elementTypeDiscriminator) {\n case 'NoteTextDto':\n return 'subject';\n case 'ExecutionDescriptionDto':\n return 'event';\n case 'ServiceSpecificationGroupDto':\n return 'folder_open';\n case 'PositionDto':\n return 'add';\n default:\n return '';\n }\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\n\nimport { IElementDto, PositionDto, ServiceSpecificationGroupDto } from '../model';\nimport { ConfigurationTreeService } from '../services/configuration-tree.service';\n\n@Pipe({\n name: 'elementItemNumber'\n})\nexport class ElementItemNumberPipe implements PipeTransform {\n private configurationTreeService = inject(ConfigurationTreeService);\n\n transform(element: IElementDto, depth: number = 0): string {\n let itemNumber = '';\n\n switch (element.elementTypeDiscriminator) {\n case 'ServiceSpecificationGroupDto':\n itemNumber = (element as ServiceSpecificationGroupDto).itemNumber?.stringRepresentation || '';\n break;\n case 'PositionDto':\n itemNumber = (element as PositionDto).itemNumber?.stringRepresentation || '';\n break;\n default:\n return '';\n }\n\n // Check if we should hide parent item numbers\n const currentConfig = this.configurationTreeService.getCurrentTreeConfig();\n const hideParentItemNumbers = currentConfig?.hideParentItemNumbers || false;\n\n if (hideParentItemNumbers && itemNumber && depth > 0) {\n return this.trimItemNumber(itemNumber, depth);\n }\n\n return itemNumber;\n }\n\n /**\n * Trims the item number based on hierarchy depth in the tree.\n * @param itemNumber - The full item number string (e.g., \"1.2.3.4\")\n * @param depth - The depth in the tree (0 = root level, 1 = first child level, etc.)\n * For example, with depth:\n * - depth 0: \"1.2.3.4\" -> \"1.2.3.4\" (show all)\n * - depth 1: \"1.2.3.4\" -> \"2.3.4\" (hide first number)\n * - depth 2: \"1.2.3.4\" -> \"3.4\" (hide first two numbers)\n * - depth 3: \"1.2.3.4\" -> \"4\" (hide first three numbers)\n */\n private trimItemNumber(itemNumber: string, depth: number): string {\n const parts = itemNumber.split('.');\n\n // Remove 'depth' number of parts from the beginning\n const trimmedParts = parts.slice(depth);\n\n // If all parts are trimmed, return the last part\n if (trimmedParts.length === 0) {\n return parts[parts.length - 1] || '';\n }\n\n return trimmedParts.join('.');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { ITextWords } from '../constants/defaultTextWords';\nimport { ExecutionDescriptionDto, IElementDto, NoteTextDto, PositionDto, ServiceSpecificationGroupDto } from '../model';\n\n@Pipe({\n name: 'elementText'\n})\nexport class ElementTextPipe implements PipeTransform {\n transform(element: IElementDto, treeWords: ITextWords): string {\n if (!element || !treeWords) {\n return '';\n }\n\n switch (element.elementTypeDiscriminator) {\n case 'NoteTextDto':\n return (element as NoteTextDto).shortText || treeWords.defaultNameNoteText || '';\n case 'ExecutionDescriptionDto':\n return `${(element as ExecutionDescriptionDto).identifier ? (element as ExecutionDescriptionDto).identifier + ' - ' : ''}${\n (element as ExecutionDescriptionDto).label || treeWords.defaultNameDescription || ''\n }`;\n case 'ServiceSpecificationGroupDto':\n return (element as ServiceSpecificationGroupDto).shortText || treeWords.defaultNameGroup || '';\n case 'PositionDto':\n return (element as PositionDto).shortText || treeWords.defaultNamePosition || '';\n default:\n return '';\n }\n }\n}\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n input,\n linkedSignal,\n OnDestroy,\n OnInit,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { IElementDto } from '@dangl/ava-model';\n\nimport { combineLatestWith, filter, Observable, Subject, take, takeUntil } from 'rxjs';\n\nimport { defaults } from '../../constants';\nimport { ITextWords } from '../../constants/defaultTextWords';\nimport { SaveChangingViewDirective } from '../../directives/save-changing-view.directive';\nimport { SelectingElementsType } from '../../model/selecting.model';\nimport { ElementIconNamePipe } from '../../pipes/element-icon-name.pipe';\nimport { ElementItemNumberPipe } from '../../pipes/element-item-number.pipe';\nimport { ElementTextPipe } from '../../pipes/element-text.pipe';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { ExpandParentGroupService } from '../../services/expand-parent-group.service';\nimport { FlatElementsService } from '../../services/flat-elements.service';\nimport { SelectElementService } from '../../services/select-element.service';\nimport { TreeNodeSelectionService } from '../../services/tree-node-selection.service';\n\n@Component({\n selector: 'ava-tree-item',\n templateUrl: './tree-item.component.html',\n styleUrls: ['./tree-item.component.scss'],\n imports: [\n SaveChangingViewDirective,\n AsyncPipe,\n ElementItemNumberPipe,\n ElementTextPipe,\n ElementIconNamePipe,\n NgTemplateOutlet,\n MatCheckboxModule,\n FormsModule,\n MatIconModule\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreeItemComponent implements OnInit, OnDestroy {\n selectElementService = inject(SelectElementService);\n private treeNodeSelectionService = inject(TreeNodeSelectionService);\n private cdr = inject(ChangeDetectorRef);\n private configurationTreeService = inject(ConfigurationTreeService);\n private flatElementsService = inject(FlatElementsService);\n\n _element = input<IElementDto>({} as IElementDto, { alias: 'element' });\n element = linkedSignal({\n source: this._element,\n computation: (e) => e\n });\n depth = input<number>(0);\n isSelect = input<boolean>(false);\n backgroundColor = input<string | null>('');\n\n textElement = viewChild.required<ElementRef<HTMLElement>>('textItem');\n\n selectedElement: IElementDto | null = null;\n preselectedElement: IElementDto | null = null;\n private isAllowOneClick = true;\n private timerStop: ReturnType<typeof setTimeout> | null = null;\n private $destroy = new Subject<boolean>();\n\n readonly textWords$: Observable<ITextWords | null> = this.configurationTreeService.getTextWordsFromConfig();\n isSelectionMode = false;\n\n checkedElements: { [elementId: string]: SelectingElementsType } = {};\n private expandParentGroupService = inject(ExpandParentGroupService);\n\n ngOnInit(): void {\n this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.selectedElement = element;\n this.cdr.markForCheck();\n });\n this.selectElementService.preselectedElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.preselectedElement = element;\n this.cdr.markForCheck();\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((isSelectionMode) => {\n this.isSelectionMode = isSelectionMode;\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(combineLatestWith(this.treeNodeSelectionService.treeNodeSelecting), takeUntil(this.$destroy))\n .subscribe(([isSelectionMode, treeNodeSelecting]) => {\n if (isSelectionMode) {\n this.checkedElements = treeNodeSelecting;\n this.cdr.detectChanges();\n }\n });\n\n // Subscribe to element updates to refresh the view when this element is updated externally\n this.flatElementsService.elementUpdated$\n .pipe(\n filter((update) => update.id === this.element().id),\n takeUntil(this.$destroy)\n )\n .subscribe((update) => {\n // Update the local element signal with the new values\n this.element.set({ ...this.element(), ...update.updates } as unknown as IElementDto);\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this.timerStop && clearTimeout(this.timerStop);\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n\n private expand(): void {\n if (this.element) {\n const state = this.expandParentGroupService.getExpansionState()();\n if (state) {\n state[this.element().id] = true;\n }\n this.expandParentGroupService.setExpansionState(state);\n }\n }\n\n select(): void {\n const clickElement = () => {\n this.selectElementService.setClickElement(this.selectedElement?.id === this.element().id ? null : this.element());\n if (this.element().elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n this.expand();\n }\n };\n this.configurationTreeService\n .getAllowDblClickFromConfig()\n .pipe(take(1))\n .subscribe((allowDblClick) => {\n if (!allowDblClick) {\n clickElement();\n } else if (this.isAllowOneClick) {\n this.isAllowOneClick = false;\n this.timerStop = setTimeout(() => {\n clickElement();\n this.isAllowOneClick = true;\n }, defaults.doubleClickTimeoutInMilliseconds);\n }\n });\n }\n\n dblSelect(): void {\n this.configurationTreeService\n .getAllowDblClickFromConfig()\n .pipe(take(1))\n .subscribe((allowDblClick) => {\n if (!allowDblClick) {\n return;\n }\n\n this.timerStop && clearTimeout(this.timerStop);\n\n this.selectElementService.setDblClickElement(this.element());\n if (this.element().elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n this.expand();\n }\n this.isAllowOneClick = true;\n });\n }\n\n openContextMenu(event: MouseEvent): void {\n event.preventDefault();\n this.selectElementService.setContextMenuElement({ position: { x: `${event.x}px`, y: `${event.y}px` }, node: this.element() });\n }\n\n changeSelecting(element: IElementDto, isSelected: boolean): void {\n this.treeNodeSelectionService.changeSelecting(isSelected, element.id);\n }\n}\n","@if (element()) {\n <div\n (click)=\"select()\"\n (dblclick)=\"dblSelect()\"\n (contextmenu)=\"openContextMenu($event)\"\n class=\"ava-tree-item\"\n [id]=\"element().id\"\n >\n <mat-icon\n class=\"ava-tree-item__icon\"\n saveChangingView=\"icon\"\n [id]=\"element().id\"\n >{{ element() | elementIconName }}</mat-icon\n >\n @if (!isSelectionMode) {\n <div\n #textItem\n class=\"ava-tree-item__text\"\n [class.choose]=\"!isSelectionMode && element().id === preselectedElement?.id\"\n [id]=\"element().id\"\n saveChangingView=\"text\"\n [class.select]=\"isSelect()\"\n [style.backgroundColor]=\"backgroundColor()\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n }\n @if (isSelectionMode && checkedElements[element().id]) {\n <mat-checkbox\n class=\"ava-tree-item__checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element().id].indeterminate\"\n [(ngModel)]=\"checkedElements[element().id].checked\"\n (ngModelChange)=\"changeSelecting(element(), $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n <div\n #textItem\n class=\"ava-tree-item__text\"\n saveChangingView=\"text\"\n [id]=\"element().id\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n </mat-checkbox>\n }\n </div>\n}\n\n<ng-template #text>\n @if (textWords$ | async; as textWords) {\n @if (element().elementTypeDiscriminator === 'ServiceSpecificationGroupDto' || element().elementTypeDiscriminator === 'PositionDto') {\n <ng-container> {{ element() | elementItemNumber: depth() }} - {{ element() | elementText: textWords }} </ng-container>\n } @else {\n <ng-container>{{ element() | elementText: textWords }}</ng-container>\n }\n }\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, OnDestroy, OnInit, inject } from '@angular/core';\n\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nimport { HoverEffectDirective } from '../../directives/hover-effect.directive';\nimport { IElementDto } from '../../model';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { SelectElementService } from '../../services/select-element.service';\n\nimport { TreeItemComponent } from '../tree-item/tree-item.component';\n\n@Component({\n selector: 'ava-list-structure',\n templateUrl: './list-structure.component.html',\n styleUrls: ['./list-structure.component.scss'],\n imports: [TreeItemComponent, AsyncPipe, HoverEffectDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ListStructureComponent implements OnDestroy, OnInit {\n selectElementService = inject(SelectElementService);\n private configurationTreeService = inject(ConfigurationTreeService);\n\n filteredElementList = input<IElementDto[]>([]);\n\n selectedElement: IElementDto | null = null;\n private $destroy = new Subject<boolean>();\n\n readonly selectedColor$: Observable<string> = this.configurationTreeService.getSelectedColorFromConfig();\n isSelectionMode = false;\n\n ngOnInit(): void {\n this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.selectedElement = element;\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((isSelectionMode) => {\n this.isSelectionMode = isSelectionMode;\n });\n }\n\n ngOnDestroy(): void {\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n}\n","@for (element of filteredElementList(); track element.id) {\n <ng-container>\n <div\n [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [style.backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n [id]=\"'hover-element-id-' + element.id\"\n [avaHoverEffect]=\"avaItem\"\n >\n <ava-tree-item\n #avaItem\n [element]=\"element\"\n [isSelect]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n ></ava-tree-item>\n </div>\n </ng-container>\n}\n","import { AsyncPipe, DecimalPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, input, linkedSignal, OnDestroy, OnInit, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTableModule } from '@angular/material/table';\n\nimport { combineLatestWith, map, Observable, of, Subject, switchMap, take, takeUntil } from 'rxjs';\n\nimport { defaults } from '../../constants';\nimport { ITextWords } from '../../constants/defaultTextWords';\nimport { SaveChangingViewDirective } from '../../directives/save-changing-view.directive';\nimport { IElementDto, TableColumnType } from '../../model';\nimport { SelectingElementsObjectType } from '../../model/selecting.model';\nimport { ElementIconNamePipe } from '../../pipes/element-icon-name.pipe';\nimport { ElementItemNumberPipe } from '../../pipes/element-item-number.pipe';\nimport { ElementTextPipe } from '../../pipes/element-text.pipe';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { FlatElementsService } from '../../services/flat-elements.service';\nimport { SelectElementService } from '../../services/select-element.service';\nimport { TreeNodeSelectionService } from '../../services/tree-node-selection.service';\n\n@Component({\n selector: 'ava-table-structure',\n templateUrl: './table-structure.component.html',\n styleUrls: ['./table-structure.component.scss'],\n imports: [\n NgClass,\n AsyncPipe,\n ElementTextPipe,\n ElementItemNumberPipe,\n ElementIconNamePipe,\n DecimalPipe,\n MatTableModule,\n MatIconModule,\n MatCheckboxModule,\n FormsModule,\n SaveChangingViewDirective\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableStructureComponent implements OnInit, OnDestroy {\n selectElementService = inject(SelectElementService);\n private treeNodeSelectionService = inject(TreeNodeSelectionService);\n private cdr = inject(ChangeDetectorRef);\n configurationTreeService = inject(ConfigurationTreeService);\n private flatElementsService = inject(FlatElementsService);\n\n readonly _filteredElementList = input<IElementDto[]>([], { alias: 'filteredElementList' });\n filteredElementList = linkedSignal({\n source: this._filteredElementList,\n computation: (list) => list.map((el) => ({ ...el }))\n });\n\n displayedColumns: string[] = [];\n private isAllowOneClick = true;\n selectedElement: IElementDto | null = null;\n preselectedElement: IElementDto | null = null;\n private timerStop: ReturnType<typeof setTimeout> | null = null;\n checkedElements: SelectingElementsObjectType = {};\n\n private $destroy = new Subject<boolean>();\n readonly textWords$: Observable<ITextWords | null> = this.configurationTreeService.getTextWordsFromConfig();\n readonly selectedColor$: Observable<string> = this.configurationTreeService.getSelectedColorFromConfig();\n readonly addTableColumns$: Observable<TableColumnType[]> = this.configurationTreeService.getAddTableColumnsFromConfig();\n isSelectionMode = false;\n\n ngOnInit(): void {\n this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.selectedElement = element;\n this.cdr.markForCheck();\n });\n this.selectElementService.preselectedElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.preselectedElement = element;\n this.cdr.markForCheck();\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((isSelectionMode) => {\n this.isSelectionMode = isSelectionMode;\n });\n\n this.configureTableColumns();\n\n this.treeNodeSelectionService.treeNodeSelecting.pipe(takeUntil(this.$destroy)).subscribe((treeNodeSelecting) => {\n this.checkedElements = treeNodeSelecting;\n this.cdr.detectChanges();\n });\n\n // Subscribe to element updates to refresh the table view when elements are updated externally\n this.flatElementsService.elementUpdated$.pipe(takeUntil(this.$destroy)).subscribe((update) => {\n const currentList = this.filteredElementList();\n const index = currentList.findIndex((el) => el.id === update.id);\n if (index !== -1) {\n const updatedList = [...currentList];\n updatedList[index] = { ...updatedList[index], ...update.updates };\n this.filteredElementList.set(updatedList);\n }\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this.timerStop && clearTimeout(this.timerStop);\n\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n\n select(row: IElementDto): void {\n if (this.isSelectionMode) {\n return;\n }\n\n const clickElement = () => {\n this.selectElementService.setClickElement(this.selectedElement?.id === row.id ? null : row);\n };\n this.configurationTreeService\n .getAllowDblClickFromConfig()\n .pipe(take(1))\n .subscribe((allowDblClick) => {\n if (!allowDblClick) {\n clickElement();\n } else if (this.isAllowOneClick) {\n this.isAllowOneClick = false;\n this.timerStop = setTimeout(() => {\n clickElement();\n this.isAllowOneClick = true;\n }, defaults.doubleClickTimeoutInMilliseconds);\n }\n });\n }\n\n dblSelect(row: IElementDto): void {\n this.configurationTreeService\n .getAllowDblClickFromConfig()\n .pipe(take(1))\n .subscribe((allowDblClick) => {\n if (!allowDblClick) {\n return;\n }\n\n if (this.isSelectionMode) {\n return;\n }\n\n this.timerStop && clearTimeout(this.timerStop);\n\n this.selectElementService.setDblClickElement(row);\n this.isAllowOneClick = true;\n });\n }\n\n openContextMenu(event: MouseEvent, row: IElementDto): void {\n event.preventDefault();\n this.selectElementService.setContextMenuElement({ position: { x: `${event.x}px`, y: `${event.y}px` }, node: row });\n }\n\n changeSelecting(element: IElementDto, event: boolean): void {\n this.treeNodeSelectionService.changeSelecting(event, element.id);\n }\n\n configureTableColumns(): void {\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(\n combineLatestWith(this.addTableColumns$.pipe(map((c) => c.map((item) => item.name)))),\n switchMap(([isSelectionMode, addColumns]) => {\n if (isSelectionMode) {\n return of(['icon', 'checkbox', 'itemNumber', 'text', ...addColumns]);\n } else {\n return of(['icon', 'itemNumber', 'text', ...addColumns]);\n }\n }),\n takeUntil(this.$destroy)\n )\n .subscribe((columns) => {\n this.displayedColumns = [...columns];\n });\n }\n}\n","<table\n mat-table\n [dataSource]=\"filteredElementList()\"\n>\n <ng-container matColumnDef=\"icon\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-cell-small-width\"\n >\n <mat-icon\n class=\"icon-element\"\n saveChangingView=\"icon\"\n [id]=\"row.id\"\n >\n {{ row | elementIconName }}\n </mat-icon>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"checkbox\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"table-cell-small-width\"\n >\n @if (checkedElements[element.id]) {\n <mat-checkbox\n class=\"checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n </mat-checkbox>\n }\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"itemNumber\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n OZ\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [style.width.ch]=\"row?.itemNumber?.stringRepresentation.length\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementItemNumber }}\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"text\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n Text\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-text\"\n >\n @if (textWords$ | async; as textWords) {\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementText: textWords }}\n </div>\n }\n </td>\n </ng-container>\n @for (oneColumn of addTableColumns$ | async; track oneColumn.name) {\n <ng-container>\n <ng-container matColumnDef=\"{{ oneColumn.name }}\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n {{ oneColumn.title }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n >\n <div\n [style.textAlign]=\"oneColumn.align\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{\n !oneColumn.numberFormat\n ? row[oneColumn.name]\n : (row[oneColumn.name] | number: oneColumn.numberFormat : configurationTreeService.locale)\n }}\n </div>\n </td>\n </ng-container>\n </ng-container>\n }\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns; sticky: true\"\n class=\"mat-header-row\"\n ></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"select(row)\"\n (dblclick)=\"dblSelect(row)\"\n (contextmenu)=\"openContextMenu($event, row)\"\n [ngClass]=\"{\n choose: !isSelectionMode && row.id === preselectedElement?.id,\n select: !isSelectionMode && row.id === selectedElement?.id,\n }\"\n [style.background]=\"!isSelectionMode && row.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n [id]=\"row.id\"\n ></tr>\n</table>\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { IElementDto, ServiceSpecificationGroupDto } from '../model';\n\n@Pipe({\n name: 'groupChildElements',\n pure: true\n})\nexport class GroupChildElementsPipe implements PipeTransform {\n transform(element: IElementDto): IElementDto[] | null {\n if (element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n return (element as ServiceSpecificationGroupDto)?.elements || null;\n }\n\n return null;\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, input, OnDestroy, OnInit } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nimport { HoverEffectDirective } from '../../directives/hover-effect.directive';\nimport { IElementDto } from '../../model';\nimport { GroupChildElementsPipe } from '../../pipes/group-child-elements.pipe';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { ExpandParentGroupService } from '../../services/expand-parent-group.service';\nimport { SelectElementService } from '../../services/select-element.service';\n\nimport { TreeItemComponent } from '../tree-item/tree-item.component';\n\n@Component({\n selector: 'ava-tree-node',\n templateUrl: './tree-node.component.html',\n styleUrls: ['./tree-node.component.scss'],\n imports: [TreeItemComponent, GroupChildElementsPipe, MatIconModule, AsyncPipe, HoverEffectDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreeNodeComponent implements OnDestroy, OnInit {\n selectElementService = inject(SelectElementService);\n private configurationTreeService = inject(ConfigurationTreeService);\n\n elementList = input<IElementDto[] | null>([]);\n depth = input<number>(0);\n\n selectedElement: IElementDto | null = null;\n private $destroy = new Subject<boolean>();\n\n readonly indent$: Observable<string> = this.configurationTreeService.getIndentFromConfig();\n readonly selectedColor$: Observable<string> = this.configurationTreeService.getSelectedColorFromConfig();\n isSelectionMode = false;\n private cdr = inject(ChangeDetectorRef);\n private expandParentGroupService = inject(ExpandParentGroupService);\n expansionState = this.expandParentGroupService.getExpansionState();\n\n ngOnInit(): void {\n this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n this.selectedElement = element;\n this.cdr.markForCheck();\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((isSelectionMode) => {\n this.isSelectionMode = isSelectionMode;\n });\n }\n\n ngOnDestroy(): void {\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n\n expand(element: IElementDto): void {\n const state = this.expansionState();\n this.expandParentGroupService.setExpansionState({\n ...state,\n [element.id]: !state[element.id]\n });\n }\n}\n","@for (element of elementList(); track element.id) {\n <ng-container>\n <div\n [id]=\"'hover-element-id-' + element.id\"\n class=\"tree-node-wrapper\"\n [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [style.backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n [avaHoverEffect]=\"avaItem\"\n >\n <div class=\"tree-node-wrapper__content\">\n @if (element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n <mat-icon\n matRipple\n (click)=\"expand(element)\"\n class=\"tree-node__icon\"\n >\n {{ expansionState()[element.id] ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n } @else {\n <mat-icon></mat-icon>\n }\n\n <ava-tree-item\n #avaItem\n [element]=\"element\"\n [depth]=\"depth()\"\n [isSelect]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n ></ava-tree-item>\n </div>\n </div>\n @if (element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto' && expansionState()[element.id]) {\n <div [style.paddingLeft]=\"indent$ | async\">\n <ava-tree-node\n [elementList]=\"element | groupChildElements\"\n [depth]=\"depth() + 1\"\n ></ava-tree-node>\n </div>\n }\n </ng-container>\n}\n","import { AsyncPipe, registerLocaleData } from '@angular/common';\nimport localeDe from '@angular/common/locales/de';\nimport localeEn from '@angular/common/locales/en';\nimport localeDeExtra from '@angular/common/locales/extra/de';\nimport localeEnExtra from '@angular/common/locales/extra/en';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n inject,\n ElementRef,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n linkedSignal,\n EnvironmentInjector,\n runInInjectionContext,\n output,\n viewChild\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IElementDto } from '@dangl/ava-model';\n\nimport { Observable, ReplaySubject, Subject, combineLatest, debounceTime, filter, fromEvent, map, switchMap, takeUntil, tap } from 'rxjs';\n\nimport { ITextWords } from '../../constants/defaultTextWords';\nimport { HoverEffectDirective } from '../../directives/hover-effect.directive';\nimport { ContextMenuDataType, IConfigurationTree, IElementUpdate, ModeViewType, ProjectDto, SelectedElement } from '../../model';\nimport { SelectingElementsType } from '../../model/selecting.model';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { ExpandParentGroupService, IExpansionState } from '../../services/expand-parent-group.service';\nimport { FlatElementsService } from '../../services/flat-elements.service';\nimport { IKeyboardOperationConfig, KeyboardOperationService, KeyboardOperationType } from '../../services/keyboard-operation.service';\nimport { SelectElementService } from '../../services/select-element.service';\nimport { TreeHoverTooltipService } from '../../services/tree-hover-tooltip.service';\nimport { TreeNodeSelectionService } from '../../services/tree-node-selection.service';\n\nimport { ListStructureComponent } from '../list-structure/list-structure.component';\nimport { TableStructureComponent } from '../table-structure/table-structure.component';\nimport { TreeNodeComponent } from '../tree-node/tree-node.component';\n\nregisterLocaleData(localeDe, 'de-DE', localeDeExtra);\nregisterLocaleData(localeEn, 'en-US', localeEnExtra);\n\n@Component({\n selector: 'ava-tree',\n templateUrl: './ava-tree.component.html',\n styleUrls: ['./ava-tree.component.scss'],\n imports: [\n TreeNodeComponent,\n ListStructureComponent,\n TableStructureComponent,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatTooltipModule,\n FormsModule,\n MatInputModule,\n AsyncPipe\n ],\n providers: [\n FlatElementsService,\n SelectElementService,\n TreeNodeSelectionService,\n ExpandParentGroupService,\n KeyboardOperationService,\n ConfigurationTreeService,\n TreeHoverTooltipService,\n SelectElementService,\n HoverEffectDirective\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AvaTreeComponent implements OnInit, OnDestroy, AfterViewInit {\n private flatElementsService = inject(FlatElementsService, { self: true });\n private selectElementService = inject(SelectElementService, { self: true });\n private treeNodeSelectionService = inject(TreeNodeSelectionService, { self: true });\n private expandParentGroupService = inject(ExpandParentGroupService, { self: true });\n private keyboardOperationService = inject(KeyboardOperationService, { self: true });\n private configurationTreeService = inject(ConfigurationTreeService);\n\n private readonly injector = inject(EnvironmentInjector);\n private transformFn = <T>(data: T | string): T | null => {\n if (typeof data === 'string') {\n try {\n return JSON.parse(data) as T;\n } catch (e) {\n return null;\n }\n } else {\n return data;\n }\n };\n\n /**\n * This is the main data element for the tree structure. You should supply a ProjectDto with\n * exactly one service specification in it.\n */\n project = input.required<ProjectDto | null, ProjectDto>({ transform: this.transformFn<ProjectDto> });\n\n /**\n * Optionally, you can supply a map of expansion states for the tree. The keys should be the\n * id properties of the elements in the tree, and the values should be true if the element is\n * expanded, and false if it is collapsed.\n */\n readonly expansionstate = input<IExpansionState | null, IExpansionState>(null, { transform: this.transformFn<IExpansionState> });\n /**\n * Optionally, you can supply the id of the node that should be selected in the tree initially.\n */\n readonly selectednodeid = input<string | null>(null);\n\n /**\n * You can specify which view type to use for the tree. The default is ModeViewType.Tree, but you can also use\n * ModeViewType.List or ModeViewType.Table.\n */\n readonly modeview = input<ModeViewType>(ModeViewType.Tree);\n\n /**\n * Input to update a specific element in the tree by its ID.\n * When you set this input with a new value, the tree will find the element\n * and update its properties, then refresh the view.\n *\n * @example\n * // In parent component\n * elementUpdate = signal<IElementUpdate | null>(null);\n *\n * // In template\n * <ava-tree [elementUpdate]=\"elementUpdate()\"></ava-tree>\n *\n * // To trigger update\n * this.elementUpdate.set({ id: 'element-123', updates: { shortText: 'New text' } });\n */\n readonly elementUpdate = input<IElementUpdate | null, IElementUpdate | null | undefined>(null, {\n transform: (data: IElementUpdate | null | undefined | string): IElementUpdate | null => {\n if (data === null || data === undefined) {\n return null;\n }\n return this.transformFn<IElementUpdate>(data);\n }\n });\n\n /**\n * You can optionally supply a list of elements that should be selected initially. This is only used if\n * isSelectionMode is true.\n */\n private initiallySelectedElements: SelectedElement[] | null = null;\n\n /**\n * You can supply a map of strings to be used for the text in the tree. This allows you to translate\n * the text in the tree to other languages.\n * {\n * textSearch: string,\n * textNothing: string,\n * textNothingFiltered: string,\n * textAll: string,\n * tooltipAllOpen: string,\n * tooltipAllClose: string,\n * tooltipAllAdd:string,\n * tooltipAllRemove: string,\n * }\n */\n readonly textWords$: Observable<ITextWords | null> = this.configurationTreeService.getTextWordsFromConfig();\n readonly isSelectionMode$: Observable<boolean> = this.configurationTreeService.getIsSelectionModeFromConfig();\n private isSelectionMode = false;\n /**\n * Defaults to true. If this is enabled, then navigating in the tree with the keyboard only works\n * if the mouse is over the tree area. This limitation is useful if you have multiple trees or other components\n * that might be using keyboard input.\n */\n private mouseAwareKeyboardControl = true;\n\n /**\n * With this parameter, you can configure which keys will be listenend to switch the tree elements,\n * and also to disable the functionality of the keys */\n private set customKeyboardOperationConfig(config: IKeyboardOperationConfig) {\n this.keyboardOperationService.mergeConfigOperation(config);\n }\n\n readonly config = input<IConfigurationTree | null, IConfigurationTree>(null, { transform: this.transformFn<IConfigurationTree> });\n\n /**\n * This is emitted when an element is selected by clicking on it. The selected element is emitted as the event value.\n */\n selectClick = output<IElementDto | null>();\n\n /**\n * This is emitted when an element is selected by double clicking on it. The selected element is emitted as the event value.\n */\n selectDblClick = output<IElementDto>();\n\n /**\n * This is emitted when an element is selected by right clicking on it. The selected element is emitted as the event value.\n */\n contextMenuEvent = output<ContextMenuDataType>();\n\n /**\n * This is emitted when the selected elements in the tree are changed. The selected elements are emitted as the event value.\n * Selected elements are elements whose checkboxes are checked, and are different than elements that are in an active selection state.\n * Typcial use cases for this include e.g. selecting multiple elements within a service specification without\n * actually focussing them, e.g. for further processing.\n */\n selectedElementsChanged = output<SelectedElement[]>();\n\n avaTreeWrapper = viewChild.required<ElementRef<HTMLDivElement>>('avaTreeWrapper');\n avaMainWrapper = viewChild.required<ElementRef<HTMLDivElement>>('avaMainWrapper');\n avaTreeFilterInput = viewChild.required<ElementRef<HTMLInputElement>>('avaTreeFilterInput');\n private selectedElement: IElementDto | null = null;\n private previousServiceSpecificationId: string | null = null;\n serviceSpecification = linkedSignal({\n source: this.project,\n computation: () => {\n const s = this.project()?.serviceSpecifications?.[0] || null;\n if (s !== null) {\n this.flatElementsService.setElementsDto(s);\n }\n return s;\n }\n });\n\n private isEmiteSelectedElements = false;\n private selectingElementsTreeData: SelectingElementsType[] = [];\n flatElements: IElementDto[] | null = null;\n preselectedElement: IElementDto | null = null;\n filterInput = '';\n listModeViewType = ModeViewType;\n private filter = '';\n private $filter = new ReplaySubject<string>(1);\n filteredElementList: IElementDto[] = [];\n private $destroy = new Subject<boolean>();\n private cdr = inject(ChangeDetectorRef);\n\n ngOnInit(): void {\n this.selectElementService.preselectedElement.pipe(takeUntil(this.$destroy)).subscribe((e) => (this.preselectedElement = e));\n this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((e) => {\n this.selectedElement = e;\n this.selectClick.emit(e);\n });\n this.selectElementService.selectDblClickElement.pipe(takeUntil(this.$destroy)).subscribe((e) => this.selectDblClick.emit(e));\n this.selectElementService.selectContextMenuElement.pipe(takeUntil(this.$destroy)).subscribe((e) => this.contextMenuEvent.emit(e));\n this.flatElementsService.flatElementsDto.pipe(takeUntil(this.$destroy)).subscribe((e) => {\n this.flatElements = e;\n this.getFilteredList();\n });\n\n this.$filter.pipe(takeUntil(this.$destroy), debounceTime(250)).subscribe((filter) => {\n this.filter = filter;\n this.getFilteredList();\n });\n\n this.configurationTreeService\n .getIsSelectionModeFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((isSelectionMode) => {\n this.isSelectionMode = isSelectionMode;\n });\n\n this.configurationTreeService\n .getMouseAwareKeyboardControlFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((mouseAwareKeyboardControl) => {\n this.mouseAwareKeyboardControl = mouseAwareKeyboardControl;\n });\n\n this.configurationTreeService\n .getListFilterFuncFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((listFilterFunc) => {\n this.flatElementsService.listFilterFunc = listFilterFunc;\n });\n\n this.configurationTreeService\n .getCustomKeyboardOperationConfigFromConfig()\n .pipe(takeUntil(this.$destroy))\n .subscribe((config) => {\n if (config) {\n this.customKeyboardOperationConfig = config;\n }\n });\n\n runInInjectionContext(this.injector, () => {\n toObservable(this.serviceSpecification)\n .pipe(\n tap((serviceSpecification) => {\n const currentId = serviceSpecification?.id || null;\n const isNewServiceSpecification = currentId !== this.previousServiceSpecificationId;\n\n this.selectingElementsTreeData = this.treeNodeSelectionService.loadSelectingElements(serviceSpecification?.elements);\n\n // Only reset expansion state when loading a completely different service specification\n if (isNewServiceSpecification) {\n this.expandParentGroupService.setExpansionState({});\n this.previousServiceSpecificationId = currentId;\n }\n }),\n takeUntil(this.$destroy)\n )\n .subscribe();\n\n toObservable(this.selectednodeid)\n .pipe(\n tap((id) => this.selectElementById(id)),\n takeUntil(this.$destroy)\n )\n .subscribe();\n\n toObservable(this.config)\n .pipe(\n tap((config) => {\n const c = { ...this.configurationTreeService.getCurrentTreeConfig(), ...config };\n this.configurationTreeService.setTreeConfig(c);\n const elements = this.serviceSpecification()?.elements;\n this.selectingElementsTreeData = this.treeNodeSelectionService.loadSelectingElements(elements);\n }),\n map((config) => config?.isSelectionMode),\n filter((isSelectionMode) => !!isSelectionMode),\n\n switchMap(() => this.treeNodeSelectionService.treeNodeSelecting),\n takeUntil(this.$destroy)\n )\n .subscribe(() => {\n if (this.isEmiteSelectedElements) {\n setTimeout(() => {\n const selectingTree = this.treeNodeSelectionService.getTreeRoot(this.selectingElementsTreeData);\n this.selectedElementsChanged.emit(selectingTree);\n });\n }\n });\n\n combineLatest([\n toObservable(this.project),\n this.configurationTreeService.treeConfig$.pipe(\n map(({ isSelectionMode, initiallySelectedElements }) => ({ isSelectionMode, initiallySelectedElements })),\n filter(({ isSelectionMode }) => !!isSelectionMode),\n tap(({ initiallySelectedElements }) => {\n if (initiallySelectedElements?.length) {\n this.initiallySelectedElements = initiallySelectedElements;\n }\n })\n )\n ])\n .pipe(takeUntil(this.$destroy))\n .subscribe(() => {\n this.formSelectingList();\n });\n\n toObservable(this.expansionstate)\n .pipe(takeUntil(this.$destroy))\n .subscribe((s) => {\n if (s === null) {\n this.expandParentGroupService.setExpansionState({});\n } else {\n this.expandParentGroupService.setExpansionState(s);\n }\n });\n\n // React to elementUpdate input changes\n toObservable(this.elementUpdate)\n .pipe(\n filter((update): update is IElementUpdate => update !== null),\n takeUntil(this.$destroy)\n )\n .subscribe((update) => {\n this.flatElementsService.updateElementById(update.id, update.updates);\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.initializeEventListeners();\n }\n\n ngOnDestroy(): void {\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n\n private handleGlobalKeyboardEvent(event: Event): void {\n const keyEvent = event as KeyboardEvent;\n if (!this.mouseAwareKeyboardControl || this.avaMainWrapper().nativeElement.matches(':hover')) {\n const element = this.preselectedElement || this.selectedElement;\n\n const { operation, nextElement } = this.keyboardOperationService.handleKeyboardEvent(keyEvent, element) || { nextElement: null };\n switch (operation) {\n case KeyboardOperationType.MoveSelectedPositionUp:\n this.showElement(nextElement, '.select');\n break;\n case KeyboardOperationType.MoveSelectedPositionDown:\n this.showElement(nextElement, '.select');\n break;\n case KeyboardOperationType.MoveChosenPositionDown:\n this.showElement(nextElement, nextElement?.id === this.selectedElement?.id ? '.select' : '.choose');\n break;\n case KeyboardOperationType.MoveChosenPositionUp:\n this.showElement(nextElement, nextElement?.id === this.selectedElement?.id ? '.select' : '.choose');\n break;\n default:\n break;\n }\n }\n }\n\n private showElement(element: IElementDto | null, nameQuery: string): void {\n if (element) {\n if (this.modeview() === ModeViewType.Tree) {\n this.expandParentGroups(element);\n }\n setTimeout(() => this.scrollLine(nameQuery), 0);\n }\n }\n\n private scrollLine(nameQuery: string): void {\n const parentRect = this.avaTreeWrapper()?.nativeElement.getBoundingClientRect();\n const showedElement = this.avaTreeWrapper()?.nativeElement.querySelector(nameQuery) as HTMLElement;\n\n if (!showedElement) {\n return;\n }\n\n const childRect = showedElement.getBoundingClientRect();\n if (\n childRect.bottom > parentRect.bottom ||\n childRect.top < parentRect.top ||\n (this.modeview() === ModeViewType.Table && childRect.top < parentRect.top + 24)\n ) {\n showedElement?.scrollIntoView();\n this.avaTreeWrapper()?.nativeElement.scrollTo({ left: 0 });\n if (this.modeview() === ModeViewType.Table) {\n setTimeout(() => this.correctScrollTableLine(showedElement, parentRect), 0);\n }\n }\n }\n\n private correctScrollTableLine(showedElement: HTMLElement, parentRect: DOMRect): void {\n const childRect = showedElement.getBoundingClientRect();\n if (childRect.top < parentRect.top + 24) {\n this.avaTreeWrapper().nativeElement.scrollTop -= 24;\n }\n }\n\n expandParentGroups(element: IElementDto): void {\n this.expandParentGroupService.expandParentGroups(element, this.flatElements, this.expandParentGroupService.getExpansionState()());\n }\n\n onFilter(value: string): void {\n this.$filter.next(value);\n }\n\n changeAllElementsExpansionStatus(isExpanded: boolean): void {\n const state = this.expandParentGroupService.getExpansionState()();\n if (!isExpanded) {\n Object.keys(state).forEach((id: string) => {\n delete state[id];\n const newExpansionState = { ...state };\n this.expandParentGroupService.setExpansionState(newExpansionState);\n });\n } else {\n this.flatElements?.forEach((item) => {\n if (item.elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n state[item.id] = true;\n const newExpansionState = { ...state };\n this.expandParentGroupService.setExpansionState(newExpansionState);\n }\n });\n }\n }\n\n private formSelectingList(): void {\n this.isEmiteSelectedElements = false;\n if (!this.initiallySelectedElements) {\n this.isEmiteSelectedElements = true;\n return;\n }\n\n this.treeNodeSelectionService.getFlatSelectedListId(this.initiallySelectedElements);\n this.treeNodeSelectionService.flatSelectedListId.forEach((id, index) => {\n this.treeNodeSelectionService.changeSelecting(true, id);\n if (index === this.treeNodeSelectionService.flatSelectedListId.length - 1) {\n this.isEmiteSelectedElements = true;\n }\n });\n }\n\n selectOrDeselectAll(value: boolean): void {\n this.treeNodeSelectionService.changeAll(value);\n }\n\n private getFilteredList(): void {\n if (this.flatElements?.length) {\n if (!this.filter) {\n this.filteredElementList = this.flatElements;\n } else {\n this.filteredElementList = this.flatElements.filter((item) => this.flatElementsService.checkFilterValue(item, this.filter));\n }\n }\n this.cdr.markForCheck();\n }\n\n private initializeEventListeners(): void {\n if (!this.isSelectionMode) {\n fromEvent(document, 'keydown')\n .pipe(\n takeUntil(this.$destroy),\n filter(() => !this.mouseAwareKeyboardControl || this.avaMainWrapper().nativeElement.matches(':hover'))\n )\n .subscribe((event: Event) => {\n if (this.avaMainWrapper().nativeElement.matches(':hover')) {\n this.avaTreeFilterInput()?.nativeElement.focus();\n }\n this.handleGlobalKeyboardEvent(event);\n });\n }\n }\n\n private selectElementById(id: string | null): void {\n this.flatElementsService.getOneElementById(id).subscribe((e) => {\n if (e) {\n this.selectElementService.setClickElement(e);\n }\n });\n }\n}\n","@if (textWords$ | async; as textWords) {\n <div\n class=\"main-wrapper\"\n #avaMainWrapper\n >\n <div\n class=\"control\"\n #control\n >\n <mat-form-field class=\"control-filter\">\n <mat-label>{{ textWords.textSearch }}</mat-label>\n <input\n matInput\n [ngModel]=\"filterInput\"\n (ngModelChange)=\"onFilter($event)\"\n #avaTreeFilterInput\n />\n </mat-form-field>\n @if (modeview() === listModeViewType.Tree) {\n <ng-container>\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(true)\"\n [matTooltip]=\"textWords.tooltipAllOpen || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">add</mat-icon>\n </button>\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(false)\"\n [matTooltip]=\"textWords.tooltipAllClose || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">remove</mat-icon>\n </button>\n </ng-container>\n }\n @if (isSelectionMode$ | async) {\n <ng-container>\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(true)\"\n [matTooltip]=\"textWords.tooltipAllAdd || ''\"\n class=\"control-button ava-tree-selection-all-btn\"\n >\n <mat-icon>add</mat-icon>\n <span>{{ textWords.textAll }}</span>\n </button>\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(false)\"\n [matTooltip]=\"textWords.tooltipAllRemove || ''\"\n class=\"control-button ava-tree-selection-all-btn\"\n >\n <mat-icon>remove</mat-icon>\n <span>{{ textWords.textAll }}</span>\n </button>\n </ng-container>\n }\n </div>\n @if (serviceSpecification()) {\n <div\n [style.height]=\"'calc(100% - ' + control.offsetHeight + 'px)'\"\n class=\"ava-tree-wrapper\"\n #avaTreeWrapper\n >\n @if (flatElements?.length) {\n <ng-container>\n @if (filteredElementList.length) {\n <ng-container>\n @if (modeview() === listModeViewType.Tree && !avaTreeFilterInput.value) {\n @if (serviceSpecification()?.elements; as elements) {\n <ava-tree-node [elementList]=\"elements || []\"> </ava-tree-node>\n }\n }\n\n @if (modeview() === listModeViewType.List || (modeview() === listModeViewType.Tree && avaTreeFilterInput.value)) {\n <ava-list-structure [filteredElementList]=\"filteredElementList\"> </ava-list-structure>\n }\n @if (modeview() === listModeViewType.Table) {\n <ava-table-structure [filteredElementList]=\"filteredElementList\"> </ava-table-structure>\n }\n </ng-container>\n } @else {\n <ng-container> {{ textWords.textNothingFiltered }}</ng-container>\n }\n </ng-container>\n } @else {\n <ng-container>\n {{ textWords.textNothing }}\n </ng-container>\n }\n </div>\n }\n </div>\n}\n","import { IAlignmentOptions } from '../model/configInvoice.model';\n\nexport const ALIGNMENT_OPTIONS: IAlignmentOptions = {\n previousInvoiceAlignment: 'right'\n};\n","import { BehaviorSubject, Observable, distinctUntilChanged, map } from 'rxjs';\n\nimport { DEFAULT_CURRENCY_CODE, DEFAULT_DIGITS_INFO, DEFAULT_LANGUAGE, localeTypes } from '../constants';\nimport { ALIGNMENT_OPTIONS } from '../constants/alignment-options';\nimport { DEFAULT_TEXT_WORD_INVOICE, germanTextsInvoice } from '../constants/defaultTextWordInvoice';\nimport { IConfigurationInvoice, ITextWordInvoice, LanguageType } from '../model';\nimport { IAlignmentOptions, IColorSettings } from '../model/configInvoice.model';\n\nexport class ConfigurationInvoiceService {\n private _language: LanguageType = DEFAULT_LANGUAGE;\n private _textWords: ITextWordInvoice = this.getDefaultTextWords(this._language);\n private _pdfViewEnabled = false;\n private _quantityDecimalPlaces = DEFAULT_DIGITS_INFO;\n private _currencyCode = DEFAULT_CURRENCY_CODE;\n private _colorSettings: IColorSettings | null = null;\n private _alignmentOptions = ALIGNMENT_OPTIONS;\n private invoiceConfigSource = new BehaviorSubject<IConfigurationInvoice>(this.getDefaultInvoiceConfiguration());\n public invoiceConfig$: Observable<IConfigurationInvoice> = this.invoiceConfigSource.asObservable();\n\n constructor() {}\n\n public setInvoiceConfig(value: IConfigurationInvoice): void {\n if (value.quantityDecimalPlaces) {\n this._quantityDecimalPlaces = value.quantityDecimalPlaces;\n }\n if (value.language) {\n this._language = value.language;\n }\n this.invoiceConfigSource.next(value);\n }\n\n public getCurrentInvoiceConfig(): IConfigurationInvoice {\n return this.invoiceConfigSource.getValue();\n }\n\n public getTextWordsFromConfig(): Observable<ITextWordInvoice | null> {\n return this.invoiceConfig$.pipe(\n map((config) => config?.textWords || (config?.language ? this.getDefaultTextWords(config.language) : null)),\n map((textWords) => (textWords === null ? this._textWords : { ...textWords })),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getPdfViewEnabledFromConfig(): Observable<boolean> {\n return this.invoiceConfig$.pipe(\n map((config) => (config === null ? false : config.pdfViewEnabled || false)),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n public getAlignmentOptionsFromConfig(): Observable<IAlignmentOptions | null> {\n return this.invoiceConfig$.pipe(\n map((config) => config?.alignmentOptions || null),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n private getDefaultInvoiceConfiguration(): IConfigurationInvoice {\n return {\n textWords: this._textWords,\n pdfViewEnabled: this._pdfViewEnabled,\n language: this._language,\n quantityDecimalPlaces: this._quantityDecimalPlaces,\n colorSettings: this._colorSettings,\n alignmentOptions: this._alignmentOptions\n };\n }\n\n getColorSettingsFromConfig(): Observable<IColorSettings | null> {\n return this.invoiceConfig$.pipe(\n map((config) => config?.colorSettings || null),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n );\n }\n\n getDefaultTextWords(languageWord: LanguageType): ITextWordInvoice {\n return languageWord === 'de' ? germanTextsInvoice : DEFAULT_TEXT_WORD_INVOICE;\n }\n\n get locale(): string {\n return localeTypes[this._language];\n }\n\n set quantityDecimalPlaces(value: string) {\n this._quantityDecimalPlaces = value;\n }\n\n get quantityDecimalPlaces(): string {\n return this._quantityDecimalPlaces;\n }\n\n set currencyCode(value: string) {\n this._currencyCode = value;\n }\n\n get currencyCode(): string {\n return this._currencyCode;\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\n\nimport { ConfigurationInvoiceService } from '../services/configuration-invoice.service';\n\n@Pipe({\n name: 'currencyPlus',\n standalone: true\n})\nexport class CurrencyPlusPipe implements PipeTransform {\n currencyPipe = inject(CurrencyPipe);\n configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n transform(money?: number): string | null {\n return typeof money === 'number'\n ? this.currencyPipe.transform(\n money,\n this.configurationInvoiceService.currencyCode,\n 'symbol',\n '',\n this.configurationInvoiceService.locale\n )\n : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'lineSplit'\n})\nexport class LineSplitPipe implements PipeTransform {\n transform(value: string): string[] {\n if (value == null) {\n return [value];\n }\n\n return value.split(/\\r\\n?|\\n/);\n }\n}\n","import { PercentPipe } from '@angular/common';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\n\nimport { ConfigurationInvoiceService } from '../services/configuration-invoice.service';\n\n@Pipe({\n name: 'percentPlus'\n})\nexport class PercentPlusPipe implements PipeTransform {\n percentPipe = inject(PercentPipe);\n configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n transform(value?: number, digitsInfo?: string): string | null {\n return typeof value === 'number' ? this.percentPipe.transform(value, digitsInfo || '', this.configurationInvoiceService.locale) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { AttachmentMimeType } from '../model';\n\n@Pipe({\n name: 'invoiceAttachmentMimeType',\n standalone: true\n})\nexport class InvoiceAttachmentMimeTypePipe implements PipeTransform {\n transform(attachmentMimeType: AttachmentMimeType): string {\n switch (attachmentMimeType) {\n case AttachmentMimeType.Pdf:\n return 'PDF';\n case AttachmentMimeType.Png:\n return 'PNG';\n case AttachmentMimeType.Jpeg:\n return 'JPEG';\n case AttachmentMimeType.Csv:\n return 'CSV';\n case AttachmentMimeType.Excel:\n return 'Excel';\n case AttachmentMimeType.OpenOfficeSpreadsheet:\n return 'Open Office Spreadsheet';\n\n case AttachmentMimeType.Unknown:\n default:\n return 'Unknown';\n }\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, OnInit, ViewChild, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { SupportingDocument } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { InvoiceAttachmentMimeTypePipe } from '../../pipes/invoice-attachment-mime-type.pipe';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n selector: 'ava-invoice-documents',\n imports: [MatExpansionModule, MatButtonModule, InvoiceAttachmentMimeTypePipe, AsyncPipe],\n templateUrl: './invoice-documents.component.html',\n styleUrl: './invoice-documents.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InvoiceDocumentsComponent implements OnInit, AfterViewInit {\n private configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n documents = input<SupportingDocument[]>([]);\n\n @ViewChild('documentsPanel') documentsPanel: MatExpansionPanel | null = null;\n\n private destroyRef = inject(DestroyRef);\n\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n public pdfViewEnabled = false;\n\n ngOnInit(): void {\n this.configurationInvoiceService\n .getPdfViewEnabledFromConfig()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((pdfViewEnabled) => {\n this.pdfViewEnabled = pdfViewEnabled;\n });\n }\n\n ngAfterViewInit(): void {\n if (this.documentsPanel && this.pdfViewEnabled) {\n // In a static PDF view, we always want to open the documents panel\n this.documentsPanel.open();\n }\n }\n\n public download(documentValue: SupportingDocument): void {\n if (documentValue.documentBase64) {\n this.downloadAny(documentValue);\n } else {\n this.downloadLink(documentValue);\n }\n }\n\n private downloadAny(documentValue: SupportingDocument): void {\n if (documentValue.documentBase64) {\n const byteCharacters = atob(documentValue.documentBase64);\n const byteNumbers = new Array(byteCharacters.length);\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: 'application/octet-stream' });\n this.saveAs(blob, documentValue.fileName as string);\n }\n }\n\n private async downloadLink(documentValue: SupportingDocument): Promise<void> {\n try {\n const response = await fetch(documentValue.externalDocumentUrl as string);\n const blob = await response.blob();\n this.saveAs(blob, documentValue.fileName as string);\n } catch (error) {\n console.error(error);\n }\n }\n\n private saveAs(blob: Blob, fileName: string): void {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = fileName;\n link.click();\n }\n}\n","@if (textWords$ | async; as textWords) {\n @if ((colorSettings$ | async) || true; as colorSettings) {\n <mat-accordion>\n <mat-expansion-panel\n [hideToggle]=\"pdfViewEnabled\"\n #documentsPanel\n >\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ textWords.attachmentsHeading }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n @for (document of documents(); track document.documentReference) {\n <div class=\"document\">\n @if (document.documentReference) {\n <div>\n <strong>{{ textWords.attachmentsName }}: </strong>\n <span>{{ document.documentReference }}</span>\n </div>\n }\n @if (document.description) {\n <div>\n <strong>{{ textWords.attachmentsDescription }}: </strong>\n <span>{{ document.description }}</span>\n </div>\n }\n @if (document.externalDocumentUrl) {\n <div>\n <strong>{{ textWords.attachmentsUrl }}: </strong>\n <span>{{ document.externalDocumentUrl }}</span>\n </div>\n } @else if (document.documentBase64) {\n <div>\n <strong>{{ textWords.attachmentsDataSize }}: </strong>\n <span>{{ document.documentBase64.length }}</span>\n </div>\n\n @if (document.documentMimeType) {\n <div>\n <strong>{{ textWords.attachmentsMimeType }}: </strong>\n <span>{{ document.documentMimeType | invoiceAttachmentMimeType }}</span>\n </div>\n }\n }\n @if (document.fileName) {\n <div>\n <strong>{{ textWords.attachmentsFileName }}: </strong>\n <span>{{ document.fileName }}</span>\n </div>\n }\n @if (!pdfViewEnabled) {\n <button\n mat-raised-button\n [style.backgroundColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n color=\"primary\"\n (click)=\"download(document)\"\n [disabled]=\"!document.externalDocumentUrl && !document.documentBase64\"\n >\n <span [style.color]=\"colorSettings === true ? null : colorSettings?.textColor\">\n {{ textWords.attachmentsDownloadButton }}\n </span>\n </button>\n }\n </div>\n }\n </mat-expansion-panel>\n </mat-accordion>\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform, inject } from '@angular/core';\n\nimport { ConfigurationInvoiceService } from '../services/configuration-invoice.service';\n\n@Pipe({\n name: 'numberPlus'\n})\nexport class NumberPlusPipe implements PipeTransform {\n currencyPipe = inject(DecimalPipe);\n configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n transform(value?: number): string | null {\n return typeof value === 'number'\n ? this.currencyPipe.transform(value, this.configurationInvoiceService.quantityDecimalPlaces, this.configurationInvoiceService.locale)\n : '';\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { InvoiceLineItem } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n selector: 'ava-invoice-line-item-additional-info',\n imports: [AsyncPipe],\n templateUrl: './invoice-line-item-additional-info.component.html',\n styleUrl: './invoice-line-item-additional-info.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InvoiceLineItemAdditionalInfoComponent {\n @Input() lineItem!: InvoiceLineItem;\n private configurationInvoiceService = inject(ConfigurationInvoiceService);\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n}\n","@if (textWords$ | async; as textWords) {\n @if (lineItem) {\n @if (lineItem.allowances && lineItem.allowances.length) {\n <div>\n <h3>{{ textWords.lineItemAllowances }}</h3>\n <div class=\"allowances\">\n <p>\n <strong>{{ textWords.lineItemReason }}:</strong> {{ lineItem.allowances[0].reason }}\n </p>\n <p>\n <strong>{{ textWords.tableHeadNetAmount }}:</strong> {{ lineItem.allowances[0].netAmount }}\n </p>\n </div>\n </div>\n }\n @if (lineItem.charges && lineItem.charges.length) {\n <div>\n <h3>{{ textWords.lineItemCharges }}</h3>\n <div class=\"charges\">\n <p>\n <strong>{{ textWords.lineItemReason }}:</strong> {{ lineItem.charges[0].reason }}\n </p>\n <p>\n <strong>{{ textWords.tableHeadNetAmount }}:</strong> {{ lineItem.charges[0].netAmount }}\n </p>\n </div>\n </div>\n }\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { AsyncPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, inject, input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTableModule } from '@angular/material/table';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { InvoiceLineItem } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { CurrencyPlusPipe } from '../../pipes/currency-plus.pipe';\nimport { NumberPlusPipe } from '../../pipes/number-plus.pipe';\nimport { PercentPlusPipe } from '../../pipes/percent-plus.pipe';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\nimport { InvoiceLineItemAdditionalInfoComponent } from '../invoice-line-item-additional-info/invoice-line-item-additional-info.component';\n\nexport interface IInvoiceLineItemsPuls extends InvoiceLineItem {\n indentLevel: number | undefined;\n}\n\n@Component({\n selector: 'ava-invoice-line-items-table',\n animations: [\n trigger('detailExpand', [\n state('collapsed,void', style({ height: '0px', minHeight: '0' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\n ])\n ],\n imports: [\n PercentPlusPipe,\n CurrencyPlusPipe,\n NumberPlusPipe,\n AsyncPipe,\n MatTableModule,\n MatButtonModule,\n NgClass,\n InvoiceLineItemAdditionalInfoComponent\n ],\n templateUrl: './invoice-line-items-table.component.html',\n styleUrl: './invoice-line-items-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InvoiceLineItemsTableComponent implements OnInit {\n lineItems = input<InvoiceLineItem[]>([]);\n flatLineItems: IInvoiceLineItemsPuls[] = [];\n private configurationInvoiceService = inject(ConfigurationInvoiceService);\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n readonly pdfViewEnabled$: Observable<boolean> = this.configurationInvoiceService.getPdfViewEnabledFromConfig();\n readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n\n public readonly displayedColumns = ['number', 'description', 'quantity', 'unit', 'netPrice', 'vat', 'discount', 'netAmount'];\n\n private expandedElements: Set<IInvoiceLineItemsPuls> = new Set();\n\n ngOnInit() {\n this.flatLineItems = this.getFlatLineItems(this.lineItems(), 0);\n }\n\n public toggleRow(row: IInvoiceLineItemsPuls) {\n if (this.expandedElements.has(row)) {\n this.expandedElements.delete(row);\n } else {\n this.expandedElements.add(row);\n }\n }\n\n public isRowExpanded(row: IInvoiceLineItemsPuls): boolean {\n return this.expandedElements.has(row);\n }\n\n private getFlatLineItems(lineItemsList: InvoiceLineItem[], indentLevel: number): IInvoiceLineItemsPuls[] {\n return lineItemsList.reduce((acc: IInvoiceLineItemsPuls[], lineItem: InvoiceLineItem) => {\n acc.push({ ...lineItem, indentLevel });\n if (lineItem.subItems && lineItem.subItems.length) {\n acc.push(...this.getFlatLineItems(lineItem.subItems, indentLevel + 1));\n }\n return acc;\n }, []);\n }\n}\n","@if (textWords$ | async; as textWords) {\n @if ((colorSettings$ | async) || true; as colorSettings) {\n <table\n mat-table\n [dataSource]=\"flatLineItems\"\n multiTemplateDataRows\n class=\"mat-elevation-z8 invoice-table\"\n >\n <ng-container matColumnDef=\"number\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n #\n </th>\n <td\n mat-cell\n *matCellDef=\"let element; let i = dataIndex\"\n [class.children]=\"element.indentLevel\"\n >\n {{ element.identifier || element.objectIdentifier || i + 1 }}\n @if (element.indentLevel) {\n <div\n class=\"children-mark\"\n [style.width.px]=\"element.indentLevel * 8\"\n ></div>\n }\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.tableHeadDescription }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n >\n {{ element.itemInformation?.description || element.itemInformation?.name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"quantity\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.tableHeadQuantity }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n >\n {{ element.quantity | numberPlus }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"unit\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.tableHeadUnit }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n >\n {{ element.unitCode }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"netPrice\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.tableHeadNetPrice }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"currency-table-cell\"\n >\n {{ element.priceDetails?.netPrice | currencyPlus }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"discount\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.lineItemDiscount }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"currency-table-cell\"\n >\n @if (element.priceDetails?.absoluteDiscountPerItem) {\n {{ element.priceDetails?.absoluteDiscountPerItem | currencyPlus }}\n }\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"netAmount\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.tableHeadNetAmount }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"currency-table-cell\"\n >\n {{ element.netAmount | currencyPlus }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"vat\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.vat }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"currency-table-cell\"\n >\n @if (element && element.vatInformation && element.vatInformation.length > 0) {\n {{ element.vatInformation[0].vatRate | percentPlus: '1.0-2' }}\n }\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td\n mat-cell\n *matCellDef=\"let element\"\n [attr.colspan]=\"displayedColumns.length\"\n >\n <div [@detailExpand]=\"isRowExpanded(element) || (pdfViewEnabled$ | async) ? 'expanded' : 'collapsed'\">\n <ava-invoice-line-item-additional-info [lineItem]=\"element\"></ava-invoice-line-item-additional-info>\n </div>\n </td>\n </ng-container>\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns\"\n ></tr>\n\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"(row.allowances || row.charges) && toggleRow(row)\"\n [ngClass]=\"{\n expanding: !(pdfViewEnabled$ | async) && (row.allowances || row.charges),\n 'expanded-row': isRowExpanded(row) && colorSettings === true,\n 'expanded-row-pdf-view': (pdfViewEnabled$ | async) && !row.indentLevel,\n }\"\n [style.backgroundColor]=\"\n colorSettings === true ? null : isRowExpanded(row) ? 'color-mix(in srgb,' + colorSettings?.backgroundColor + ', white 70%)' : null\n \"\n ></tr>\n\n <tr\n mat-row\n *matRowDef=\"let row; columns: ['expandedDetail']\"\n class=\"detail-row\"\n ></tr>\n </table>\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { Organization } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n selector: 'ava-organization-info',\n imports: [AsyncPipe, MatDividerModule],\n templateUrl: './organization-info.component.html',\n styleUrls: ['./organization-info.component.scss']\n})\nexport class OrganizationInfoComponent {\n organizationInfo = input<Organization | null>(null);\n private configurationInvoiceService = inject(ConfigurationInvoiceService);\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n}\n","@if (textWords$ | async; as textWords) {\n @if ((colorSettings$ | async) || true; as colorSettings) {\n @if (organizationInfo(); as organizationInfo) {\n <div class=\"buyer-info\">\n <ng-content #header></ng-content>\n\n <p>\n <strong>{{ organizationInfo.name }}</strong>\n </p>\n <p>{{ organizationInfo.address }}</p>\n <p>{{ organizationInfo.city }}, {{ organizationInfo.zipCode }}</p>\n <p>{{ organizationInfo.countryCode }}</p>\n @if (organizationInfo.vatId) {\n <p>\n <strong>{{ textWords.vatId }}: </strong>\n <br />\n <span>{{ organizationInfo.vatId }}</span>\n </p>\n }\n <mat-divider></mat-divider>\n @if (organizationInfo.contactPersonName) {\n <p>\n <strong>{{ textWords.contactPersonName }}: </strong>\n <br />\n <span>{{ organizationInfo.contactPersonName }}</span>\n </p>\n }\n @if (organizationInfo.contactPersonPhone) {\n <p>\n <strong>{{ textWords.contactPersonPhone }}: </strong>\n <br />\n <span>{{ organizationInfo.contactPersonPhone }}</span>\n </p>\n }\n @if (organizationInfo.contactPersonEmail) {\n <p>\n <strong>{{ textWords.contactPersonEmail }}: </strong>\n <br />\n <span>{{ organizationInfo.contactPersonEmail }}</span>\n </p>\n }\n </div>\n }\n }\n}\n","import { AsyncPipe, DatePipe } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { DeliveryInformation, References } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n selector: 'ava-reference-and-delivery-information',\n imports: [AsyncPipe, DatePipe],\n templateUrl: './reference-and-delivery-information.component.html',\n styleUrl: './reference-and-delivery-information.component.scss'\n})\nexport class ReferenceAndDeliveryInformationComponent {\n deliveryInformation = input<DeliveryInformation | null>(null);\n references = input<References | null>(null);\n public configurationInvoiceService = inject(ConfigurationInvoiceService);\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n}\n","@if (textWords$ | async; as textWords) {\n @if ((colorSettings$ | async) || true; as colorSettings) {\n <div class=\"invoice-info\">\n <section class=\"invoice-references\">\n @if (textWords.referencesTopic) {\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.referencesTopic }}\n </h2>\n }\n <div class=\"invoice-references-details\">\n @if (references()?.buyerReference) {\n <p>\n <strong>{{ textWords.referencesBuyerReference }}: </strong>\n <br />\n <span>{{ references()?.buyerReference }}</span>\n </p>\n }\n @if (references()?.projectReference) {\n <p>\n <strong>{{ textWords.referencesProjectReference }}: </strong>\n <br />\n <span>{{ references()?.projectReference }}</span>\n </p>\n }\n @if (references()?.contractReference) {\n <p>\n <strong>{{ textWords.referencesContractReference }}: </strong>\n <br />\n <span>{{ references()?.contractReference }}</span>\n </p>\n }\n @if (references()?.purchaseOrderReference) {\n <p>\n <strong>{{ textWords.referencesPurchaseOrderReference }}: </strong>\n <br />\n <span>{{ references()?.purchaseOrderReference }}</span>\n </p>\n }\n @if (references()?.salesOrderReference) {\n <p>\n <strong>{{ textWords.referencesSalesOrderReference }}: </strong>\n <br />\n <span>{{ references()?.salesOrderReference }}</span>\n </p>\n }\n @if (references()?.receivingAdviceReference) {\n <p>\n <strong>{{ textWords.referencesReceivingAdviceReference }}: </strong>\n <br />\n <span>{{ references()?.receivingAdviceReference }}</span>\n </p>\n }\n @if (references()?.dispatchAdviceReference) {\n <p>\n <strong>{{ textWords.referencesDispatchAdviceReference }}: </strong>\n <br />\n <span> {{ references()?.dispatchAdviceReference }}</span>\n </p>\n }\n @if (references()?.tenderOrLotReference) {\n <p>\n <strong>{{ textWords.referencesTenderOrLotReference }}: </strong>\n <br />\n <span>{{ references()?.tenderOrLotReference }}</span>\n </p>\n }\n @if (references()?.invoicedObjectIdentifier) {\n <p>\n <strong>{{ textWords.referencesInvoicedObjectIdentifier }}: </strong>\n <br />\n <span>{{ references()?.invoicedObjectIdentifier }}</span>\n </p>\n }\n </div>\n </section>\n @if (deliveryInformation()) {\n <section class=\"invoice-delivery\">\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.deliveryInformationTitle }}\n </h2>\n\n @if (deliveryInformation()?.deliverToName) {\n <p>\n <strong>{{ textWords.deliverToName }}: </strong>\n <br />\n <span>{{ deliveryInformation()?.deliverToName }}</span>\n </p>\n }\n @if (deliveryInformation()?.deliverToLocationIdentifier) {\n <p>\n <strong>{{ textWords.deliverToLocationIdentifier }}: </strong>\n <br />\n <span>{{ deliveryInformation()?.deliverToLocationIdentifier }}</span>\n </p>\n }\n @if (deliveryInformation()?.deliveryDate) {\n <p>\n <strong>{{ textWords.deliveryDate }}: </strong>\n <br />\n <span>{{\n configurationInvoiceService.locale === 'de-DE'\n ? (deliveryInformation()?.deliveryDate | date: 'dd.MM.yyyy')\n : (deliveryInformation()?.deliveryDate | date: 'dd/MM/yyyy')\n }}</span>\n </p>\n }\n @if (deliveryInformation()?.deliveryAddress) {\n <p>\n <strong>{{ textWords.deliveryAddress }}: </strong>\n <span>\n @if (deliveryInformation()?.deliveryAddress?.address) {\n <p>{{ deliveryInformation()?.deliveryAddress?.address }}</p>\n }\n @if (deliveryInformation()?.deliveryAddress?.city) {\n <span>{{ deliveryInformation()?.deliveryAddress?.city }},</span>\n }\n @if (deliveryInformation()?.deliveryAddress?.zipCode) {\n <span>{{ deliveryInformation()?.deliveryAddress?.zipCode }}</span>\n }\n @if (deliveryInformation()?.deliveryAddress?.countryCode) {\n <p>{{ deliveryInformation()?.deliveryAddress?.countryCode }}</p>\n }\n </span>\n </p>\n }\n </section>\n }\n </div>\n }\n}\n","import { AsyncPipe, CurrencyPipe, DatePipe, DecimalPipe, PercentPipe, registerLocaleData } from '@angular/common';\nimport localeDe from '@angular/common/locales/de';\nimport localeEn from '@angular/common/locales/en';\nimport localeDeExtra from '@angular/common/locales/extra/de';\nimport localeEnExtra from '@angular/common/locales/extra/en';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n LOCALE_ID,\n OnInit,\n effect,\n inject,\n input,\n linkedSignal,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { Observable } from 'rxjs';\n\nimport { IConfigurationInvoice, ITextWordInvoice } from '../../model';\nimport { Invoice } from '../../model';\nimport { IAlignmentOptions, IColorSettings } from '../../model/configInvoice.model';\nimport { CurrencyPlusPipe } from '../../pipes/currency-plus.pipe';\nimport { LineSplitPipe } from '../../pipes/line-split.pipe';\nimport { PercentPlusPipe } from '../../pipes/percent-plus.pipe';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\nimport { InvoiceDocumentsComponent } from '../invoice-documents/invoice-documents.component';\nimport { InvoiceLineItemsTableComponent } from '../invoice-line-items-table/invoice-line-items-table.component';\nimport { OrganizationInfoComponent } from '../organization-info/organization-info.component';\nimport { ReferenceAndDeliveryInformationComponent } from '../reference-and-delivery-information/reference-and-delivery-information.component';\n\nregisterLocaleData(localeDe, 'de-DE', localeDeExtra);\nregisterLocaleData(localeEn, 'en-US', localeEnExtra);\n\n@Component({\n selector: 'ava-invoice-display',\n imports: [\n PercentPlusPipe,\n CurrencyPlusPipe,\n DatePipe,\n AsyncPipe,\n MatDividerModule,\n InvoiceDocumentsComponent,\n MatIconModule,\n InvoiceLineItemsTableComponent,\n ReferenceAndDeliveryInformationComponent,\n OrganizationInfoComponent,\n LineSplitPipe\n ],\n templateUrl: './invoice-display.component.html',\n styleUrl: './invoice-display.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n ConfigurationInvoiceService,\n CurrencyPipe,\n DecimalPipe,\n PercentPipe,\n {\n provide: LOCALE_ID,\n useFactory: (configurationInvoiceService: ConfigurationInvoiceService) => configurationInvoiceService.locale,\n deps: [ConfigurationInvoiceService]\n }\n ]\n})\nexport class InvoiceDisplayComponent implements OnInit {\n configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n private transformFn = (invoice: Invoice | string) => {\n if (typeof invoice === 'string') {\n let parsedInvoice: Invoice;\n\n try {\n parsedInvoice = JSON.parse(invoice);\n } catch (e) {\n return null;\n }\n\n return parsedInvoice;\n } else {\n return invoice;\n }\n };\n\n readonly invoice = input.required<Invoice | null, Invoice>({ transform: this.transformFn });\n readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n readonly pdfViewEnabled$: Observable<boolean> = this.configurationInvoiceService.getPdfViewEnabledFromConfig();\n readonly alignmentOptions$: Observable<IAlignmentOptions | null> = this.configurationInvoiceService.getAlignmentOptionsFromConfig();\n private readonly currencyCode = linkedSignal(() => this.invoice()?.currencyCode || '');\n /**\n * You can supply a map of strings to be used for the text in the tree. This allows you to translate\n * the text in the tree to other languages.\n * {\n * invoiceTitle: string;\n * vatId: string;\n * detailsInvoiceNumber: string;\n * detailsInvoiceDate: string;\n * detailsPaymentDueDate: string;\n * detailsCurrencyCode: string;\n * detailsPaymentTerms: string;\n * referencesTopic: string;\n * referencesBuyerReference: string;\n * referencesProjectReference: string;\n * referencesContractReference: string;\n * referencesPurchaseOrderReference: string;\n * referencesSalesOrderReference: string;\n * referencesReceivingAdviceReference: string;\n * referencesDispatchAdviceReference: string;\n * referencesTenderOrLotReference: string;\n * referencesInvoicedObjectIdentifier: string;\n * tableHeadDescription: string;\n * tableHeadQuantity: string;\n * tableHeadUnit: string;\n * tableHeadNetPrice: string;\n * tableHeadNetAmount: string;\n * totalsTopic: string;\n * totalsTotalNet: string;\n * totalsTotalAllowances: string;\n * totalsTotalCharges: string;\n * totalsTotalAfterDeductions: string;\n * totalsTotalVatAmount: string;\n * totalsTotalGross: string;\n * totalsAlreadyPaidTotal: string;\n * totalsTotalToBePaid: string;\n * instructionsTopic: string;\n * instructionsAccountIdentifier: string;\n * instructionsAccountName: string;\n * instructionsServiceProviderIdentifier: string;\n * notesTopic: string;\n * attachmentsHeading: string;\n * attachmentsName: string;\n * attachmentsDescription: string;\n * attachmentsUrl: string;\n * attachmentsDataSize: string;\n * attachmentsMimeType: string;\n * attachmentsFileName: string;\n * attachmentsDownloadButton: string;\n *\n * }\n */\n readonly config = input.required<IConfigurationInvoice | null, IConfigurationInvoice>({\n transform: (config: IConfigurationInvoice) => {\n if (typeof config === 'string') {\n let parsedConfig: IConfigurationInvoice;\n\n try {\n parsedConfig = JSON.parse(config);\n } catch (e) {\n return null;\n }\n\n return parsedConfig;\n } else {\n return config;\n }\n }\n });\n\n private readonly linkedConfig = linkedSignal(() => {\n return { ...this.configurationInvoiceService.getCurrentInvoiceConfig(), ...this.config(), textWords: this.config()?.textWords };\n });\n invoiceTitle = signal<string>('');\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n effect(() => {\n if (this.invoice() === null) {\n console.error('Invalid JSON string provided. Please provide a valid JSON object.');\n }\n });\n }\n\n ngOnInit(): void {\n this.configurationInvoiceService.currencyCode = this.currencyCode();\n this.configurationInvoiceService.setInvoiceConfig(this.linkedConfig());\n\n this.configurationInvoiceService\n .getTextWordsFromConfig()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((textWords) => {\n if (textWords) {\n const invoiceType = this.invoice()?.invoiceType;\n if (invoiceType) {\n this.invoiceTitle.set(textWords.invoiceTitle[invoiceType]);\n }\n }\n });\n }\n}\n","@if (textWords$ | async; as textWords) {\n @if ((colorSettings$ | async) || true; as colorSettings) {\n @if (invoice() !== null) {\n <div class=\"invoice-container\">\n <!-- Seller and Buyer Information -->\n <h1 class=\"invoice-title\">{{ invoiceTitle() }}</h1>\n\n <header class=\"invoice-header\">\n <div class=\"buyer-info\">\n <ava-organization-info [organizationInfo]=\"invoice()?.buyer || null\">\n <h2\n class=\"header-title\"\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceBuyerTitle }}\n </h2>\n </ava-organization-info>\n </div>\n <div class=\"invoice-details\">\n @if (invoice()?.invoiceNumber) {\n <p>\n <strong>{{ textWords.detailsInvoiceNumber }}: </strong>\n <span>{{ invoice()?.invoiceNumber }}</span>\n </p>\n }\n @if (invoice()?.invoiceDate) {\n <div class=\"invoice-date\">\n <strong>{{ textWords.detailsInvoiceDate }}: </strong>\n <span>\n {{\n configurationInvoiceService.locale === 'de-DE'\n ? (invoice()?.invoiceDate | date: 'dd.MM.yyyy')\n : (invoice()?.invoiceDate | date: 'dd/MM/yyyy')\n }}</span\n >\n </div>\n }\n @if (invoice()?.paymentDueDate) {\n <div class=\"invoice-date\">\n <strong>{{ textWords.detailsPaymentDueDate }}: </strong>\n <span>\n {{\n configurationInvoiceService.locale === 'de-DE'\n ? (invoice()?.paymentDueDate | date: 'dd.MM.yyyy')\n : (invoice()?.paymentDueDate | date: 'dd/MM/yyyy')\n }}</span\n >\n </div>\n }\n @if (invoice()?.currencyCode) {\n <p>\n <strong>{{ textWords.detailsCurrencyCode }}: </strong>\n <span>{{ invoice()?.currencyCode }}</span>\n </p>\n }\n @if (invoice()?.paymentTerms) {\n <p>\n <strong>{{ textWords.detailsPaymentTerms }}: </strong>\n <span>{{ invoice()?.paymentTerms }}</span>\n </p>\n }\n </div>\n\n <div class=\"seller-tax-representive\">\n <ava-organization-info [organizationInfo]=\"invoice()?.sellerTaxRepresentative || null\">\n <h2\n class=\"header-title\"\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceSellerTaxRepresentativeTitle }}\n </h2>\n </ava-organization-info>\n </div>\n <div class=\"seller-info\">\n <ava-organization-info [organizationInfo]=\"invoice()?.seller || null\">\n <h2\n class=\"header-title\"\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceSellerTitle }}\n </h2>\n </ava-organization-info>\n </div>\n </header>\n <mat-divider></mat-divider>\n\n <ava-reference-and-delivery-information\n [deliveryInformation]=\"invoice()?.deliveryInformation || null\"\n [references]=\"invoice()?.references || null\"\n ></ava-reference-and-delivery-information>\n <ava-invoice-line-items-table [lineItems]=\"invoice()?.lineItems || []\"></ava-invoice-line-items-table>\n\n <div class=\"addition-info\">\n <section class=\"taxes-and-allowances\">\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.taxesHeading }}\n </h2>\n <table class=\"tax-report-table\">\n <thead>\n <tr>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.vat }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.totalsTotalNet }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.totalsTotalVatAmount }}\n </th>\n </tr>\n </thead>\n <tbody>\n @for (tax of invoice()?.vatBreakdown; track tax.taxRate) {\n @if (tax.vatExemptionReasonText || tax.vatExemptionReasonCode) {\n <tr>\n <td colspan=\"3\">\n <span>{{ tax.vatExemptionReasonText }} / {{ tax.vatExemptionReasonCode }}</span>\n </td>\n </tr>\n }\n\n <tr>\n <td class=\"currency-table-cell\">\n @if (tax.taxRate != null) {\n <span>{{ tax.taxRate | percentPlus: '1.0-2' }}</span>\n }\n </td>\n <td class=\"currency-table-cell\">\n @if (tax.netTaxableAmount != null) {\n <span>{{ tax.netTaxableAmount | currencyPlus }}</span>\n }\n </td>\n <td class=\"currency-table-cell\">\n @if (tax.vatAmount != null) {\n <span>{{ tax.vatAmount | currencyPlus }}</span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n @if (invoice()?.allowances && (invoice()?.allowances?.length || 0) > 0) {\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.invoiceAllowancesHeader }}\n </h2>\n\n <table class=\"tax-report-table\">\n <thead>\n <tr>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceAllowancesTableHeaderSum }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceAllowancesTableHeaderVatRate }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceAllowancesTableHeaderAllowance }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceAllowancesTableHeaderBase }}\n </th>\n </tr>\n </thead>\n <tbody>\n @for (allowance of invoice()?.allowances; track allowance) {\n <tr>\n <td colspan=\"4\">\n @if (allowance.reason && allowance.reasonCode) {\n <span>{{ allowance.reason }} / {{ allowance.reasonCode }}</span>\n }\n @if (allowance.reason && !allowance.reasonCode) {\n <span>{{ allowance.reason }}</span>\n }\n\n @if (!allowance.reason && allowance.reasonCode) {\n <span>{{ allowance.reasonCode }}</span>\n }\n </td>\n </tr>\n <tr>\n <td class=\"currency-table-cell\">\n <span>\n {{ allowance.netAmount | currencyPlus }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ allowance.vatRate | percentPlus: '1.0-2' }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ allowance.relativeAllowancePercentage | percentPlus: '1.0-2' }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ allowance.relativeAllowanceBaseAmount | currencyPlus }}\n </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n @if (invoice()?.charges && (invoice()?.charges?.length || 0) > 0) {\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.invoiceChargesHeader }}\n </h2>\n\n <table class=\"tax-report-table\">\n <thead>\n <tr>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceChargesTableHeaderSum }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceChargesTableHeaderVatRate }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceChargesTableHeaderCharge }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.invoiceChargesTableHeaderBase }}\n </th>\n </tr>\n </thead>\n <tbody>\n @for (charge of invoice()?.charges; track charge) {\n <tr>\n <td colspan=\"4\">\n @if (charge.reason && charge.reasonCode) {\n <span>{{ charge.reason }} / {{ charge.reasonCode }}</span>\n }\n @if (charge.reason && !charge.reasonCode) {\n <span>{{ charge.reason }}</span>\n }\n\n @if (!charge.reason && charge.reasonCode) {\n <span>{{ charge.reasonCode }}</span>\n }\n </td>\n </tr>\n <tr>\n <td class=\"currency-table-cell\">\n <span>\n {{ charge.netAmount | currencyPlus }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ charge.vatRate | percentPlus: '1.0-2' }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ charge.relativeChargePercentage | percentPlus: '1.0-2' }}\n </span>\n </td>\n <td class=\"currency-table-cell\">\n <span>\n {{ charge.relativeChargeBaseAmount | currencyPlus }}\n </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n </section>\n\n <section class=\"payment-instructions\">\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.instructionsTopic }}\n </h2>\n @if (invoice()?.paymentInstructions?.description) {\n <p>{{ invoice()?.paymentInstructions?.description }}</p>\n }\n @for (means of invoice()?.paymentInstructions?.paymentMeans; track means) {\n <div>\n @if (means.accountIdentifier) {\n <p>\n <strong>{{ textWords.instructionsAccountIdentifier }}: </strong>\n <br />\n <span>{{ means.accountIdentifier }}</span>\n </p>\n }\n @if (means.accountName) {\n <p>\n <strong>{{ textWords.instructionsAccountName }}: </strong>\n <br />\n <span>{{ means.accountName }}</span>\n </p>\n }\n @if (means.serviceProviderIdentifier) {\n <p>\n <strong>{{ textWords.instructionsServiceProviderIdentifier }}: </strong>\n <br />\n <span>{{ means.serviceProviderIdentifier }}</span>\n </p>\n }\n </div>\n }\n </section>\n\n <section class=\"invoice-totals\">\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.totalsTopic }}\n </h2>\n\n @if (invoice()?.totals?.totalNet) {\n <p>\n <strong>{{ textWords.totalsTotalNet }}: </strong>\n <br />\n <span>{{ invoice()?.totals?.totalNet | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalAllowances) {\n <p>\n <strong>{{ textWords.totalsTotalAllowances }}: </strong>\n <br />\n <span> {{ invoice()?.totals?.totalAllowances | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalCharges) {\n <p>\n <strong>{{ textWords.totalsTotalCharges }}: </strong>\n <br />\n <span> {{ invoice()?.totals?.totalCharges | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalAfterDeductions) {\n <p>\n <strong>{{ textWords.totalsTotalAfterDeductions }}: </strong>\n <br />\n <span>{{ invoice()?.totals?.totalAfterDeductions | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalVatAmount) {\n <p>\n <strong>{{ textWords.totalsTotalVatAmount }}: </strong>\n <br />\n <span>{{ invoice()?.totals?.totalVatAmount | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalGross) {\n <p>\n <strong>{{ textWords.totalsTotalGross }}: </strong>\n <br />\n <span> {{ invoice()?.totals?.totalGross | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.alreadyPaidTotal) {\n <p>\n <strong>{{ textWords.totalsAlreadyPaidTotal }}: </strong>\n <br />\n <span>{{ invoice()?.totals?.alreadyPaidTotal | currencyPlus }}</span>\n </p>\n }\n @if (invoice()?.totals?.totalToBePaid) {\n <p\n class=\"total\"\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n <strong>{{ textWords.totalsTotalToBePaid }}: </strong>\n <br />\n <strong> {{ invoice()?.totals?.totalToBePaid | currencyPlus }}</strong>\n </p>\n }\n </section>\n </div>\n @if (invoice()?.previousInvoices && invoice()?.previousInvoices?.length) {\n <section\n class=\"previous-invoices\"\n [style]=\"{\n justifyContent: (alignmentOptions$ | async)?.previousInvoiceAlignment || '',\n }\"\n >\n <div class=\"previous-invoices-wrapper\">\n <h2\n class=\"info-title\"\n [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n >\n {{ textWords.previousInvoicesTopic }}\n </h2>\n\n <table class=\"previous-invoices-table\">\n <thead>\n <tr>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.previousInvoiceNumber }}\n </th>\n <th\n [style]=\"{\n backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n color: colorSettings === true ? null : colorSettings?.textColor,\n }\"\n >\n {{ textWords.previousInvoiceDate }}\n </th>\n </tr>\n </thead>\n <tbody>\n @for (prevInvoice of invoice()?.previousInvoices; track prevInvoice) {\n <tr>\n <td>\n {{ prevInvoice.invoiceNumber }}\n </td>\n <td>\n {{ prevInvoice.invoiceDate | date: 'shortDate' }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </section>\n }\n\n @if (invoice()?.invoiceNotes?.length) {\n <section class=\"invoice-notes\">\n <h2>{{ textWords.notesTopic }}</h2>\n @for (note of invoice()?.invoiceNotes; track note) {\n <div>\n @if (note?.shortText) {\n <p>\n <strong>{{ note?.shortText }}</strong>\n </p>\n }\n @if (note?.longText) {\n <p>\n @for (line of note.longText! | lineSplit; track line; let isLast = $last) {\n {{ line }}\n\n @if (!isLast) {\n <br />\n }\n }\n </p>\n }\n </div>\n }\n </section>\n }\n @if (invoice()?.documents?.length) {\n <section class=\"invoice-attachments\">\n <ava-invoice-documents [documents]=\"invoice()?.documents || []\"></ava-invoice-documents>\n </section>\n }\n </div>\n } @else if (invoice() === null && (pdfViewEnabled$ | async)) {\n <div class=\"error-container\">\n <div class=\"error-message\">\n <mat-icon>error_outline</mat-icon>\n <h2>Oops! Something went wrong.</h2>\n <p>We couldn't retrieve the invoice data. Please try again later.</p>\n </div>\n </div>\n } @else {\n <div></div>\n }\n }\n}\n","/*\n * Public API Surface of angular-ava\n */\n\nexport * from './lib/ava-tree/model';\nexport * from './lib/version';\nexport * from './lib/ava-tree/components/ava-tree/ava-tree.component';\nexport * from './lib/ava-tree/constants';\nexport * from './lib/invoice/components/invoice-display/invoice-display.component';\nexport * from './lib/invoice/constants';\nexport * from './lib/invoice/model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i4"],"mappings":"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"}
|