@athoscommerce/snap-preact 1.2.3-beta.4 → 1.2.3-beta.6

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 (214) hide show
  1. package/README.md +16 -0
  2. package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts +3 -3
  3. package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts.map +1 -1
  4. package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +7 -8
  5. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +1 -1
  6. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -1
  7. package/dist/cjs/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +3 -3
  8. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +2 -0
  9. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -1
  10. package/dist/cjs/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +24 -25
  11. package/dist/cjs/components/src/components/Molecules/Filter/Filter.d.ts +1 -1
  12. package/dist/cjs/components/src/components/Molecules/Filter/Filter.d.ts.map +1 -1
  13. package/dist/cjs/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  14. package/dist/cjs/components/src/components/Molecules/Result/Result.js +11 -6
  15. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts +4 -1
  16. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  17. package/dist/cjs/components/src/components/Molecules/SearchInput/SearchInput.js +3 -3
  18. package/dist/cjs/components/src/components/Molecules/TemplatesEditor/Components/AbstractedControls.js +5 -5
  19. package/dist/cjs/components/src/components/Molecules/TemplatesEditor/Components/Control.d.ts.map +1 -1
  20. package/dist/cjs/components/src/components/Molecules/TemplatesEditor/Components/Control.js +31 -31
  21. package/dist/cjs/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.d.ts.map +1 -1
  22. package/dist/cjs/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +22 -36
  23. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts +7 -0
  24. package/dist/cjs/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -1
  25. package/dist/cjs/components/src/components/Organisms/Chat/Chat.js +638 -431
  26. package/dist/cjs/components/src/components/Organisms/Chat/ChatResult.d.ts.map +1 -1
  27. package/dist/cjs/components/src/components/Organisms/Chat/ChatResult.js +4 -3
  28. package/dist/cjs/components/src/components/Organisms/Chat/MessageText.d.ts +3 -1
  29. package/dist/cjs/components/src/components/Organisms/Chat/MessageText.d.ts.map +1 -1
  30. package/dist/cjs/components/src/components/Organisms/Chat/MessageText.js +22 -19
  31. package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.d.ts +3 -1
  32. package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.d.ts.map +1 -1
  33. package/dist/cjs/components/src/components/Organisms/Chat/MessageUser.js +39 -21
  34. package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.d.ts +1 -1
  35. package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.d.ts.map +1 -1
  36. package/dist/cjs/components/src/components/Organisms/Chat/ResultsDisplay.js +7 -11
  37. package/dist/cjs/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts +2 -2
  38. package/dist/cjs/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts.map +1 -1
  39. package/dist/cjs/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts +11 -0
  40. package/dist/cjs/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts.map +1 -0
  41. package/dist/cjs/components/src/components/Organisms/ProductQuickView/ProductQuickView.js +461 -0
  42. package/dist/cjs/components/src/components/Organisms/ProductQuickView/index.d.ts +2 -0
  43. package/dist/cjs/components/src/components/Organisms/ProductQuickView/index.d.ts.map +1 -0
  44. package/dist/cjs/components/src/components/Organisms/ProductQuickView/index.js +17 -0
  45. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  46. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +0 -2
  47. package/dist/cjs/components/src/hooks/useAcRenderedInput.d.ts.map +1 -1
  48. package/dist/cjs/components/src/hooks/useAcRenderedInput.js +65 -15
  49. package/dist/cjs/components/src/hooks/useMediaQuery.d.ts.map +1 -1
  50. package/dist/cjs/components/src/hooks/useMediaQuery.js +3 -1
  51. package/dist/cjs/components/src/index.d.ts +1 -0
  52. package/dist/cjs/components/src/index.d.ts.map +1 -1
  53. package/dist/cjs/components/src/index.js +1 -0
  54. package/dist/cjs/components/src/providers/theme.d.ts +1 -1
  55. package/dist/cjs/components/src/providers/theme.d.ts.map +1 -1
  56. package/dist/cjs/components/src/themes/base/base.js +3 -3
  57. package/dist/cjs/components/src/utilities/Colour/Colour.d.ts +11 -0
  58. package/dist/cjs/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  59. package/dist/cjs/components/src/utilities/Colour/Colour.js +32 -0
  60. package/dist/cjs/src/Instantiators/RecommendationInstantiator.d.ts +3 -1
  61. package/dist/cjs/src/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
  62. package/dist/cjs/src/Instantiators/RecommendationInstantiator.js +162 -123
  63. package/dist/cjs/src/Snap.d.ts +1 -1
  64. package/dist/cjs/src/Snap.d.ts.map +1 -1
  65. package/dist/cjs/src/Snap.js +18 -6
  66. package/dist/cjs/src/SnapHybrid.d.ts.map +1 -1
  67. package/dist/cjs/src/Templates/SnapTemplates.d.ts +13 -72
  68. package/dist/cjs/src/Templates/SnapTemplates.d.ts.map +1 -1
  69. package/dist/cjs/src/Templates/SnapTemplates.js +123 -72
  70. package/dist/cjs/src/Templates/Stores/TargetStore.d.ts +7 -6
  71. package/dist/cjs/src/Templates/Stores/TargetStore.d.ts.map +1 -1
  72. package/dist/cjs/src/Templates/Stores/TargetStore.js +14 -8
  73. package/dist/cjs/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts +58 -8
  74. package/dist/cjs/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts.map +1 -1
  75. package/dist/cjs/src/Templates/Stores/TemplateEditor/TemplateEditorStore.js +467 -96
  76. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts +1 -0
  77. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts.map +1 -1
  78. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.js +123 -70
  79. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.d.ts.map +1 -1
  80. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.js +9 -3
  81. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts +1 -0
  82. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts.map +1 -1
  83. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.js +86 -1
  84. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.d.ts.map +1 -1
  85. package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.js +33 -14
  86. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts +93 -30
  87. package/dist/cjs/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  88. package/dist/cjs/src/Templates/Stores/TemplateStore.js +33 -41
  89. package/dist/cjs/src/Templates/Stores/ThemeStore.d.ts +2 -8
  90. package/dist/cjs/src/Templates/Stores/ThemeStore.d.ts.map +1 -1
  91. package/dist/cjs/src/Templates/Stores/ThemeStore.js +3 -28
  92. package/dist/cjs/src/Templates/index.d.ts +1 -1
  93. package/dist/cjs/src/Templates/index.d.ts.map +1 -1
  94. package/dist/cjs/src/create/createChatController.js +1 -1
  95. package/dist/cjs/src/index.d.ts +1 -0
  96. package/dist/cjs/src/index.d.ts.map +1 -1
  97. package/dist/cjs/src/setupEvents.d.ts +13 -0
  98. package/dist/cjs/src/setupEvents.d.ts.map +1 -1
  99. package/dist/cjs/src/setupEvents.js +56 -8
  100. package/dist/cjs/src/types.d.ts +3 -1
  101. package/dist/cjs/src/types.d.ts.map +1 -1
  102. package/dist/cjs/src/utils/combineMerge.d.ts +2 -0
  103. package/dist/cjs/src/utils/combineMerge.d.ts.map +1 -0
  104. package/dist/cjs/src/utils/combineMerge.js +22 -0
  105. package/dist/cjs/src/utils/index.d.ts +1 -0
  106. package/dist/cjs/src/utils/index.d.ts.map +1 -1
  107. package/dist/cjs/src/utils/index.js +3 -1
  108. package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts +3 -3
  109. package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts.map +1 -1
  110. package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +7 -8
  111. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts +1 -1
  112. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.d.ts.map +1 -1
  113. package/dist/esm/components/src/components/Molecules/ChatInspirationResultMessage/ChatInspirationResultMessage.js +3 -3
  114. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts +2 -0
  115. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.d.ts.map +1 -1
  116. package/dist/esm/components/src/components/Molecules/ChatProductQueryMessage/ChatProductQueryMessage.js +24 -26
  117. package/dist/esm/components/src/components/Molecules/Filter/Filter.d.ts +1 -1
  118. package/dist/esm/components/src/components/Molecules/Filter/Filter.d.ts.map +1 -1
  119. package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
  120. package/dist/esm/components/src/components/Molecules/Result/Result.js +9 -4
  121. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts +4 -1
  122. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.d.ts.map +1 -1
  123. package/dist/esm/components/src/components/Molecules/SearchInput/SearchInput.js +3 -3
  124. package/dist/esm/components/src/components/Molecules/TemplatesEditor/Components/AbstractedControls.js +5 -5
  125. package/dist/esm/components/src/components/Molecules/TemplatesEditor/Components/Control.d.ts.map +1 -1
  126. package/dist/esm/components/src/components/Molecules/TemplatesEditor/Components/Control.js +29 -29
  127. package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.d.ts.map +1 -1
  128. package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +22 -35
  129. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts +7 -0
  130. package/dist/esm/components/src/components/Organisms/Chat/Chat.d.ts.map +1 -1
  131. package/dist/esm/components/src/components/Organisms/Chat/Chat.js +557 -359
  132. package/dist/esm/components/src/components/Organisms/Chat/ChatResult.d.ts.map +1 -1
  133. package/dist/esm/components/src/components/Organisms/Chat/ChatResult.js +4 -3
  134. package/dist/esm/components/src/components/Organisms/Chat/MessageText.d.ts +3 -1
  135. package/dist/esm/components/src/components/Organisms/Chat/MessageText.d.ts.map +1 -1
  136. package/dist/esm/components/src/components/Organisms/Chat/MessageText.js +21 -19
  137. package/dist/esm/components/src/components/Organisms/Chat/MessageUser.d.ts +3 -1
  138. package/dist/esm/components/src/components/Organisms/Chat/MessageUser.d.ts.map +1 -1
  139. package/dist/esm/components/src/components/Organisms/Chat/MessageUser.js +36 -21
  140. package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.d.ts +1 -1
  141. package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.d.ts.map +1 -1
  142. package/dist/esm/components/src/components/Organisms/Chat/ResultsDisplay.js +7 -11
  143. package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts +2 -2
  144. package/dist/esm/components/src/components/Organisms/FilterSummary/FilterSummary.d.ts.map +1 -1
  145. package/dist/esm/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts +11 -0
  146. package/dist/esm/components/src/components/Organisms/ProductQuickView/ProductQuickView.d.ts.map +1 -0
  147. package/dist/esm/components/src/components/Organisms/ProductQuickView/ProductQuickView.js +436 -0
  148. package/dist/esm/components/src/components/Organisms/ProductQuickView/index.d.ts +2 -0
  149. package/dist/esm/components/src/components/Organisms/ProductQuickView/index.d.ts.map +1 -0
  150. package/dist/esm/components/src/components/Organisms/ProductQuickView/index.js +1 -0
  151. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  152. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +0 -2
  153. package/dist/esm/components/src/hooks/useAcRenderedInput.d.ts.map +1 -1
  154. package/dist/esm/components/src/hooks/useAcRenderedInput.js +61 -11
  155. package/dist/esm/components/src/hooks/useMediaQuery.d.ts.map +1 -1
  156. package/dist/esm/components/src/hooks/useMediaQuery.js +3 -1
  157. package/dist/esm/components/src/index.d.ts +1 -0
  158. package/dist/esm/components/src/index.d.ts.map +1 -1
  159. package/dist/esm/components/src/index.js +1 -0
  160. package/dist/esm/components/src/providers/theme.d.ts +1 -1
  161. package/dist/esm/components/src/providers/theme.d.ts.map +1 -1
  162. package/dist/esm/components/src/themes/base/base.js +3 -3
  163. package/dist/esm/components/src/utilities/Colour/Colour.d.ts +11 -0
  164. package/dist/esm/components/src/utilities/Colour/Colour.d.ts.map +1 -1
  165. package/dist/esm/components/src/utilities/Colour/Colour.js +30 -0
  166. package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts +3 -1
  167. package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
  168. package/dist/esm/src/Instantiators/RecommendationInstantiator.js +131 -84
  169. package/dist/esm/src/Snap.d.ts +1 -1
  170. package/dist/esm/src/Snap.d.ts.map +1 -1
  171. package/dist/esm/src/Snap.js +21 -6
  172. package/dist/esm/src/SnapHybrid.d.ts.map +1 -1
  173. package/dist/esm/src/Templates/SnapTemplates.d.ts +13 -72
  174. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  175. package/dist/esm/src/Templates/SnapTemplates.js +137 -78
  176. package/dist/esm/src/Templates/Stores/TargetStore.d.ts +7 -6
  177. package/dist/esm/src/Templates/Stores/TargetStore.d.ts.map +1 -1
  178. package/dist/esm/src/Templates/Stores/TargetStore.js +14 -8
  179. package/dist/esm/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts +58 -8
  180. package/dist/esm/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts.map +1 -1
  181. package/dist/esm/src/Templates/Stores/TemplateEditor/TemplateEditorStore.js +447 -89
  182. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts +1 -0
  183. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.d.ts.map +1 -1
  184. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/autocompleteControllerUI.js +118 -66
  185. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.d.ts.map +1 -1
  186. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.js +9 -3
  187. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts +1 -0
  188. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.d.ts.map +1 -1
  189. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/searchControllerUI.js +82 -1
  190. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.d.ts.map +1 -1
  191. package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/themeUI.js +27 -8
  192. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +93 -30
  193. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  194. package/dist/esm/src/Templates/Stores/TemplateStore.js +29 -38
  195. package/dist/esm/src/Templates/Stores/ThemeStore.d.ts +2 -8
  196. package/dist/esm/src/Templates/Stores/ThemeStore.d.ts.map +1 -1
  197. package/dist/esm/src/Templates/Stores/ThemeStore.js +3 -26
  198. package/dist/esm/src/Templates/index.d.ts +1 -1
  199. package/dist/esm/src/Templates/index.d.ts.map +1 -1
  200. package/dist/esm/src/create/createChatController.js +1 -1
  201. package/dist/esm/src/index.d.ts +1 -0
  202. package/dist/esm/src/index.d.ts.map +1 -1
  203. package/dist/esm/src/setupEvents.d.ts +13 -0
  204. package/dist/esm/src/setupEvents.d.ts.map +1 -1
  205. package/dist/esm/src/setupEvents.js +25 -8
  206. package/dist/esm/src/types.d.ts +3 -1
  207. package/dist/esm/src/types.d.ts.map +1 -1
  208. package/dist/esm/src/utils/combineMerge.d.ts +2 -0
  209. package/dist/esm/src/utils/combineMerge.d.ts.map +1 -0
  210. package/dist/esm/src/utils/combineMerge.js +16 -0
  211. package/dist/esm/src/utils/index.d.ts +1 -0
  212. package/dist/esm/src/utils/index.d.ts.map +1 -1
  213. package/dist/esm/src/utils/index.js +1 -0
  214. package/package.json +20 -14
@@ -1,82 +1,23 @@
1
1
  import { Snap } from '../Snap';
2
2
  import { TemplatesStore } from './Stores/TemplateStore';
3
- import { type SearchStoreConfigSettings, type AutocompleteStoreConfigSettings, ChatStoreConfigSettings } from '@athoscommerce/snap-store-mobx';
3
+ import { type AutocompleteStoreConfigSettings } from '@athoscommerce/snap-store-mobx';
4
4
  import type { UrlTranslatorConfig } from '@athoscommerce/snap-url-manager';
5
5
  import type { PluginGrouping } from '@athoscommerce/snap-controller';
6
- import type { RecommendationInstantiatorConfigSettings, RecommendationComponentObject } from '../Instantiators/RecommendationInstantiator';
6
+ import type { RecommendationComponentObject } from '../Instantiators/RecommendationInstantiator';
7
7
  import type { SnapFeatures } from '../types';
8
8
  import type { SnapConfig, ExtendedTarget } from '../Snap';
9
- import type { PluginsConfigs, PluginsConfigsUnlocked, TemplateStoreConfigConfig, TemplateStoreConfigConfigUnlocked } from './Stores/TemplateStore';
10
- import { LibraryImports } from './Stores/LibraryStore';
11
- export declare const TEMPLATE_EDIT_COOKIE = "athosEditor";
12
- export declare const TEMPLATE_EDITOR_PARAM = "athos-editor";
13
- export type SearchTargetConfig = {
14
- selector: string;
15
- component: keyof LibraryImports['component']['search'];
16
- };
17
- export type AutocompleteTargetConfig = {
18
- selector: string;
19
- inputSelector?: string;
20
- component: keyof LibraryImports['component']['autocomplete'];
21
- };
22
- export type RecommendationDefaultTargetConfig = {
23
- component: keyof LibraryImports['component']['recommendation']['default'];
24
- };
25
- export type RecommendationEmailTargetConfig = {
26
- component: keyof LibraryImports['component']['recommendation']['email'];
27
- };
28
- export type RecommendationBundleTargetConfig = {
29
- component: keyof LibraryImports['component']['recommendation']['bundle'];
30
- };
31
- export type ChatTargetConfig = {
32
- selector: string;
33
- component: keyof LibraryImports['component']['chat'];
34
- };
9
+ import type { TemplatesStoreConfigLocked, TemplatesStoreConfigUnlocked } from './Stores/TemplateStore';
10
+ export declare const TEMPLATE_EDITOR_COOKIE = "athosEditor";
11
+ export declare const TEMPLATE_EDITOR_UI_PARAM = "athos-editor";
35
12
  export type SnapTemplatesConfig = SnapTemplatesConfigLocked;
36
- export type SnapTemplatesConfigLocked = TemplateStoreConfigConfig & {
37
- unlocked?: false;
13
+ export type SnapTemplatesConfigUnlocked = TemplatesStoreConfigUnlocked & {
14
+ unlocked: true;
38
15
  url?: UrlTranslatorConfig;
39
16
  features?: SnapFeatures;
40
- search?: {
41
- targets: SearchTargetConfig[];
42
- settings?: SearchStoreConfigSettings;
43
- plugins?: PluginsConfigs;
44
- };
45
- autocomplete?: {
46
- targets: AutocompleteTargetConfig[];
47
- settings?: AutocompleteStoreConfigSettings;
48
- plugins?: PluginsConfigs;
49
- };
50
- recommendation?: {
51
- email?: {
52
- [profileComponentName: string]: RecommendationEmailTargetConfig;
53
- };
54
- default?: {
55
- [profileComponentName: string]: RecommendationDefaultTargetConfig;
56
- };
57
- bundle?: {
58
- [profileComponentName: string]: RecommendationBundleTargetConfig;
59
- };
60
- settings?: RecommendationInstantiatorConfigSettings;
61
- plugins?: PluginsConfigs;
62
- };
63
- chat?: {
64
- targets: ChatTargetConfig[];
65
- settings?: ChatStoreConfigSettings;
66
- plugins?: PluginsConfigs;
67
- };
68
17
  };
69
- export type SnapTemplatesConfigUnlocked = Omit<SnapTemplatesConfigLocked, 'unlocked' | 'plugins' | 'search' | 'autocomplete' | 'recommendation'> & TemplateStoreConfigConfigUnlocked & {
70
- unlocked: true;
71
- search?: Omit<NonNullable<SnapTemplatesConfigLocked['search']>, 'plugins'> & {
72
- plugins?: PluginsConfigsUnlocked;
73
- };
74
- autocomplete?: Omit<NonNullable<SnapTemplatesConfigLocked['autocomplete']>, 'plugins'> & {
75
- plugins?: PluginsConfigsUnlocked;
76
- };
77
- recommendation?: Omit<NonNullable<SnapTemplatesConfigLocked['recommendation']>, 'plugins'> & {
78
- plugins?: PluginsConfigsUnlocked;
79
- };
18
+ export type SnapTemplatesConfigLocked = TemplatesStoreConfigLocked & {
19
+ url?: UrlTranslatorConfig;
20
+ features?: SnapFeatures;
80
21
  };
81
22
  export declare const DEFAULT_FEATURES: SnapFeatures;
82
23
  export declare const DEFAULT_AUTOCOMPLETE_CONTROLLER_SETTINGS: AutocompleteStoreConfigSettings;
@@ -87,9 +28,9 @@ export declare class SnapTemplates extends Snap {
87
28
  export declare function mapBreakpoints<ControllerConfigSettings>(breakpointsKeys: number[], breakpointSettings: ControllerConfigSettings[]): {
88
29
  [key: string]: ControllerConfigSettings | Record<string, never>;
89
30
  };
90
- export declare const createSearchTargeters: (templateConfig: SnapTemplatesConfig | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore) => ExtendedTarget[];
91
- export declare const createChatTargeters: (templateConfig: SnapTemplatesConfig | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore) => ExtendedTarget[];
92
- export declare function createAutocompleteTargeters(templateConfig: SnapTemplatesConfig | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore): ExtendedTarget[];
31
+ export declare const createSearchTargeters: (templateConfig: SnapTemplatesConfig, templatesStore: TemplatesStore) => ExtendedTarget[];
32
+ export declare const createChatTargeters: (templateConfig: SnapTemplatesConfig, templatesStore: TemplatesStore) => ExtendedTarget[];
33
+ export declare function createAutocompleteTargeters(templateConfig: SnapTemplatesConfig, templatesStore: TemplatesStore): ExtendedTarget[];
93
34
  export declare function createRecommendationComponentMapping(templateConfig: SnapTemplatesConfig | SnapTemplatesConfigUnlocked, templatesStore: TemplatesStore): {
94
35
  [name: string]: RecommendationComponentObject;
95
36
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SnapTemplates.d.ts","sourceRoot":"","sources":["../../../../src/Templates/SnapTemplates.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SnapTemplates.d.ts","sourceRoot":"","sources":["../../../../src/Templates/SnapTemplates.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAI/B,OAAO,EAAkB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxE,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAA0C,cAAc,EAAoB,MAAM,gCAAgC,CAAC;AAC/H,OAAO,KAAK,EAAE,6BAA6B,EAAoC,MAAM,6CAA6C,CAAC;AACnI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAOX,0BAA0B,EAC1B,4BAA4B,EAE5B,MAAM,wBAAwB,CAAC;AAoChC,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AACpD,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAC5D,MAAM,MAAM,2BAA2B,GAAG,4BAA4B,GAAG;IACxE,QAAQ,EAAE,IAAI,CAAC;IACf,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,0BAA0B,GAAG;IACpE,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAwBF,eAAO,MAAM,gBAAgB,EAAE,YAAiB,CAAC;AAEjD,eAAO,MAAM,wCAAwC,EAAE,+BAItD,CAAC;AAEF,qBAAa,aAAc,SAAQ,IAAI;IACtC,SAAS,EAAE,cAAc,CAAC;gBACd,MAAM,EAAE,mBAAmB,GAAG,2BAA2B;CAoGrE;AAED,wBAAgB,cAAc,CAAC,wBAAwB,EACtD,eAAe,EAAE,MAAM,EAAE,EACzB,kBAAkB,EAAE,wBAAwB,EAAE,GAC5C;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,CAKrE;AAED,eAAO,MAAM,qBAAqB,mBAAoB,mBAAmB,kBAAkB,cAAc,KAAG,cAAc,EAoCzH,CAAC;AAEF,eAAO,MAAM,mBAAmB,mBAAoB,mBAAmB,kBAAkB,cAAc,KAAG,cAAc,EA2CvH,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,GAAG,cAAc,EAAE,CAqCjI;AAED,wBAAgB,oCAAoC,CACnD,cAAc,EAAE,mBAAmB,GAAG,2BAA2B,EACjE,cAAc,EAAE,cAAc,GAC5B;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,6BAA6B,CAAA;CAAE,CAiDnD;AAED,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,mBAAmB,GAAG,2BAA2B,EAAE,cAAc,EAAE,cAAc,GAAG,UAAU,CA0J9I;AAED,wBAAgB,aAAa,CAC5B,cAAc,EAAE,mBAAmB,GAAG,2BAA2B,EACjE,cAAc,EAAE,cAAc,EAC9B,cAAc,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,gBAAgB,GAAG,MAAM,GACpE,cAAc,EAAE,CAmFlB"}
@@ -3,10 +3,11 @@ import { render } from 'preact';
3
3
  import deepmerge from 'deepmerge';
4
4
  import { Snap } from '../Snap';
5
5
  import { TemplateSelect } from '../../components/src/components/Atoms/TemplateSelect';
6
- import { DomTargeter, url, cookies, version } from '@athoscommerce/snap-toolbox';
6
+ import { DomTargeter, url, cookies, version, getContext } from '@athoscommerce/snap-toolbox';
7
7
  import { TemplatesStore } from './Stores/TemplateStore';
8
- export const TEMPLATE_EDIT_COOKIE = 'athosEditor';
9
- export const TEMPLATE_EDITOR_PARAM = 'athos-editor';
8
+ import { combineMerge } from '../utils';
9
+ export const TEMPLATE_EDITOR_COOKIE = 'athosEditor';
10
+ export const TEMPLATE_EDITOR_UI_PARAM = 'athos-editor';
10
11
  export const DEFAULT_FEATURES = {};
11
12
  export const DEFAULT_AUTOCOMPLETE_CONTROLLER_SETTINGS = {
12
13
  trending: {
@@ -15,61 +16,79 @@ export const DEFAULT_AUTOCOMPLETE_CONTROLLER_SETTINGS = {
15
16
  };
16
17
  export class SnapTemplates extends Snap {
17
18
  constructor(config) {
19
+ let context = {};
20
+ try {
21
+ context = getContext(['editor']);
22
+ }
23
+ catch {
24
+ context = {};
25
+ }
26
+ const { editor } = context;
18
27
  const urlParams = url(window.location.href);
19
- const editMode = Boolean((urlParams?.params?.query && TEMPLATE_EDITOR_PARAM in urlParams.params.query) || cookies.get(TEMPLATE_EDIT_COOKIE));
28
+ const editorCookieValue = cookies.get(TEMPLATE_EDITOR_COOKIE);
29
+ const editUIMode = Boolean((urlParams?.params?.query && TEMPLATE_EDITOR_UI_PARAM in urlParams.params.query) || editorCookieValue === 'ui' || editor?.mode === 'ui');
30
+ const editMode = Boolean(editorCookieValue) || editUIMode || Boolean(editor?.mode === 'headless');
20
31
  const templatesStore = new TemplatesStore({ config, settings: { editMode } });
21
32
  const snapConfig = createSnapConfig(config, templatesStore);
22
33
  super(snapConfig, { templatesStore });
23
34
  this.templates = templatesStore;
24
- if (editMode) {
25
- cookies.set(TEMPLATE_EDIT_COOKIE, 'true');
26
- setTimeout(async () => {
35
+ setTimeout(async () => {
36
+ if (editMode) {
37
+ // create templateditor store
27
38
  // preload the library
28
39
  await templatesStore.preLoad();
29
- new DomTargeter([
30
- {
31
- selector: 'body',
32
- inject: {
33
- action: 'append',
34
- element: () => {
35
- const themeEditContainer = document.createElement('div');
36
- themeEditContainer.id = 'athos-template-editor';
37
- return themeEditContainer;
40
+ // create editor store and register controllers
41
+ const TemplateEditorStore = (await import('./Stores/TemplateEditor/TemplateEditorStore')).TemplateEditorStore;
42
+ const templateEditorStore = new TemplateEditorStore({ templatesStore });
43
+ // attach to the window object
44
+ window.athos = window.athos || {};
45
+ window.athos.editor = templateEditorStore;
46
+ const searchController = this.controllers['search'];
47
+ const autocompleteController = this.controllers['autocomplete'];
48
+ if (searchController) {
49
+ templateEditorStore.registerController(searchController);
50
+ }
51
+ if (autocompleteController) {
52
+ templateEditorStore.registerController(autocompleteController);
53
+ }
54
+ // render ui editor
55
+ if (editUIMode) {
56
+ cookies.set(TEMPLATE_EDITOR_COOKIE, 'ui');
57
+ new DomTargeter([
58
+ {
59
+ selector: 'body',
60
+ inject: {
61
+ action: 'append',
62
+ element: () => {
63
+ const themeEditContainer = document.createElement('div');
64
+ themeEditContainer.id = 'athos-template-editor';
65
+ return themeEditContainer;
66
+ },
38
67
  },
39
68
  },
40
- },
41
- ], async (target, elem) => {
42
- try {
43
- const TemplateEditor = (await import('../../components/src')).TemplatesEditor;
44
- const TemplateEditorStore = (await import('./Stores/TemplateEditor/TemplateEditorStore')).TemplateEditorStore;
45
- const templateEditorStore = new TemplateEditorStore({ templatesStore });
46
- const searchController = this.controllers['search'];
47
- const autocompleteController = this.controllers['autocomplete'];
48
- if (searchController) {
49
- templateEditorStore.registerController(searchController);
69
+ ], async (target, elem) => {
70
+ try {
71
+ const TemplateEditor = (await import('../../components/src')).TemplatesEditor;
72
+ render(_jsx(TemplateEditor, { templatesStore: templatesStore, editorStore: templateEditorStore, snap: this, onRemoveClick: () => {
73
+ cookies.unset(TEMPLATE_EDITOR_COOKIE);
74
+ const urlState = url(window.location.href);
75
+ delete urlState?.params.query[TEMPLATE_EDITOR_UI_PARAM];
76
+ const newUrl = urlState?.url();
77
+ if (newUrl && newUrl != window.location.href) {
78
+ window.location.href = newUrl;
79
+ }
80
+ else {
81
+ window.location.reload();
82
+ }
83
+ } }), elem);
50
84
  }
51
- if (autocompleteController) {
52
- templateEditorStore.registerController(autocompleteController);
85
+ catch (error) {
86
+ console.error('Error rendering TemplateEditor:', error);
53
87
  }
54
- render(_jsx(TemplateEditor, { templatesStore: templatesStore, editorStore: templateEditorStore, snap: this, onRemoveClick: () => {
55
- cookies.unset(TEMPLATE_EDIT_COOKIE);
56
- const urlState = url(window.location.href);
57
- delete urlState?.params.query[TEMPLATE_EDITOR_PARAM];
58
- const newUrl = urlState?.url();
59
- if (newUrl && newUrl != window.location.href) {
60
- window.location.href = newUrl;
61
- }
62
- else {
63
- window.location.reload();
64
- }
65
- } }), elem);
66
- }
67
- catch (error) {
68
- console.error('Error rendering TemplateEditor:', error);
69
- }
70
- });
71
- });
72
- }
88
+ });
89
+ }
90
+ }
91
+ });
73
92
  }
74
93
  }
75
94
  export function mapBreakpoints(breakpointsKeys, breakpointSettings) {
@@ -79,40 +98,63 @@ export function mapBreakpoints(breakpointsKeys, breakpointSettings) {
79
98
  }, {});
80
99
  }
81
100
  export const createSearchTargeters = (templateConfig, templatesStore) => {
82
- const targets = templateConfig.search?.targets || [];
83
- return targets.map((target) => {
84
- const targetId = templatesStore.addTarget('search', target);
101
+ // initial target configs
102
+ const targetConfigs = templateConfig.search?.targets || [];
103
+ let mergedConfigs;
104
+ if (templatesStore.settings.editMode) {
105
+ const overrideConfigs = (templatesStore.storage.get('overrides.targets.search') || []);
106
+ mergedConfigs = deepmerge(targetConfigs, overrideConfigs, { arrayMerge: combineMerge });
107
+ }
108
+ else {
109
+ mergedConfigs = targetConfigs;
110
+ }
111
+ // loop through mergedConfigs ---
112
+ return mergedConfigs.map((targetConfig) => {
113
+ const target = templatesStore.addTarget({ ...targetConfig, type: 'search' });
114
+ // const overrideTemplateStoreTarget = templatesStore.getTarget('search', target.index);
115
+ // console.log("templatesStore", templatesStore)
116
+ // console.log('selector', targetConfig.selector);
117
+ // console.log('overrideTemplateStoreTarget', overrideTemplateStoreTarget);
85
118
  const targeter = {
86
- selector: target.selector,
119
+ selector: targetConfig.selector,
87
120
  hideTarget: true,
88
121
  component: async () => {
89
122
  const componentImportPromises = [];
90
- componentImportPromises.push(templatesStore.library.import.component.search[target.component]());
123
+ componentImportPromises.push(templatesStore.library.import.component.search[targetConfig.component]());
91
124
  await Promise.all(componentImportPromises);
92
125
  return TemplateSelect;
93
126
  },
94
- props: { type: 'search', templatesStore, targetId },
127
+ props: { target, templatesStore },
95
128
  };
96
129
  return targeter;
97
130
  });
98
131
  };
99
132
  export const createChatTargeters = (templateConfig, templatesStore) => {
100
- const targets = templateConfig.chat?.targets || [];
101
- return targets.map((target) => {
102
- const targetId = templatesStore.addTarget('chat', target);
133
+ // initial target configs
134
+ const targetConfigs = templateConfig.chat?.targets || [];
135
+ let mergedConfigs;
136
+ if (templatesStore.settings.editMode) {
137
+ const overrideConfigs = (templatesStore.storage.get('overrides.targets.chat') || []);
138
+ mergedConfigs = deepmerge(targetConfigs, overrideConfigs, { arrayMerge: combineMerge });
139
+ }
140
+ else {
141
+ mergedConfigs = targetConfigs;
142
+ }
143
+ return mergedConfigs.map((targetConfig) => {
144
+ const target = templatesStore.addTarget({ ...targetConfig, type: 'chat' });
103
145
  const targeter = {
104
- selector: target.selector,
146
+ selector: targetConfig.selector,
105
147
  hideTarget: true,
106
148
  component: async () => {
107
149
  const componentImportPromises = [];
108
- componentImportPromises.push(templatesStore.library.import.component.chat[target.component]());
150
+ componentImportPromises.push(templatesStore.library.import.component.chat[targetConfig.component]());
109
151
  await Promise.all(componentImportPromises);
110
152
  return TemplateSelect;
111
153
  },
112
- props: { type: 'chat', templatesStore, targetId },
154
+ props: { target, templatesStore },
113
155
  };
114
156
  // temporary change to allow injecting into body to append target
115
- if (target.selector == 'body') {
157
+ if (targetConfig.selector == 'body') {
116
158
  targeter.hideTarget = false;
117
159
  targeter.inject = {
118
160
  action: 'append',
@@ -127,22 +169,36 @@ export const createChatTargeters = (templateConfig, templatesStore) => {
127
169
  });
128
170
  };
129
171
  export function createAutocompleteTargeters(templateConfig, templatesStore) {
130
- const targets = templateConfig.autocomplete?.targets || [];
131
- return targets.map((target) => {
132
- const targetId = templatesStore.addTarget('autocomplete', target);
172
+ // initial target configs
173
+ const targetConfigs = templateConfig.autocomplete?.targets || [];
174
+ let mergedConfigs;
175
+ if (templatesStore.settings.editMode) {
176
+ const overrideConfigs = (templatesStore.storage.get('overrides.targets.autocomplete') || []);
177
+ mergedConfigs = deepmerge(targetConfigs, overrideConfigs, { arrayMerge: combineMerge });
178
+ }
179
+ else {
180
+ mergedConfigs = targetConfigs;
181
+ }
182
+ // load target override from localstorage OR from the editorStore (would be better);
183
+ return mergedConfigs.map((targetConfig) => {
184
+ const target = templatesStore.addTarget({ ...targetConfig, type: 'autocomplete', selector: targetConfig.selector || targetConfig.inputSelector });
133
185
  const targeter = {
134
- selector: target.selector,
186
+ selector: targetConfig.selector || targetConfig.inputSelector,
135
187
  component: async () => {
136
188
  const componentImportPromises = [];
137
- componentImportPromises.push(templatesStore.library.import.component.autocomplete[target.component]());
189
+ componentImportPromises.push(templatesStore.library.import.component.autocomplete[targetConfig.component]());
138
190
  await Promise.all(componentImportPromises);
139
191
  return TemplateSelect;
140
192
  },
141
- props: { type: 'autocomplete', templatesStore, targetId },
193
+ props: {
194
+ target,
195
+ templatesStore,
196
+ //only set input if selector and inputSelector are different. else bind to orinalElem
197
+ ...(targetConfig.selector && targetConfig.selector !== targetConfig.inputSelector ? { input: targetConfig.inputSelector } : {}),
198
+ },
142
199
  hideTarget: true,
200
+ createControllerBeforeTargeting: templatesStore.settings.editMode,
143
201
  };
144
- if (target.inputSelector)
145
- targeter.props.input = target.inputSelector;
146
202
  return targeter;
147
203
  });
148
204
  }
@@ -152,38 +208,41 @@ export function createRecommendationComponentMapping(templateConfig, templatesSt
152
208
  .filter((key) => ['default', 'email', 'bundle'].includes(key))
153
209
  .reduce((mapping, type) => {
154
210
  const recsType = type;
155
- Object.keys(templateConfig.recommendation[recsType] || {}).forEach((targetName) => {
211
+ Object.keys(templateConfig.recommendation[recsType] || {}).forEach((targetName, index) => {
156
212
  const type = `recommendation/${recsType}`;
157
- const target = templateConfig.recommendation[recsType][targetName];
213
+ const targetConfig = {
214
+ ...templateConfig.recommendation[recsType][targetName],
215
+ index,
216
+ type,
217
+ };
158
218
  const mappedConfig = {
159
219
  component: async () => {
160
220
  const componentImportPromises = [];
161
221
  switch (recsType) {
162
222
  case 'default': {
163
223
  const importLocation = templatesStore.library.import.component.recommendation.default;
164
- componentImportPromises.push(importLocation[target.component]());
224
+ componentImportPromises.push(importLocation[targetConfig.component]());
165
225
  break;
166
226
  }
167
227
  case 'bundle': {
168
228
  const importLocation = templatesStore.library.import.component.recommendation.bundle;
169
- componentImportPromises.push(importLocation[target.component]());
229
+ componentImportPromises.push(importLocation[targetConfig.component]());
170
230
  break;
171
231
  }
172
232
  case 'email': {
173
233
  const importLocation = templatesStore.library.import.component.recommendation.email;
174
- componentImportPromises.push(importLocation[target.component]());
234
+ componentImportPromises.push(importLocation[targetConfig.component]());
175
235
  break;
176
236
  }
177
237
  }
178
238
  await Promise.all(componentImportPromises);
179
239
  return TemplateSelect;
180
240
  },
181
- props: { type, templatesStore },
241
+ props: { templatesStore },
182
242
  onTarget: function (domTarget, elem, injectedElem, controller) {
183
- target.selector = `#${controller.id}`;
184
- const targetId = templatesStore.addTarget(type, target);
243
+ targetConfig.selector = `#${controller.id}`;
185
244
  this.props = this.props || {};
186
- this.props.targetId = targetId;
245
+ this.props.target = templatesStore.addTarget(targetConfig);
187
246
  },
188
247
  };
189
248
  mapping[targetName] = mappedConfig;
@@ -243,7 +302,7 @@ export function createSnapConfig(templateConfig, templatesStore) {
243
302
  config: {
244
303
  id: 'autocomplete',
245
304
  plugins: createPlugins(templateConfig, templatesStore, 'autocomplete'),
246
- selector: templateConfig.autocomplete.targets.map((target) => target.inputSelector || target.selector).join(', '),
305
+ selector: templateConfig.autocomplete.targets.map((target) => target.inputSelector).join(', '),
247
306
  settings: autocompleteControllerSettings,
248
307
  },
249
308
  targeters: createAutocompleteTargeters(templateConfig, templatesStore),
@@ -1,20 +1,21 @@
1
- import { TemplateTarget, type TemplatesStoreConfigSettings, type TemplatesStoreDependencies, type TemplateThemeTypes } from './TemplateStore';
1
+ import { TemplateTarget, type TemplateTypes, type TemplateThemeTypes } from './TemplateStore';
2
2
  export declare const GLOBAL_THEME_NAME = "global";
3
3
  type TargetStoreConfig = {
4
- target: TemplateTarget;
5
- dependencies: TemplatesStoreDependencies;
6
- settings: TemplatesStoreConfigSettings;
4
+ target: TemplateTarget & {
5
+ index: number;
6
+ };
7
7
  };
8
8
  export declare class TargetStore {
9
+ index: number;
10
+ type: TemplateTypes;
9
11
  selector: string;
10
12
  component: string;
11
13
  theme: {
12
14
  location: TemplateThemeTypes;
13
15
  name: string;
14
16
  };
15
- private dependencies;
16
17
  constructor(params: TargetStoreConfig);
17
- setComponent(componentName: string): void;
18
+ setValue(name: string, value: string): void;
18
19
  setTheme(themeName: string, location: TemplateThemeTypes): void;
19
20
  }
20
21
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TargetStore.d.ts","sourceRoot":"","sources":["../../../../../src/Templates/Stores/TargetStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,4BAA4B,EAAE,KAAK,0BAA0B,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE9I,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,KAAK,iBAAiB,GAAG;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,0BAA0B,CAAC;IACzC,QAAQ,EAAE,4BAA4B,CAAC;CACvC,CAAC;AACF,qBAAa,WAAW;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACb,QAAQ,EAAE,kBAAkB,CAAC;QAC7B,IAAI,EAAE,MAAM,CAAC;KACb,CAAC;IACF,OAAO,CAAC,YAAY,CAA6B;gBAErC,MAAM,EAAE,iBAAiB;IAiB9B,YAAY,CAAC,aAAa,EAAE,MAAM;IAKlC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB;CAO/D"}
1
+ {"version":3,"file":"TargetStore.d.ts","sourceRoot":"","sources":["../../../../../src/Templates/Stores/TargetStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE9F,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,KAAK,iBAAiB,GAAG;IACxB,MAAM,EAAE,cAAc,GAAG;QACxB,KAAK,EAAE,MAAM,CAAC;KACd,CAAC;CACF,CAAC;AACF,qBAAa,WAAW;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACb,QAAQ,EAAE,kBAAkB,CAAC;QAC7B,IAAI,EAAE,MAAM,CAAC;KACb,CAAC;gBAEU,MAAM,EAAE,iBAAiB;IAmB9B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAWpC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB;CAM/D"}
@@ -2,11 +2,12 @@ import { observable, makeObservable } from 'mobx';
2
2
  export const GLOBAL_THEME_NAME = 'global';
3
3
  export class TargetStore {
4
4
  constructor(params) {
5
- const { target, dependencies, settings } = params;
6
- this.dependencies = dependencies;
5
+ const { target } = params;
6
+ this.index = target.index;
7
+ this.type = target.type;
7
8
  this.selector = target.selector || '';
8
- this.component = (settings.editMode && this.dependencies.storage.get(`templates.${this.selector}.component`)) || target.component;
9
- this.theme = (settings.editMode && this.dependencies.storage.get(`templates.${this.selector}.theme`)) || {
9
+ this.component = target.component || '';
10
+ this.theme = {
10
11
  location: 'local',
11
12
  name: GLOBAL_THEME_NAME,
12
13
  };
@@ -16,15 +17,20 @@ export class TargetStore {
16
17
  theme: observable,
17
18
  });
18
19
  }
19
- setComponent(componentName) {
20
- this.component = componentName;
21
- this.dependencies.storage.set(['templates', this.selector, 'component'], this.component);
20
+ setValue(name, value) {
21
+ switch (name) {
22
+ case 'selector':
23
+ this.selector = value;
24
+ break;
25
+ case 'component':
26
+ this.component = value;
27
+ break;
28
+ }
22
29
  }
23
30
  setTheme(themeName, location) {
24
31
  this.theme = {
25
32
  location,
26
33
  name: themeName,
27
34
  };
28
- this.dependencies.storage.set(['templates', this.selector, 'theme'], this.theme);
29
35
  }
30
36
  }
@@ -1,35 +1,62 @@
1
- import { AutocompleteStoreConfigSettings, SearchStoreConfigSettings, StorageStore } from '@athoscommerce/snap-store-mobx';
2
- import { TemplatesStore } from '../TemplateStore';
1
+ import { AutocompleteStoreConfigSettings, SearchStoreConfigSettings } from '@athoscommerce/snap-store-mobx';
2
+ import { StorageStore } from '@athoscommerce/snap-toolbox';
3
+ import { TemplatesStore, TemplateTarget } from '../TemplateStore';
3
4
  import { AutocompleteController, SearchController } from '@athoscommerce/snap-controller';
4
5
  import type { AbstractionGroup } from '../../../types';
5
- import { ThemeVariables, ThemeVariablesPartial } from '../../../../components/src';
6
+ import { ThemeVariables, ThemeVariablesPartial, ThemeResponsiveComplete } from '../../../../components/src';
6
7
  import { TargetStore } from '../TargetStore';
7
- import { SnapTemplatesConfig, SnapTemplatesConfigUnlocked } from '../../SnapTemplates';
8
+ import { SnapTemplatesConfig } from '../../SnapTemplates';
8
9
  import { CurrencyCodes, LanguageCodes } from '../LibraryStore';
9
10
  export type EditorTabs = 'templates' | 'configuration';
10
- type EditorState = {
11
+ type EditorStoredState = {
11
12
  hidden: boolean;
12
13
  activeTab: EditorTabs;
13
14
  };
15
+ type EditorState = {
16
+ activeDomSelector: string;
17
+ };
14
18
  type EditorControllerConfigs = {
15
19
  search?: SearchStoreConfigSettings;
16
20
  autocomplete?: AutocompleteStoreConfigSettings;
17
21
  };
22
+ type EditorTargets = {
23
+ search: Partial<TemplateTarget>[];
24
+ autocomplete: Partial<TemplateTarget>[];
25
+ };
18
26
  type EditorInitialThemeConfig = {
19
27
  extends: string;
20
28
  variables: ThemeVariables;
29
+ overrides?: ThemeResponsiveComplete;
21
30
  };
22
31
  type EditorOverridesThemeConfig = {
23
32
  extends?: string;
24
33
  variables?: ThemeVariablesPartial;
34
+ overrides?: ThemeResponsiveComplete;
35
+ };
36
+ type SourceControl = {
37
+ initial?: boolean;
38
+ overrides?: boolean;
39
+ };
40
+ type GenerateTemplatesConfigOptions = {
41
+ config?: boolean | SourceControl;
42
+ theme?: boolean | {
43
+ extends?: boolean | SourceControl;
44
+ variables?: boolean | SourceControl;
45
+ overrides?: boolean | SourceControl;
46
+ };
47
+ search?: boolean;
48
+ autocomplete?: boolean;
49
+ unlocked?: boolean;
25
50
  };
26
51
  export declare class TemplateEditorStore {
27
52
  storage: StorageStore;
53
+ storedState: EditorStoredState;
28
54
  state: EditorState;
29
55
  overrides: {
30
56
  config: SnapTemplatesConfig['config'];
31
57
  controller: EditorControllerConfigs;
32
58
  theme: EditorOverridesThemeConfig;
59
+ targets: EditorTargets;
33
60
  };
34
61
  initial: {
35
62
  config: SnapTemplatesConfig['config'] & {
@@ -38,6 +65,7 @@ export declare class TemplateEditorStore {
38
65
  };
39
66
  controller: EditorControllerConfigs;
40
67
  theme: EditorInitialThemeConfig;
68
+ targets: EditorTargets;
41
69
  };
42
70
  tabs: EditorTabs[];
43
71
  templatesStore: TemplatesStore;
@@ -50,12 +78,30 @@ export declare class TemplateEditorStore {
50
78
  search: AbstractionGroup<SearchController>[];
51
79
  autocomplete: AbstractionGroup<AutocompleteController>[];
52
80
  };
81
+ targets: {
82
+ search?: AbstractionGroup<number>[];
83
+ autocomplete?: AbstractionGroup<number>[];
84
+ };
53
85
  };
54
86
  constructor({ templatesStore }: {
55
87
  templatesStore: TemplatesStore;
56
88
  });
57
89
  switchTabs(tab: EditorTabs): void;
58
90
  toggleHide(hide: boolean): void;
91
+ setOverrides(overrides: {
92
+ config?: SnapTemplatesConfig['config'];
93
+ theme?: EditorOverridesThemeConfig;
94
+ search?: {
95
+ targets?: Partial<TemplateTarget>[];
96
+ settings?: SearchStoreConfigSettings;
97
+ };
98
+ autocomplete?: {
99
+ targets?: Partial<TemplateTarget>[];
100
+ settings?: AutocompleteStoreConfigSettings;
101
+ };
102
+ }): void;
103
+ resetOverrides(): void;
104
+ setActiveDomSelector(selectorId: string | null): void;
59
105
  setConfigOverride(obj: {
60
106
  path: string[];
61
107
  value: unknown;
@@ -70,14 +116,18 @@ export declare class TemplateEditorStore {
70
116
  value?: unknown;
71
117
  controller: ControllerType;
72
118
  }): void;
119
+ setTargetOverride: (obj: {
120
+ path: string[];
121
+ value: string | undefined;
122
+ }) => void;
73
123
  registerController<ControllerType extends SearchController | AutocompleteController>(controller: ControllerType): void;
74
124
  getTargets(): {
75
125
  type: string;
76
- target: string;
77
- template: TargetStore;
126
+ target: TargetStore;
127
+ template: string;
78
128
  selector: string;
79
129
  }[];
80
- generateTemplatesConfig(): SnapTemplatesConfig | SnapTemplatesConfigUnlocked;
130
+ generateTemplatesConfig(options?: GenerateTemplatesConfigOptions): SnapTemplatesConfig;
81
131
  }
82
132
  export {};
83
133
  //# sourceMappingURL=TemplateEditorStore.d.ts.map