@defra/forms-model 3.0.462 → 3.0.464

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 (51) hide show
  1. package/dist/module/__stubs__/components.js +168 -0
  2. package/dist/module/__stubs__/components.js.map +1 -0
  3. package/dist/module/__stubs__/form-definition.js +58 -0
  4. package/dist/module/__stubs__/form-definition.js.map +1 -0
  5. package/dist/module/__stubs__/pages.js +107 -0
  6. package/dist/module/__stubs__/pages.js.map +1 -0
  7. package/dist/module/conditions/condition-abstract.js +3 -0
  8. package/dist/module/conditions/condition-abstract.js.map +1 -1
  9. package/dist/module/conditions/condition-group.js +3 -0
  10. package/dist/module/conditions/condition-group.js.map +1 -1
  11. package/dist/module/conditions/condition-model.js +4 -1
  12. package/dist/module/conditions/condition-model.js.map +1 -1
  13. package/dist/module/conditions/helpers.js +3 -0
  14. package/dist/module/conditions/helpers.js.map +1 -1
  15. package/dist/module/conditions/index.js +1 -1
  16. package/dist/module/conditions/index.js.map +1 -1
  17. package/dist/module/conditions/migration.js +13 -7
  18. package/dist/module/conditions/migration.js.map +1 -1
  19. package/dist/module/stubs.js +13 -0
  20. package/dist/module/stubs.js.map +1 -0
  21. package/dist/types/__stubs__/components.d.ts +43 -0
  22. package/dist/types/__stubs__/components.d.ts.map +1 -0
  23. package/dist/types/__stubs__/form-definition.d.ts +15 -0
  24. package/dist/types/__stubs__/form-definition.d.ts.map +1 -0
  25. package/dist/types/__stubs__/pages.d.ts +25 -0
  26. package/dist/types/__stubs__/pages.d.ts.map +1 -0
  27. package/dist/types/conditions/condition-abstract.d.ts +1 -0
  28. package/dist/types/conditions/condition-abstract.d.ts.map +1 -1
  29. package/dist/types/conditions/condition-group.d.ts +1 -0
  30. package/dist/types/conditions/condition-group.d.ts.map +1 -1
  31. package/dist/types/conditions/condition-model.d.ts +1 -0
  32. package/dist/types/conditions/condition-model.d.ts.map +1 -1
  33. package/dist/types/conditions/helpers.d.ts +9 -5
  34. package/dist/types/conditions/helpers.d.ts.map +1 -1
  35. package/dist/types/conditions/index.d.ts +1 -1
  36. package/dist/types/conditions/index.d.ts.map +1 -1
  37. package/dist/types/conditions/migration.d.ts +3 -0
  38. package/dist/types/conditions/migration.d.ts.map +1 -1
  39. package/dist/types/stubs.d.ts +13 -0
  40. package/dist/types/stubs.d.ts.map +1 -0
  41. package/package.json +15 -3
  42. package/src/__stubs__/components.ts +209 -0
  43. package/src/__stubs__/form-definition.ts +64 -0
  44. package/src/__stubs__/pages.ts +118 -0
  45. package/src/conditions/condition-abstract.ts +6 -0
  46. package/src/conditions/condition-group.ts +4 -0
  47. package/src/conditions/condition-model.ts +7 -0
  48. package/src/conditions/helpers.ts +12 -9
  49. package/src/conditions/index.ts +6 -1
  50. package/src/conditions/migration.ts +20 -7
  51. package/src/stubs.ts +12 -0
@@ -0,0 +1,168 @@
1
+ import { ComponentType } from "../components/enums.js";
2
+ /**
3
+ * @param {Partial<TextFieldComponent>} partialTextField
4
+ * @returns {TextFieldComponent}
5
+ */
6
+ export function buildTextFieldComponent(partialTextField = {}) {
7
+ const textFieldComponent = {
8
+ id: '407dd0d7-cce9-4f43-8e1f-7d89cb698875',
9
+ name: 'TextField',
10
+ title: 'Text field',
11
+ type: ComponentType.TextField,
12
+ hint: '',
13
+ options: {},
14
+ schema: {}
15
+ };
16
+ return {
17
+ ...textFieldComponent,
18
+ ...partialTextField
19
+ };
20
+ }
21
+
22
+ /**
23
+ * @param {Partial<FileUploadFieldComponent>} partialFileUploadField
24
+ * @returns {FileUploadFieldComponent}
25
+ */
26
+ export function buildFileUploadComponent(partialFileUploadField) {
27
+ const fileUploadFieldComponent = {
28
+ name: 'FileUploadField',
29
+ type: ComponentType.FileUploadField,
30
+ title: 'File Upload Field',
31
+ options: {},
32
+ schema: {}
33
+ };
34
+ return {
35
+ ...fileUploadFieldComponent,
36
+ ...partialFileUploadField
37
+ };
38
+ }
39
+
40
+ /**
41
+ *
42
+ * @param {Partial<AutocompleteFieldComponent>} partialAutoCompleteField
43
+ * @returns {AutocompleteFieldComponent}
44
+ */
45
+ export function buildAutoCompleteComponent(partialAutoCompleteField) {
46
+ const autocompleteComponent = {
47
+ name: 'AutoCompleteField',
48
+ title: 'What languages do you speak?',
49
+ type: ComponentType.AutocompleteField,
50
+ list: 'AutoCompleteList',
51
+ options: {}
52
+ };
53
+ return {
54
+ ...autocompleteComponent,
55
+ ...partialAutoCompleteField
56
+ };
57
+ }
58
+
59
+ /**
60
+ * @param {Partial<RadiosFieldComponent>} partialListComponent
61
+ * @returns {RadiosFieldComponent}
62
+ */
63
+ export function buildRadioComponent(partialListComponent = {}) {
64
+ const radioFieldComponent = {
65
+ name: 'RadioField',
66
+ title: 'Which country do you live in?',
67
+ type: ComponentType.RadiosField,
68
+ list: 'RadioList',
69
+ options: {}
70
+ };
71
+ return {
72
+ ...radioFieldComponent,
73
+ ...partialListComponent
74
+ };
75
+ }
76
+
77
+ /**
78
+ * @param {Partial<CheckboxesFieldComponent>} partialListComponent
79
+ * @returns {CheckboxesFieldComponent}
80
+ */
81
+ export function buildCheckboxComponent(partialListComponent) {
82
+ const checkboxesFieldComponent = {
83
+ name: 'FellowshipOfTheRing',
84
+ title: 'Which are your favourite characters from the fellowship?',
85
+ type: ComponentType.CheckboxesField,
86
+ list: 'CheckboxList',
87
+ options: {}
88
+ };
89
+ return {
90
+ ...checkboxesFieldComponent,
91
+ ...partialListComponent
92
+ };
93
+ }
94
+
95
+ /**
96
+ * Builder to create a stub List item
97
+ * @param {Partial<Item>} partialListItem
98
+ * @returns {Item}
99
+ */
100
+ export function buildListItem(partialListItem = {}) {
101
+ return {
102
+ text: 'Javascript',
103
+ value: 'javascript',
104
+ ...partialListItem
105
+ };
106
+ }
107
+
108
+ /**
109
+ * @param {Partial<List>} partialList
110
+ * @returns {List}
111
+ */
112
+ export function buildList(partialList = {}) {
113
+ return {
114
+ title: 'Development language2',
115
+ name: 'YhmNDD',
116
+ type: 'string',
117
+ items: [buildListItem({
118
+ text: 'Javascript',
119
+ value: 'javascript'
120
+ }), buildListItem({
121
+ text: 'TypeScript',
122
+ value: 'typescript'
123
+ }), buildListItem({
124
+ text: 'Python',
125
+ value: 'python'
126
+ }), buildListItem({
127
+ text: 'Haskell',
128
+ value: 'haskell'
129
+ }), buildListItem({
130
+ text: 'Erlang',
131
+ value: 'erlang'
132
+ }), buildListItem({
133
+ text: 'Java',
134
+ value: 'java'
135
+ })],
136
+ ...partialList
137
+ };
138
+ }
139
+ export function buildNumberFieldComponent(partialComponent) {
140
+ return {
141
+ name: 'year',
142
+ title: 'Year',
143
+ options: {},
144
+ schema: {},
145
+ ...partialComponent,
146
+ type: ComponentType.NumberField
147
+ };
148
+ }
149
+ export function buildDateComponent(partialComponent) {
150
+ return {
151
+ name: 'bcdefg',
152
+ title: 'Default title',
153
+ options: {},
154
+ ...partialComponent,
155
+ type: ComponentType.DatePartsField
156
+ };
157
+ }
158
+ export function buildRadiosComponent(partialComponent) {
159
+ return {
160
+ name: 'cdefgh',
161
+ title: 'Default title',
162
+ options: {},
163
+ list: 'Default list Id ref',
164
+ ...partialComponent,
165
+ type: ComponentType.RadiosField
166
+ };
167
+ }
168
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","names":["ComponentType","buildTextFieldComponent","partialTextField","textFieldComponent","id","name","title","type","TextField","hint","options","schema","buildFileUploadComponent","partialFileUploadField","fileUploadFieldComponent","FileUploadField","buildAutoCompleteComponent","partialAutoCompleteField","autocompleteComponent","AutocompleteField","list","buildRadioComponent","partialListComponent","radioFieldComponent","RadiosField","buildCheckboxComponent","checkboxesFieldComponent","CheckboxesField","buildListItem","partialListItem","text","value","buildList","partialList","items","buildNumberFieldComponent","partialComponent","NumberField","buildDateComponent","DatePartsField","buildRadiosComponent"],"sources":["../../../src/__stubs__/components.ts"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport {\n type AutocompleteFieldComponent,\n type CheckboxesFieldComponent,\n type DatePartsFieldComponent,\n type FileUploadFieldComponent,\n type NumberFieldComponent,\n type RadiosFieldComponent,\n type TextFieldComponent\n} from '~/src/components/types.js'\nimport { type Item, type List } from '~/src/form/form-definition/types.js'\n\n/**\n * @param {Partial<TextFieldComponent>} partialTextField\n * @returns {TextFieldComponent}\n */\nexport function buildTextFieldComponent(\n partialTextField: Partial<TextFieldComponent> = {}\n): TextFieldComponent {\n const textFieldComponent: TextFieldComponent = {\n id: '407dd0d7-cce9-4f43-8e1f-7d89cb698875',\n name: 'TextField',\n title: 'Text field',\n type: ComponentType.TextField,\n hint: '',\n options: {},\n schema: {}\n }\n\n return {\n ...textFieldComponent,\n ...partialTextField\n }\n}\n\n/**\n * @param {Partial<FileUploadFieldComponent>} partialFileUploadField\n * @returns {FileUploadFieldComponent}\n */\nexport function buildFileUploadComponent(\n partialFileUploadField: Partial<FileUploadFieldComponent>\n): FileUploadFieldComponent {\n const fileUploadFieldComponent: FileUploadFieldComponent = {\n name: 'FileUploadField',\n type: ComponentType.FileUploadField,\n title: 'File Upload Field',\n options: {},\n schema: {}\n }\n\n return {\n ...fileUploadFieldComponent,\n ...partialFileUploadField\n }\n}\n\n/**\n *\n * @param {Partial<AutocompleteFieldComponent>} partialAutoCompleteField\n * @returns {AutocompleteFieldComponent}\n */\nexport function buildAutoCompleteComponent(\n partialAutoCompleteField: Partial<AutocompleteFieldComponent>\n): AutocompleteFieldComponent {\n const autocompleteComponent: AutocompleteFieldComponent = {\n name: 'AutoCompleteField',\n title: 'What languages do you speak?',\n type: ComponentType.AutocompleteField,\n list: 'AutoCompleteList',\n options: {}\n }\n\n return {\n ...autocompleteComponent,\n ...partialAutoCompleteField\n }\n}\n\n/**\n * @param {Partial<RadiosFieldComponent>} partialListComponent\n * @returns {RadiosFieldComponent}\n */\nexport function buildRadioComponent(\n partialListComponent: Partial<RadiosFieldComponent> = {}\n): RadiosFieldComponent {\n const radioFieldComponent: RadiosFieldComponent = {\n name: 'RadioField',\n title: 'Which country do you live in?',\n type: ComponentType.RadiosField,\n list: 'RadioList',\n options: {}\n }\n\n return {\n ...radioFieldComponent,\n ...partialListComponent\n }\n}\n\n/**\n * @param {Partial<CheckboxesFieldComponent>} partialListComponent\n * @returns {CheckboxesFieldComponent}\n */\nexport function buildCheckboxComponent(\n partialListComponent: Partial<CheckboxesFieldComponent>\n): CheckboxesFieldComponent {\n const checkboxesFieldComponent: CheckboxesFieldComponent = {\n name: 'FellowshipOfTheRing',\n title: 'Which are your favourite characters from the fellowship?',\n type: ComponentType.CheckboxesField,\n list: 'CheckboxList',\n options: {}\n }\n\n return {\n ...checkboxesFieldComponent,\n ...partialListComponent\n }\n}\n\n/**\n * Builder to create a stub List item\n * @param {Partial<Item>} partialListItem\n * @returns {Item}\n */\nexport function buildListItem(partialListItem: Partial<Item> = {}): Item {\n return {\n text: 'Javascript',\n value: 'javascript',\n ...partialListItem\n }\n}\n\n/**\n * @param {Partial<List>} partialList\n * @returns {List}\n */\nexport function buildList(partialList: Partial<List> = {}): List {\n return {\n title: 'Development language2',\n name: 'YhmNDD',\n type: 'string',\n items: [\n buildListItem({\n text: 'Javascript',\n value: 'javascript'\n }),\n buildListItem({\n text: 'TypeScript',\n value: 'typescript'\n }),\n buildListItem({\n text: 'Python',\n value: 'python'\n }),\n buildListItem({\n text: 'Haskell',\n value: 'haskell'\n }),\n buildListItem({\n text: 'Erlang',\n value: 'erlang'\n }),\n buildListItem({\n text: 'Java',\n value: 'java'\n })\n ],\n ...partialList\n }\n}\n\nexport function buildNumberFieldComponent(\n partialComponent: Partial<NumberFieldComponent>\n): NumberFieldComponent {\n return {\n name: 'year',\n title: 'Year',\n options: {},\n schema: {},\n ...partialComponent,\n type: ComponentType.NumberField\n }\n}\n\nexport function buildDateComponent(\n partialComponent: Partial<DatePartsFieldComponent>\n): DatePartsFieldComponent {\n return {\n name: 'bcdefg',\n title: 'Default title',\n options: {},\n ...partialComponent,\n type: ComponentType.DatePartsField\n }\n}\n\nexport function buildRadiosComponent(\n partialComponent: Partial<RadiosFieldComponent>\n): RadiosFieldComponent {\n return {\n name: 'cdefgh',\n title: 'Default title',\n options: {},\n list: 'Default list Id ref',\n ...partialComponent,\n type: ComponentType.RadiosField\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Builder to create a Form Definition
3
+ * @param {Partial<FormDefinition>} definitionPartial
4
+ * @returns {FormDefinition}
5
+ */
6
+ export function buildDefinition(definitionPartial = {}) {
7
+ const formDefinition = {
8
+ name: 'Test form',
9
+ pages: [],
10
+ conditions: [],
11
+ sections: [],
12
+ lists: []
13
+ };
14
+ return {
15
+ ...formDefinition,
16
+ ...definitionPartial
17
+ };
18
+ }
19
+
20
+ /**
21
+ *
22
+ * @param {Partial<FormMetadata>} partialMetaData
23
+ * @returns {FormMetadata}
24
+ */
25
+ export function buildMetaData(partialMetaData = {}) {
26
+ return {
27
+ id: '681b184463c68bf6b99e2c62',
28
+ slug: 'chemistry',
29
+ title: 'Chemistry',
30
+ organisation: 'Defra',
31
+ teamName: 'Forms Team',
32
+ teamEmail: 'name@example.gov.uk',
33
+ draft: {
34
+ createdAt: new Date('2025-05-07T08:22:28.035Z'),
35
+ createdBy: {
36
+ id: '84305e4e-1f52-43d0-a123-9c873b0abb35',
37
+ displayName: 'Internal User'
38
+ },
39
+ updatedAt: new Date('2025-05-20T13:00:54.794Z'),
40
+ updatedBy: {
41
+ id: '84305e4e-1f52-43d0-a123-9c873b0abb35',
42
+ displayName: 'Internal User'
43
+ }
44
+ },
45
+ createdBy: {
46
+ id: '84305e4e-1f52-43d0-a123-9c873b0abb35',
47
+ displayName: 'Internal User'
48
+ },
49
+ createdAt: new Date('2025-05-07T08:22:28.035Z'),
50
+ updatedBy: {
51
+ id: '84305e4e-1f52-43d0-a123-9c873b0abb35',
52
+ displayName: 'Internal User'
53
+ },
54
+ updatedAt: new Date('2025-05-20T13:00:54.794Z'),
55
+ ...partialMetaData
56
+ };
57
+ }
58
+ //# sourceMappingURL=form-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-definition.js","names":["buildDefinition","definitionPartial","formDefinition","name","pages","conditions","sections","lists","buildMetaData","partialMetaData","id","slug","title","organisation","teamName","teamEmail","draft","createdAt","Date","createdBy","displayName","updatedAt","updatedBy"],"sources":["../../../src/__stubs__/form-definition.ts"],"sourcesContent":["import { type FormDefinition } from '~/src/form/form-definition/types.js'\nimport { type FormMetadata } from '~/src/form/form-metadata/types.js'\n\n/**\n * Builder to create a Form Definition\n * @param {Partial<FormDefinition>} definitionPartial\n * @returns {FormDefinition}\n */\nexport function buildDefinition(\n definitionPartial: Partial<FormDefinition> = {}\n): FormDefinition {\n const formDefinition: FormDefinition = {\n name: 'Test form',\n pages: [],\n conditions: [],\n sections: [],\n lists: []\n }\n return {\n ...formDefinition,\n ...definitionPartial\n }\n}\n\n/**\n *\n * @param {Partial<FormMetadata>} partialMetaData\n * @returns {FormMetadata}\n */\nexport function buildMetaData(\n partialMetaData: Partial<FormMetadata> = {}\n): FormMetadata {\n return {\n id: '681b184463c68bf6b99e2c62',\n slug: 'chemistry',\n title: 'Chemistry',\n organisation: 'Defra',\n teamName: 'Forms Team',\n teamEmail: 'name@example.gov.uk',\n draft: {\n createdAt: new Date('2025-05-07T08:22:28.035Z'),\n createdBy: {\n id: '84305e4e-1f52-43d0-a123-9c873b0abb35',\n displayName: 'Internal User'\n },\n updatedAt: new Date('2025-05-20T13:00:54.794Z'),\n updatedBy: {\n id: '84305e4e-1f52-43d0-a123-9c873b0abb35',\n displayName: 'Internal User'\n }\n },\n createdBy: {\n id: '84305e4e-1f52-43d0-a123-9c873b0abb35',\n displayName: 'Internal User'\n },\n createdAt: new Date('2025-05-07T08:22:28.035Z'),\n updatedBy: {\n id: '84305e4e-1f52-43d0-a123-9c873b0abb35',\n displayName: 'Internal User'\n },\n updatedAt: new Date('2025-05-20T13:00:54.794Z'),\n ...partialMetaData\n }\n}\n"],"mappings":"AAGA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,eAAeA,CAC7BC,iBAA0C,GAAG,CAAC,CAAC,EAC/B;EAChB,MAAMC,cAA8B,GAAG;IACrCC,IAAI,EAAE,WAAW;IACjBC,KAAK,EAAE,EAAE;IACTC,UAAU,EAAE,EAAE;IACdC,QAAQ,EAAE,EAAE;IACZC,KAAK,EAAE;EACT,CAAC;EACD,OAAO;IACL,GAAGL,cAAc;IACjB,GAAGD;EACL,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASO,aAAaA,CAC3BC,eAAsC,GAAG,CAAC,CAAC,EAC7B;EACd,OAAO;IACLC,EAAE,EAAE,0BAA0B;IAC9BC,IAAI,EAAE,WAAW;IACjBC,KAAK,EAAE,WAAW;IAClBC,YAAY,EAAE,OAAO;IACrBC,QAAQ,EAAE,YAAY;IACtBC,SAAS,EAAE,qBAAqB;IAChCC,KAAK,EAAE;MACLC,SAAS,EAAE,IAAIC,IAAI,CAAC,0BAA0B,CAAC;MAC/CC,SAAS,EAAE;QACTT,EAAE,EAAE,sCAAsC;QAC1CU,WAAW,EAAE;MACf,CAAC;MACDC,SAAS,EAAE,IAAIH,IAAI,CAAC,0BAA0B,CAAC;MAC/CI,SAAS,EAAE;QACTZ,EAAE,EAAE,sCAAsC;QAC1CU,WAAW,EAAE;MACf;IACF,CAAC;IACDD,SAAS,EAAE;MACTT,EAAE,EAAE,sCAAsC;MAC1CU,WAAW,EAAE;IACf,CAAC;IACDH,SAAS,EAAE,IAAIC,IAAI,CAAC,0BAA0B,CAAC;IAC/CI,SAAS,EAAE;MACTZ,EAAE,EAAE,sCAAsC;MAC1CU,WAAW,EAAE;IACf,CAAC;IACDC,SAAS,EAAE,IAAIH,IAAI,CAAC,0BAA0B,CAAC;IAC/C,GAAGT;EACL,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,107 @@
1
+ import { buildFileUploadComponent } from "./components.js";
2
+ import { ComponentType } from "../components/enums.js";
3
+ import { ControllerPath, ControllerType } from "../pages/enums.js";
4
+
5
+ /**
6
+ * Stub builder for a question page
7
+ * @param {Partial<PageQuestion>} [partialPage]
8
+ * @returns {PageQuestion}
9
+ */
10
+ export function buildQuestionPage(partialPage) {
11
+ return {
12
+ id: 'ffefd409-f3f4-49fe-882e-6e89f44631b1',
13
+ title: 'Page One',
14
+ path: '/page-one',
15
+ next: [],
16
+ components: [],
17
+ ...partialPage
18
+ };
19
+ }
20
+
21
+ /**
22
+ * Stub builder for a Summary page
23
+ * @param {Partial<PageSummary>} [partialSummaryPage]
24
+ */
25
+ export function buildSummaryPage(partialSummaryPage = {}) {
26
+ const pageSummary = {
27
+ id: '449a45f6-4541-4a46-91bd-8b8931b07b50',
28
+ title: 'Summary page',
29
+ path: ControllerPath.Summary,
30
+ controller: ControllerType.Summary
31
+ };
32
+ return {
33
+ ...pageSummary,
34
+ ...partialSummaryPage
35
+ };
36
+ }
37
+
38
+ /**
39
+ *
40
+ * @param {Partial<PageFileUpload>} partialFileUploadPage
41
+ * @returns {PageFileUpload}
42
+ */
43
+ export function buildFileUploadPage(partialFileUploadPage = {}) {
44
+ const fileUploadPage = {
45
+ id: '85e5c8da-88f5-4009-a821-7d7de1364318',
46
+ title: '',
47
+ path: '/supporting-evidence',
48
+ components: [buildFileUploadComponent({
49
+ type: ComponentType.FileUploadField,
50
+ title: 'Supporting Evidence',
51
+ name: 'yBpZQO',
52
+ shortDescription: 'Supporting evidence',
53
+ hint: '',
54
+ options: {
55
+ required: true,
56
+ accept: 'application/pdf,application/msword,image/jpeg,application/vnd.ms-excel,text/csv'
57
+ },
58
+ id: '4189b8a1-1a04-4f74-a7a0-dd23012a0ee0'
59
+ })],
60
+ controller: ControllerType.FileUpload,
61
+ next: []
62
+ };
63
+ return {
64
+ ...fileUploadPage,
65
+ ...partialFileUploadPage
66
+ };
67
+ }
68
+
69
+ /**
70
+ *
71
+ * @param {Partial<PageRepeat>} partialRepeaterPage
72
+ * @returns {PageRepeat}
73
+ */
74
+ export function buildRepeaterPage(partialRepeaterPage = {}) {
75
+ const repeaterPage = {
76
+ title: 'Repeater Page',
77
+ path: '/repeater-page',
78
+ components: [{
79
+ type: ComponentType.TextField,
80
+ title: 'Simple text field',
81
+ name: 'IHAIzC',
82
+ shortDescription: 'Your simple text field',
83
+ hint: '',
84
+ options: {},
85
+ schema: {},
86
+ id: 'ee83413e-31b6-4158-98e0-4611479582ce'
87
+ }],
88
+ next: [],
89
+ id: '32888028-61db-40fc-b255-80bc67829d31',
90
+ controller: ControllerType.Repeat,
91
+ repeat: {
92
+ options: {
93
+ name: 'fawfed',
94
+ title: 'Simple question responses'
95
+ },
96
+ schema: {
97
+ min: 1,
98
+ max: 3
99
+ }
100
+ }
101
+ };
102
+ return {
103
+ ...repeaterPage,
104
+ ...partialRepeaterPage
105
+ };
106
+ }
107
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","names":["buildFileUploadComponent","ComponentType","ControllerPath","ControllerType","buildQuestionPage","partialPage","id","title","path","next","components","buildSummaryPage","partialSummaryPage","pageSummary","Summary","controller","buildFileUploadPage","partialFileUploadPage","fileUploadPage","type","FileUploadField","name","shortDescription","hint","options","required","accept","FileUpload","buildRepeaterPage","partialRepeaterPage","repeaterPage","TextField","schema","Repeat","repeat","min","max"],"sources":["../../../src/__stubs__/pages.ts"],"sourcesContent":["import { buildFileUploadComponent } from '~/src/__stubs__/components.js'\nimport { ComponentType } from '~/src/components/enums.js'\nimport {\n type PageFileUpload,\n type PageQuestion,\n type PageRepeat,\n type PageSummary\n} from '~/src/form/form-definition/types.js'\nimport { ControllerPath, ControllerType } from '~/src/pages/enums.js'\n\n/**\n * Stub builder for a question page\n * @param {Partial<PageQuestion>} [partialPage]\n * @returns {PageQuestion}\n */\nexport function buildQuestionPage(\n partialPage: Partial<PageQuestion>\n): PageQuestion {\n return {\n id: 'ffefd409-f3f4-49fe-882e-6e89f44631b1',\n title: 'Page One',\n path: '/page-one',\n next: [],\n components: [],\n ...partialPage\n }\n}\n\n/**\n * Stub builder for a Summary page\n * @param {Partial<PageSummary>} [partialSummaryPage]\n */\nexport function buildSummaryPage(\n partialSummaryPage: Partial<PageSummary> = {}\n): PageSummary {\n const pageSummary: PageSummary = {\n id: '449a45f6-4541-4a46-91bd-8b8931b07b50',\n title: 'Summary page',\n path: ControllerPath.Summary,\n controller: ControllerType.Summary\n }\n return { ...pageSummary, ...partialSummaryPage }\n}\n\n/**\n *\n * @param {Partial<PageFileUpload>} partialFileUploadPage\n * @returns {PageFileUpload}\n */\nexport function buildFileUploadPage(\n partialFileUploadPage: Partial<PageFileUpload> = {}\n): PageFileUpload {\n const fileUploadPage: PageFileUpload = {\n id: '85e5c8da-88f5-4009-a821-7d7de1364318',\n title: '',\n path: '/supporting-evidence',\n components: [\n buildFileUploadComponent({\n type: ComponentType.FileUploadField,\n title: 'Supporting Evidence',\n name: 'yBpZQO',\n shortDescription: 'Supporting evidence',\n hint: '',\n options: {\n required: true,\n accept:\n 'application/pdf,application/msword,image/jpeg,application/vnd.ms-excel,text/csv'\n },\n id: '4189b8a1-1a04-4f74-a7a0-dd23012a0ee0'\n })\n ],\n controller: ControllerType.FileUpload,\n next: []\n }\n\n return {\n ...fileUploadPage,\n ...partialFileUploadPage\n }\n}\n\n/**\n *\n * @param {Partial<PageRepeat>} partialRepeaterPage\n * @returns {PageRepeat}\n */\nexport function buildRepeaterPage(\n partialRepeaterPage: Partial<PageRepeat> = {}\n): PageRepeat {\n const repeaterPage: PageRepeat = {\n title: 'Repeater Page',\n path: '/repeater-page',\n components: [\n {\n type: ComponentType.TextField,\n title: 'Simple text field',\n name: 'IHAIzC',\n shortDescription: 'Your simple text field',\n hint: '',\n options: {},\n schema: {},\n id: 'ee83413e-31b6-4158-98e0-4611479582ce'\n }\n ],\n next: [],\n id: '32888028-61db-40fc-b255-80bc67829d31',\n controller: ControllerType.Repeat,\n repeat: {\n options: { name: 'fawfed', title: 'Simple question responses' },\n schema: { min: 1, max: 3 }\n }\n }\n\n return {\n ...repeaterPage,\n ...partialRepeaterPage\n }\n}\n"],"mappings":"AAAA,SAASA,wBAAwB;AACjC,SAASC,aAAa;AAOtB,SAASC,cAAc,EAAEC,cAAc;;AAEvC;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAC/BC,WAAkC,EACpB;EACd,OAAO;IACLC,EAAE,EAAE,sCAAsC;IAC1CC,KAAK,EAAE,UAAU;IACjBC,IAAI,EAAE,WAAW;IACjBC,IAAI,EAAE,EAAE;IACRC,UAAU,EAAE,EAAE;IACd,GAAGL;EACL,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASM,gBAAgBA,CAC9BC,kBAAwC,GAAG,CAAC,CAAC,EAChC;EACb,MAAMC,WAAwB,GAAG;IAC/BP,EAAE,EAAE,sCAAsC;IAC1CC,KAAK,EAAE,cAAc;IACrBC,IAAI,EAAEN,cAAc,CAACY,OAAO;IAC5BC,UAAU,EAAEZ,cAAc,CAACW;EAC7B,CAAC;EACD,OAAO;IAAE,GAAGD,WAAW;IAAE,GAAGD;EAAmB,CAAC;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,mBAAmBA,CACjCC,qBAA8C,GAAG,CAAC,CAAC,EACnC;EAChB,MAAMC,cAA8B,GAAG;IACrCZ,EAAE,EAAE,sCAAsC;IAC1CC,KAAK,EAAE,EAAE;IACTC,IAAI,EAAE,sBAAsB;IAC5BE,UAAU,EAAE,CACVV,wBAAwB,CAAC;MACvBmB,IAAI,EAAElB,aAAa,CAACmB,eAAe;MACnCb,KAAK,EAAE,qBAAqB;MAC5Bc,IAAI,EAAE,QAAQ;MACdC,gBAAgB,EAAE,qBAAqB;MACvCC,IAAI,EAAE,EAAE;MACRC,OAAO,EAAE;QACPC,QAAQ,EAAE,IAAI;QACdC,MAAM,EACJ;MACJ,CAAC;MACDpB,EAAE,EAAE;IACN,CAAC,CAAC,CACH;IACDS,UAAU,EAAEZ,cAAc,CAACwB,UAAU;IACrClB,IAAI,EAAE;EACR,CAAC;EAED,OAAO;IACL,GAAGS,cAAc;IACjB,GAAGD;EACL,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASW,iBAAiBA,CAC/BC,mBAAwC,GAAG,CAAC,CAAC,EACjC;EACZ,MAAMC,YAAwB,GAAG;IAC/BvB,KAAK,EAAE,eAAe;IACtBC,IAAI,EAAE,gBAAgB;IACtBE,UAAU,EAAE,CACV;MACES,IAAI,EAAElB,aAAa,CAAC8B,SAAS;MAC7BxB,KAAK,EAAE,mBAAmB;MAC1Bc,IAAI,EAAE,QAAQ;MACdC,gBAAgB,EAAE,wBAAwB;MAC1CC,IAAI,EAAE,EAAE;MACRC,OAAO,EAAE,CAAC,CAAC;MACXQ,MAAM,EAAE,CAAC,CAAC;MACV1B,EAAE,EAAE;IACN,CAAC,CACF;IACDG,IAAI,EAAE,EAAE;IACRH,EAAE,EAAE,sCAAsC;IAC1CS,UAAU,EAAEZ,cAAc,CAAC8B,MAAM;IACjCC,MAAM,EAAE;MACNV,OAAO,EAAE;QAAEH,IAAI,EAAE,QAAQ;QAAEd,KAAK,EAAE;MAA4B,CAAC;MAC/DyB,MAAM,EAAE;QAAEG,GAAG,EAAE,CAAC;QAAEC,GAAG,EAAE;MAAE;IAC3B;EACF,CAAC;EAED,OAAO;IACL,GAAGN,YAAY;IACf,GAAGD;EACL,CAAC;AACH","ignoreList":[]}
@@ -10,6 +10,9 @@ export class ConditionAbstract {
10
10
  coordinatorString() {
11
11
  return this.coordinator ? `${this.coordinator} ` : '';
12
12
  }
13
+ coordinatorHtml() {
14
+ return this.coordinator ? `<span class="govuk-!-font-weight-bold">${this.coordinator.toUpperCase()}</span> ` : '';
15
+ }
13
16
  getCoordinator() {
14
17
  return this.coordinator;
15
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"condition-abstract.js","names":["Coordinator","ConditionAbstract","coordinator","constructor","Object","values","includes","Error","coordinatorString","getCoordinator","setCoordinator","isGroup","getGroupedConditions","_asFirstCondition","asFirstCondition","clone","conditionString","conditionExpression"],"sources":["../../../src/conditions/condition-abstract.ts"],"sourcesContent":["import { Coordinator } from '~/src/conditions/enums.js'\n\nexport class ConditionAbstract {\n coordinator?: Coordinator\n\n constructor(coordinator?: Coordinator) {\n if (coordinator && !Object.values(Coordinator).includes(coordinator)) {\n throw Error(`coordinator ${coordinator} is not a valid coordinator`)\n }\n\n this.coordinator = coordinator\n }\n\n coordinatorString(): string {\n return this.coordinator ? `${this.coordinator} ` : ''\n }\n\n getCoordinator(): Coordinator | undefined {\n return this.coordinator\n }\n\n setCoordinator(coordinator?: Coordinator) {\n this.coordinator = coordinator\n }\n\n isGroup() {\n return false\n }\n\n getGroupedConditions() {\n return [this]\n }\n\n _asFirstCondition() {\n delete this.coordinator\n }\n\n asFirstCondition() {\n throw Error(\n 'Unsupported Operation. Method asFirstCondition have not been implemented'\n )\n }\n\n clone() {\n throw Error('Unsupported Operation. Method clone have not been implemented')\n }\n\n conditionString() {\n throw Error(\n 'Unsupported Operation. Method conditionString have not been implemented'\n )\n }\n\n conditionExpression() {\n throw Error(\n 'Unsupported Operation. Method conditionExpression have not been implemented'\n )\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW;AAEpB,OAAO,MAAMC,iBAAiB,CAAC;EAC7BC,WAAW;EAEXC,WAAWA,CAACD,WAAyB,EAAE;IACrC,IAAIA,WAAW,IAAI,CAACE,MAAM,CAACC,MAAM,CAACL,WAAW,CAAC,CAACM,QAAQ,CAACJ,WAAW,CAAC,EAAE;MACpE,MAAMK,KAAK,CAAC,eAAeL,WAAW,6BAA6B,CAAC;IACtE;IAEA,IAAI,CAACA,WAAW,GAAGA,WAAW;EAChC;EAEAM,iBAAiBA,CAAA,EAAW;IAC1B,OAAO,IAAI,CAACN,WAAW,GAAG,GAAG,IAAI,CAACA,WAAW,GAAG,GAAG,EAAE;EACvD;EAEAO,cAAcA,CAAA,EAA4B;IACxC,OAAO,IAAI,CAACP,WAAW;EACzB;EAEAQ,cAAcA,CAACR,WAAyB,EAAE;IACxC,IAAI,CAACA,WAAW,GAAGA,WAAW;EAChC;EAEAS,OAAOA,CAAA,EAAG;IACR,OAAO,KAAK;EACd;EAEAC,oBAAoBA,CAAA,EAAG;IACrB,OAAO,CAAC,IAAI,CAAC;EACf;EAEAC,iBAAiBA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACX,WAAW;EACzB;EAEAY,gBAAgBA,CAAA,EAAG;IACjB,MAAMP,KAAK,CACT,0EACF,CAAC;EACH;EAEAQ,KAAKA,CAAA,EAAG;IACN,MAAMR,KAAK,CAAC,+DAA+D,CAAC;EAC9E;EAEAS,eAAeA,CAAA,EAAG;IAChB,MAAMT,KAAK,CACT,yEACF,CAAC;EACH;EAEAU,mBAAmBA,CAAA,EAAG;IACpB,MAAMV,KAAK,CACT,6EACF,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"version":3,"file":"condition-abstract.js","names":["Coordinator","ConditionAbstract","coordinator","constructor","Object","values","includes","Error","coordinatorString","coordinatorHtml","toUpperCase","getCoordinator","setCoordinator","isGroup","getGroupedConditions","_asFirstCondition","asFirstCondition","clone","conditionString","conditionExpression"],"sources":["../../../src/conditions/condition-abstract.ts"],"sourcesContent":["import { Coordinator } from '~/src/conditions/enums.js'\n\nexport class ConditionAbstract {\n coordinator?: Coordinator\n\n constructor(coordinator?: Coordinator) {\n if (coordinator && !Object.values(Coordinator).includes(coordinator)) {\n throw Error(`coordinator ${coordinator} is not a valid coordinator`)\n }\n\n this.coordinator = coordinator\n }\n\n coordinatorString(): string {\n return this.coordinator ? `${this.coordinator} ` : ''\n }\n\n coordinatorHtml(): string {\n return this.coordinator\n ? `<span class=\"govuk-!-font-weight-bold\">${this.coordinator.toUpperCase()}</span> `\n : ''\n }\n\n getCoordinator(): Coordinator | undefined {\n return this.coordinator\n }\n\n setCoordinator(coordinator?: Coordinator) {\n this.coordinator = coordinator\n }\n\n isGroup() {\n return false\n }\n\n getGroupedConditions() {\n return [this]\n }\n\n _asFirstCondition() {\n delete this.coordinator\n }\n\n asFirstCondition() {\n throw Error(\n 'Unsupported Operation. Method asFirstCondition have not been implemented'\n )\n }\n\n clone() {\n throw Error('Unsupported Operation. Method clone have not been implemented')\n }\n\n conditionString() {\n throw Error(\n 'Unsupported Operation. Method conditionString have not been implemented'\n )\n }\n\n conditionExpression() {\n throw Error(\n 'Unsupported Operation. Method conditionExpression have not been implemented'\n )\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW;AAEpB,OAAO,MAAMC,iBAAiB,CAAC;EAC7BC,WAAW;EAEXC,WAAWA,CAACD,WAAyB,EAAE;IACrC,IAAIA,WAAW,IAAI,CAACE,MAAM,CAACC,MAAM,CAACL,WAAW,CAAC,CAACM,QAAQ,CAACJ,WAAW,CAAC,EAAE;MACpE,MAAMK,KAAK,CAAC,eAAeL,WAAW,6BAA6B,CAAC;IACtE;IAEA,IAAI,CAACA,WAAW,GAAGA,WAAW;EAChC;EAEAM,iBAAiBA,CAAA,EAAW;IAC1B,OAAO,IAAI,CAACN,WAAW,GAAG,GAAG,IAAI,CAACA,WAAW,GAAG,GAAG,EAAE;EACvD;EAEAO,eAAeA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACP,WAAW,GACnB,0CAA0C,IAAI,CAACA,WAAW,CAACQ,WAAW,CAAC,CAAC,UAAU,GAClF,EAAE;EACR;EAEAC,cAAcA,CAAA,EAA4B;IACxC,OAAO,IAAI,CAACT,WAAW;EACzB;EAEAU,cAAcA,CAACV,WAAyB,EAAE;IACxC,IAAI,CAACA,WAAW,GAAGA,WAAW;EAChC;EAEAW,OAAOA,CAAA,EAAG;IACR,OAAO,KAAK;EACd;EAEAC,oBAAoBA,CAAA,EAAG;IACrB,OAAO,CAAC,IAAI,CAAC;EACf;EAEAC,iBAAiBA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACb,WAAW;EACzB;EAEAc,gBAAgBA,CAAA,EAAG;IACjB,MAAMT,KAAK,CACT,0EACF,CAAC;EACH;EAEAU,KAAKA,CAAA,EAAG;IACN,MAAMV,KAAK,CAAC,+DAA+D,CAAC;EAC9E;EAEAW,eAAeA,CAAA,EAAG;IAChB,MAAMX,KAAK,CACT,yEACF,CAAC;EACH;EAEAY,mBAAmBA,CAAA,EAAG;IACpB,MAAMZ,KAAK,CACT,6EACF,CAAC;EACH;AACF","ignoreList":[]}
@@ -11,6 +11,9 @@ export class ConditionGroup {
11
11
  coordinatorString() {
12
12
  return this.conditions[0].coordinatorString();
13
13
  }
14
+ coordinatorHtml() {
15
+ return this.conditions[0].coordinatorHtml();
16
+ }
14
17
  conditionString() {
15
18
  const copy = [...this.conditions];
16
19
  copy.splice(0, 1);
@@ -1 +1 @@
1
- {"version":3,"file":"condition-group.js","names":["conditionFrom","toExpression","toPresentationString","ConditionGroup","conditions","constructor","Array","isArray","length","Error","coordinatorString","conditionString","copy","splice","map","condition","join","conditionExpression","asFirstCondition","getCoordinator","setCoordinator","coordinator","isGroup","getGroupedConditions","clone","from","toJSON","structuredClone","obj"],"sources":["../../../src/conditions/condition-group.ts"],"sourcesContent":["import { conditionFrom } from '~/src/conditions/condition-model.js'\nimport { type ConditionRef } from '~/src/conditions/condition-ref.js'\nimport { type Condition } from '~/src/conditions/condition.js'\nimport { type Coordinator } from '~/src/conditions/enums.js'\nimport { toExpression, toPresentationString } from '~/src/conditions/helpers.js'\nimport { type ConditionGroupData } from '~/src/conditions/types.js'\n\nexport class ConditionGroup {\n conditions: (Condition | ConditionRef | ConditionGroup)[]\n\n constructor(conditions: (Condition | ConditionRef | ConditionGroup)[] = []) {\n if (!Array.isArray(conditions) || conditions.length < 2) {\n throw Error('Cannot construct a condition group from a single condition')\n }\n\n this.conditions = conditions\n }\n\n coordinatorString(): string {\n return this.conditions[0].coordinatorString()\n }\n\n conditionString(): string {\n const copy = [...this.conditions]\n copy.splice(0, 1)\n return `(${this.conditions[0].conditionString()} ${copy\n .map((condition) => toPresentationString(condition))\n .join(' ')})`\n }\n\n conditionExpression(): string {\n const copy = [...this.conditions]\n copy.splice(0, 1)\n return `(${this.conditions[0].conditionExpression()} ${copy\n .map((condition) => toExpression(condition))\n .join(' ')})`\n }\n\n asFirstCondition() {\n this.conditions[0].asFirstCondition()\n return this\n }\n\n getCoordinator(): Coordinator | undefined {\n return this.conditions[0].getCoordinator()\n }\n\n setCoordinator(coordinator?: Coordinator) {\n this.conditions[0].setCoordinator(coordinator)\n }\n\n isGroup() {\n return true\n }\n\n getGroupedConditions(): (Condition | ConditionRef | ConditionGroup)[] {\n return this.conditions.map((condition) => condition.clone())\n }\n\n clone(): ConditionGroup {\n return ConditionGroup.from(this)\n }\n\n toJSON(): ConditionGroupData {\n const { conditions } = this.clone()\n\n return structuredClone({\n conditions: conditions.map((condition) => condition.toJSON())\n })\n }\n\n static from(obj: ConditionGroupData | ConditionGroup): ConditionGroup {\n return new ConditionGroup(\n obj.conditions.map((condition) => {\n return 'clone' in condition\n ? condition.clone()\n : conditionFrom(condition)\n })\n )\n }\n}\n"],"mappings":"AAAA,SAASA,aAAa;AAItB,SAASC,YAAY,EAAEC,oBAAoB;AAG3C,OAAO,MAAMC,cAAc,CAAC;EAC1BC,UAAU;EAEVC,WAAWA,CAACD,UAAyD,GAAG,EAAE,EAAE;IAC1E,IAAI,CAACE,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,IAAIA,UAAU,CAACI,MAAM,GAAG,CAAC,EAAE;MACvD,MAAMC,KAAK,CAAC,4DAA4D,CAAC;IAC3E;IAEA,IAAI,CAACL,UAAU,GAAGA,UAAU;EAC9B;EAEAM,iBAAiBA,CAAA,EAAW;IAC1B,OAAO,IAAI,CAACN,UAAU,CAAC,CAAC,CAAC,CAACM,iBAAiB,CAAC,CAAC;EAC/C;EAEAC,eAAeA,CAAA,EAAW;IACxB,MAAMC,IAAI,GAAG,CAAC,GAAG,IAAI,CAACR,UAAU,CAAC;IACjCQ,IAAI,CAACC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,IAAI,IAAI,CAACT,UAAU,CAAC,CAAC,CAAC,CAACO,eAAe,CAAC,CAAC,IAAIC,IAAI,CACpDE,GAAG,CAAEC,SAAS,IAAKb,oBAAoB,CAACa,SAAS,CAAC,CAAC,CACnDC,IAAI,CAAC,GAAG,CAAC,GAAG;EACjB;EAEAC,mBAAmBA,CAAA,EAAW;IAC5B,MAAML,IAAI,GAAG,CAAC,GAAG,IAAI,CAACR,UAAU,CAAC;IACjCQ,IAAI,CAACC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,IAAI,IAAI,CAACT,UAAU,CAAC,CAAC,CAAC,CAACa,mBAAmB,CAAC,CAAC,IAAIL,IAAI,CACxDE,GAAG,CAAEC,SAAS,IAAKd,YAAY,CAACc,SAAS,CAAC,CAAC,CAC3CC,IAAI,CAAC,GAAG,CAAC,GAAG;EACjB;EAEAE,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAACd,UAAU,CAAC,CAAC,CAAC,CAACc,gBAAgB,CAAC,CAAC;IACrC,OAAO,IAAI;EACb;EAEAC,cAAcA,CAAA,EAA4B;IACxC,OAAO,IAAI,CAACf,UAAU,CAAC,CAAC,CAAC,CAACe,cAAc,CAAC,CAAC;EAC5C;EAEAC,cAAcA,CAACC,WAAyB,EAAE;IACxC,IAAI,CAACjB,UAAU,CAAC,CAAC,CAAC,CAACgB,cAAc,CAACC,WAAW,CAAC;EAChD;EAEAC,OAAOA,CAAA,EAAG;IACR,OAAO,IAAI;EACb;EAEAC,oBAAoBA,CAAA,EAAkD;IACpE,OAAO,IAAI,CAACnB,UAAU,CAACU,GAAG,CAAEC,SAAS,IAAKA,SAAS,CAACS,KAAK,CAAC,CAAC,CAAC;EAC9D;EAEAA,KAAKA,CAAA,EAAmB;IACtB,OAAOrB,cAAc,CAACsB,IAAI,CAAC,IAAI,CAAC;EAClC;EAEAC,MAAMA,CAAA,EAAuB;IAC3B,MAAM;MAAEtB;IAAW,CAAC,GAAG,IAAI,CAACoB,KAAK,CAAC,CAAC;IAEnC,OAAOG,eAAe,CAAC;MACrBvB,UAAU,EAAEA,UAAU,CAACU,GAAG,CAAEC,SAAS,IAAKA,SAAS,CAACW,MAAM,CAAC,CAAC;IAC9D,CAAC,CAAC;EACJ;EAEA,OAAOD,IAAIA,CAACG,GAAwC,EAAkB;IACpE,OAAO,IAAIzB,cAAc,CACvByB,GAAG,CAACxB,UAAU,CAACU,GAAG,CAAEC,SAAS,IAAK;MAChC,OAAO,OAAO,IAAIA,SAAS,GACvBA,SAAS,CAACS,KAAK,CAAC,CAAC,GACjBxB,aAAa,CAACe,SAAS,CAAC;IAC9B,CAAC,CACH,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"version":3,"file":"condition-group.js","names":["conditionFrom","toExpression","toPresentationString","ConditionGroup","conditions","constructor","Array","isArray","length","Error","coordinatorString","coordinatorHtml","conditionString","copy","splice","map","condition","join","conditionExpression","asFirstCondition","getCoordinator","setCoordinator","coordinator","isGroup","getGroupedConditions","clone","from","toJSON","structuredClone","obj"],"sources":["../../../src/conditions/condition-group.ts"],"sourcesContent":["import { conditionFrom } from '~/src/conditions/condition-model.js'\nimport { type ConditionRef } from '~/src/conditions/condition-ref.js'\nimport { type Condition } from '~/src/conditions/condition.js'\nimport { type Coordinator } from '~/src/conditions/enums.js'\nimport { toExpression, toPresentationString } from '~/src/conditions/helpers.js'\nimport { type ConditionGroupData } from '~/src/conditions/types.js'\n\nexport class ConditionGroup {\n conditions: (Condition | ConditionRef | ConditionGroup)[]\n\n constructor(conditions: (Condition | ConditionRef | ConditionGroup)[] = []) {\n if (!Array.isArray(conditions) || conditions.length < 2) {\n throw Error('Cannot construct a condition group from a single condition')\n }\n\n this.conditions = conditions\n }\n\n coordinatorString(): string {\n return this.conditions[0].coordinatorString()\n }\n\n coordinatorHtml(): string {\n return this.conditions[0].coordinatorHtml()\n }\n\n conditionString(): string {\n const copy = [...this.conditions]\n copy.splice(0, 1)\n return `(${this.conditions[0].conditionString()} ${copy\n .map((condition) => toPresentationString(condition))\n .join(' ')})`\n }\n\n conditionExpression(): string {\n const copy = [...this.conditions]\n copy.splice(0, 1)\n return `(${this.conditions[0].conditionExpression()} ${copy\n .map((condition) => toExpression(condition))\n .join(' ')})`\n }\n\n asFirstCondition() {\n this.conditions[0].asFirstCondition()\n return this\n }\n\n getCoordinator(): Coordinator | undefined {\n return this.conditions[0].getCoordinator()\n }\n\n setCoordinator(coordinator?: Coordinator) {\n this.conditions[0].setCoordinator(coordinator)\n }\n\n isGroup() {\n return true\n }\n\n getGroupedConditions(): (Condition | ConditionRef | ConditionGroup)[] {\n return this.conditions.map((condition) => condition.clone())\n }\n\n clone(): ConditionGroup {\n return ConditionGroup.from(this)\n }\n\n toJSON(): ConditionGroupData {\n const { conditions } = this.clone()\n\n return structuredClone({\n conditions: conditions.map((condition) => condition.toJSON())\n })\n }\n\n static from(obj: ConditionGroupData | ConditionGroup): ConditionGroup {\n return new ConditionGroup(\n obj.conditions.map((condition) => {\n return 'clone' in condition\n ? condition.clone()\n : conditionFrom(condition)\n })\n )\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@ import { ConditionGroup } from "./condition-group.js";
3
3
  import { ConditionRef } from "./condition-ref.js";
4
4
  import { Condition } from "./condition.js";
5
5
  import { Coordinator } from "./enums.js";
6
- import { hasConditionGroup, hasConditionName, toExpression, toPresentationString } from "./helpers.js";
6
+ import { hasConditionGroup, hasConditionName, toExpression, toPresentationHtml, toPresentationString } from "./helpers.js";
7
7
  export class ConditionsModel {
8
8
  #groupedConditions = [];
9
9
  #userGroupedConditions = [];
@@ -102,6 +102,9 @@ export class ConditionsModel {
102
102
  toPresentationString() {
103
103
  return this.#groupedConditions.map(condition => toPresentationString(condition)).join(' ');
104
104
  }
105
+ toPresentationHtml() {
106
+ return this.#groupedConditions.map(condition => toPresentationHtml(condition)).join(' ');
107
+ }
105
108
  toExpression() {
106
109
  return this.#groupedConditions.map(condition => toExpression(condition)).join(' ');
107
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"condition-model.js","names":["ConditionGroupDef","ConditionGroup","ConditionRef","Condition","Coordinator","hasConditionGroup","hasConditionName","toExpression","toPresentationString","ConditionsModel","groupedConditions","userGroupedConditions","conditionName","undefined","clone","toReturn","map","it","clear","name","add","condition","coordinatorExpected","length","getCoordinator","Error","push","_applyGroups","replace","index","splice","remove","indexes","filter","_condition","includes","asFirstCondition","addGroups","groupDefs","_group","splitGroup","_ungroup","moveEarlier","switchCoordinators","moveLater","setCoordinator","asPerUserGroupings","hasConditions","lastIndex","join","correctedUserGroups","conditions","_autoGroupDefs","reduce","groups","groupDef","find","contains","startsWith","groupConditions","applyTo","splitIndex","isGroup","copy","getGroupedConditions","orPositions","forEach","OR","hasOr","hasAnd","AND","start","position","thisIsTheLastOr","thereAreMoreConditions","toJSON","from","obj","conditionFrom"],"sources":["../../../src/conditions/condition-model.ts"],"sourcesContent":["import { ConditionGroupDef } from '~/src/conditions/condition-group-def.js'\nimport { ConditionGroup } from '~/src/conditions/condition-group.js'\nimport { ConditionRef } from '~/src/conditions/condition-ref.js'\nimport { Condition } from '~/src/conditions/condition.js'\nimport { Coordinator } from '~/src/conditions/enums.js'\nimport {\n hasConditionGroup,\n hasConditionName,\n toExpression,\n toPresentationString\n} from '~/src/conditions/helpers.js'\nimport {\n type ConditionData,\n type ConditionGroupData,\n type ConditionRefData,\n type ConditionsModelData\n} from '~/src/conditions/types.js'\n\nexport class ConditionsModel {\n #groupedConditions: (Condition | ConditionRef | ConditionGroup)[] = []\n #userGroupedConditions: (Condition | ConditionRef | ConditionGroup)[] = []\n #conditionName: string | undefined = undefined\n\n clone() {\n const toReturn = new ConditionsModel()\n toReturn.#groupedConditions = this.#groupedConditions.map((it) =>\n it.clone()\n )\n toReturn.#userGroupedConditions = this.#userGroupedConditions.map((it) =>\n it.clone()\n )\n toReturn.#conditionName = this.#conditionName\n return toReturn\n }\n\n clear() {\n this.#userGroupedConditions = []\n this.#groupedConditions = []\n this.#conditionName = undefined\n return this\n }\n\n set name(name) {\n this.#conditionName = name\n }\n\n get name() {\n return this.#conditionName\n }\n\n add(condition: Condition | ConditionRef | ConditionGroup) {\n const coordinatorExpected = this.#userGroupedConditions.length !== 0\n\n if (condition.getCoordinator() && !coordinatorExpected) {\n throw Error('No coordinator allowed on the first condition')\n } else if (!condition.getCoordinator() && coordinatorExpected) {\n throw Error('Coordinator must be present on subsequent conditions')\n }\n\n this.#userGroupedConditions.push(condition)\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n\n return this\n }\n\n replace(index: number, condition: Condition | ConditionRef | ConditionGroup) {\n const coordinatorExpected = index !== 0\n\n if (condition.getCoordinator() && !coordinatorExpected) {\n throw Error('No coordinator allowed on the first condition')\n } else if (!condition.getCoordinator() && coordinatorExpected) {\n throw Error('Coordinator must be present on subsequent conditions')\n } else if (index >= this.#userGroupedConditions.length) {\n throw Error(\n `Cannot replace condition ${index} as no such condition exists`\n )\n }\n\n this.#userGroupedConditions.splice(index, 1, condition)\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n\n return this\n }\n\n remove(indexes: number[]) {\n this.#userGroupedConditions = this.#userGroupedConditions\n .filter((_condition, index) => !indexes.includes(index))\n .map((condition, index) =>\n index === 0 ? condition.asFirstCondition() : condition\n )\n\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n return this\n }\n\n addGroups(groupDefs: ConditionGroupDef[]) {\n this.#userGroupedConditions = this._group(\n this.#userGroupedConditions,\n groupDefs\n )\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n return this\n }\n\n splitGroup(index: number) {\n this.#userGroupedConditions = this._ungroup(\n this.#userGroupedConditions,\n index\n )\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n return this\n }\n\n moveEarlier(index: number) {\n if (index > 0 && index < this.#userGroupedConditions.length) {\n this.#userGroupedConditions.splice(\n index - 1,\n 0,\n this.#userGroupedConditions.splice(index, 1)[0]\n )\n if (index === 1) {\n this.switchCoordinators()\n }\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n }\n return this\n }\n\n moveLater(index: number) {\n if (index >= 0 && index < this.#userGroupedConditions.length - 1) {\n this.#userGroupedConditions.splice(\n index + 1,\n 0,\n this.#userGroupedConditions.splice(index, 1)[0]\n )\n if (index === 0) {\n this.switchCoordinators()\n }\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n }\n return this\n }\n\n switchCoordinators() {\n this.#userGroupedConditions[1].setCoordinator(\n this.#userGroupedConditions[0].getCoordinator()\n )\n this.#userGroupedConditions[0].setCoordinator()\n }\n\n get asPerUserGroupings() {\n return [...this.#userGroupedConditions]\n }\n\n get hasConditions() {\n return this.#userGroupedConditions.length > 0\n }\n\n get lastIndex() {\n return this.#userGroupedConditions.length - 1\n }\n\n toPresentationString() {\n return this.#groupedConditions\n .map((condition) => toPresentationString(condition))\n .join(' ')\n }\n\n toExpression() {\n return this.#groupedConditions\n .map((condition) => toExpression(condition))\n .join(' ')\n }\n\n _applyGroups(\n userGroupedConditions: (Condition | ConditionRef | ConditionGroup)[]\n ) {\n const correctedUserGroups = userGroupedConditions.map((condition) =>\n condition instanceof ConditionGroup && condition.conditions.length > 2\n ? new ConditionGroup(\n this._group(\n condition.conditions,\n this._autoGroupDefs(condition.conditions)\n )\n )\n : condition\n )\n\n return this._group(\n correctedUserGroups,\n this._autoGroupDefs(correctedUserGroups)\n )\n }\n\n _group(\n conditions: (Condition | ConditionRef | ConditionGroup)[],\n groupDefs: ConditionGroupDef[]\n ) {\n return conditions.reduce<(Condition | ConditionRef | ConditionGroup)[]>(\n (groups, condition, index, conditions) => {\n const groupDef = groupDefs.find((groupDef) => groupDef.contains(index))\n\n if (groupDef) {\n if (groupDef.startsWith(index)) {\n const groupConditions = groupDef.applyTo(conditions)\n groups.push(new ConditionGroup(groupConditions))\n }\n } else {\n groups.push(condition)\n }\n\n return groups\n },\n []\n )\n }\n\n _ungroup(\n conditions: (Condition | ConditionRef | ConditionGroup)[],\n splitIndex: number\n ) {\n if (conditions[splitIndex].isGroup()) {\n const copy = [...conditions]\n copy.splice(\n splitIndex,\n 1,\n ...conditions[splitIndex].getGroupedConditions()\n )\n return copy\n }\n return conditions\n }\n\n _autoGroupDefs(conditions: (Condition | ConditionRef | ConditionGroup)[]) {\n const orPositions: number[] = []\n\n conditions.forEach((condition, index) => {\n if (condition.getCoordinator() === Coordinator.OR) {\n orPositions.push(index)\n }\n })\n\n const hasOr = orPositions.length > 0\n const hasAnd = !!conditions.find(\n (condition) => condition.getCoordinator() === Coordinator.AND\n )\n\n if (hasAnd && hasOr) {\n let start = 0\n const groupDefs: ConditionGroupDef[] = []\n orPositions.forEach((position, index) => {\n if (start < position - 1) {\n groupDefs.push(new ConditionGroupDef(start, position - 1))\n }\n const thisIsTheLastOr = orPositions.length === index + 1\n const thereAreMoreConditions = conditions.length - 1 > position\n if (thisIsTheLastOr && thereAreMoreConditions) {\n groupDefs.push(new ConditionGroupDef(position, conditions.length - 1))\n }\n start = position\n })\n return groupDefs\n }\n\n return []\n }\n\n toJSON() {\n const name = this.#conditionName\n const conditions = this.#userGroupedConditions\n return {\n name: name ?? '',\n conditions: conditions.map((it) => it.toJSON())\n }\n }\n\n // TODO:- why is this not a constructor?\n static from(obj: ConditionsModel | ConditionsModelData) {\n if (obj instanceof ConditionsModel) {\n return obj\n }\n const toReturn = new ConditionsModel()\n toReturn.#conditionName = obj.name\n toReturn.#userGroupedConditions = obj.conditions.map(conditionFrom)\n toReturn.#groupedConditions = toReturn._applyGroups(\n toReturn.#userGroupedConditions\n )\n return toReturn\n }\n}\n\nexport function conditionFrom(\n it: ConditionData | ConditionRefData | ConditionGroupData\n): Condition | ConditionRef | ConditionGroup {\n if (hasConditionGroup(it)) {\n return new ConditionGroup(it.conditions.map(conditionFrom))\n }\n\n if (hasConditionName(it)) {\n return ConditionRef.from(it)\n }\n\n return Condition.from(it)\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"condition-model.js","names":["ConditionGroupDef","ConditionGroup","ConditionRef","Condition","Coordinator","hasConditionGroup","hasConditionName","toExpression","toPresentationHtml","toPresentationString","ConditionsModel","groupedConditions","userGroupedConditions","conditionName","undefined","clone","toReturn","map","it","clear","name","add","condition","coordinatorExpected","length","getCoordinator","Error","push","_applyGroups","replace","index","splice","remove","indexes","filter","_condition","includes","asFirstCondition","addGroups","groupDefs","_group","splitGroup","_ungroup","moveEarlier","switchCoordinators","moveLater","setCoordinator","asPerUserGroupings","hasConditions","lastIndex","join","correctedUserGroups","conditions","_autoGroupDefs","reduce","groups","groupDef","find","contains","startsWith","groupConditions","applyTo","splitIndex","isGroup","copy","getGroupedConditions","orPositions","forEach","OR","hasOr","hasAnd","AND","start","position","thisIsTheLastOr","thereAreMoreConditions","toJSON","from","obj","conditionFrom"],"sources":["../../../src/conditions/condition-model.ts"],"sourcesContent":["import { ConditionGroupDef } from '~/src/conditions/condition-group-def.js'\nimport { ConditionGroup } from '~/src/conditions/condition-group.js'\nimport { ConditionRef } from '~/src/conditions/condition-ref.js'\nimport { Condition } from '~/src/conditions/condition.js'\nimport { Coordinator } from '~/src/conditions/enums.js'\nimport {\n hasConditionGroup,\n hasConditionName,\n toExpression,\n toPresentationHtml,\n toPresentationString\n} from '~/src/conditions/helpers.js'\nimport {\n type ConditionData,\n type ConditionGroupData,\n type ConditionRefData,\n type ConditionsModelData\n} from '~/src/conditions/types.js'\n\nexport class ConditionsModel {\n #groupedConditions: (Condition | ConditionRef | ConditionGroup)[] = []\n #userGroupedConditions: (Condition | ConditionRef | ConditionGroup)[] = []\n #conditionName: string | undefined = undefined\n\n clone() {\n const toReturn = new ConditionsModel()\n toReturn.#groupedConditions = this.#groupedConditions.map((it) =>\n it.clone()\n )\n toReturn.#userGroupedConditions = this.#userGroupedConditions.map((it) =>\n it.clone()\n )\n toReturn.#conditionName = this.#conditionName\n return toReturn\n }\n\n clear() {\n this.#userGroupedConditions = []\n this.#groupedConditions = []\n this.#conditionName = undefined\n return this\n }\n\n set name(name) {\n this.#conditionName = name\n }\n\n get name() {\n return this.#conditionName\n }\n\n add(condition: Condition | ConditionRef | ConditionGroup) {\n const coordinatorExpected = this.#userGroupedConditions.length !== 0\n\n if (condition.getCoordinator() && !coordinatorExpected) {\n throw Error('No coordinator allowed on the first condition')\n } else if (!condition.getCoordinator() && coordinatorExpected) {\n throw Error('Coordinator must be present on subsequent conditions')\n }\n\n this.#userGroupedConditions.push(condition)\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n\n return this\n }\n\n replace(index: number, condition: Condition | ConditionRef | ConditionGroup) {\n const coordinatorExpected = index !== 0\n\n if (condition.getCoordinator() && !coordinatorExpected) {\n throw Error('No coordinator allowed on the first condition')\n } else if (!condition.getCoordinator() && coordinatorExpected) {\n throw Error('Coordinator must be present on subsequent conditions')\n } else if (index >= this.#userGroupedConditions.length) {\n throw Error(\n `Cannot replace condition ${index} as no such condition exists`\n )\n }\n\n this.#userGroupedConditions.splice(index, 1, condition)\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n\n return this\n }\n\n remove(indexes: number[]) {\n this.#userGroupedConditions = this.#userGroupedConditions\n .filter((_condition, index) => !indexes.includes(index))\n .map((condition, index) =>\n index === 0 ? condition.asFirstCondition() : condition\n )\n\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n return this\n }\n\n addGroups(groupDefs: ConditionGroupDef[]) {\n this.#userGroupedConditions = this._group(\n this.#userGroupedConditions,\n groupDefs\n )\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n return this\n }\n\n splitGroup(index: number) {\n this.#userGroupedConditions = this._ungroup(\n this.#userGroupedConditions,\n index\n )\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n return this\n }\n\n moveEarlier(index: number) {\n if (index > 0 && index < this.#userGroupedConditions.length) {\n this.#userGroupedConditions.splice(\n index - 1,\n 0,\n this.#userGroupedConditions.splice(index, 1)[0]\n )\n if (index === 1) {\n this.switchCoordinators()\n }\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n }\n return this\n }\n\n moveLater(index: number) {\n if (index >= 0 && index < this.#userGroupedConditions.length - 1) {\n this.#userGroupedConditions.splice(\n index + 1,\n 0,\n this.#userGroupedConditions.splice(index, 1)[0]\n )\n if (index === 0) {\n this.switchCoordinators()\n }\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n }\n return this\n }\n\n switchCoordinators() {\n this.#userGroupedConditions[1].setCoordinator(\n this.#userGroupedConditions[0].getCoordinator()\n )\n this.#userGroupedConditions[0].setCoordinator()\n }\n\n get asPerUserGroupings() {\n return [...this.#userGroupedConditions]\n }\n\n get hasConditions() {\n return this.#userGroupedConditions.length > 0\n }\n\n get lastIndex() {\n return this.#userGroupedConditions.length - 1\n }\n\n toPresentationString() {\n return this.#groupedConditions\n .map((condition) => toPresentationString(condition))\n .join(' ')\n }\n\n toPresentationHtml() {\n return this.#groupedConditions\n .map((condition) => toPresentationHtml(condition))\n .join(' ')\n }\n\n toExpression() {\n return this.#groupedConditions\n .map((condition) => toExpression(condition))\n .join(' ')\n }\n\n _applyGroups(\n userGroupedConditions: (Condition | ConditionRef | ConditionGroup)[]\n ) {\n const correctedUserGroups = userGroupedConditions.map((condition) =>\n condition instanceof ConditionGroup && condition.conditions.length > 2\n ? new ConditionGroup(\n this._group(\n condition.conditions,\n this._autoGroupDefs(condition.conditions)\n )\n )\n : condition\n )\n\n return this._group(\n correctedUserGroups,\n this._autoGroupDefs(correctedUserGroups)\n )\n }\n\n _group(\n conditions: (Condition | ConditionRef | ConditionGroup)[],\n groupDefs: ConditionGroupDef[]\n ) {\n return conditions.reduce<(Condition | ConditionRef | ConditionGroup)[]>(\n (groups, condition, index, conditions) => {\n const groupDef = groupDefs.find((groupDef) => groupDef.contains(index))\n\n if (groupDef) {\n if (groupDef.startsWith(index)) {\n const groupConditions = groupDef.applyTo(conditions)\n groups.push(new ConditionGroup(groupConditions))\n }\n } else {\n groups.push(condition)\n }\n\n return groups\n },\n []\n )\n }\n\n _ungroup(\n conditions: (Condition | ConditionRef | ConditionGroup)[],\n splitIndex: number\n ) {\n if (conditions[splitIndex].isGroup()) {\n const copy = [...conditions]\n copy.splice(\n splitIndex,\n 1,\n ...conditions[splitIndex].getGroupedConditions()\n )\n return copy\n }\n return conditions\n }\n\n _autoGroupDefs(conditions: (Condition | ConditionRef | ConditionGroup)[]) {\n const orPositions: number[] = []\n\n conditions.forEach((condition, index) => {\n if (condition.getCoordinator() === Coordinator.OR) {\n orPositions.push(index)\n }\n })\n\n const hasOr = orPositions.length > 0\n const hasAnd = !!conditions.find(\n (condition) => condition.getCoordinator() === Coordinator.AND\n )\n\n if (hasAnd && hasOr) {\n let start = 0\n const groupDefs: ConditionGroupDef[] = []\n orPositions.forEach((position, index) => {\n if (start < position - 1) {\n groupDefs.push(new ConditionGroupDef(start, position - 1))\n }\n const thisIsTheLastOr = orPositions.length === index + 1\n const thereAreMoreConditions = conditions.length - 1 > position\n if (thisIsTheLastOr && thereAreMoreConditions) {\n groupDefs.push(new ConditionGroupDef(position, conditions.length - 1))\n }\n start = position\n })\n return groupDefs\n }\n\n return []\n }\n\n toJSON() {\n const name = this.#conditionName\n const conditions = this.#userGroupedConditions\n return {\n name: name ?? '',\n conditions: conditions.map((it) => it.toJSON())\n }\n }\n\n // TODO:- why is this not a constructor?\n static from(obj: ConditionsModel | ConditionsModelData) {\n if (obj instanceof ConditionsModel) {\n return obj\n }\n const toReturn = new ConditionsModel()\n toReturn.#conditionName = obj.name\n toReturn.#userGroupedConditions = obj.conditions.map(conditionFrom)\n toReturn.#groupedConditions = toReturn._applyGroups(\n toReturn.#userGroupedConditions\n )\n return toReturn\n }\n}\n\nexport function conditionFrom(\n it: ConditionData | ConditionRefData | ConditionGroupData\n): Condition | ConditionRef | ConditionGroup {\n if (hasConditionGroup(it)) {\n return new ConditionGroup(it.conditions.map(conditionFrom))\n }\n\n if (hasConditionName(it)) {\n return ConditionRef.from(it)\n }\n\n return Condition.from(it)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,9 @@
1
1
  export function toPresentationString(condition) {
2
2
  return `${condition.coordinatorString()}${condition.conditionString()}`;
3
3
  }
4
+ export function toPresentationHtml(condition) {
5
+ return `${condition.coordinatorHtml()}${condition.conditionString()}`;
6
+ }
4
7
  export function toExpression(condition) {
5
8
  return `${condition.coordinatorString()}${condition.conditionExpression()}`;
6
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["toPresentationString","condition","coordinatorString","conditionString","toExpression","conditionExpression","hasConditionField","hasConditionGroup","hasConditionName","hasNestedCondition","value","conditions","some","isDuplicateCondition","conditionName","name"],"sources":["../../../src/conditions/helpers.ts"],"sourcesContent":["import { type ConditionGroup } from '~/src/conditions/condition-group.js'\nimport { type ConditionRef } from '~/src/conditions/condition-ref.js'\nimport { type Condition } from '~/src/conditions/condition.js'\nimport {\n type ConditionData,\n type ConditionGroupData,\n type ConditionRefData\n} from '~/src/conditions/types.js'\nimport { type ConditionWrapper } from '~/src/form/form-definition/types.js'\n\nexport function toPresentationString(\n condition: Condition | ConditionRef | ConditionGroup\n) {\n return `${condition.coordinatorString()}${condition.conditionString()}`\n}\n\nexport function toExpression(\n condition: Condition | ConditionRef | ConditionGroup\n) {\n return `${condition.coordinatorString()}${condition.conditionExpression()}`\n}\n\nexport const hasConditionField = (\n condition?: ConditionGroupData | ConditionData | ConditionRefData\n): condition is ConditionData => {\n return !!condition && 'field' in condition\n}\n\nexport const hasConditionGroup = (\n condition?: ConditionGroupData | ConditionData | ConditionRefData\n): condition is ConditionGroupData => {\n return !!condition && 'conditions' in condition\n}\n\nexport const hasConditionName = (\n condition?: ConditionGroupData | ConditionData | ConditionRefData\n): condition is ConditionRefData => {\n return !!condition && 'conditionName' in condition\n}\n\nexport const hasNestedCondition = (condition?: ConditionWrapper) => {\n return !!condition?.value.conditions.some(hasConditionName)\n}\n\nexport const isDuplicateCondition = (\n conditions: ConditionWrapper[],\n conditionName: string\n) => {\n return conditions.some((condition) => condition.name === conditionName)\n}\n"],"mappings":"AAUA,OAAO,SAASA,oBAAoBA,CAClCC,SAAoD,EACpD;EACA,OAAO,GAAGA,SAAS,CAACC,iBAAiB,CAAC,CAAC,GAAGD,SAAS,CAACE,eAAe,CAAC,CAAC,EAAE;AACzE;AAEA,OAAO,SAASC,YAAYA,CAC1BH,SAAoD,EACpD;EACA,OAAO,GAAGA,SAAS,CAACC,iBAAiB,CAAC,CAAC,GAAGD,SAAS,CAACI,mBAAmB,CAAC,CAAC,EAAE;AAC7E;AAEA,OAAO,MAAMC,iBAAiB,GAC5BL,SAAiE,IAClC;EAC/B,OAAO,CAAC,CAACA,SAAS,IAAI,OAAO,IAAIA,SAAS;AAC5C,CAAC;AAED,OAAO,MAAMM,iBAAiB,GAC5BN,SAAiE,IAC7B;EACpC,OAAO,CAAC,CAACA,SAAS,IAAI,YAAY,IAAIA,SAAS;AACjD,CAAC;AAED,OAAO,MAAMO,gBAAgB,GAC3BP,SAAiE,IAC/B;EAClC,OAAO,CAAC,CAACA,SAAS,IAAI,eAAe,IAAIA,SAAS;AACpD,CAAC;AAED,OAAO,MAAMQ,kBAAkB,GAAIR,SAA4B,IAAK;EAClE,OAAO,CAAC,CAACA,SAAS,EAAES,KAAK,CAACC,UAAU,CAACC,IAAI,CAACJ,gBAAgB,CAAC;AAC7D,CAAC;AAED,OAAO,MAAMK,oBAAoB,GAAGA,CAClCF,UAA8B,EAC9BG,aAAqB,KAClB;EACH,OAAOH,UAAU,CAACC,IAAI,CAAEX,SAAS,IAAKA,SAAS,CAACc,IAAI,KAAKD,aAAa,CAAC;AACzE,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"helpers.js","names":["toPresentationString","condition","coordinatorString","conditionString","toPresentationHtml","coordinatorHtml","toExpression","conditionExpression","hasConditionField","hasConditionGroup","hasConditionName","hasNestedCondition","value","conditions","some","isDuplicateCondition","conditionName","name"],"sources":["../../../src/conditions/helpers.ts"],"sourcesContent":["import { type ConditionGroup } from '~/src/conditions/condition-group.js'\nimport { type ConditionRef } from '~/src/conditions/condition-ref.js'\nimport { type Condition } from '~/src/conditions/condition.js'\nimport {\n type ConditionData,\n type ConditionGroupData,\n type ConditionRefData\n} from '~/src/conditions/types.js'\nimport { type ConditionWrapper } from '~/src/form/form-definition/types.js'\n\ntype ConditionType = Condition | ConditionRef | ConditionGroup\ntype ConditionDataType = ConditionGroupData | ConditionData | ConditionRefData\n\nexport function toPresentationString(condition: ConditionType) {\n return `${condition.coordinatorString()}${condition.conditionString()}`\n}\n\nexport function toPresentationHtml(condition: ConditionType) {\n return `${condition.coordinatorHtml()}${condition.conditionString()}`\n}\n\nexport function toExpression(condition: ConditionType) {\n return `${condition.coordinatorString()}${condition.conditionExpression()}`\n}\n\nexport const hasConditionField = (\n condition?: ConditionDataType\n): condition is ConditionData => {\n return !!condition && 'field' in condition\n}\n\nexport const hasConditionGroup = (\n condition?: ConditionDataType\n): condition is ConditionGroupData => {\n return !!condition && 'conditions' in condition\n}\n\nexport const hasConditionName = (\n condition?: ConditionDataType\n): condition is ConditionRefData => {\n return !!condition && 'conditionName' in condition\n}\n\nexport const hasNestedCondition = (condition?: ConditionWrapper) => {\n return !!condition?.value.conditions.some(hasConditionName)\n}\n\nexport const isDuplicateCondition = (\n conditions: ConditionWrapper[],\n conditionName: string\n) => {\n return conditions.some((condition) => condition.name === conditionName)\n}\n"],"mappings":"AAaA,OAAO,SAASA,oBAAoBA,CAACC,SAAwB,EAAE;EAC7D,OAAO,GAAGA,SAAS,CAACC,iBAAiB,CAAC,CAAC,GAAGD,SAAS,CAACE,eAAe,CAAC,CAAC,EAAE;AACzE;AAEA,OAAO,SAASC,kBAAkBA,CAACH,SAAwB,EAAE;EAC3D,OAAO,GAAGA,SAAS,CAACI,eAAe,CAAC,CAAC,GAAGJ,SAAS,CAACE,eAAe,CAAC,CAAC,EAAE;AACvE;AAEA,OAAO,SAASG,YAAYA,CAACL,SAAwB,EAAE;EACrD,OAAO,GAAGA,SAAS,CAACC,iBAAiB,CAAC,CAAC,GAAGD,SAAS,CAACM,mBAAmB,CAAC,CAAC,EAAE;AAC7E;AAEA,OAAO,MAAMC,iBAAiB,GAC5BP,SAA6B,IACE;EAC/B,OAAO,CAAC,CAACA,SAAS,IAAI,OAAO,IAAIA,SAAS;AAC5C,CAAC;AAED,OAAO,MAAMQ,iBAAiB,GAC5BR,SAA6B,IACO;EACpC,OAAO,CAAC,CAACA,SAAS,IAAI,YAAY,IAAIA,SAAS;AACjD,CAAC;AAED,OAAO,MAAMS,gBAAgB,GAC3BT,SAA6B,IACK;EAClC,OAAO,CAAC,CAACA,SAAS,IAAI,eAAe,IAAIA,SAAS;AACpD,CAAC;AAED,OAAO,MAAMU,kBAAkB,GAAIV,SAA4B,IAAK;EAClE,OAAO,CAAC,CAACA,SAAS,EAAEW,KAAK,CAACC,UAAU,CAACC,IAAI,CAACJ,gBAAgB,CAAC;AAC7D,CAAC;AAED,OAAO,MAAMK,oBAAoB,GAAGA,CAClCF,UAA8B,EAC9BG,aAAqB,KAClB;EACH,OAAOH,UAAU,CAACC,IAAI,CAAEb,SAAS,IAAKA,SAAS,CAACgB,IAAI,KAAKD,aAAa,CAAC;AACzE,CAAC","ignoreList":[]}
@@ -7,6 +7,6 @@ export { ConditionGroup } from "./condition-group.js";
7
7
  export { ConditionsModel } from "./condition-model.js";
8
8
  export { ConditionGroupDef } from "./condition-group-def.js";
9
9
  export { hasConditionField, hasConditionGroup, hasConditionName, hasNestedCondition, isDuplicateCondition, toExpression, toPresentationString } from "./helpers.js";
10
- export { convertConditionWrapperFromV2 } from "./migration.js";
10
+ export { convertConditionWrapperFromV2, isConditionWrapper, isConditionWrapperV2 } from "./migration.js";
11
11
  export { ConditionType, Coordinator, DateDirections, DateUnits, Operator, OperatorName } from "./enums.js";
12
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["absoluteDateOperatorNames","getExpression","getOperatorNames","relativeDateOperatorNames","ConditionValue","RelativeDateValue","conditionValueFrom","ConditionField","Condition","ConditionRef","ConditionGroup","ConditionsModel","ConditionGroupDef","hasConditionField","hasConditionGroup","hasConditionName","hasNestedCondition","isDuplicateCondition","toExpression","toPresentationString","convertConditionWrapperFromV2","ConditionType","Coordinator","DateDirections","DateUnits","Operator","OperatorName"],"sources":["../../../src/conditions/index.ts"],"sourcesContent":["export {\n absoluteDateOperatorNames,\n getExpression,\n getOperatorNames,\n relativeDateOperatorNames\n} from '~/src/conditions/condition-operators.js'\n\nexport {\n ConditionValue,\n RelativeDateValue,\n conditionValueFrom\n} from '~/src/conditions/condition-values.js'\n\nexport { ConditionField } from '~/src/conditions/condition-field.js'\nexport { Condition } from '~/src/conditions/condition.js'\nexport { ConditionRef } from '~/src/conditions/condition-ref.js'\nexport { ConditionGroup } from '~/src/conditions/condition-group.js'\nexport { ConditionsModel } from '~/src/conditions/condition-model.js'\nexport { ConditionGroupDef } from '~/src/conditions/condition-group-def.js'\nexport {\n hasConditionField,\n hasConditionGroup,\n hasConditionName,\n hasNestedCondition,\n isDuplicateCondition,\n toExpression,\n toPresentationString\n} from '~/src/conditions/helpers.js'\n\nexport { convertConditionWrapperFromV2 } from '~/src/conditions/migration.js'\n\nexport {\n ConditionType,\n Coordinator,\n DateDirections,\n DateUnits,\n Operator,\n OperatorName\n} from '~/src/conditions/enums.js'\n"],"mappings":"AAAA,SACEA,yBAAyB,EACzBC,aAAa,EACbC,gBAAgB,EAChBC,yBAAyB;AAG3B,SACEC,cAAc,EACdC,iBAAiB,EACjBC,kBAAkB;AAGpB,SAASC,cAAc;AACvB,SAASC,SAAS;AAClB,SAASC,YAAY;AACrB,SAASC,cAAc;AACvB,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,gBAAgB,EAChBC,kBAAkB,EAClBC,oBAAoB,EACpBC,YAAY,EACZC,oBAAoB;AAGtB,SAASC,6BAA6B;AAEtC,SACEC,aAAa,EACbC,WAAW,EACXC,cAAc,EACdC,SAAS,EACTC,QAAQ,EACRC,YAAY","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["absoluteDateOperatorNames","getExpression","getOperatorNames","relativeDateOperatorNames","ConditionValue","RelativeDateValue","conditionValueFrom","ConditionField","Condition","ConditionRef","ConditionGroup","ConditionsModel","ConditionGroupDef","hasConditionField","hasConditionGroup","hasConditionName","hasNestedCondition","isDuplicateCondition","toExpression","toPresentationString","convertConditionWrapperFromV2","isConditionWrapper","isConditionWrapperV2","ConditionType","Coordinator","DateDirections","DateUnits","Operator","OperatorName"],"sources":["../../../src/conditions/index.ts"],"sourcesContent":["export {\n absoluteDateOperatorNames,\n getExpression,\n getOperatorNames,\n relativeDateOperatorNames\n} from '~/src/conditions/condition-operators.js'\n\nexport {\n ConditionValue,\n RelativeDateValue,\n conditionValueFrom\n} from '~/src/conditions/condition-values.js'\n\nexport { ConditionField } from '~/src/conditions/condition-field.js'\nexport { Condition } from '~/src/conditions/condition.js'\nexport { ConditionRef } from '~/src/conditions/condition-ref.js'\nexport { ConditionGroup } from '~/src/conditions/condition-group.js'\nexport { ConditionsModel } from '~/src/conditions/condition-model.js'\nexport { ConditionGroupDef } from '~/src/conditions/condition-group-def.js'\nexport {\n hasConditionField,\n hasConditionGroup,\n hasConditionName,\n hasNestedCondition,\n isDuplicateCondition,\n toExpression,\n toPresentationString\n} from '~/src/conditions/helpers.js'\n\nexport {\n convertConditionWrapperFromV2,\n isConditionWrapper,\n isConditionWrapperV2,\n type RuntimeFormModel\n} from '~/src/conditions/migration.js'\n\nexport {\n ConditionType,\n Coordinator,\n DateDirections,\n DateUnits,\n Operator,\n OperatorName\n} from '~/src/conditions/enums.js'\n"],"mappings":"AAAA,SACEA,yBAAyB,EACzBC,aAAa,EACbC,gBAAgB,EAChBC,yBAAyB;AAG3B,SACEC,cAAc,EACdC,iBAAiB,EACjBC,kBAAkB;AAGpB,SAASC,cAAc;AACvB,SAASC,SAAS;AAClB,SAASC,YAAY;AACrB,SAASC,cAAc;AACvB,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,gBAAgB,EAChBC,kBAAkB,EAClBC,oBAAoB,EACpBC,YAAY,EACZC,oBAAoB;AAGtB,SACEC,6BAA6B,EAC7BC,kBAAkB,EAClBC,oBAAoB;AAItB,SACEC,aAAa,EACbC,WAAW,EACXC,cAAc,EACdC,SAAS,EACTC,QAAQ,EACRC,YAAY","ignoreList":[]}