@easyling/sanity-connector 0.0.1 → 0.0.2-rc.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 (242) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/package.json +18 -12
  3. package/dist/actions/bulkTranslate.d.ts +0 -7
  4. package/dist/actions/bulkTranslate.d.ts.map +0 -1
  5. package/dist/actions/bulkTranslate.js +0 -543
  6. package/dist/actions/bulkTranslate.js.map +0 -1
  7. package/dist/actions/manageDNTFields.d.ts +0 -12
  8. package/dist/actions/manageDNTFields.d.ts.map +0 -1
  9. package/dist/actions/manageDNTFields.js +0 -100
  10. package/dist/actions/manageDNTFields.js.map +0 -1
  11. package/dist/actions/translateDocument.d.ts +0 -7
  12. package/dist/actions/translateDocument.d.ts.map +0 -1
  13. package/dist/actions/translateDocument.js +0 -256
  14. package/dist/actions/translateDocument.js.map +0 -1
  15. package/dist/components/RadioWithDefault.d.ts +0 -17
  16. package/dist/components/RadioWithDefault.d.ts.map +0 -1
  17. package/dist/components/RadioWithDefault.js +0 -29
  18. package/dist/components/RadioWithDefault.js.map +0 -1
  19. package/dist/components/auth/AuthNavbar.d.ts +0 -18
  20. package/dist/components/auth/AuthNavbar.d.ts.map +0 -1
  21. package/dist/components/auth/AuthNavbar.js +0 -15
  22. package/dist/components/auth/AuthNavbar.js.map +0 -1
  23. package/dist/components/auth/AuthStatus.d.ts +0 -27
  24. package/dist/components/auth/AuthStatus.d.ts.map +0 -1
  25. package/dist/components/auth/AuthStatus.js +0 -82
  26. package/dist/components/auth/AuthStatus.js.map +0 -1
  27. package/dist/components/auth/AuthStatusWrapper.d.ts +0 -15
  28. package/dist/components/auth/AuthStatusWrapper.d.ts.map +0 -1
  29. package/dist/components/auth/AuthStatusWrapper.js +0 -39
  30. package/dist/components/auth/AuthStatusWrapper.js.map +0 -1
  31. package/dist/components/auth/MigrationPrompt.d.ts +0 -20
  32. package/dist/components/auth/MigrationPrompt.d.ts.map +0 -1
  33. package/dist/components/auth/MigrationPrompt.js +0 -16
  34. package/dist/components/auth/MigrationPrompt.js.map +0 -1
  35. package/dist/components/auth/MigrationPromptWrapper.d.ts +0 -14
  36. package/dist/components/auth/MigrationPromptWrapper.d.ts.map +0 -1
  37. package/dist/components/auth/MigrationPromptWrapper.js +0 -16
  38. package/dist/components/auth/MigrationPromptWrapper.js.map +0 -1
  39. package/dist/components/auth/OAuthCallback.d.ts +0 -20
  40. package/dist/components/auth/OAuthCallback.d.ts.map +0 -1
  41. package/dist/components/auth/OAuthCallback.js +0 -12
  42. package/dist/components/auth/OAuthCallback.js.map +0 -1
  43. package/dist/components/auth/index.d.ts +0 -15
  44. package/dist/components/auth/index.d.ts.map +0 -1
  45. package/dist/components/auth/index.js +0 -12
  46. package/dist/components/auth/index.js.map +0 -1
  47. package/dist/components/config/LocaleConfigTool.d.ts +0 -17
  48. package/dist/components/config/LocaleConfigTool.d.ts.map +0 -1
  49. package/dist/components/config/LocaleConfigTool.js +0 -186
  50. package/dist/components/config/LocaleConfigTool.js.map +0 -1
  51. package/dist/components/config/LocaleConfigToolWrapper.d.ts +0 -13
  52. package/dist/components/config/LocaleConfigToolWrapper.d.ts.map +0 -1
  53. package/dist/components/config/LocaleConfigToolWrapper.js +0 -26
  54. package/dist/components/config/LocaleConfigToolWrapper.js.map +0 -1
  55. package/dist/components/config/OAuthConfig.d.ts +0 -26
  56. package/dist/components/config/OAuthConfig.d.ts.map +0 -1
  57. package/dist/components/config/OAuthConfig.js +0 -152
  58. package/dist/components/config/OAuthConfig.js.map +0 -1
  59. package/dist/components/config/OAuthConfigWrapper.d.ts +0 -13
  60. package/dist/components/config/OAuthConfigWrapper.d.ts.map +0 -1
  61. package/dist/components/config/OAuthConfigWrapper.js +0 -41
  62. package/dist/components/config/OAuthConfigWrapper.js.map +0 -1
  63. package/dist/components/config/PasswordInput.d.ts +0 -14
  64. package/dist/components/config/PasswordInput.d.ts.map +0 -1
  65. package/dist/components/config/PasswordInput.js +0 -23
  66. package/dist/components/config/PasswordInput.js.map +0 -1
  67. package/dist/components/config/index.d.ts +0 -9
  68. package/dist/components/config/index.d.ts.map +0 -1
  69. package/dist/components/config/index.js +0 -8
  70. package/dist/components/config/index.js.map +0 -1
  71. package/dist/components/config/localeConfigToolDefinition.d.ts +0 -13
  72. package/dist/components/config/localeConfigToolDefinition.d.ts.map +0 -1
  73. package/dist/components/config/localeConfigToolDefinition.js +0 -19
  74. package/dist/components/config/localeConfigToolDefinition.js.map +0 -1
  75. package/dist/components/config/oauthConfigToolDefinition.d.ts +0 -13
  76. package/dist/components/config/oauthConfigToolDefinition.d.ts.map +0 -1
  77. package/dist/components/config/oauthConfigToolDefinition.js +0 -19
  78. package/dist/components/config/oauthConfigToolDefinition.js.map +0 -1
  79. package/dist/components/dialogs/ConfirmationDialog.d.ts +0 -21
  80. package/dist/components/dialogs/ConfirmationDialog.d.ts.map +0 -1
  81. package/dist/components/dialogs/ConfirmationDialog.js +0 -28
  82. package/dist/components/dialogs/ConfirmationDialog.js.map +0 -1
  83. package/dist/components/dialogs/ErrorDialog.d.ts +0 -21
  84. package/dist/components/dialogs/ErrorDialog.d.ts.map +0 -1
  85. package/dist/components/dialogs/ErrorDialog.js +0 -28
  86. package/dist/components/dialogs/ErrorDialog.js.map +0 -1
  87. package/dist/components/dialogs/LocaleSelectionDialog.d.ts +0 -41
  88. package/dist/components/dialogs/LocaleSelectionDialog.d.ts.map +0 -1
  89. package/dist/components/dialogs/LocaleSelectionDialog.js +0 -117
  90. package/dist/components/dialogs/LocaleSelectionDialog.js.map +0 -1
  91. package/dist/components/dialogs/SuccessDialog.d.ts +0 -19
  92. package/dist/components/dialogs/SuccessDialog.d.ts.map +0 -1
  93. package/dist/components/dialogs/SuccessDialog.js +0 -37
  94. package/dist/components/dialogs/SuccessDialog.js.map +0 -1
  95. package/dist/components/dialogs/index.d.ts +0 -12
  96. package/dist/components/dialogs/index.d.ts.map +0 -1
  97. package/dist/components/dialogs/index.js +0 -8
  98. package/dist/components/dialogs/index.js.map +0 -1
  99. package/dist/components/dnt/DNTFieldBadge.d.ts +0 -16
  100. package/dist/components/dnt/DNTFieldBadge.d.ts.map +0 -1
  101. package/dist/components/dnt/DNTFieldBadge.js +0 -56
  102. package/dist/components/dnt/DNTFieldBadge.js.map +0 -1
  103. package/dist/components/dnt/DNTFieldComponent.d.ts +0 -17
  104. package/dist/components/dnt/DNTFieldComponent.d.ts.map +0 -1
  105. package/dist/components/dnt/DNTFieldComponent.js +0 -21
  106. package/dist/components/dnt/DNTFieldComponent.js.map +0 -1
  107. package/dist/components/dnt/DNTFieldInput.d.ts +0 -14
  108. package/dist/components/dnt/DNTFieldInput.d.ts.map +0 -1
  109. package/dist/components/dnt/DNTFieldInput.js +0 -76
  110. package/dist/components/dnt/DNTFieldInput.js.map +0 -1
  111. package/dist/components/dnt/index.d.ts +0 -7
  112. package/dist/components/dnt/index.d.ts.map +0 -1
  113. package/dist/components/dnt/index.js +0 -7
  114. package/dist/components/dnt/index.js.map +0 -1
  115. package/dist/config/index.d.ts +0 -6
  116. package/dist/config/index.d.ts.map +0 -1
  117. package/dist/config/index.js +0 -6
  118. package/dist/config/index.js.map +0 -1
  119. package/dist/config/pluginConfig.d.ts +0 -163
  120. package/dist/config/pluginConfig.d.ts.map +0 -1
  121. package/dist/config/pluginConfig.js +0 -548
  122. package/dist/config/pluginConfig.js.map +0 -1
  123. package/dist/index.d.ts +0 -12
  124. package/dist/index.d.ts.map +0 -1
  125. package/dist/index.js +0 -12
  126. package/dist/index.js.map +0 -1
  127. package/dist/plugin.d.ts +0 -3
  128. package/dist/plugin.d.ts.map +0 -1
  129. package/dist/plugin.js +0 -137
  130. package/dist/plugin.js.map +0 -1
  131. package/dist/services/authStateManager.d.ts +0 -94
  132. package/dist/services/authStateManager.d.ts.map +0 -1
  133. package/dist/services/authStateManager.js +0 -208
  134. package/dist/services/authStateManager.js.map +0 -1
  135. package/dist/services/contentExtractor.d.ts +0 -95
  136. package/dist/services/contentExtractor.d.ts.map +0 -1
  137. package/dist/services/contentExtractor.js +0 -516
  138. package/dist/services/contentExtractor.js.map +0 -1
  139. package/dist/services/dialogService.d.ts +0 -96
  140. package/dist/services/dialogService.d.ts.map +0 -1
  141. package/dist/services/dialogService.js +0 -244
  142. package/dist/services/dialogService.js.map +0 -1
  143. package/dist/services/dntServiceManager.d.ts +0 -44
  144. package/dist/services/dntServiceManager.d.ts.map +0 -1
  145. package/dist/services/dntServiceManager.js +0 -74
  146. package/dist/services/dntServiceManager.js.map +0 -1
  147. package/dist/services/dntStorageAdapter.d.ts +0 -73
  148. package/dist/services/dntStorageAdapter.d.ts.map +0 -1
  149. package/dist/services/dntStorageAdapter.js +0 -192
  150. package/dist/services/dntStorageAdapter.js.map +0 -1
  151. package/dist/services/documentCreationService.d.ts +0 -139
  152. package/dist/services/documentCreationService.d.ts.map +0 -1
  153. package/dist/services/documentCreationService.js +0 -938
  154. package/dist/services/documentCreationService.js.map +0 -1
  155. package/dist/services/localeService.d.ts +0 -160
  156. package/dist/services/localeService.d.ts.map +0 -1
  157. package/dist/services/localeService.js +0 -300
  158. package/dist/services/localeService.js.map +0 -1
  159. package/dist/services/localeStorageAdapter.d.ts +0 -42
  160. package/dist/services/localeStorageAdapter.d.ts.map +0 -1
  161. package/dist/services/localeStorageAdapter.js +0 -107
  162. package/dist/services/localeStorageAdapter.js.map +0 -1
  163. package/dist/services/oauthConfigStorage.d.ts +0 -46
  164. package/dist/services/oauthConfigStorage.d.ts.map +0 -1
  165. package/dist/services/oauthConfigStorage.js +0 -122
  166. package/dist/services/oauthConfigStorage.js.map +0 -1
  167. package/dist/services/oauthService.d.ts +0 -48
  168. package/dist/services/oauthService.d.ts.map +0 -1
  169. package/dist/services/oauthService.js +0 -71
  170. package/dist/services/oauthService.js.map +0 -1
  171. package/dist/services/oauthServiceManager.d.ts +0 -189
  172. package/dist/services/oauthServiceManager.d.ts.map +0 -1
  173. package/dist/services/oauthServiceManager.js +0 -380
  174. package/dist/services/oauthServiceManager.js.map +0 -1
  175. package/dist/services/tokenStorage.d.ts +0 -54
  176. package/dist/services/tokenStorage.d.ts.map +0 -1
  177. package/dist/services/tokenStorage.js +0 -140
  178. package/dist/services/tokenStorage.js.map +0 -1
  179. package/dist/services/translationService.d.ts +0 -374
  180. package/dist/services/translationService.d.ts.map +0 -1
  181. package/dist/services/translationService.js +0 -687
  182. package/dist/services/translationService.js.map +0 -1
  183. package/dist/services/unifiedConfigStorage.d.ts +0 -124
  184. package/dist/services/unifiedConfigStorage.d.ts.map +0 -1
  185. package/dist/services/unifiedConfigStorage.js +0 -304
  186. package/dist/services/unifiedConfigStorage.js.map +0 -1
  187. package/dist/test-utils.d.ts +0 -9
  188. package/dist/test-utils.d.ts.map +0 -1
  189. package/dist/test-utils.js +0 -13
  190. package/dist/test-utils.js.map +0 -1
  191. package/dist/types/dialog.d.ts +0 -107
  192. package/dist/types/dialog.d.ts.map +0 -1
  193. package/dist/types/dialog.js +0 -6
  194. package/dist/types/dialog.js.map +0 -1
  195. package/dist/types/dnt.d.ts +0 -84
  196. package/dist/types/dnt.d.ts.map +0 -1
  197. package/dist/types/dnt.js +0 -5
  198. package/dist/types/dnt.js.map +0 -1
  199. package/dist/types/index.d.ts +0 -12
  200. package/dist/types/index.d.ts.map +0 -1
  201. package/dist/types/index.js +0 -6
  202. package/dist/types/index.js.map +0 -1
  203. package/dist/types/locale.d.ts +0 -116
  204. package/dist/types/locale.d.ts.map +0 -1
  205. package/dist/types/locale.js +0 -189
  206. package/dist/types/locale.js.map +0 -1
  207. package/dist/types/oauth.d.ts +0 -90
  208. package/dist/types/oauth.d.ts.map +0 -1
  209. package/dist/types/oauth.js +0 -62
  210. package/dist/types/oauth.js.map +0 -1
  211. package/dist/types/pluginConfig.d.ts +0 -45
  212. package/dist/types/pluginConfig.d.ts.map +0 -1
  213. package/dist/types/pluginConfig.js +0 -6
  214. package/dist/types/pluginConfig.js.map +0 -1
  215. package/dist/types/translation.d.ts +0 -122
  216. package/dist/types/translation.d.ts.map +0 -1
  217. package/dist/types/translation.js +0 -6
  218. package/dist/types/translation.js.map +0 -1
  219. package/dist/utils/htmlFormatter.d.ts +0 -66
  220. package/dist/utils/htmlFormatter.d.ts.map +0 -1
  221. package/dist/utils/htmlFormatter.js +0 -191
  222. package/dist/utils/htmlFormatter.js.map +0 -1
  223. package/dist/utils/index.d.ts +0 -15
  224. package/dist/utils/index.d.ts.map +0 -1
  225. package/dist/utils/index.js +0 -16
  226. package/dist/utils/index.js.map +0 -1
  227. package/dist/utils/logger.d.ts +0 -105
  228. package/dist/utils/logger.d.ts.map +0 -1
  229. package/dist/utils/logger.js +0 -229
  230. package/dist/utils/logger.js.map +0 -1
  231. package/dist/utils/oauthErrorFeedback.d.ts +0 -76
  232. package/dist/utils/oauthErrorFeedback.d.ts.map +0 -1
  233. package/dist/utils/oauthErrorFeedback.js +0 -134
  234. package/dist/utils/oauthErrorFeedback.js.map +0 -1
  235. package/dist/utils/oauthLogger.d.ts +0 -176
  236. package/dist/utils/oauthLogger.d.ts.map +0 -1
  237. package/dist/utils/oauthLogger.js +0 -282
  238. package/dist/utils/oauthLogger.js.map +0 -1
  239. package/dist/utils/validator.d.ts +0 -67
  240. package/dist/utils/validator.d.ts.map +0 -1
  241. package/dist/utils/validator.js +0 -390
  242. package/dist/utils/validator.js.map +0 -1
@@ -1,516 +0,0 @@
1
- import { getDNTStorage } from './dntServiceManager';
2
- export class ContentExtractor {
3
- /**
4
- * Infer the Sanity field type from a value
5
- *
6
- * @param value - The field value to inspect
7
- * @returns The inferred Sanity type string
8
- */
9
- inferSanityType(value) {
10
- if (value === null || value === undefined) {
11
- return 'undefined';
12
- }
13
- // Check for Sanity-specific object types
14
- if (typeof value === 'object' && !Array.isArray(value)) {
15
- const obj = value;
16
- // Sanity objects have a _type field
17
- if (obj._type) {
18
- return obj._type;
19
- }
20
- }
21
- // Check primitive types
22
- if (typeof value === 'string') {
23
- return 'string';
24
- }
25
- if (typeof value === 'number') {
26
- return 'number';
27
- }
28
- if (typeof value === 'boolean') {
29
- return 'boolean';
30
- }
31
- if (Array.isArray(value)) {
32
- return 'array';
33
- }
34
- if (typeof value === 'object') {
35
- return 'object';
36
- }
37
- return 'unknown';
38
- }
39
- /**
40
- * Extract content from a single Sanity document and convert to HTML
41
- */
42
- async extractDocumentContent(document) {
43
- if (!document || !document._id) {
44
- throw new Error('Invalid document provided');
45
- }
46
- const htmlContent = this.convertToHtml(document);
47
- return htmlContent;
48
- }
49
- /**
50
- * Convert Sanity document content to HTML format
51
- */
52
- convertToHtml(content) {
53
- if (!content) {
54
- return '';
55
- }
56
- let html = '';
57
- // Handle different field types
58
- for (const [key, value] of Object.entries(content)) {
59
- // Skip system fields
60
- if (key.startsWith('_')) {
61
- continue;
62
- }
63
- if (value) {
64
- html += this.processField(key, value);
65
- }
66
- }
67
- return html.trim();
68
- }
69
- /**
70
- * Extract structured content with separated body, title, slug, and fields
71
- * Also applies DNT preferences if available
72
- */
73
- async extractStructuredContent(document) {
74
- if (!document || !document._id) {
75
- throw new Error('Invalid document provided');
76
- }
77
- const title = this.extractTitle(document);
78
- const slug = this.extractSlug(document);
79
- const { bodyContent, fields } = this.separateContentAndFields(document);
80
- // Apply DNT preferences from storage based on document type
81
- const documentType = document._type || 'document';
82
- const enhancedFields = await this.applyDNTPreferences(documentType, fields);
83
- return {
84
- documentId: document._id,
85
- title,
86
- htmlContent: bodyContent,
87
- slug,
88
- fields: enhancedFields
89
- };
90
- }
91
- /**
92
- * Apply DNT preferences to extracted fields based on document type
93
- * Now uses document-type-based configuration that applies to all documents of the same type
94
- */
95
- async applyDNTPreferences(documentType, fields) {
96
- try {
97
- // Get DNT storage instance
98
- const dntStorage = getDNTStorage();
99
- // Get DNT field configuration for this document type
100
- const dntFields = await dntStorage.getFieldsForType(documentType);
101
- if (!dntFields || Object.keys(dntFields).length === 0) {
102
- // No DNT configuration for this document type, return fields as-is
103
- return fields;
104
- }
105
- // Apply DNT preferences to fields (fields already have type information from extraction)
106
- const enhancedFields = {};
107
- for (const [fieldPath, fieldValue] of Object.entries(fields)) {
108
- const isDNT = dntFields[fieldPath] || false;
109
- // Fields should already be in TranslatableField format with type set
110
- if (fieldValue && typeof fieldValue === 'object' && 'value' in fieldValue) {
111
- const typedField = fieldValue;
112
- enhancedFields[fieldPath] = {
113
- ...typedField,
114
- dnt: isDNT
115
- // type is already set from separateContentAndFields()
116
- };
117
- }
118
- else {
119
- // Fallback: if for some reason a field isn't wrapped yet, wrap it now
120
- enhancedFields[fieldPath] = {
121
- value: fieldValue,
122
- dnt: isDNT,
123
- type: this.inferSanityType(fieldValue)
124
- };
125
- }
126
- }
127
- return enhancedFields;
128
- }
129
- catch (error) {
130
- console.warn(`Failed to apply DNT preferences for document type ${documentType}:`, error);
131
- // Return original fields if preferences can't be loaded
132
- return fields;
133
- }
134
- }
135
- /**
136
- * Extract content from multiple documents for bulk operations
137
- */
138
- async extractBulkContent(documents) {
139
- const results = [];
140
- for (const document of documents) {
141
- try {
142
- const htmlContent = await this.extractDocumentContent(document);
143
- const title = this.extractTitle(document);
144
- results.push({
145
- documentId: document._id,
146
- title,
147
- htmlContent
148
- });
149
- }
150
- catch (error) {
151
- console.warn(`Failed to extract content from document ${document._id}:`, error);
152
- // Continue processing other documents
153
- }
154
- }
155
- return results;
156
- }
157
- /**
158
- * Extract structured content from multiple documents
159
- */
160
- async extractBulkStructuredContent(documents) {
161
- const results = [];
162
- for (const document of documents) {
163
- try {
164
- const structuredContent = await this.extractStructuredContent(document);
165
- results.push(structuredContent);
166
- }
167
- catch (error) {
168
- console.warn(`Failed to extract structured content from document ${document?._id || 'unknown'}:`, error);
169
- // Continue processing other documents
170
- }
171
- }
172
- return results;
173
- }
174
- /**
175
- * Process individual fields based on their type
176
- */
177
- processField(fieldName, fieldValue) {
178
- if (fieldValue === null || fieldValue === undefined) {
179
- return '';
180
- }
181
- // Handle arrays (like portable text blocks)
182
- if (Array.isArray(fieldValue)) {
183
- return this.processArray(fieldName, fieldValue);
184
- }
185
- // Handle objects
186
- if (typeof fieldValue === 'object') {
187
- return this.processObject(fieldName, fieldValue);
188
- }
189
- // Handle primitive values
190
- if (typeof fieldValue === 'string' || typeof fieldValue === 'number') {
191
- return this.wrapInHtml(fieldName, String(fieldValue));
192
- }
193
- return '';
194
- }
195
- /**
196
- * Process array fields (like portable text blocks)
197
- */
198
- processArray(fieldName, array) {
199
- let html = '';
200
- // Check if this is a list structure
201
- const isListArray = array.every(item => item && typeof item === 'object' && item._type === 'block' &&
202
- (item.listItem === 'bullet' || item.listItem === 'number'));
203
- if (isListArray) {
204
- // Handle as a list
205
- const listType = array[0]?.listItem === 'number' ? 'ol' : 'ul';
206
- html += `<${listType}>`;
207
- for (const item of array) {
208
- if (item._type === 'block') {
209
- const content = this.processPortableTextBlockContent(item);
210
- html += `<li>${content}</li>`;
211
- }
212
- }
213
- html += `</${listType}>`;
214
- }
215
- else {
216
- // Process as regular array
217
- for (const item of array) {
218
- if (item && typeof item === 'object') {
219
- // Handle portable text blocks
220
- if (item._type === 'block') {
221
- html += this.processPortableTextBlock(item);
222
- }
223
- else {
224
- // Handle other array items
225
- html += this.processObject(fieldName, item);
226
- }
227
- }
228
- else {
229
- // Handle primitive array items
230
- html += this.wrapInHtml('item', String(item));
231
- }
232
- }
233
- }
234
- return html;
235
- }
236
- /**
237
- * Process portable text blocks and convert to HTML
238
- */
239
- processPortableTextBlock(block) {
240
- const content = this.processPortableTextBlockContent(block);
241
- // Wrap in appropriate HTML tag based on block style
242
- const style = block.style || 'normal';
243
- switch (style) {
244
- case 'h1':
245
- return `<h1>${content}</h1>`;
246
- case 'h2':
247
- return `<h2>${content}</h2>`;
248
- case 'h3':
249
- return `<h3>${content}</h3>`;
250
- case 'h4':
251
- return `<h4>${content}</h4>`;
252
- case 'h5':
253
- return `<h5>${content}</h5>`;
254
- case 'h6':
255
- return `<h6>${content}</h6>`;
256
- case 'blockquote':
257
- return `<blockquote>${content}</blockquote>`;
258
- default:
259
- return `<p>${content}</p>`;
260
- }
261
- }
262
- /**
263
- * Extract content from portable text block children
264
- */
265
- processPortableTextBlockContent(block) {
266
- if (!block.children || !Array.isArray(block.children)) {
267
- return '';
268
- }
269
- let content = '';
270
- // Extract text from children
271
- for (const child of block.children) {
272
- if (child._type === 'span' && child.text) {
273
- let text = child.text;
274
- // Apply formatting marks
275
- if (child.marks && Array.isArray(child.marks)) {
276
- for (const mark of child.marks) {
277
- if (typeof mark === 'string') {
278
- // Simple marks
279
- switch (mark) {
280
- case 'strong':
281
- text = `<strong>${text}</strong>`;
282
- break;
283
- case 'em':
284
- text = `<em>${text}</em>`;
285
- break;
286
- case 'underline':
287
- text = `<u>${text}</u>`;
288
- break;
289
- case 'code':
290
- text = `<code>${text}</code>`;
291
- break;
292
- }
293
- }
294
- else if (typeof mark === 'object' && mark._type === 'link') {
295
- // Link annotations
296
- const href = mark.href || '#';
297
- text = `<a href="${this.escapeHtml(href)}">${text}</a>`;
298
- }
299
- }
300
- }
301
- content += text;
302
- }
303
- }
304
- return content;
305
- }
306
- /**
307
- * Process object fields
308
- */
309
- processObject(fieldName, obj) {
310
- let html = '';
311
- // Handle references
312
- if (obj._type === 'reference' && obj._ref) {
313
- return `<span data-reference="${obj._ref}">Referenced content</span>`;
314
- }
315
- // Handle images
316
- if (obj._type === 'image') {
317
- const alt = obj.alt || 'Image';
318
- const caption = obj.caption || '';
319
- return `<figure><img alt="${this.escapeHtml(alt)}" />${caption ? `<figcaption>${this.escapeHtml(caption)}</figcaption>` : ''}</figure>`;
320
- }
321
- // Handle files
322
- if (obj._type === 'file') {
323
- const title = obj.title || 'File';
324
- return `<a href="#" data-file-ref="${obj.asset?._ref || ''}">${this.escapeHtml(title)}</a>`;
325
- }
326
- // Handle URLs
327
- if (obj._type === 'url') {
328
- const href = obj.href || '#';
329
- const text = obj.text || href;
330
- return `<a href="${this.escapeHtml(href)}">${this.escapeHtml(text)}</a>`;
331
- }
332
- // Handle geopoints
333
- if (obj._type === 'geopoint') {
334
- const lat = obj.lat || 0;
335
- const lng = obj.lng || 0;
336
- const alt = obj.alt || '';
337
- return `<span data-geopoint data-lat="${lat}" data-lng="${lng}" ${alt ? `data-alt="${alt}"` : ''}>Location: ${lat}, ${lng}</span>`;
338
- }
339
- // Handle slugs
340
- if (obj._type === 'slug') {
341
- const current = obj.current || '';
342
- return `<span data-slug="${this.escapeHtml(current)}">${this.escapeHtml(current)}</span>`;
343
- }
344
- // Handle dates
345
- if (obj._type === 'date' || obj._type === 'datetime') {
346
- const dateValue = obj.value || obj;
347
- if (typeof dateValue === 'string') {
348
- const date = new Date(dateValue);
349
- return `<time datetime="${dateValue}">${date.toLocaleDateString()}</time>`;
350
- }
351
- }
352
- // Handle color objects
353
- if (obj._type === 'color') {
354
- const hex = obj.hex || '#000000';
355
- const alpha = obj.alpha !== undefined ? obj.alpha : 1;
356
- return `<span data-color="${hex}" data-alpha="${alpha}" style="color: ${hex}">Color: ${hex}</span>`;
357
- }
358
- // Handle spans with annotations (links, etc.)
359
- if (obj._type === 'span' && obj.marks && Array.isArray(obj.marks)) {
360
- let text = obj.text || '';
361
- // Apply formatting marks
362
- for (const mark of obj.marks) {
363
- if (typeof mark === 'string') {
364
- // Simple marks like 'strong', 'em', etc.
365
- switch (mark) {
366
- case 'strong':
367
- text = `<strong>${text}</strong>`;
368
- break;
369
- case 'em':
370
- text = `<em>${text}</em>`;
371
- break;
372
- case 'underline':
373
- text = `<u>${text}</u>`;
374
- break;
375
- case 'code':
376
- text = `<code>${text}</code>`;
377
- break;
378
- }
379
- }
380
- else if (typeof mark === 'object' && mark._type === 'link') {
381
- // Link annotations
382
- const href = mark.href || '#';
383
- text = `<a href="${this.escapeHtml(href)}">${text}</a>`;
384
- }
385
- }
386
- return text;
387
- }
388
- // Handle other objects recursively
389
- for (const [key, value] of Object.entries(obj)) {
390
- if (!key.startsWith('_') && value) {
391
- html += this.processField(key, value);
392
- }
393
- }
394
- return html;
395
- }
396
- /**
397
- * Wrap content in HTML with field name as class
398
- */
399
- wrapInHtml(fieldName, content) {
400
- const safeFieldName = fieldName.replace(/[^a-zA-Z0-9-_]/g, '');
401
- return `<div class="field-${safeFieldName}">${this.escapeHtml(content)}</div>`;
402
- }
403
- /**
404
- * Separate main content from metadata fields
405
- * All fields are immediately wrapped in TranslatableField format with type information
406
- */
407
- separateContentAndFields(document) {
408
- const contentFields = ['body', 'content', 'text', 'description', 'excerpt'];
409
- const metadataFields = ['title', 'slug', '_id', '_type', '_createdAt', '_updatedAt', '_rev'];
410
- let bodyContent = '';
411
- const fields = {};
412
- for (const [key, value] of Object.entries(document)) {
413
- // Skip system fields
414
- if (key.startsWith('_')) {
415
- continue;
416
- }
417
- // Skip title and slug as they're handled separately
418
- if (key === 'title' || key === 'slug') {
419
- continue;
420
- }
421
- if (value) {
422
- // Check if this is a main content field
423
- if (contentFields.includes(key)) {
424
- bodyContent += this.processField(key, value);
425
- }
426
- else {
427
- // Add to fields as TranslatableField with type information
428
- let extractedValue;
429
- let fieldType;
430
- if (typeof value === 'object' && value !== null && '_type' in value && value._type === 'slug') {
431
- extractedValue = value.current || '';
432
- fieldType = 'slug';
433
- }
434
- else if (typeof value === 'object' && value !== null && '_type' in value && (value._type === 'date' || value._type === 'datetime')) {
435
- extractedValue = value.value || value;
436
- fieldType = value._type;
437
- }
438
- else if (Array.isArray(value) && value.every(item => item && typeof item === 'object' && item._type === 'block')) {
439
- // If it's portable text but not in a content field, treat as metadata
440
- extractedValue = this.processArray(key, value);
441
- fieldType = 'block';
442
- }
443
- else {
444
- extractedValue = value;
445
- fieldType = this.inferSanityType(value);
446
- }
447
- // Wrap in TranslatableField format with type
448
- fields[key] = {
449
- value: extractedValue,
450
- dnt: false, // Default to translatable; will be overridden by applyDNTPreferences if needed
451
- type: fieldType
452
- };
453
- }
454
- }
455
- }
456
- // If no main content found, fall back to processing all non-metadata fields
457
- if (!bodyContent.trim()) {
458
- for (const [key, value] of Object.entries(document)) {
459
- if (!key.startsWith('_') && !metadataFields.includes(key) && value) {
460
- bodyContent += this.processField(key, value);
461
- }
462
- }
463
- }
464
- return { bodyContent: bodyContent.trim(), fields };
465
- }
466
- /**
467
- * Extract slug from document
468
- */
469
- extractSlug(document) {
470
- // Check for slug field
471
- if (document.slug) {
472
- if (typeof document.slug === 'object' && document.slug !== null && '_type' in document.slug && document.slug._type === 'slug') {
473
- return document.slug.current || '';
474
- }
475
- if (typeof document.slug === 'string') {
476
- return document.slug;
477
- }
478
- }
479
- // Check for other slug-like fields
480
- const slugFields = ['slug', 'path', 'url', 'permalink'];
481
- for (const field of slugFields) {
482
- if (document[field]) {
483
- if (typeof document[field] === 'object' && document[field] !== null && '_type' in document[field] && document[field]._type === 'slug') {
484
- return document[field].current || '';
485
- }
486
- if (typeof document[field] === 'string') {
487
- return document[field];
488
- }
489
- }
490
- }
491
- return '';
492
- }
493
- /**
494
- * Extract title from document
495
- */
496
- extractTitle(document) {
497
- // Try common title fields
498
- const titleFields = ['title', 'name', 'heading', 'label'];
499
- for (const field of titleFields) {
500
- if (document[field] && typeof document[field] === 'string') {
501
- return document[field];
502
- }
503
- }
504
- // Fallback to document type and ID
505
- return `${document._type} (${document._id})`;
506
- }
507
- /**
508
- * Escape HTML special characters
509
- */
510
- escapeHtml(text) {
511
- const div = document.createElement('div');
512
- div.textContent = text;
513
- return div.innerHTML;
514
- }
515
- }
516
- //# sourceMappingURL=contentExtractor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contentExtractor.js","sourceRoot":"","sources":["../../src/services/contentExtractor.ts"],"names":[],"mappings":"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"}
@@ -1,96 +0,0 @@
1
- /**
2
- * Dialog management service with React state management
3
- * Requirements: 3.1, 3.2, 3.5, 3.6, 3.7
4
- *
5
- * Centralized dialog management with queue support for multiple simultaneous dialogs
6
- */
7
- import React, { ReactNode } from 'react';
8
- import type { DialogManager, ConfirmationDialogOptions, SuccessDialogOptions, ErrorDialogOptions, LocaleSelectionDialogOptions, LocaleSelectionResult } from '../types/dialog';
9
- /**
10
- * Dialog types for queue management
11
- */
12
- type DialogType = 'confirmation' | 'success' | 'error' | 'localeSelection';
13
- /**
14
- * Dialog options union type
15
- */
16
- type DialogOptions = ConfirmationDialogOptions | SuccessDialogOptions | ErrorDialogOptions | LocaleSelectionDialogOptions;
17
- /**
18
- * Dialog queue item structure
19
- */
20
- interface DialogQueueItem {
21
- id: string;
22
- type: DialogType;
23
- options: DialogOptions;
24
- resolve?: (value: unknown) => void;
25
- reject?: (error: Error) => void;
26
- }
27
- /**
28
- * Dialog context state
29
- */
30
- interface DialogContextState {
31
- currentDialog: DialogQueueItem | null;
32
- dialogQueue: DialogQueueItem[];
33
- showConfirmation: (options: ConfirmationDialogOptions) => Promise<boolean>;
34
- showLocaleSelection: (options: LocaleSelectionDialogOptions) => Promise<LocaleSelectionResult>;
35
- showSuccess: (options: SuccessDialogOptions) => void;
36
- showError: (options: ErrorDialogOptions) => Promise<boolean>;
37
- closeAll: () => void;
38
- }
39
- /**
40
- * Hook to access dialog service from React components
41
- */
42
- export declare const useDialogService: () => DialogContextState;
43
- /**
44
- * Dialog Provider Props
45
- */
46
- interface DialogProviderProps {
47
- children: ReactNode;
48
- }
49
- /**
50
- * Dialog Provider Component
51
- * Manages dialog state and queue for the entire application
52
- */
53
- export declare const DialogProvider: React.FC<DialogProviderProps>;
54
- /**
55
- * Singleton DialogService class for non-React contexts
56
- * Note: This requires the DialogProvider to be mounted in the React tree
57
- */
58
- export declare class DialogService implements DialogManager {
59
- private static instance;
60
- private contextRef;
61
- private constructor();
62
- /**
63
- * Get singleton instance
64
- */
65
- static getInstance(): DialogService;
66
- /**
67
- * Set the context reference (called by DialogProvider)
68
- */
69
- setContext(context: DialogContextState): void;
70
- /**
71
- * Show a confirmation dialog
72
- */
73
- showConfirmation(options: ConfirmationDialogOptions): Promise<boolean>;
74
- /**
75
- * Show a locale selection dialog
76
- */
77
- showLocaleSelection(options: LocaleSelectionDialogOptions): Promise<LocaleSelectionResult>;
78
- /**
79
- * Show a success notification
80
- */
81
- showSuccess(options: SuccessDialogOptions): void;
82
- /**
83
- * Show an error dialog
84
- */
85
- showError(options: ErrorDialogOptions): Promise<boolean>;
86
- /**
87
- * Close all open dialogs
88
- */
89
- closeAll(): void;
90
- }
91
- /**
92
- * Export singleton instance for convenience
93
- */
94
- export declare const dialogService: DialogService;
95
- export {};
96
- //# sourceMappingURL=dialogService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialogService.d.ts","sourceRoot":"","sources":["../../src/services/dialogService.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAAoD,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3F,OAAO,KAAK,EACV,aAAa,EACb,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAMzB;;GAEG;AACH,KAAK,UAAU,GAAG,cAAc,GAAG,SAAS,GAAG,OAAO,GAAG,iBAAiB,CAAC;AAE3E;;GAEG;AACH,KAAK,aAAa,GACd,yBAAyB,GACzB,oBAAoB,GACpB,kBAAkB,GAClB,4BAA4B,CAAC;AAEjC;;GAEG;AACH,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,UAAU,kBAAkB;IAC1B,aAAa,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,gBAAgB,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,mBAAmB,EAAE,CAAC,OAAO,EAAE,4BAA4B,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/F,WAAW,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACrD,SAAS,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAOD;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAO,kBAMnC,CAAC;AAEF;;GAEG;AACH,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA6NxD,CAAC;AAEF;;;GAGG;AACH,qBAAa,aAAc,YAAW,aAAa;IACjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,UAAU,CAAmC;IAErD,OAAO;IAEP;;OAEG;WACW,WAAW,IAAI,aAAa;IAO1C;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIpD;;OAEG;IACU,gBAAgB,CAC3B,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,OAAO,CAAC;IAOnB;;OAEG;IACU,mBAAmB,CAC9B,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,qBAAqB,CAAC;IAOjC;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAOvD;;OAEG;IACU,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAOrE;;OAEG;IACI,QAAQ,IAAI,IAAI;CAMxB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,eAA8B,CAAC"}