@vergelijkdirect/comparison-forms 2.0.2 → 2.1.0-ver-9053.1

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.
Files changed (60) hide show
  1. package/README.md +5 -5
  2. package/dist/vue/VdInput-CRb-iTiH.js +145 -0
  3. package/dist/vue/VdPopover-B78nVpNU.js +200 -0
  4. package/dist/vue/VdRadioGroup-D5kHcpsY.js +166 -0
  5. package/dist/vue/VdSearchableSelect-THqVGo_Q.js +209 -0
  6. package/dist/vue/VdSelect-Dv35x4sz.js +112 -0
  7. package/dist/vue/bike-Ch7ZcSpI.js +2 -0
  8. package/dist/vue/bike.presenter-CdCny1-M.js +1673 -0
  9. package/dist/vue/birthdate.schema-B9q6IeIR.js +91 -0
  10. package/dist/vue/businessCar.presenter-DR-Ozf6B.js +121 -0
  11. package/dist/vue/businessLiability-w4xhGnik.js +2 -0
  12. package/dist/vue/businessLiability.presenter-8iyRbLgw.js +80 -0
  13. package/dist/vue/car-business-DMYPV4UK.js +2 -0
  14. package/dist/vue/car-jPvIXEVK.js +2 -0
  15. package/dist/vue/car.presenter-gd62kiqS.js +130 -0
  16. package/dist/vue/caravan-B8l6zEkk.js +2 -0
  17. package/dist/vue/caravan.presenter-Cr5vuB_r.js +157 -0
  18. package/dist/vue/company.schema-DStHJpGH.js +241 -0
  19. package/dist/vue/comparison-forms.d.ts +34 -34
  20. package/dist/vue/comparison-forms.js +119 -5590
  21. package/dist/vue/date.util-DjJZwKvn.js +24 -0
  22. package/dist/vue/familyComposition.enum-D26VYo_a.js +6 -0
  23. package/dist/vue/familyComposition.schema-CNMH-wP0.js +75 -0
  24. package/dist/vue/house-BtQscoRa.js +2 -0
  25. package/dist/vue/house.presenter-DLeGfJAY.js +118 -0
  26. package/dist/vue/houseOwnedBuilding.model-BLLI1Vm0.js +14 -0
  27. package/dist/vue/itc-KSDsJZsI.js +10 -0
  28. package/dist/vue/legal-BjG3LO5G.js +2 -0
  29. package/dist/vue/legal.presenter-CwEVdXZJ.js +100 -0
  30. package/dist/vue/liability-_Sp33TSY.js +2 -0
  31. package/dist/vue/liability.presenter-C_5O-OQm.js +110 -0
  32. package/dist/vue/loan-T0OYMmxG.js +2 -0
  33. package/dist/vue/loan.presenter-CEZ3PcSo.js +198 -0
  34. package/dist/vue/messages-DRFu-PCu.js +40 -0
  35. package/dist/vue/moped-D9KUmwn6.js +2 -0
  36. package/dist/vue/moped.presenter-DazWxVEM.js +133 -0
  37. package/dist/vue/motor-BEAQ5N4w.js +2 -0
  38. package/dist/vue/motor.presenter-e_ESWwhI.js +130 -0
  39. package/dist/vue/package-DjsxU0ny.js +2 -0
  40. package/dist/vue/package.presenter-BA6S0X_L.js +137 -0
  41. package/dist/vue/pet-Bguvk2H4.js +2 -0
  42. package/dist/vue/pet.presenter-BpDDlFSQ.js +170 -0
  43. package/dist/vue/rules-3BZkSj_K.js +13 -0
  44. package/dist/vue/travel-C_cvpQNA.js +2 -0
  45. package/dist/vue/travel.presenter-DeoXBmrT.js +108 -0
  46. package/dist/vue/useAddress-C-h1pGI5.js +245 -0
  47. package/dist/vue/useLicensePlate-wAVrX9tr.js +187 -0
  48. package/dist/vue/useValidator-B8ZuqyvJ.js +535 -0
  49. package/dist/vue/yesNo-BvJlCm7Y.js +6 -0
  50. package/dist/wc/comparison-forms.js +14836 -14413
  51. package/dist/wc-noitc/comparison-forms.umd.cjs +3 -3
  52. package/package.json +1 -1
  53. package/dist/client/.vite/ssr-manifest.json +0 -600
  54. package/dist/client/assets/index-6Enzr9rU.css +0 -4
  55. package/dist/client/assets/index-6Enzr9rU.css.br +0 -0
  56. package/dist/client/assets/index-DUchBxEo.js +0 -57
  57. package/dist/client/assets/index-DUchBxEo.js.br +0 -0
  58. package/dist/client/index.html +0 -15
  59. package/dist/server/entry-server.js +0 -9981
  60. package/dist/server/entry-server.js.br +0 -0
@@ -0,0 +1,241 @@
1
+ import { t as e } from "./VdSearchableSelect-THqVGo_Q.js";
2
+ import { n as t } from "./itc-KSDsJZsI.js";
3
+ import { computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createSlots as s, createTextVNode as c, defineComponent as l, mergeModels as u, mergeProps as d, normalizeClass as f, openBlock as p, ref as m, renderSlot as h, toDisplayString as g, unref as _, useAttrs as v, useModel as y, useSlots as b, watch as x, withCtx as S } from "vue";
4
+ import { refDebounced as C, useAsyncState as w } from "@vueuse/core";
5
+ import { mixed as T } from "yup";
6
+ //#region src/components/ui/VdNotification.vue?vue&type=script&setup=true&lang.ts
7
+ var E = { class: "vd-notification__content" }, D = {
8
+ key: 0,
9
+ class: "vd-notification__title"
10
+ }, O = /* @__PURE__ */ l({
11
+ __name: "VdNotification",
12
+ props: {
13
+ type: { default: "warning" },
14
+ title: { default: "" },
15
+ text: { default: "" },
16
+ small: {
17
+ type: Boolean,
18
+ default: !1
19
+ },
20
+ icon: { default: "" }
21
+ },
22
+ setup(e) {
23
+ let t = {
24
+ warning: "fas fa-exclamation-circle",
25
+ informative: "fas fa-info-circle",
26
+ success: "fas fa-check-circle",
27
+ error: "fas fa-times-circle"
28
+ };
29
+ return (n, r) => (p(), a("div", { class: f(["vd-notification", [`vd-notification--${e.type}`, { "vd-notification--small": e.small }]]) }, [o("i", { class: f([e.icon || t[e.type], "vd-notification__icon"]) }, null, 2), o("p", E, [e.title ? (p(), a("span", D, g(e.title), 1)) : i("", !0), h(n.$slots, "default", {}, () => [c(g(e.text), 1)])])], 2));
30
+ }
31
+ }), k = (e) => /^\d{8}$/.test(e), A = (e) => k(e) ? {
32
+ companyName: "",
33
+ kvkNumber: e
34
+ } : {
35
+ companyName: e,
36
+ kvkNumber: ""
37
+ }, j = "bezoekadres", M = (e) => e._embedded?.hoofdvestiging?.adressen?.find((e) => e.type === j), N = (e) => {
38
+ let t = M(e), { huisnummer: n = 0, huisletter: r = "", huisnummerToevoeging: i = "", toevoegingAdres: a = "", plaats: o = "", postcode: s = "", straatnaam: c = "", volledigAdres: l = "" } = t ?? {};
39
+ return {
40
+ houseNumber: n,
41
+ houseNumberAddition: r || i || a,
42
+ city: o,
43
+ zipCode: s,
44
+ streetName: c,
45
+ fullAddress: l,
46
+ hasVisitingAddress: !!t
47
+ };
48
+ }, P = (e = []) => {
49
+ let [t, n, r] = e.reduce(([e, t, n], r) => {
50
+ let i = {
51
+ isMainActivity: r.indHoofdactiviteit,
52
+ sbiCode: r.sbiCode,
53
+ description: r.sbiOmschrijving
54
+ };
55
+ return (r.indHoofdactiviteit === "Ja" ? e : t).push(i), n.push(i.sbiCode), [
56
+ e,
57
+ t,
58
+ n
59
+ ];
60
+ }, [
61
+ [],
62
+ [],
63
+ []
64
+ ]);
65
+ return {
66
+ mainSBI: t[0]?.sbiCode ?? "",
67
+ otherSBI: r,
68
+ firstSBIs: t,
69
+ secondSBIs: n
70
+ };
71
+ }, F = (e) => ({
72
+ kvkNumber: e.kvkNummer,
73
+ name: e.naam,
74
+ city: e.adres?.binnenlandsAdres?.plaats ?? "",
75
+ street: e.adres?.binnenlandsAdres?.straatnaam ?? ""
76
+ }), I = (e) => ({
77
+ name: e.naam,
78
+ kvkNumber: e.kvkNummer,
79
+ industry: e.sbiIndustryId,
80
+ numberOfEmployees: e.totaalWerkzamePersonen,
81
+ legalForm: e._embedded?.eigenaar?.rechtsvorm ?? "",
82
+ ...N(e),
83
+ ...P(e.sbiActiviteiten)
84
+ }), L = 30, R = ["hoofdvestiging", "nevenvestiging"], z = "IPD5200", B = (e) => {
85
+ let t = e, n = t?.response?.data?.fout;
86
+ if (Array.isArray(n)) return n;
87
+ if (Array.isArray(t?.fout)) return t.fout;
88
+ if (typeof t?.message == "string") try {
89
+ let e = JSON.parse(t.message);
90
+ if (Array.isArray(e?.fout)) return e.fout;
91
+ } catch {}
92
+ }, V = (e) => B(e)?.some((e) => e.code === z) ?? !1, H = () => ({
93
+ search: async (e) => {
94
+ try {
95
+ return ((await t().dataService.searchBusinessInfoV2(A(e), 1, L))?.resultaten ?? []).filter((e) => R.includes(e.type)).map(F);
96
+ } catch (e) {
97
+ let t = await e;
98
+ if (V(t)) return [];
99
+ throw t;
100
+ }
101
+ },
102
+ getDetails: async (e) => {
103
+ let n = await t().dataService.getProfileInfo(e);
104
+ return {
105
+ presenter: I(n),
106
+ raw: n
107
+ };
108
+ }
109
+ }), U = { class: "vd-combobox__multiline" }, W = { class: "vd-combobox__title" }, G = { class: "vd-combobox__subtext" }, K = { class: "vd-combobox__subtext" }, q = 400, J = 3, Y = "Helaas, we hebben geen resultaten gevonden. Probeer te zoeken op de exacte naam waarmee je bedrijf is geregistreerd bij de Kamer van Koophandel, of gebruik je volledige KvK-nummer.", X = "Typ je bedrijfsnaam of KvK-nummer", ee = "Aan het zoeken…", Z = "Er ging iets mis bij het ophalen van de gegevens. Probeer het later opnieuw.", Q = /* @__PURE__ */ l({
110
+ inheritAttrs: !1,
111
+ __name: "VdCompanySelect",
112
+ props: /*@__PURE__*/ u({
113
+ name: { default: "company" },
114
+ label: { default: "Selecteer de naam van je bedrijf" },
115
+ placeholder: { default: "Bedrijfsnaam of KvK-nummer" },
116
+ disabled: { type: Boolean },
117
+ errorMessage: { default: null }
118
+ }, {
119
+ modelValue: {},
120
+ modelModifiers: {}
121
+ }),
122
+ emits: /*@__PURE__*/ u([
123
+ "blur",
124
+ "error",
125
+ "raw"
126
+ ], ["update:modelValue"]),
127
+ setup(t, { emit: i }) {
128
+ let a = i, c = v(), l = b(), u = y(t, "modelValue"), { search: f, getDetails: T } = H(), E = m(), D = m(), O = m(), k = m(""), A = C(k, q, { maxWait: 2e3 }), j = m(!0), { state: M, isLoading: N, execute: P } = w(async (e) => {
129
+ try {
130
+ return {
131
+ results: await f(e),
132
+ failed: !1
133
+ };
134
+ } catch {
135
+ return {
136
+ results: [],
137
+ failed: !0
138
+ };
139
+ }
140
+ }, {
141
+ results: [],
142
+ failed: !1
143
+ }, {
144
+ immediate: !1,
145
+ resetOnExecute: !1
146
+ }), { isLoading: F, execute: I } = w(async (e) => {
147
+ try {
148
+ let { presenter: t, raw: n } = await T(e);
149
+ return u.value = t, a("raw", n), a("error", null), t;
150
+ } catch (e) {
151
+ throw u.value = null, a("raw", null), O.value = void 0, E.value = void 0, a("error", Z), e;
152
+ }
153
+ }, null, {
154
+ immediate: !1,
155
+ resetOnExecute: !0
156
+ }), L = n(() => k.value.length >= J), R = n(() => L.value ? N.value || k.value !== A.value ? "searching" : M.value.failed ? "error" : M.value.results.length ? "idle" : "no-results" : "idle"), z = n(() => R.value === "searching" ? [] : L.value ? M.value.results : j.value && O.value ? [O.value] : []), B = n(() => R.value === "searching" || F.value), V = n(() => !!u.value && !B.value), Q = n(() => {
157
+ let e = u.value;
158
+ return !e || B.value ? "" : e.fullAddress ? `Kvk: ${e.kvkNumber} ${e.fullAddress}` : `Kvk: ${e.kvkNumber}`;
159
+ }), $ = n(() => {
160
+ switch (R.value) {
161
+ case "searching": return ee;
162
+ case "error": return Z;
163
+ case "no-results": return Y;
164
+ default: return X;
165
+ }
166
+ }), te = (e) => {
167
+ O.value = e, j.value = !0, e.kvkNumber === u.value?.kvkNumber ? a("error", null) : I(0, e.kvkNumber);
168
+ }, ne = (e) => {
169
+ a("blur", e);
170
+ }, re = (e) => {
171
+ k.value = e.trim(), j.value = !1;
172
+ }, ie = (e) => e.kvkNumber === u.value?.kvkNumber ? u.value.name : e.name, ae = (e) => ({
173
+ kvkNumber: e.kvkNumber,
174
+ name: e.name,
175
+ city: e.city,
176
+ street: e.streetName,
177
+ fullAddress: e.fullAddress
178
+ });
179
+ return x(D, (e) => {
180
+ e || (k.value = "", j.value = !0);
181
+ }), x(A, (e) => {
182
+ e && e.length >= J && P(0, e);
183
+ }), x(u, (e) => {
184
+ E.value = e ? ae(e) : void 0, j.value = !0, e || (O.value = void 0, a("raw", null));
185
+ }, { immediate: !0 }), (n, i) => (p(), r(e, d(_(c), {
186
+ modelValue: E.value,
187
+ "onUpdate:modelValue": i[0] ||= (e) => E.value = e,
188
+ open: D.value,
189
+ "onUpdate:open": i[1] ||= (e) => D.value = e,
190
+ name: t.name,
191
+ label: t.label,
192
+ placeholder: t.placeholder,
193
+ icon: "far fa-search",
194
+ options: z.value,
195
+ "value-key": null,
196
+ "label-key": "name",
197
+ "display-value": ie,
198
+ by: "kvkNumber",
199
+ loading: B.value,
200
+ verified: V.value,
201
+ disabled: t.disabled,
202
+ "no-results-text": $.value,
203
+ "error-message": t.errorMessage,
204
+ "info-message": Q.value,
205
+ "ignore-filter": "",
206
+ onSelect: te,
207
+ onBlur: ne,
208
+ onSearch: re
209
+ }), s({
210
+ item: S(({ option: e }) => [o("div", U, [
211
+ o("div", W, g(e.name), 1),
212
+ o("span", G, "Kvk: " + g(e.kvkNumber), 1),
213
+ o("span", K, g(e.city) + ", " + g(e.street), 1)
214
+ ])]),
215
+ _: 2
216
+ }, [_(l).popover ? {
217
+ name: "popover",
218
+ fn: S(() => [h(n.$slots, "popover")]),
219
+ key: "0"
220
+ } : void 0, _(l).information ? {
221
+ name: "information",
222
+ fn: S(() => [h(n.$slots, "information")]),
223
+ key: "1"
224
+ } : void 0]), 1040, [
225
+ "modelValue",
226
+ "open",
227
+ "name",
228
+ "label",
229
+ "placeholder",
230
+ "options",
231
+ "loading",
232
+ "verified",
233
+ "disabled",
234
+ "no-results-text",
235
+ "error-message",
236
+ "info-message"
237
+ ]));
238
+ }
239
+ }), $ = (e = "Bedrijfsnaam of KVK-nummer is verplicht") => T().nullable().required(e).test("has-kvk-number", e, (e) => !!e?.kvkNumber);
240
+ //#endregion
241
+ export { Q as n, O as r, $ as t };
@@ -309,8 +309,6 @@ declare interface BaseVehicleData {
309
309
  ManufacturingYear: number;
310
310
  }
311
311
 
312
- export declare const BikeForm: typeof __VLS_export;
313
-
314
312
  export declare interface BikeFormData {
315
313
  kind: number | null;
316
314
  condition: number;
@@ -324,24 +322,18 @@ declare interface BirthdateFormData {
324
322
  birthdate: string;
325
323
  }
326
324
 
327
- export declare const BusinessCarForm: typeof __VLS_export_13;
328
-
329
325
  export declare interface BusinessCarFormData extends VehicleFormData<CarData> {
330
326
  company: CompanyDataPresenter;
331
327
  }
332
328
 
333
329
  export declare function businessCarPresenter(data: BusinessCarFormData): ComparisonPayload;
334
330
 
335
- export declare const BusinessLiabilityForm: typeof __VLS_export_14;
336
-
337
331
  export declare interface BusinessLiabilityFormData {
338
332
  company: CompanyDataPresenter;
339
333
  }
340
334
 
341
335
  export declare function businessLiabilityPresenter(data: BusinessLiabilityFormData): ComparisonPayload;
342
336
 
343
- export declare const CaravanForm: typeof __VLS_export_3;
344
-
345
337
  export declare interface CaravanFormData {
346
338
  TypeOfCaravan: string | null;
347
339
  NewOrOccasion: YesNoValue;
@@ -359,8 +351,6 @@ declare interface CarData extends BaseVehicleData {
359
351
  CarAlarmRequirement: string;
360
352
  }
361
353
 
362
- export declare const CarForm: typeof __VLS_export_12;
363
-
364
354
  export declare interface CarFormData extends VehicleFormData<CarData>, AddressBearingFormData, BirthdateFormData {
365
355
  }
366
356
 
@@ -396,8 +386,6 @@ declare interface CompanyDataPresenter {
396
386
  secondSBIs: CompanyActivity[];
397
387
  }
398
388
 
399
- export declare const ComparisonFormFlow: typeof __VLS_export_15;
400
-
401
389
  declare interface ComparisonFormFlowProps extends ComparisonFormProps<Record<string, unknown>> {
402
390
  form: ComparisonFormName;
403
391
  /** base page url of the target comparison app; the comparison route (`#/<id>/…`) is appended internally */
@@ -520,31 +508,23 @@ declare interface FamilyCompositionFormData {
520
508
 
521
509
  declare type FamilyCompositionValue = `${FamilyComposition}`;
522
510
 
523
- export declare const HouseForm: typeof __VLS_export_6;
524
-
525
511
  export declare interface HouseFormData extends AddressBearingFormData, FamilyCompositionFormData {
526
512
  ownedBuilding: YesNoValue;
527
513
  }
528
514
 
529
515
  export declare function housePresenter(data: HouseFormData): ComparisonPayload;
530
516
 
531
- export declare const LegalForm: typeof __VLS_export_7;
532
-
533
517
  export declare interface LegalFormData extends AddressBearingFormData {
534
518
  ownedBuilding: YesNoValue;
535
519
  }
536
520
 
537
521
  export declare function legalPresenter(data: LegalFormData): ComparisonPayload;
538
522
 
539
- export declare const LiabilityForm: typeof __VLS_export_5;
540
-
541
523
  export declare interface LiabilityFormData extends AddressBearingFormData, BirthdateFormData, FamilyCompositionFormData {
542
524
  }
543
525
 
544
526
  export declare function liabilityPresenter(data: LiabilityFormData): ComparisonPayload;
545
527
 
546
- export declare const LoanForm: typeof __VLS_export_9;
547
-
548
528
  export declare interface LoanFormData extends BirthdateFormData, FamilyCompositionFormData {
549
529
  LoanPurpose: string;
550
530
  LoanAmount: number;
@@ -563,8 +543,6 @@ declare interface MopedData extends BaseVehicleData {
563
543
  Fuel: string;
564
544
  }
565
545
 
566
- export declare const MopedForm: typeof __VLS_export_10;
567
-
568
546
  export declare interface MopedFormData extends VehicleFormData<MopedData>, AddressBearingFormData, BirthdateFormData {
569
547
  }
570
548
 
@@ -585,15 +563,11 @@ declare interface MotorData extends BaseVehicleData {
585
563
  VehicleCategory: string;
586
564
  }
587
565
 
588
- export declare const MotorForm: typeof __VLS_export_11;
589
-
590
566
  export declare interface MotorFormData extends VehicleFormData<MotorData>, AddressBearingFormData, BirthdateFormData {
591
567
  }
592
568
 
593
569
  export declare function motorPresenter(data: MotorFormData): ComparisonPayload;
594
570
 
595
- export declare const PackageForm: typeof __VLS_export_8;
596
-
597
571
  export declare interface PackageFormData extends AddressBearingFormData, BirthdateFormData, FamilyCompositionFormData {
598
572
  partnerBirthdate: string;
599
573
  }
@@ -607,8 +581,6 @@ declare enum PaymentTerm {
607
581
 
608
582
  declare type PaymentTermValue = `${PaymentTerm}`;
609
583
 
610
- export declare const PetForm: typeof __VLS_export_2;
611
-
612
584
  export declare interface PetFormData {
613
585
  kind: string;
614
586
  age: string;
@@ -622,8 +594,6 @@ export declare interface QaConfig {
622
594
  url: string;
623
595
  }
624
596
 
625
- export declare const QuestionnaireForm: typeof __VLS_export_17;
626
-
627
597
  export declare type QuestionnaireFormProps = QuestionnaireSharedProps;
628
598
 
629
599
  /**
@@ -647,8 +617,6 @@ export declare interface QuestionnaireSharedProps {
647
617
  showTitle?: boolean;
648
618
  }
649
619
 
650
- export declare const RiskScannerForm: typeof __VLS_export_16;
651
-
652
620
  export declare interface RiskScannerFormProps extends Omit<QuestionnaireSharedProps, 'qaId'> {
653
621
  /**
654
622
  * base url of the QA API (a missing trailing slash is normalized internally);
@@ -660,8 +628,6 @@ export declare interface RiskScannerFormProps extends Omit<QuestionnaireSharedPr
660
628
  nextItemId?: string;
661
629
  }
662
630
 
663
- export declare const TravelForm: typeof __VLS_export_4;
664
-
665
631
  export declare interface TravelFormData extends BirthdateFormData {
666
632
  PaymentTerm: PaymentTermValue;
667
633
  }
@@ -681,6 +647,40 @@ declare interface UseComparisonSubmitOptions {
681
647
  onError?: (error: unknown, payload: ComparisonPayload) => void;
682
648
  }
683
649
 
650
+ export declare const VdBikeForm: typeof __VLS_export;
651
+
652
+ export declare const VdBusinessCarForm: typeof __VLS_export_13;
653
+
654
+ export declare const VdBusinessLiabilityForm: typeof __VLS_export_14;
655
+
656
+ export declare const VdCaravanForm: typeof __VLS_export_3;
657
+
658
+ export declare const VdCarForm: typeof __VLS_export_12;
659
+
660
+ export declare const VdComparisonForm: typeof __VLS_export_15;
661
+
662
+ export declare const VdHouseForm: typeof __VLS_export_6;
663
+
664
+ export declare const VdLegalForm: typeof __VLS_export_7;
665
+
666
+ export declare const VdLiabilityForm: typeof __VLS_export_5;
667
+
668
+ export declare const VdLoanForm: typeof __VLS_export_9;
669
+
670
+ export declare const VdMopedForm: typeof __VLS_export_10;
671
+
672
+ export declare const VdMotorForm: typeof __VLS_export_11;
673
+
674
+ export declare const VdPackageForm: typeof __VLS_export_8;
675
+
676
+ export declare const VdPetForm: typeof __VLS_export_2;
677
+
678
+ export declare const VdQuestionnaire: typeof __VLS_export_17;
679
+
680
+ export declare const VdRiskScanner: typeof __VLS_export_16;
681
+
682
+ export declare const VdTravelForm: typeof __VLS_export_4;
683
+
684
684
  declare interface VehicleFormData<TVehicle> {
685
685
  licensePlate: string;
686
686
  vehicle: TVehicle;