@webiny/app-website-builder 6.6.0-alpha.0 → 6.6.0-alpha.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 (234) hide show
  1. package/BaseEditor/commandHandlers/CloneElement.d.ts +1 -0
  2. package/BaseEditor/commandHandlers/CloneElement.js +17 -0
  3. package/BaseEditor/commandHandlers/CloneElement.js.map +1 -0
  4. package/BaseEditor/commandHandlers/index.js +2 -1
  5. package/BaseEditor/commandHandlers/index.js.map +1 -1
  6. package/BaseEditor/commands.d.ts +3 -0
  7. package/BaseEditor/commands.js +2 -0
  8. package/BaseEditor/commands.js.map +1 -1
  9. package/BaseEditor/defaultConfig/Content/AddressBar/usePreviewLink.js +4 -1
  10. package/BaseEditor/defaultConfig/Content/AddressBar/usePreviewLink.js.map +1 -1
  11. package/BaseEditor/defaultConfig/Content/Preview/DropZoneManager.js.map +1 -1
  12. package/BaseEditor/defaultConfig/Content/Preview/Iframe.d.ts +2 -2
  13. package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlays.d.ts +2 -2
  14. package/BaseEditor/defaultConfig/DefaultEditorConfig.js +9 -0
  15. package/BaseEditor/defaultConfig/DefaultEditorConfig.js.map +1 -1
  16. package/BaseEditor/defaultConfig/DocumentStateEditor/DocumentStateEditor.d.ts +2 -2
  17. package/BaseEditor/defaultConfig/ElementInputRenderers.js +4 -0
  18. package/BaseEditor/defaultConfig/ElementInputRenderers.js.map +1 -1
  19. package/BaseEditor/defaultConfig/Sidebar/ElementActions/CloneElementAction.d.ts +2 -0
  20. package/BaseEditor/defaultConfig/Sidebar/ElementActions/CloneElementAction.js +25 -0
  21. package/BaseEditor/defaultConfig/Sidebar/ElementActions/CloneElementAction.js.map +1 -0
  22. package/BaseEditor/defaultConfig/Sidebar/ElementActions/DeleteElementAction.d.ts +2 -0
  23. package/BaseEditor/defaultConfig/Sidebar/ElementActions/DeleteElementAction.js +26 -0
  24. package/BaseEditor/defaultConfig/Sidebar/ElementActions/DeleteElementAction.js.map +1 -0
  25. package/BaseEditor/defaultConfig/Sidebar/ElementPreview.js +12 -2
  26. package/BaseEditor/defaultConfig/Sidebar/ElementPreview.js.map +1 -1
  27. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementInputs.js +1 -6
  28. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementInputs.js.map +1 -1
  29. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettings.js +11 -2
  30. package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettings.js.map +1 -1
  31. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundColor.d.ts +6 -2
  32. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.d.ts +6 -2
  33. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundPosition.d.ts +6 -2
  34. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundScaling.d.ts +6 -2
  35. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderColor.d.ts +2 -2
  36. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderRadius.d.ts +2 -2
  37. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderStyle.d.ts +2 -2
  38. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderWidth.d.ts +2 -2
  39. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/Alignment.d.ts +6 -2
  40. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/LengthWithUnitInput.d.ts +2 -2
  41. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Margin.d.ts +2 -2
  42. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Padding.d.ts +2 -2
  43. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Visibility/Visibility.d.ts +2 -2
  44. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js +7 -7
  45. package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleProperties.js.map +1 -1
  46. package/BaseEditor/defaultConfig/Toolbar/Navigator/Navigator.d.ts +2 -2
  47. package/DocumentEditor/DocumentEditor.d.ts +14 -5
  48. package/DocumentEditor/DocumentEditor.js +10 -6
  49. package/DocumentEditor/DocumentEditor.js.map +1 -1
  50. package/DocumentEditor/StateInspector.d.ts +4 -2
  51. package/Extension.js +7 -1
  52. package/Extension.js.map +1 -1
  53. package/ecommerce/components/ResourcePage.d.ts +6 -2
  54. package/ecommerce/components/ResourcesList.d.ts +4 -4
  55. package/ecommerce/components/ResourcesPicker.d.ts +9 -4
  56. package/editorSdk/CommandBus.js.map +1 -1
  57. package/editorSdk/utils/$cloneElement.d.ts +2 -0
  58. package/editorSdk/utils/$cloneElement.js +112 -0
  59. package/editorSdk/utils/$cloneElement.js.map +1 -0
  60. package/editorSdk/utils/index.d.ts +1 -0
  61. package/editorSdk/utils/index.js +1 -0
  62. package/features/experiments/ExperimentsGateway.d.ts +30 -0
  63. package/features/experiments/ExperimentsGateway.js +326 -0
  64. package/features/experiments/ExperimentsGateway.js.map +1 -0
  65. package/features/experiments/abstractions.d.ts +25 -0
  66. package/features/experiments/abstractions.js +5 -0
  67. package/features/experiments/abstractions.js.map +1 -0
  68. package/features/experiments/feature.d.ts +3 -0
  69. package/features/experiments/feature.js +17 -0
  70. package/features/experiments/feature.js.map +1 -0
  71. package/features/experiments/index.d.ts +3 -0
  72. package/features/experiments/index.js +2 -0
  73. package/features/experiments/types.d.ts +61 -0
  74. package/features/experiments/types.js +0 -0
  75. package/inputRenderers/ColorPickerInput.d.ts +3 -0
  76. package/inputRenderers/ColorPickerInput.js +29 -0
  77. package/inputRenderers/ColorPickerInput.js.map +1 -0
  78. package/inputRenderers/FileInput.js +93 -8
  79. package/inputRenderers/FileInput.js.map +1 -1
  80. package/inputRenderers/LexicalInput/LexicalEditor.js +15 -8
  81. package/inputRenderers/LexicalInput/LexicalEditor.js.map +1 -1
  82. package/inputRenderers/LexicalInput/TypographyDropDown.js +3 -2
  83. package/inputRenderers/LexicalInput/TypographyDropDown.js.map +1 -1
  84. package/inputRenderers/LexicalInput/wbStaticToolbar.css +72 -103
  85. package/modules/AbTesting.d.ts +2 -0
  86. package/modules/AbTesting.js +19 -0
  87. package/modules/AbTesting.js.map +1 -0
  88. package/package.json +28 -28
  89. package/presentation/components/LanguageCodeTag.js +5 -4
  90. package/presentation/components/LanguageCodeTag.js.map +1 -1
  91. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.d.ts +30 -0
  92. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.js +202 -0
  93. package/presentation/experiments/ExperimentForm/ExperimentFormPresenter.js.map +1 -0
  94. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.d.ts +65 -0
  95. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.js +5 -0
  96. package/presentation/experiments/ExperimentForm/abstractions/ExperimentFormPresenter.js.map +1 -0
  97. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.d.ts +12 -0
  98. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.js +149 -0
  99. package/presentation/experiments/ExperimentForm/components/ExperimentFormView.js.map +1 -0
  100. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.d.ts +17 -0
  101. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.js +122 -0
  102. package/presentation/experiments/ExperimentForm/components/VariantSplitRow.js.map +1 -0
  103. package/presentation/experiments/ExperimentForm/feature.d.ts +3 -0
  104. package/presentation/experiments/ExperimentForm/feature.js +17 -0
  105. package/presentation/experiments/ExperimentForm/feature.js.map +1 -0
  106. package/presentation/experiments/ExperimentForm/index.d.ts +3 -0
  107. package/presentation/experiments/ExperimentForm/index.js +3 -0
  108. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.d.ts +18 -0
  109. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.js +25 -0
  110. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorDataSource.js.map +1 -0
  111. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.d.ts +67 -0
  112. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.js +224 -0
  113. package/presentation/experiments/ExperimentsEditor/ExperimentsEditorPresenter.js.map +1 -0
  114. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.d.ts +10 -0
  115. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.js +5 -0
  116. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorDataSource.js.map +1 -0
  117. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.d.ts +58 -0
  118. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.js +5 -0
  119. package/presentation/experiments/ExperimentsEditor/abstractions/ExperimentsEditorPresenter.js.map +1 -0
  120. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.d.ts +15 -0
  121. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.js +110 -0
  122. package/presentation/experiments/ExperimentsEditor/components/ExperimentIndicator.js.map +1 -0
  123. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.d.ts +9 -0
  124. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.js +178 -0
  125. package/presentation/experiments/ExperimentsEditor/components/ExperimentPreviewToolbar.js.map +1 -0
  126. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.d.ts +11 -0
  127. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.js +51 -0
  128. package/presentation/experiments/ExperimentsEditor/components/ExperimentsButton.js.map +1 -0
  129. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.d.ts +14 -0
  130. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.js +147 -0
  131. package/presentation/experiments/ExperimentsEditor/components/ExperimentsSwitcher.js.map +1 -0
  132. package/presentation/experiments/ExperimentsEditor/feature.d.ts +3 -0
  133. package/presentation/experiments/ExperimentsEditor/feature.js +21 -0
  134. package/presentation/experiments/ExperimentsEditor/feature.js.map +1 -0
  135. package/presentation/experiments/ExperimentsEditor/index.d.ts +4 -0
  136. package/presentation/experiments/ExperimentsEditor/index.js +3 -0
  137. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.d.ts +39 -0
  138. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.js +219 -0
  139. package/presentation/experiments/ExperimentsManager/ExperimentsManagerPresenter.js.map +1 -0
  140. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.d.ts +52 -0
  141. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.js +5 -0
  142. package/presentation/experiments/ExperimentsManager/abstractions/ExperimentsManagerPresenter.js.map +1 -0
  143. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.d.ts +10 -0
  144. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.js +296 -0
  145. package/presentation/experiments/ExperimentsManager/components/ExperimentCard.js.map +1 -0
  146. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.d.ts +2 -0
  147. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.js +92 -0
  148. package/presentation/experiments/ExperimentsManager/components/ExperimentsDrawerView.js.map +1 -0
  149. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.d.ts +6 -0
  150. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.js +103 -0
  151. package/presentation/experiments/ExperimentsManager/components/ExperimentsEmptyState.js.map +1 -0
  152. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.d.ts +9 -0
  153. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.js +58 -0
  154. package/presentation/experiments/ExperimentsManager/components/ExperimentsListView.js.map +1 -0
  155. package/presentation/experiments/ExperimentsManager/feature.d.ts +3 -0
  156. package/presentation/experiments/ExperimentsManager/feature.js +17 -0
  157. package/presentation/experiments/ExperimentsManager/feature.js.map +1 -0
  158. package/presentation/experiments/ExperimentsManager/index.d.ts +4 -0
  159. package/presentation/experiments/ExperimentsManager/index.js +3 -0
  160. package/presentation/experiments/VariantPageEditorConfig.d.ts +7 -0
  161. package/presentation/experiments/VariantPageEditorConfig.js +26 -0
  162. package/presentation/experiments/VariantPageEditorConfig.js.map +1 -0
  163. package/presentation/experiments/config/ExperimentsEditorConfig.d.ts +8 -0
  164. package/presentation/experiments/config/ExperimentsEditorConfig.js +21 -0
  165. package/presentation/experiments/config/ExperimentsEditorConfig.js.map +1 -0
  166. package/presentation/experiments/config/VariantAutoSave.d.ts +5 -0
  167. package/presentation/experiments/config/VariantAutoSave.js +41 -0
  168. package/presentation/experiments/config/VariantAutoSave.js.map +1 -0
  169. package/presentation/experiments/shared/variantColors.d.ts +11 -0
  170. package/presentation/experiments/shared/variantColors.js +13 -0
  171. package/presentation/experiments/shared/variantColors.js.map +1 -0
  172. package/presentation/experiments/shared/variantDocument.d.ts +16 -0
  173. package/presentation/experiments/shared/variantDocument.js +31 -0
  174. package/presentation/experiments/shared/variantDocument.js.map +1 -0
  175. package/presentation/navigation/Extension.js +9 -5
  176. package/presentation/navigation/Extension.js.map +1 -1
  177. package/presentation/navigation/NextjsConfig/NextjsConfigDialog.d.ts +2 -2
  178. package/presentation/navigation/StarterKitConfigDialog.js +1 -1
  179. package/presentation/navigation/StarterKitConfigDialog.js.map +1 -1
  180. package/presentation/pages/CreatePage/CreatePageDialog.d.ts +2 -2
  181. package/presentation/pages/CreatePage/CreatePagePresenter.js +1 -1
  182. package/presentation/pages/CreatePage/CreatePagePresenter.js.map +1 -1
  183. package/presentation/pages/CreatePage/WithLanguageSelector.js +3 -3
  184. package/presentation/pages/CreatePage/WithLanguageSelector.js.map +1 -1
  185. package/presentation/pages/CreatePage/feature.js +3 -3
  186. package/presentation/pages/CreatePage/feature.js.map +1 -1
  187. package/presentation/pages/PageEditor/PageEditor.experiments.d.ts +2 -0
  188. package/presentation/pages/PageEditor/PageEditor.experiments.js +54 -0
  189. package/presentation/pages/PageEditor/PageEditor.experiments.js.map +1 -0
  190. package/presentation/pages/PageEditor/PageEditorSurface.d.ts +15 -0
  191. package/presentation/pages/PageEditor/PageEditorSurface.js +63 -0
  192. package/presentation/pages/PageEditor/PageEditorSurface.js.map +1 -0
  193. package/presentation/pages/PageEditor/TopBar/PageSettingsDrawer.d.ts +2 -2
  194. package/presentation/pages/PageEditor/pageDocument.d.ts +4 -0
  195. package/presentation/pages/PageEditor/pageDocument.js +15 -0
  196. package/presentation/pages/PageEditor/pageDocument.js.map +1 -0
  197. package/presentation/pages/PageList/components/BulkActions/BulkActionDelete.d.ts +2 -2
  198. package/presentation/pages/PageList/components/BulkActions/BulkActionDuplicate.d.ts +2 -2
  199. package/presentation/pages/PageList/components/BulkActions/BulkActionMovePage.d.ts +2 -2
  200. package/presentation/pages/PageList/components/BulkActions/BulkActionPublish.d.ts +2 -2
  201. package/presentation/pages/PageList/components/BulkActions/BulkActionUnpublish.d.ts +2 -2
  202. package/presentation/pages/PageList/components/DocumentList.d.ts +2 -2
  203. package/presentation/pages/PageList/components/PagesList.js +2 -1
  204. package/presentation/pages/PageList/components/PagesList.js.map +1 -1
  205. package/presentation/pages/PageList/components/Table/Table.d.ts +2 -2
  206. package/presentation/pages/PageList/components/WbPagesBreadcrumbs.d.ts +9 -0
  207. package/presentation/pages/PageList/components/WbPagesBreadcrumbs.js +40 -0
  208. package/presentation/pages/PageList/components/WbPagesBreadcrumbs.js.map +1 -0
  209. package/presentation/pages/TranslatePage/TranslatePageConfig.d.ts +1 -1
  210. package/presentation/pages/TranslatePage/TranslatePageConfig.js +6 -2
  211. package/presentation/pages/TranslatePage/TranslatePageConfig.js.map +1 -1
  212. package/presentation/pages/TranslatePage/TranslatePageDialog.js +22 -10
  213. package/presentation/pages/TranslatePage/TranslatePageDialog.js.map +1 -1
  214. package/presentation/pages/TranslatePage/translatePageSchema.d.ts +1 -1
  215. package/presentation/pages/TranslatePage/translatePageSchema.js +1 -1
  216. package/presentation/pages/TranslatePage/translatePageSchema.js.map +1 -1
  217. package/presentation/pages/TrashBin/WbTrashBin.d.ts +2 -2
  218. package/presentation/redirects/RedirectList/components/BulkActionDelete.d.ts +2 -2
  219. package/presentation/redirects/RedirectList/components/BulkActionMove.d.ts +2 -2
  220. package/presentation/redirects/RedirectList/components/CreateRedirectDialog.d.ts +2 -2
  221. package/presentation/redirects/RedirectList/components/DocumentList.d.ts +2 -2
  222. package/presentation/redirects/RedirectList/components/EditRedirectDialog.d.ts +2 -2
  223. package/presentation/redirects/RedirectList/components/Table/Table.d.ts +2 -2
  224. package/shared/fileManagerItemToValue.d.ts +8 -9
  225. package/shared/fileManagerItemToValue.js +22 -7
  226. package/shared/fileManagerItemToValue.js.map +1 -1
  227. package/inputRenderers/LexicalInput/icons/list-ol.js +0 -20
  228. package/inputRenderers/LexicalInput/icons/list-ol.js.map +0 -1
  229. package/inputRenderers/LexicalInput/icons/list-ol.svg +0 -1
  230. package/inputRenderers/LexicalInput/icons/list-ul.js +0 -18
  231. package/inputRenderers/LexicalInput/icons/list-ul.js.map +0 -1
  232. package/inputRenderers/LexicalInput/icons/list-ul.svg +0 -1
  233. package/static/svg/list-ol.d64946f3.svg +0 -1
  234. package/static/svg/list-ul.1d54da3f.svg +0 -1
@@ -0,0 +1,326 @@
1
+ import { ExperimentsGateway } from "./abstractions.js";
2
+ import { MainGraphQLClient } from "@webiny/app/features/mainGraphQLClient";
3
+ const EXPERIMENT_FIELDS = `
4
+ id
5
+ entryId
6
+ pageEntryId
7
+ baselineRevisionId
8
+ status
9
+ name
10
+ trafficSplit
11
+ targeting
12
+ analytics
13
+ startedOn
14
+ stoppedOn
15
+ winningVariantId
16
+ `;
17
+ const VARIANT_FIELDS = `
18
+ id
19
+ entryId
20
+ experimentId
21
+ name
22
+ status
23
+ `;
24
+ const VARIANT_CONTENT_FIELDS = `
25
+ ${VARIANT_FIELDS}
26
+ properties
27
+ metadata
28
+ bindings
29
+ elements
30
+ extensions
31
+ `;
32
+ const ERROR_FIELDS = `
33
+ code
34
+ message
35
+ data
36
+ `;
37
+ class ExperimentsGatewayImpl {
38
+ constructor(client){
39
+ this.client = client;
40
+ }
41
+ unwrap(envelope, fallbackMessage) {
42
+ if (envelope.error) throw new Error(envelope.error.message || fallbackMessage);
43
+ return envelope.data;
44
+ }
45
+ async listExperiments(pageEntryId) {
46
+ const response = await this.client.execute({
47
+ query: `
48
+ query ListExperiments($pageEntryId: String!) {
49
+ websiteBuilder {
50
+ listExperiments(pageEntryId: $pageEntryId) {
51
+ data { ${EXPERIMENT_FIELDS} }
52
+ error { ${ERROR_FIELDS} }
53
+ }
54
+ }
55
+ }
56
+ `,
57
+ variables: {
58
+ pageEntryId
59
+ }
60
+ });
61
+ return this.unwrap(response.websiteBuilder.listExperiments, "Could not list experiments.") ?? [];
62
+ }
63
+ async getExperiment(id) {
64
+ const response = await this.client.execute({
65
+ query: `
66
+ query GetExperiment($id: ID!) {
67
+ websiteBuilder {
68
+ getExperiment(id: $id) {
69
+ data { ${EXPERIMENT_FIELDS} }
70
+ error { ${ERROR_FIELDS} }
71
+ }
72
+ }
73
+ }
74
+ `,
75
+ variables: {
76
+ id
77
+ }
78
+ });
79
+ return this.unwrap(response.websiteBuilder.getExperiment, "Could not load experiment.");
80
+ }
81
+ async listVariants(experimentId) {
82
+ const response = await this.client.execute({
83
+ query: `
84
+ query ListVariants($experimentId: String!) {
85
+ websiteBuilder {
86
+ listVariants(experimentId: $experimentId) {
87
+ data { ${VARIANT_FIELDS} }
88
+ error { ${ERROR_FIELDS} }
89
+ }
90
+ }
91
+ }
92
+ `,
93
+ variables: {
94
+ experimentId
95
+ }
96
+ });
97
+ return this.unwrap(response.websiteBuilder.listVariants, "Could not list variants.") ?? [];
98
+ }
99
+ async getVariant(id) {
100
+ const response = await this.client.execute({
101
+ query: `
102
+ query GetVariant($id: ID!) {
103
+ websiteBuilder {
104
+ getVariant(id: $id) {
105
+ data { ${VARIANT_CONTENT_FIELDS} }
106
+ error { ${ERROR_FIELDS} }
107
+ }
108
+ }
109
+ }
110
+ `,
111
+ variables: {
112
+ id
113
+ }
114
+ });
115
+ return this.unwrap(response.websiteBuilder.getVariant, "Could not load variant.");
116
+ }
117
+ async createExperiment(input) {
118
+ const response = await this.client.execute({
119
+ query: `
120
+ mutation CreateExperiment($data: WbExperimentCreateInput!) {
121
+ websiteBuilder {
122
+ createExperiment(data: $data) {
123
+ data { ${EXPERIMENT_FIELDS} }
124
+ error { ${ERROR_FIELDS} }
125
+ }
126
+ }
127
+ }
128
+ `,
129
+ variables: {
130
+ data: input
131
+ }
132
+ });
133
+ return this.unwrap(response.websiteBuilder.createExperiment, "Could not create experiment.");
134
+ }
135
+ async updateExperiment(id, input) {
136
+ const response = await this.client.execute({
137
+ query: `
138
+ mutation UpdateExperiment($id: ID!, $data: WbExperimentUpdateInput!) {
139
+ websiteBuilder {
140
+ updateExperiment(id: $id, data: $data) {
141
+ data { ${EXPERIMENT_FIELDS} }
142
+ error { ${ERROR_FIELDS} }
143
+ }
144
+ }
145
+ }
146
+ `,
147
+ variables: {
148
+ id,
149
+ data: input
150
+ }
151
+ });
152
+ return this.unwrap(response.websiteBuilder.updateExperiment, "Could not update experiment.");
153
+ }
154
+ async startExperiment(id) {
155
+ const response = await this.client.execute({
156
+ query: `
157
+ mutation StartExperiment($id: ID!) {
158
+ websiteBuilder {
159
+ startExperiment(id: $id) {
160
+ data { ${EXPERIMENT_FIELDS} }
161
+ error { ${ERROR_FIELDS} }
162
+ }
163
+ }
164
+ }
165
+ `,
166
+ variables: {
167
+ id
168
+ }
169
+ });
170
+ return this.unwrap(response.websiteBuilder.startExperiment, "Could not start experiment.");
171
+ }
172
+ async stopExperiment(id) {
173
+ const response = await this.client.execute({
174
+ query: `
175
+ mutation StopExperiment($id: ID!) {
176
+ websiteBuilder {
177
+ stopExperiment(id: $id) {
178
+ data { ${EXPERIMENT_FIELDS} }
179
+ error { ${ERROR_FIELDS} }
180
+ }
181
+ }
182
+ }
183
+ `,
184
+ variables: {
185
+ id
186
+ }
187
+ });
188
+ return this.unwrap(response.websiteBuilder.stopExperiment, "Could not stop experiment.");
189
+ }
190
+ async deleteExperiment(id) {
191
+ const response = await this.client.execute({
192
+ query: `
193
+ mutation DeleteExperiment($id: ID!) {
194
+ websiteBuilder {
195
+ deleteExperiment(id: $id) {
196
+ data
197
+ error { ${ERROR_FIELDS} }
198
+ }
199
+ }
200
+ }
201
+ `,
202
+ variables: {
203
+ id
204
+ }
205
+ });
206
+ return this.unwrap(response.websiteBuilder.deleteExperiment, "Could not delete experiment.") ?? false;
207
+ }
208
+ async pauseExperiment(experimentEntryId) {
209
+ const response = await this.client.execute({
210
+ query: `
211
+ mutation PauseExperiment($experimentId: String!) {
212
+ websiteBuilder {
213
+ pauseExperiment(experimentId: $experimentId) {
214
+ data
215
+ error { ${ERROR_FIELDS} }
216
+ }
217
+ }
218
+ }
219
+ `,
220
+ variables: {
221
+ experimentId: experimentEntryId
222
+ }
223
+ });
224
+ return this.unwrap(response.websiteBuilder.pauseExperiment, "Could not pause experiment.") ?? false;
225
+ }
226
+ async resumeExperiment(experimentEntryId) {
227
+ const response = await this.client.execute({
228
+ query: `
229
+ mutation ResumeExperiment($experimentId: String!) {
230
+ websiteBuilder {
231
+ resumeExperiment(experimentId: $experimentId) {
232
+ data
233
+ error { ${ERROR_FIELDS} }
234
+ }
235
+ }
236
+ }
237
+ `,
238
+ variables: {
239
+ experimentId: experimentEntryId
240
+ }
241
+ });
242
+ return this.unwrap(response.websiteBuilder.resumeExperiment, "Could not resume experiment.") ?? false;
243
+ }
244
+ async getExperimentPaused(experimentEntryId) {
245
+ const response = await this.client.execute({
246
+ query: `
247
+ query GetExperimentPaused($experimentId: String!) {
248
+ websiteBuilder {
249
+ getExperimentPaused(experimentId: $experimentId) {
250
+ data
251
+ error { ${ERROR_FIELDS} }
252
+ }
253
+ }
254
+ }
255
+ `,
256
+ variables: {
257
+ experimentId: experimentEntryId
258
+ }
259
+ });
260
+ return this.unwrap(response.websiteBuilder.getExperimentPaused, "Could not read the experiment status.") ?? false;
261
+ }
262
+ async createVariant(input) {
263
+ const response = await this.client.execute({
264
+ query: `
265
+ mutation CreateVariant($data: WbVariantCreateInput!) {
266
+ websiteBuilder {
267
+ createVariant(data: $data) {
268
+ data { ${VARIANT_FIELDS} }
269
+ error { ${ERROR_FIELDS} }
270
+ }
271
+ }
272
+ }
273
+ `,
274
+ variables: {
275
+ data: input
276
+ }
277
+ });
278
+ return this.unwrap(response.websiteBuilder.createVariant, "Could not create variant.");
279
+ }
280
+ async updateVariant(id, input) {
281
+ const response = await this.client.execute({
282
+ query: `
283
+ mutation UpdateVariant($id: ID!, $data: WbVariantUpdateInput!) {
284
+ websiteBuilder {
285
+ updateVariant(id: $id, data: $data) {
286
+ data { ${VARIANT_FIELDS} }
287
+ error { ${ERROR_FIELDS} }
288
+ }
289
+ }
290
+ }
291
+ `,
292
+ variables: {
293
+ id,
294
+ data: input
295
+ }
296
+ });
297
+ return this.unwrap(response.websiteBuilder.updateVariant, "Could not update variant.");
298
+ }
299
+ async deleteVariant(id) {
300
+ const response = await this.client.execute({
301
+ query: `
302
+ mutation DeleteVariant($id: ID!) {
303
+ websiteBuilder {
304
+ deleteVariant(id: $id) {
305
+ data
306
+ error { ${ERROR_FIELDS} }
307
+ }
308
+ }
309
+ }
310
+ `,
311
+ variables: {
312
+ id
313
+ }
314
+ });
315
+ return this.unwrap(response.websiteBuilder.deleteVariant, "Could not delete variant.") ?? false;
316
+ }
317
+ }
318
+ const ExperimentsGateway_ExperimentsGateway = ExperimentsGateway.createImplementation({
319
+ implementation: ExperimentsGatewayImpl,
320
+ dependencies: [
321
+ MainGraphQLClient
322
+ ]
323
+ });
324
+ export { ExperimentsGateway_ExperimentsGateway as ExperimentsGateway };
325
+
326
+ //# sourceMappingURL=ExperimentsGateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/experiments/ExperimentsGateway.js","sources":["../../../src/features/experiments/ExperimentsGateway.ts"],"sourcesContent":["import { ExperimentsGateway as GatewayAbstraction } from \"./abstractions.js\";\nimport type {\n CreateExperimentInput,\n ExperimentDto,\n UpdateExperimentInput,\n UpdateVariantInput,\n VariantContentDto,\n VariantDto\n} from \"./types.js\";\nimport { MainGraphQLClient } from \"@webiny/app/features/mainGraphQLClient\";\n\nconst EXPERIMENT_FIELDS = /* GraphQL */ `\n id\n entryId\n pageEntryId\n baselineRevisionId\n status\n name\n trafficSplit\n targeting\n analytics\n startedOn\n stoppedOn\n winningVariantId\n`;\n\nconst VARIANT_FIELDS = /* GraphQL */ `\n id\n entryId\n experimentId\n name\n status\n`;\n\nconst VARIANT_CONTENT_FIELDS = /* GraphQL */ `\n ${VARIANT_FIELDS}\n properties\n metadata\n bindings\n elements\n extensions\n`;\n\nconst ERROR_FIELDS = /* GraphQL */ `\n code\n message\n data\n`;\n\ntype Envelope<T> = { data: T; error: null } | { data: null; error: { message: string } };\n\nclass ExperimentsGatewayImpl implements GatewayAbstraction.Interface {\n constructor(private client: MainGraphQLClient.Interface) {}\n\n private unwrap<T>(envelope: Envelope<T>, fallbackMessage: string): T {\n if (envelope.error) {\n throw new Error(envelope.error.message || fallbackMessage);\n }\n return envelope.data as T;\n }\n\n async listExperiments(pageEntryId: string): Promise<ExperimentDto[]> {\n const response = await this.client.execute<{\n websiteBuilder: { listExperiments: Envelope<ExperimentDto[]> };\n }>({\n query: /* GraphQL */ `\n query ListExperiments($pageEntryId: String!) {\n websiteBuilder {\n listExperiments(pageEntryId: $pageEntryId) {\n data { ${EXPERIMENT_FIELDS} }\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { pageEntryId }\n });\n return (\n this.unwrap(response.websiteBuilder.listExperiments, \"Could not list experiments.\") ??\n []\n );\n }\n\n async getExperiment(id: string): Promise<ExperimentDto | null> {\n const response = await this.client.execute<{\n websiteBuilder: { getExperiment: Envelope<ExperimentDto | null> };\n }>({\n query: /* GraphQL */ `\n query GetExperiment($id: ID!) {\n websiteBuilder {\n getExperiment(id: $id) {\n data { ${EXPERIMENT_FIELDS} }\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { id }\n });\n return this.unwrap(response.websiteBuilder.getExperiment, \"Could not load experiment.\");\n }\n\n async listVariants(experimentId: string): Promise<VariantDto[]> {\n const response = await this.client.execute<{\n websiteBuilder: { listVariants: Envelope<VariantDto[]> };\n }>({\n query: /* GraphQL */ `\n query ListVariants($experimentId: String!) {\n websiteBuilder {\n listVariants(experimentId: $experimentId) {\n data { ${VARIANT_FIELDS} }\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { experimentId }\n });\n return this.unwrap(response.websiteBuilder.listVariants, \"Could not list variants.\") ?? [];\n }\n\n async getVariant(id: string): Promise<VariantContentDto | null> {\n const response = await this.client.execute<{\n websiteBuilder: { getVariant: Envelope<VariantContentDto | null> };\n }>({\n query: /* GraphQL */ `\n query GetVariant($id: ID!) {\n websiteBuilder {\n getVariant(id: $id) {\n data { ${VARIANT_CONTENT_FIELDS} }\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { id }\n });\n return this.unwrap(response.websiteBuilder.getVariant, \"Could not load variant.\");\n }\n\n async createExperiment(input: CreateExperimentInput): Promise<ExperimentDto> {\n const response = await this.client.execute<{\n websiteBuilder: { createExperiment: Envelope<ExperimentDto> };\n }>({\n query: /* GraphQL */ `\n mutation CreateExperiment($data: WbExperimentCreateInput!) {\n websiteBuilder {\n createExperiment(data: $data) {\n data { ${EXPERIMENT_FIELDS} }\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { data: input }\n });\n return this.unwrap(\n response.websiteBuilder.createExperiment,\n \"Could not create experiment.\"\n );\n }\n\n async updateExperiment(id: string, input: UpdateExperimentInput): Promise<ExperimentDto> {\n const response = await this.client.execute<{\n websiteBuilder: { updateExperiment: Envelope<ExperimentDto> };\n }>({\n query: /* GraphQL */ `\n mutation UpdateExperiment($id: ID!, $data: WbExperimentUpdateInput!) {\n websiteBuilder {\n updateExperiment(id: $id, data: $data) {\n data { ${EXPERIMENT_FIELDS} }\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { id, data: input }\n });\n return this.unwrap(\n response.websiteBuilder.updateExperiment,\n \"Could not update experiment.\"\n );\n }\n\n async startExperiment(id: string): Promise<ExperimentDto> {\n const response = await this.client.execute<{\n websiteBuilder: { startExperiment: Envelope<ExperimentDto> };\n }>({\n query: /* GraphQL */ `\n mutation StartExperiment($id: ID!) {\n websiteBuilder {\n startExperiment(id: $id) {\n data { ${EXPERIMENT_FIELDS} }\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { id }\n });\n return this.unwrap(response.websiteBuilder.startExperiment, \"Could not start experiment.\");\n }\n\n async stopExperiment(id: string): Promise<ExperimentDto> {\n const response = await this.client.execute<{\n websiteBuilder: { stopExperiment: Envelope<ExperimentDto> };\n }>({\n query: /* GraphQL */ `\n mutation StopExperiment($id: ID!) {\n websiteBuilder {\n stopExperiment(id: $id) {\n data { ${EXPERIMENT_FIELDS} }\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { id }\n });\n return this.unwrap(response.websiteBuilder.stopExperiment, \"Could not stop experiment.\");\n }\n\n async deleteExperiment(id: string): Promise<boolean> {\n const response = await this.client.execute<{\n websiteBuilder: { deleteExperiment: Envelope<boolean> };\n }>({\n query: /* GraphQL */ `\n mutation DeleteExperiment($id: ID!) {\n websiteBuilder {\n deleteExperiment(id: $id) {\n data\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { id }\n });\n return (\n this.unwrap(response.websiteBuilder.deleteExperiment, \"Could not delete experiment.\") ??\n false\n );\n }\n\n async pauseExperiment(experimentEntryId: string): Promise<boolean> {\n const response = await this.client.execute<{\n websiteBuilder: { pauseExperiment: Envelope<boolean> };\n }>({\n query: /* GraphQL */ `\n mutation PauseExperiment($experimentId: String!) {\n websiteBuilder {\n pauseExperiment(experimentId: $experimentId) {\n data\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { experimentId: experimentEntryId }\n });\n return (\n this.unwrap(response.websiteBuilder.pauseExperiment, \"Could not pause experiment.\") ??\n false\n );\n }\n\n async resumeExperiment(experimentEntryId: string): Promise<boolean> {\n const response = await this.client.execute<{\n websiteBuilder: { resumeExperiment: Envelope<boolean> };\n }>({\n query: /* GraphQL */ `\n mutation ResumeExperiment($experimentId: String!) {\n websiteBuilder {\n resumeExperiment(experimentId: $experimentId) {\n data\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { experimentId: experimentEntryId }\n });\n return (\n this.unwrap(response.websiteBuilder.resumeExperiment, \"Could not resume experiment.\") ??\n false\n );\n }\n\n async getExperimentPaused(experimentEntryId: string): Promise<boolean> {\n const response = await this.client.execute<{\n websiteBuilder: { getExperimentPaused: Envelope<boolean> };\n }>({\n query: /* GraphQL */ `\n query GetExperimentPaused($experimentId: String!) {\n websiteBuilder {\n getExperimentPaused(experimentId: $experimentId) {\n data\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { experimentId: experimentEntryId }\n });\n return (\n this.unwrap(\n response.websiteBuilder.getExperimentPaused,\n \"Could not read the experiment status.\"\n ) ?? false\n );\n }\n\n async createVariant(input: { experimentId: string; name: string }): Promise<VariantDto> {\n const response = await this.client.execute<{\n websiteBuilder: { createVariant: Envelope<VariantDto> };\n }>({\n query: /* GraphQL */ `\n mutation CreateVariant($data: WbVariantCreateInput!) {\n websiteBuilder {\n createVariant(data: $data) {\n data { ${VARIANT_FIELDS} }\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { data: input }\n });\n return this.unwrap(response.websiteBuilder.createVariant, \"Could not create variant.\");\n }\n\n async updateVariant(id: string, input: UpdateVariantInput): Promise<VariantDto> {\n const response = await this.client.execute<{\n websiteBuilder: { updateVariant: Envelope<VariantDto> };\n }>({\n query: /* GraphQL */ `\n mutation UpdateVariant($id: ID!, $data: WbVariantUpdateInput!) {\n websiteBuilder {\n updateVariant(id: $id, data: $data) {\n data { ${VARIANT_FIELDS} }\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { id, data: input }\n });\n return this.unwrap(response.websiteBuilder.updateVariant, \"Could not update variant.\");\n }\n\n async deleteVariant(id: string): Promise<boolean> {\n const response = await this.client.execute<{\n websiteBuilder: { deleteVariant: Envelope<boolean> };\n }>({\n query: /* GraphQL */ `\n mutation DeleteVariant($id: ID!) {\n websiteBuilder {\n deleteVariant(id: $id) {\n data\n error { ${ERROR_FIELDS} }\n }\n }\n }\n `,\n variables: { id }\n });\n return (\n this.unwrap(response.websiteBuilder.deleteVariant, \"Could not delete variant.\") ?? false\n );\n }\n}\n\nexport const ExperimentsGateway = GatewayAbstraction.createImplementation({\n implementation: ExperimentsGatewayImpl,\n dependencies: [MainGraphQLClient]\n});\n"],"names":["EXPERIMENT_FIELDS","VARIANT_FIELDS","VARIANT_CONTENT_FIELDS","ERROR_FIELDS","ExperimentsGatewayImpl","client","envelope","fallbackMessage","Error","pageEntryId","response","id","experimentId","input","experimentEntryId","ExperimentsGateway","GatewayAbstraction","MainGraphQLClient"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { CreateExperimentInput, ExperimentDto, UpdateExperimentInput, UpdateVariantInput, VariantContentDto, VariantDto } from "./types.js";
2
+ export interface IExperimentsGateway {
3
+ listExperiments(pageEntryId: string): Promise<ExperimentDto[]>;
4
+ getExperiment(id: string): Promise<ExperimentDto | null>;
5
+ listVariants(experimentId: string): Promise<VariantDto[]>;
6
+ getVariant(id: string): Promise<VariantContentDto | null>;
7
+ createExperiment(input: CreateExperimentInput): Promise<ExperimentDto>;
8
+ updateExperiment(id: string, input: UpdateExperimentInput): Promise<ExperimentDto>;
9
+ startExperiment(id: string): Promise<ExperimentDto>;
10
+ stopExperiment(id: string): Promise<ExperimentDto>;
11
+ deleteExperiment(id: string): Promise<boolean>;
12
+ pauseExperiment(experimentEntryId: string): Promise<boolean>;
13
+ resumeExperiment(experimentEntryId: string): Promise<boolean>;
14
+ getExperimentPaused(experimentEntryId: string): Promise<boolean>;
15
+ createVariant(input: {
16
+ experimentId: string;
17
+ name: string;
18
+ }): Promise<VariantDto>;
19
+ updateVariant(id: string, input: UpdateVariantInput): Promise<VariantDto>;
20
+ deleteVariant(id: string): Promise<boolean>;
21
+ }
22
+ export declare const ExperimentsGateway: import("@webiny/di").Abstraction<IExperimentsGateway>;
23
+ export declare namespace ExperimentsGateway {
24
+ type Interface = IExperimentsGateway;
25
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/admin";
2
+ const ExperimentsGateway = createAbstraction("WebsiteBuilder/ExperimentsGateway");
3
+ export { ExperimentsGateway };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/experiments/abstractions.js","sources":["../../../src/features/experiments/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type {\n CreateExperimentInput,\n ExperimentDto,\n UpdateExperimentInput,\n UpdateVariantInput,\n VariantContentDto,\n VariantDto\n} from \"./types.js\";\n\nexport interface IExperimentsGateway {\n listExperiments(pageEntryId: string): Promise<ExperimentDto[]>;\n getExperiment(id: string): Promise<ExperimentDto | null>;\n listVariants(experimentId: string): Promise<VariantDto[]>;\n getVariant(id: string): Promise<VariantContentDto | null>;\n createExperiment(input: CreateExperimentInput): Promise<ExperimentDto>;\n updateExperiment(id: string, input: UpdateExperimentInput): Promise<ExperimentDto>;\n startExperiment(id: string): Promise<ExperimentDto>;\n stopExperiment(id: string): Promise<ExperimentDto>;\n deleteExperiment(id: string): Promise<boolean>;\n // Runtime kill-switch, keyed on the experiment entryId (matches the serving/getPageExperiment id).\n pauseExperiment(experimentEntryId: string): Promise<boolean>;\n resumeExperiment(experimentEntryId: string): Promise<boolean>;\n getExperimentPaused(experimentEntryId: string): Promise<boolean>;\n createVariant(input: { experimentId: string; name: string }): Promise<VariantDto>;\n updateVariant(id: string, input: UpdateVariantInput): Promise<VariantDto>;\n deleteVariant(id: string): Promise<boolean>;\n}\n\nexport const ExperimentsGateway = createAbstraction<IExperimentsGateway>(\n \"WebsiteBuilder/ExperimentsGateway\"\n);\n\nexport namespace ExperimentsGateway {\n export type Interface = IExperimentsGateway;\n}\n"],"names":["ExperimentsGateway","createAbstraction"],"mappings":";AA6BO,MAAMA,qBAAqBC,kBAC9B"}
@@ -0,0 +1,3 @@
1
+ export declare const ExperimentsFeature: import("@webiny/feature/admin").FeatureDefinition<{
2
+ gateway: import("./abstractions.js").IExperimentsGateway;
3
+ }, []>;
@@ -0,0 +1,17 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { ExperimentsGateway } from "./abstractions.js";
3
+ import { ExperimentsGateway as external_ExperimentsGateway_js_ExperimentsGateway } from "./ExperimentsGateway.js";
4
+ const ExperimentsFeature = createFeature({
5
+ name: "WebsiteBuilder/Experiments",
6
+ register (container) {
7
+ container.register(external_ExperimentsGateway_js_ExperimentsGateway).inSingletonScope();
8
+ },
9
+ resolve (container) {
10
+ return {
11
+ gateway: container.resolve(ExperimentsGateway)
12
+ };
13
+ }
14
+ });
15
+ export { ExperimentsFeature };
16
+
17
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/experiments/feature.js","sources":["../../../src/features/experiments/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { ExperimentsGateway as GatewayAbstraction } from \"./abstractions.js\";\nimport { ExperimentsGateway } from \"./ExperimentsGateway.js\";\n\nexport const ExperimentsFeature = createFeature({\n name: \"WebsiteBuilder/Experiments\",\n register(container) {\n container.register(ExperimentsGateway).inSingletonScope();\n },\n resolve(container) {\n return {\n gateway: container.resolve(GatewayAbstraction)\n };\n }\n});\n"],"names":["ExperimentsFeature","createFeature","container","ExperimentsGateway","GatewayAbstraction"],"mappings":";;;AAIO,MAAMA,qBAAqBC,cAAc;IAC5C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,mDAAoB,gBAAgB;IAC3D;IACA,SAAQD,SAAS;QACb,OAAO;YACH,SAASA,UAAU,OAAO,CAACE;QAC/B;IACJ;AACJ"}
@@ -0,0 +1,3 @@
1
+ export { ExperimentsFeature } from "./feature.js";
2
+ export { ExperimentsGateway } from "./abstractions.js";
3
+ export type { ExperimentDto, VariantDto, VariantContentDto, UpdateVariantInput, CreateExperimentInput, UpdateExperimentInput } from "./types.js";
@@ -0,0 +1,2 @@
1
+ export { ExperimentsFeature } from "./feature.js";
2
+ export { ExperimentsGateway } from "./abstractions.js";
@@ -0,0 +1,61 @@
1
+ export interface ExperimentDto {
2
+ id: string;
3
+ entryId: string;
4
+ pageEntryId: string;
5
+ baselineRevisionId: string;
6
+ status: string;
7
+ name: string;
8
+ trafficSplit: {
9
+ control: number;
10
+ variants: Record<string, number>;
11
+ } | null;
12
+ targeting: Record<string, any> | null;
13
+ analytics: Record<string, any> | null;
14
+ startedOn: string | null;
15
+ stoppedOn: string | null;
16
+ winningVariantId: string | null;
17
+ }
18
+ export interface VariantDto {
19
+ id: string;
20
+ entryId: string;
21
+ experimentId: string;
22
+ name: string;
23
+ status: string;
24
+ }
25
+ /** A variant with its full, editable page content. */
26
+ export interface VariantContentDto extends VariantDto {
27
+ properties: Record<string, any> | null;
28
+ metadata: Record<string, any> | null;
29
+ bindings: Record<string, any> | null;
30
+ elements: Record<string, any> | null;
31
+ extensions: Record<string, any> | null;
32
+ }
33
+ export interface UpdateVariantInput {
34
+ name?: string;
35
+ status?: string;
36
+ properties?: Record<string, any>;
37
+ metadata?: Record<string, any>;
38
+ bindings?: Record<string, any>;
39
+ elements?: Record<string, any>;
40
+ extensions?: Record<string, any>;
41
+ }
42
+ export interface CreateExperimentInput {
43
+ pageEntryId: string;
44
+ baselineRevisionId: string;
45
+ name: string;
46
+ trafficSplit?: {
47
+ control: number;
48
+ variants: Record<string, number>;
49
+ };
50
+ targeting?: Record<string, any>;
51
+ analytics?: Record<string, any>;
52
+ }
53
+ export interface UpdateExperimentInput {
54
+ name?: string;
55
+ trafficSplit?: {
56
+ control: number;
57
+ variants: Record<string, number>;
58
+ };
59
+ targeting?: Record<string, any>;
60
+ analytics?: Record<string, any>;
61
+ }
File without changes
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import type { ElementInputRendererProps } from "../BaseEditor/index.js";
3
+ export declare const ColorPickerInputRenderer: ({ value, onChange, onPreviewChange, input, label }: ElementInputRendererProps) => React.JSX.Element;
@@ -0,0 +1,29 @@
1
+ import react from "react";
2
+ import { ColorPicker } from "@webiny/admin-ui";
3
+ const ColorPickerInputRenderer = ({ value, onChange, onPreviewChange, input, label })=>{
4
+ const commitValue = (newValue)=>{
5
+ onChange(({ value })=>{
6
+ value.set(newValue);
7
+ });
8
+ };
9
+ const previewValue = (newValue)=>{
10
+ onPreviewChange(({ value })=>{
11
+ value.set(newValue);
12
+ });
13
+ };
14
+ return /*#__PURE__*/ react.createElement(ColorPicker, {
15
+ size: "md",
16
+ variant: "secondary",
17
+ value: value,
18
+ onChange: (newValue)=>{
19
+ previewValue(newValue);
20
+ commitValue(newValue);
21
+ },
22
+ label: label,
23
+ hint: input.description,
24
+ note: input.helperText
25
+ });
26
+ };
27
+ export { ColorPickerInputRenderer };
28
+
29
+ //# sourceMappingURL=ColorPickerInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputRenderers/ColorPickerInput.js","sources":["../../src/inputRenderers/ColorPickerInput.tsx"],"sourcesContent":["import React from \"react\";\nimport { ColorPicker } from \"@webiny/admin-ui\";\nimport type { ElementInputRendererProps } from \"~/BaseEditor/index.js\";\n\nexport const ColorPickerInputRenderer = ({\n value,\n onChange,\n onPreviewChange,\n input,\n label\n}: ElementInputRendererProps) => {\n const commitValue = (newValue: string) => {\n onChange(({ value }) => {\n value.set(newValue);\n });\n };\n\n const previewValue = (newValue: string) => {\n onPreviewChange(({ value }) => {\n value.set(newValue);\n });\n };\n\n return (\n <ColorPicker\n size={\"md\"}\n variant={\"secondary\"}\n value={value}\n onChange={(newValue: string) => {\n previewValue(newValue);\n commitValue(newValue);\n }}\n label={label}\n hint={input.description}\n note={input.helperText}\n />\n );\n};\n"],"names":["ColorPickerInputRenderer","value","onChange","onPreviewChange","input","label","commitValue","newValue","previewValue","ColorPicker"],"mappings":";;AAIO,MAAMA,2BAA2B,CAAC,EACrCC,KAAK,EACLC,QAAQ,EACRC,eAAe,EACfC,KAAK,EACLC,KAAK,EACmB;IACxB,MAAMC,cAAc,CAACC;QACjBL,SAAS,CAAC,EAAED,KAAK,EAAE;YACfA,MAAM,GAAG,CAACM;QACd;IACJ;IAEA,MAAMC,eAAe,CAACD;QAClBJ,gBAAgB,CAAC,EAAEF,KAAK,EAAE;YACtBA,MAAM,GAAG,CAACM;QACd;IACJ;IAEA,OAAO,WAAP,GACI,oBAACE,aAAWA;QACR,MAAM;QACN,SAAS;QACT,OAAOR;QACP,UAAU,CAACM;YACPC,aAAaD;YACbD,YAAYC;QAChB;QACA,OAAOF;QACP,MAAMD,MAAM,WAAW;QACvB,MAAMA,MAAM,UAAU;;AAGlC"}