datastake-daf 0.6.472 → 0.6.474

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.
@@ -13078,21 +13078,28 @@ const renderElement = item => {
13078
13078
  // Creates a bordered section with heading and auto-filled comments
13079
13079
  const sectionChildren = [];
13080
13080
 
13081
- // Create title paragraph with percentage if provided
13082
- if (data.percentage !== undefined) {
13081
+ // Create title paragraph with percentage image if provided
13082
+ if (data.percentage !== undefined && data.percentageImage) {
13083
+ const titleChildren = [new docx__namespace.TextRun({
13084
+ text: data.title,
13085
+ bold: true,
13086
+ size: 24
13087
+ }), new docx__namespace.TextRun({
13088
+ text: " " // Multiple spaces for better spacing
13089
+ })];
13090
+
13091
+ // Add percentage image if provided
13092
+ if (data.percentageImage) {
13093
+ titleChildren.push(new docx__namespace.ImageRun({
13094
+ data: data.percentageImage,
13095
+ transformation: {
13096
+ width: data.percentageImageWidth || 50,
13097
+ height: data.percentageImageHeight || 50
13098
+ }
13099
+ }));
13100
+ }
13083
13101
  sectionChildren.push(new docx__namespace.Paragraph({
13084
- children: [new docx__namespace.TextRun({
13085
- text: data.title,
13086
- bold: true,
13087
- size: 24
13088
- }), new docx__namespace.TextRun({
13089
- text: "\t\t\t\t\t\t\t\t\t\t\t\t\t\t"
13090
- }), new docx__namespace.TextRun({
13091
- text: `○ ${data.percentage}%`,
13092
- color: 'FFA500',
13093
- size: 20,
13094
- bold: false
13095
- })],
13102
+ children: titleChildren,
13096
13103
  spacing: {
13097
13104
  after: 100
13098
13105
  }
@@ -13288,23 +13295,18 @@ const fetchImageAsBuffer = async url => {
13288
13295
  } else {
13289
13296
  // For external URLs, use a CORS proxy
13290
13297
  fullUrl = `https://corsproxy.io/?${encodeURIComponent(url)}`;
13291
- console.log('🔄 Using CORS proxy for external URL');
13292
13298
  }
13293
- console.log('🔍 Fetching from:', fullUrl);
13294
13299
  const response = await fetch(fullUrl);
13295
13300
  if (!response.ok) {
13296
13301
  console.error('❌ HTTP Error:', response.status, response.statusText);
13297
13302
  return null;
13298
13303
  }
13299
- console.log('✅ Fetch successful, converting to blob...');
13300
13304
  const blob = await response.blob();
13301
- console.log('✅ Blob size:', blob.size, 'bytes');
13302
13305
 
13303
13306
  // Convert blob to base64 data URI
13304
13307
  return new Promise((resolve, reject) => {
13305
13308
  const reader = new FileReader();
13306
13309
  reader.onloadend = () => {
13307
- console.log('✅ Base64 conversion complete');
13308
13310
  resolve(reader.result);
13309
13311
  };
13310
13312
  reader.onerror = error => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datastake-daf",
3
- "version": "0.6.472",
3
+ "version": "0.6.474",
4
4
  "dependencies": {
5
5
  "@ant-design/icons": "^5.2.5",
6
6
  "@antv/g2": "^5.1.1",
@@ -364,26 +364,35 @@ const renderElement = (item) => {
364
364
  // Creates a bordered section with heading and auto-filled comments
365
365
  const sectionChildren = [];
366
366
 
367
- // Create title paragraph with percentage if provided
368
- if (data.percentage !== undefined) {
367
+ // Create title paragraph with percentage image if provided
368
+ if (data.percentage !== undefined && data.percentageImage) {
369
+ const titleChildren = [
370
+ new docx.TextRun({
371
+ text: data.title,
372
+ bold: true,
373
+ size: 24
374
+ }),
375
+ new docx.TextRun({
376
+ text: " ", // Multiple spaces for better spacing
377
+ })
378
+ ];
379
+
380
+ // Add percentage image if provided
381
+ if (data.percentageImage) {
382
+ titleChildren.push(
383
+ new docx.ImageRun({
384
+ data: data.percentageImage,
385
+ transformation: {
386
+ width: data.percentageImageWidth || 50,
387
+ height: data.percentageImageHeight || 50,
388
+ }
389
+ })
390
+ );
391
+ }
392
+
369
393
  sectionChildren.push(
370
394
  new docx.Paragraph({
371
- children: [
372
- new docx.TextRun({
373
- text: data.title,
374
- bold: true,
375
- size: 24
376
- }),
377
- new docx.TextRun({
378
- text: "\t\t\t\t\t\t\t\t\t\t\t\t\t\t",
379
- }),
380
- new docx.TextRun({
381
- text: `○ ${data.percentage}%`,
382
- color: 'FFA500',
383
- size: 20,
384
- bold: false
385
- })
386
- ],
395
+ children: titleChildren,
387
396
  spacing: { after: 100 }
388
397
  })
389
398
  );
@@ -8,10 +8,8 @@ export const fetchImageAsBuffer = async (url) => {
8
8
  } else {
9
9
  // For external URLs, use a CORS proxy
10
10
  fullUrl = `https://corsproxy.io/?${encodeURIComponent(url)}`;
11
- console.log('🔄 Using CORS proxy for external URL');
12
11
  }
13
12
 
14
- console.log('🔍 Fetching from:', fullUrl);
15
13
  const response = await fetch(fullUrl);
16
14
 
17
15
  if (!response.ok) {
@@ -19,15 +17,12 @@ export const fetchImageAsBuffer = async (url) => {
19
17
  return null;
20
18
  }
21
19
 
22
- console.log('✅ Fetch successful, converting to blob...');
23
20
  const blob = await response.blob();
24
- console.log('✅ Blob size:', blob.size, 'bytes');
25
21
 
26
22
  // Convert blob to base64 data URI
27
23
  return new Promise((resolve, reject) => {
28
24
  const reader = new FileReader();
29
25
  reader.onloadend = () => {
30
- console.log('✅ Base64 conversion complete');
31
26
  resolve(reader.result);
32
27
  };
33
28
  reader.onerror = (error) => {
@@ -1,330 +0,0 @@
1
- /* Isolated Mapbox GL CSS - Scoped to prevent Leaflet conflicts */
2
-
3
- /* Mapbox GL Core Styles - Scoped with .mapbox-gl-scope */
4
- .mapbox-gl-scope .mapboxgl-map {
5
- font: 12px/20px Helvetica Neue, Arial, Helvetica, sans-serif;
6
- overflow: hidden;
7
- position: relative;
8
- -webkit-tap-highlight-color: rgb(0 0 0/0);
9
- }
10
-
11
- .mapbox-gl-scope .mapboxgl-canvas {
12
- left: 0;
13
- position: absolute;
14
- top: 0;
15
- }
16
-
17
- .mapbox-gl-scope .mapboxgl-map:-webkit-full-screen {
18
- height: 100%;
19
- width: 100%;
20
- }
21
-
22
- .mapbox-gl-scope .mapboxgl-canary {
23
- background-color: salmon;
24
- }
25
-
26
- .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-interactive,
27
- .mapbox-gl-scope .mapboxgl-ctrl-group button.mapboxgl-ctrl-compass {
28
- cursor: grab;
29
- -webkit-user-select: none;
30
- user-select: none;
31
- }
32
-
33
- .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer {
34
- cursor: pointer;
35
- }
36
-
37
- .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-interactive:active,
38
- .mapbox-gl-scope .mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active {
39
- cursor: grabbing;
40
- }
41
-
42
- .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,
43
- .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas {
44
- touch-action: pan-x pan-y;
45
- }
46
-
47
- .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-drag-pan,
48
- .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas {
49
- touch-action: pinch-zoom;
50
- }
51
-
52
- .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,
53
- .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas {
54
- touch-action: none;
55
- }
56
-
57
- /* Control positioning */
58
- .mapbox-gl-scope .mapboxgl-ctrl-bottom,
59
- .mapbox-gl-scope .mapboxgl-ctrl-bottom-left,
60
- .mapbox-gl-scope .mapboxgl-ctrl-bottom-right,
61
- .mapbox-gl-scope .mapboxgl-ctrl-left,
62
- .mapbox-gl-scope .mapboxgl-ctrl-right,
63
- .mapbox-gl-scope .mapboxgl-ctrl-top,
64
- .mapbox-gl-scope .mapboxgl-ctrl-top-left,
65
- .mapbox-gl-scope .mapboxgl-ctrl-top-right {
66
- pointer-events: none;
67
- position: absolute;
68
- z-index: 2;
69
- }
70
-
71
- .mapbox-gl-scope .mapboxgl-ctrl-top-left {
72
- left: 0;
73
- top: 0;
74
- }
75
-
76
- .mapbox-gl-scope .mapboxgl-ctrl-top {
77
- left: 50%;
78
- top: 0;
79
- transform: translateX(-50%);
80
- }
81
-
82
- .mapbox-gl-scope .mapboxgl-ctrl-top-right {
83
- right: 0;
84
- top: 0;
85
- }
86
-
87
- .mapbox-gl-scope .mapboxgl-ctrl-right {
88
- right: 0;
89
- top: 50%;
90
- transform: translateY(-50%);
91
- }
92
-
93
- .mapbox-gl-scope .mapboxgl-ctrl-bottom-right {
94
- bottom: 0;
95
- right: 0;
96
- }
97
-
98
- .mapbox-gl-scope .mapboxgl-ctrl-bottom {
99
- bottom: 0;
100
- left: 50%;
101
- transform: translateX(-50%);
102
- }
103
-
104
- .mapbox-gl-scope .mapboxgl-ctrl-bottom-left {
105
- bottom: 0;
106
- left: 0;
107
- }
108
-
109
- .mapbox-gl-scope .mapboxgl-ctrl-left {
110
- left: 0;
111
- top: 50%;
112
- transform: translateY(-50%);
113
- }
114
-
115
- .mapbox-gl-scope .mapboxgl-ctrl {
116
- clear: both;
117
- pointer-events: auto;
118
- transform: translate(0);
119
- }
120
-
121
- .mapbox-gl-scope .mapboxgl-ctrl-top-left .mapboxgl-ctrl {
122
- float: left;
123
- margin: 10px 0 0 10px;
124
- }
125
-
126
- .mapbox-gl-scope .mapboxgl-ctrl-top .mapboxgl-ctrl {
127
- float: left;
128
- margin: 10px 0;
129
- }
130
-
131
- .mapbox-gl-scope .mapboxgl-ctrl-top-right .mapboxgl-ctrl {
132
- float: right;
133
- margin: 10px 10px 0 0;
134
- }
135
-
136
- .mapbox-gl-scope .mapboxgl-ctrl-bottom-right .mapboxgl-ctrl,
137
- .mapbox-gl-scope .mapboxgl-ctrl-right .mapboxgl-ctrl {
138
- float: right;
139
- margin: 0 10px 10px 0;
140
- }
141
-
142
- .mapbox-gl-scope .mapboxgl-ctrl-bottom .mapboxgl-ctrl {
143
- float: left;
144
- margin: 10px 0;
145
- }
146
-
147
- .mapbox-gl-scope .mapboxgl-ctrl-bottom-left .mapboxgl-ctrl,
148
- .mapbox-gl-scope .mapboxgl-ctrl-left .mapboxgl-ctrl {
149
- float: left;
150
- margin: 0 0 10px 10px;
151
- }
152
-
153
- /* Control group styling */
154
- .mapbox-gl-scope .mapboxgl-ctrl-group {
155
- background: #fff;
156
- border-radius: 4px;
157
- }
158
-
159
- .mapbox-gl-scope .mapboxgl-ctrl-group:not(:empty) {
160
- box-shadow: 0 0 0 2px #0000001a;
161
- }
162
-
163
- .mapbox-gl-scope .mapboxgl-ctrl-group button {
164
- background-color: initial;
165
- border: 0;
166
- box-sizing: border-box;
167
- cursor: pointer;
168
- display: block;
169
- height: 29px;
170
- outline: none;
171
- overflow: hidden;
172
- padding: 0;
173
- width: 29px;
174
- }
175
-
176
- .mapbox-gl-scope .mapboxgl-ctrl-group button+button {
177
- border-top: 1px solid #ddd;
178
- }
179
-
180
- .mapbox-gl-scope .mapboxgl-ctrl button .mapboxgl-ctrl-icon {
181
- background-position: 50%;
182
- background-repeat: no-repeat;
183
- display: block;
184
- height: 100%;
185
- width: 100%;
186
- }
187
-
188
- .mapbox-gl-scope .mapboxgl-ctrl-attrib-button:focus,
189
- .mapbox-gl-scope .mapboxgl-ctrl-group button:focus {
190
- box-shadow: 0 0 2px 2px #0096ff;
191
- }
192
-
193
- .mapbox-gl-scope .mapboxgl-ctrl button:disabled {
194
- cursor: not-allowed;
195
- }
196
-
197
- .mapbox-gl-scope .mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon {
198
- opacity: .25;
199
- }
200
-
201
- .mapbox-gl-scope .mapboxgl-ctrl-group button:first-child {
202
- border-radius: 4px 4px 0 0;
203
- }
204
-
205
- .mapbox-gl-scope .mapboxgl-ctrl-group button:last-child {
206
- border-radius: 0 0 4px 4px;
207
- }
208
-
209
- .mapbox-gl-scope .mapboxgl-ctrl-group button:only-child {
210
- border-radius: inherit;
211
- }
212
-
213
- .mapbox-gl-scope .mapboxgl-ctrl button:not(:disabled):hover {
214
- background-color: #0000000d;
215
- }
216
-
217
- /* Marker styles */
218
- .mapbox-gl-scope .mapboxgl-marker {
219
- position: absolute;
220
- z-index: 1;
221
- }
222
-
223
- .mapbox-gl-scope .mapboxgl-marker svg {
224
- display: block;
225
- }
226
-
227
- /* Popup styles */
228
- .mapbox-gl-scope .mapboxgl-popup {
229
- position: absolute;
230
- text-align: center;
231
- margin-bottom: 20px;
232
- }
233
-
234
- .mapbox-gl-scope .mapboxgl-popup-content-wrapper {
235
- padding: 1px;
236
- text-align: left;
237
- border-radius: 12px;
238
- }
239
-
240
- .mapbox-gl-scope .mapboxgl-popup-content {
241
- margin: 13px 24px 13px 20px;
242
- line-height: 1.3;
243
- font-size: 13px;
244
- min-height: 1px;
245
- }
246
-
247
- .mapbox-gl-scope .mapboxgl-popup-content p {
248
- margin: 17px 0;
249
- }
250
-
251
- .mapbox-gl-scope .mapboxgl-popup-tip-container {
252
- width: 40px;
253
- height: 20px;
254
- position: absolute;
255
- left: 50%;
256
- margin-top: -1px;
257
- margin-left: -20px;
258
- overflow: hidden;
259
- pointer-events: none;
260
- }
261
-
262
- .mapbox-gl-scope .mapboxgl-popup-tip {
263
- width: 17px;
264
- height: 17px;
265
- padding: 1px;
266
- margin: -10px auto 0;
267
- pointer-events: auto;
268
- -webkit-transform: rotate(45deg);
269
- -moz-transform: rotate(45deg);
270
- -ms-transform: rotate(45deg);
271
- transform: rotate(45deg);
272
- }
273
-
274
- .mapbox-gl-scope .mapboxgl-popup-content-wrapper,
275
- .mapbox-gl-scope .mapboxgl-popup-tip {
276
- background: white;
277
- color: #333;
278
- box-shadow: 0 3px 14px rgba(0, 0, 0, 0.4);
279
- }
280
-
281
- .mapbox-gl-scope .mapboxgl-popup-close-button {
282
- position: absolute;
283
- top: 0;
284
- right: 0;
285
- border: none;
286
- text-align: center;
287
- width: 24px;
288
- height: 24px;
289
- font: 16px/24px Tahoma, Verdana, sans-serif;
290
- color: #757575;
291
- text-decoration: none;
292
- background: transparent;
293
- }
294
-
295
- .mapbox-gl-scope .mapboxgl-popup-close-button:hover,
296
- .mapbox-gl-scope .mapboxgl-popup-close-button:focus {
297
- color: #585858;
298
- }
299
-
300
- /* Attribution */
301
- .mapbox-gl-scope .mapboxgl-ctrl-attribution {
302
- background: #fff;
303
- background: rgba(255, 255, 255, 0.8);
304
- margin: 0;
305
- }
306
-
307
- .mapbox-gl-scope .mapboxgl-ctrl-attribution,
308
- .mapbox-gl-scope .mapboxgl-ctrl-scale-line {
309
- padding: 0 5px;
310
- color: #333;
311
- line-height: 1.4;
312
- }
313
-
314
- .mapbox-gl-scope .mapboxgl-ctrl-attribution a {
315
- text-decoration: none;
316
- }
317
-
318
- .mapbox-gl-scope .mapboxgl-ctrl-attribution a:hover,
319
- .mapbox-gl-scope .mapboxgl-ctrl-attribution a:focus {
320
- text-decoration: underline;
321
- }
322
-
323
- /* Hide attribution by default */
324
- .mapbox-gl-scope .mapboxgl-ctrl-attribution {
325
- display: none !important;
326
- }
327
-
328
- .mapbox-gl-scope .mapboxgl-ctrl-logo {
329
- display: none !important;
330
- }