@adminforth/bulk-ai-flow 1.15.8 → 1.15.9

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.
package/build.log CHANGED
@@ -13,5 +13,5 @@ custom/package-lock.json
13
13
  custom/package.json
14
14
  custom/tsconfig.json
15
15
 
16
- sent 81,020 bytes received 172 bytes 162,384.00 bytes/sec
17
- total size is 80,379 speedup is 0.99
16
+ sent 81,049 bytes received 172 bytes 162,442.00 bytes/sec
17
+ total size is 80,408 speedup is 0.99
@@ -24,7 +24,7 @@
24
24
  <img
25
25
  v-if="isValidUrl(image)"
26
26
  :src="image"
27
- class="w-20 h-20 object-cover rounded cursor-pointer border hover:border-blue-500 transition"
27
+ class="w-20 h-20 object-cover rounded cursor-pointer border hover:border-blue-500 transition my-2"
28
28
  @click="zoomImage(image)"
29
29
  />
30
30
  <div v-else class="w-20 h-20">
@@ -124,8 +124,8 @@
124
124
 
125
125
  <div v-if="isAiResponseReceivedImage[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])]" @mouseenter="(() => { hovers[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n] = true})" @mouseleave="(() => { hovers[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n] = false})">
126
126
  <div v-if="isInColumnImage(n)">
127
- <div class="mt-2 flex items-center justify-start gap-2">
128
- <div v-if="isValidUrl(selected[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n])" class="flex flex-col items-center">
127
+ <div class="mt-2 mb-2 flex items-center justify-start gap-2">
128
+ <div v-if="isValidUrl(selected[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n])" class="flex flex-col items-center relative">
129
129
  <img
130
130
  :src="selected[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n]"
131
131
  class="w-20 h-20 object-cover rounded cursor-pointer border hover:border-blue-500 transition"
@@ -133,7 +133,7 @@
133
133
  />
134
134
  <p
135
135
  v-if="isImageHasPreviewUrl[n]"
136
- class="mt-2 text-sm hover:text-blue-500 hover:underline hover:cursor-pointer flex items-center gap-1"
136
+ class="absolute mt-20 text-sm hover:text-blue-500 hover:underline hover:cursor-pointer flex items-center gap-1"
137
137
  :class="{ 'opacity-0': !hovers[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n] }"
138
138
  @click="() => {openImageCompare[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n] = true}"
139
139
  >
@@ -24,7 +24,7 @@
24
24
  <img
25
25
  v-if="isValidUrl(image)"
26
26
  :src="image"
27
- class="w-20 h-20 object-cover rounded cursor-pointer border hover:border-blue-500 transition"
27
+ class="w-20 h-20 object-cover rounded cursor-pointer border hover:border-blue-500 transition my-2"
28
28
  @click="zoomImage(image)"
29
29
  />
30
30
  <div v-else class="w-20 h-20">
@@ -124,8 +124,8 @@
124
124
 
125
125
  <div v-if="isAiResponseReceivedImage[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])]" @mouseenter="(() => { hovers[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n] = true})" @mouseleave="(() => { hovers[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n] = false})">
126
126
  <div v-if="isInColumnImage(n)">
127
- <div class="mt-2 flex items-center justify-start gap-2">
128
- <div v-if="isValidUrl(selected[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n])" class="flex flex-col items-center">
127
+ <div class="mt-2 mb-2 flex items-center justify-start gap-2">
128
+ <div v-if="isValidUrl(selected[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n])" class="flex flex-col items-center relative">
129
129
  <img
130
130
  :src="selected[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n]"
131
131
  class="w-20 h-20 object-cover rounded cursor-pointer border hover:border-blue-500 transition"
@@ -133,7 +133,7 @@
133
133
  />
134
134
  <p
135
135
  v-if="isImageHasPreviewUrl[n]"
136
- class="mt-2 text-sm hover:text-blue-500 hover:underline hover:cursor-pointer flex items-center gap-1"
136
+ class="absolute mt-20 text-sm hover:text-blue-500 hover:underline hover:cursor-pointer flex items-center gap-1"
137
137
  :class="{ 'opacity-0': !hovers[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n] }"
138
138
  @click="() => {openImageCompare[tableColumnsIndexes.findIndex(el => el[primaryKey] === item[primaryKey])][n] = true}"
139
139
  >
package/dist/index.js CHANGED
@@ -413,6 +413,15 @@ export default class BulkAiFlowPlugin extends AdminForthPlugin {
413
413
  for (const [key, value] of Object.entries(this.options.generateImages)) {
414
414
  const plugin = adminforth.activatedPlugins.find(p => p.resourceConfig.resourceId === this.resourceConfig.resourceId &&
415
415
  p.pluginOptions.pathColumnName === key);
416
+ if (!plugin) {
417
+ throw new Error(`Plugin for attachment field '${key}' not found in resource '${this.resourceConfig.resourceId}', please check if Upload Plugin is installed on the field ${key}`);
418
+ }
419
+ if (!plugin.pluginOptions.storageAdapter.objectCanBeAccesedPublicly()) {
420
+ throw new Error(`Upload Plugin for attachment field '${key}' in resource '${this.resourceConfig.resourceId}'
421
+ uses adapter which is not configured to store objects in public way, so it will produce only signed private URLs which can not be used in HTML text of blog posts.
422
+ Please configure adapter in such way that it will store objects publicly (e.g. for S3 use 'public-read' ACL).
423
+ `);
424
+ }
416
425
  outputImagesPluginInstanceIds[key] = plugin.pluginInstanceId;
417
426
  }
418
427
  }
package/index.ts CHANGED
@@ -401,6 +401,15 @@ export default class BulkAiFlowPlugin extends AdminForthPlugin {
401
401
  p.resourceConfig!.resourceId === this.resourceConfig.resourceId &&
402
402
  p.pluginOptions.pathColumnName === key
403
403
  );
404
+ if (!plugin) {
405
+ throw new Error(`Plugin for attachment field '${key}' not found in resource '${this.resourceConfig.resourceId}', please check if Upload Plugin is installed on the field ${key}`);
406
+ }
407
+ if (!plugin.pluginOptions.storageAdapter.objectCanBeAccesedPublicly()) {
408
+ throw new Error(`Upload Plugin for attachment field '${key}' in resource '${this.resourceConfig.resourceId}'
409
+ uses adapter which is not configured to store objects in public way, so it will produce only signed private URLs which can not be used in HTML text of blog posts.
410
+ Please configure adapter in such way that it will store objects publicly (e.g. for S3 use 'public-read' ACL).
411
+ `);
412
+ }
404
413
  outputImagesPluginInstanceIds[key] = plugin.pluginInstanceId;
405
414
  }
406
415
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adminforth/bulk-ai-flow",
3
- "version": "1.15.8",
3
+ "version": "1.15.9",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },