@cocreate/render 1.40.2 → 1.40.3
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/CHANGELOG.md +9 -0
- package/package.json +1 -1
- package/src/index.js +39 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
## [1.40.3](https://github.com/CoCreate-app/CoCreate-render/compare/v1.40.2...v1.40.3) (2024-03-18)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* handling of placeholder matching ([b80be78](https://github.com/CoCreate-app/CoCreate-render/commit/b80be78f2026c4a438115366e5dbc90faf323c2a))
|
|
7
|
+
* if key and data[key] is an array ([4478c11](https://github.com/CoCreate-app/CoCreate-render/commit/4478c116507b490a334e1010a2037ee6c12531c4))
|
|
8
|
+
* omit matches that do not match the if conditions ([b589020](https://github.com/CoCreate-app/CoCreate-render/commit/b5890205eeae38e5be1f4cdf4d48eed6da211afb))
|
|
9
|
+
|
|
1
10
|
## [1.40.2](https://github.com/CoCreate-app/CoCreate-render/compare/v1.40.1...v1.40.2) (2024-02-13)
|
|
2
11
|
|
|
3
12
|
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -171,7 +171,7 @@ async function render({ source, element, selector, data, key, index, currentInde
|
|
|
171
171
|
renderedNodes.delete(clone)
|
|
172
172
|
clone.remove()
|
|
173
173
|
}
|
|
174
|
-
} else if (key || Array.isArray(data)) {
|
|
174
|
+
} else if (key && Array.isArray(data[key]) || Array.isArray(data)) {
|
|
175
175
|
if (update) {
|
|
176
176
|
for (let j = 0; j < data[key].length; j++) {
|
|
177
177
|
let clone
|
|
@@ -200,8 +200,10 @@ async function render({ source, element, selector, data, key, index, currentInde
|
|
|
200
200
|
|
|
201
201
|
await renderTemplate(element[i], data, key, index);
|
|
202
202
|
}
|
|
203
|
-
} else
|
|
204
|
-
|
|
203
|
+
} else {
|
|
204
|
+
let renderAs = element[i].getAttribute('render-as') || key;
|
|
205
|
+
await renderValues(element[i], data, key, renderAs);
|
|
206
|
+
}
|
|
205
207
|
|
|
206
208
|
}
|
|
207
209
|
|
|
@@ -583,6 +585,8 @@ async function renderValues(node, data, key, renderAs, keyPath, parent) {
|
|
|
583
585
|
async function renderValue(node, data, placeholder, renderAs, renderedNode) {
|
|
584
586
|
let output = placeholder;
|
|
585
587
|
let regex = /\{([^{}]+)\}/
|
|
588
|
+
let omitted = {}
|
|
589
|
+
|
|
586
590
|
let match;
|
|
587
591
|
do {
|
|
588
592
|
match = output.match(regex);
|
|
@@ -621,8 +625,7 @@ async function renderValue(node, data, placeholder, renderAs, renderedNode) {
|
|
|
621
625
|
value = getRenderValue(node, data, match[1], renderAs)
|
|
622
626
|
}
|
|
623
627
|
} else {
|
|
624
|
-
|
|
625
|
-
return output
|
|
628
|
+
omitted[`<|${match[1]}|>`] = match[0]
|
|
626
629
|
}
|
|
627
630
|
|
|
628
631
|
} catch (error) {
|
|
@@ -633,19 +636,25 @@ async function renderValue(node, data, placeholder, renderAs, renderedNode) {
|
|
|
633
636
|
if (typeof value === "object") {
|
|
634
637
|
value = JSON.stringify(value, null, 2);
|
|
635
638
|
}
|
|
636
|
-
output = output.
|
|
639
|
+
output = output.replaceAll(match[0], value);
|
|
637
640
|
} else if (renderAs) {
|
|
638
641
|
if (match[0].startsWith(`{{${renderAs}.`)) {
|
|
639
|
-
output = output.
|
|
642
|
+
output = output.replaceAll(match[0], "");
|
|
640
643
|
} else {
|
|
641
|
-
|
|
644
|
+
output = output.replaceAll(match[0], `<|${match[1]}|>`);
|
|
645
|
+
omitted[`<|${match[1]}|>`] = match[0]
|
|
642
646
|
}
|
|
643
647
|
} else {
|
|
648
|
+
// output = output.replace(match[0], `<|${match[1]}|>`);
|
|
644
649
|
match = null;
|
|
645
650
|
}
|
|
646
651
|
}
|
|
647
652
|
} while (match);
|
|
648
653
|
|
|
654
|
+
for (let key of Object.keys(omitted)) {
|
|
655
|
+
output = output.replaceAll(key, omitted[key]);
|
|
656
|
+
}
|
|
657
|
+
|
|
649
658
|
return output;
|
|
650
659
|
}
|
|
651
660
|
|
|
@@ -760,6 +769,28 @@ Actions.init({
|
|
|
760
769
|
}
|
|
761
770
|
});
|
|
762
771
|
|
|
772
|
+
Actions.init({
|
|
773
|
+
name: "render",
|
|
774
|
+
callback: async (action) => {
|
|
775
|
+
if (!action.form)
|
|
776
|
+
return
|
|
777
|
+
|
|
778
|
+
let elements
|
|
779
|
+
if (action.params)
|
|
780
|
+
elements = queryElements({ element: action.element, selector: action.params, type: 'selector' })
|
|
781
|
+
else
|
|
782
|
+
elements = queryElements({ element: action.element, prefix: 'render' })
|
|
783
|
+
|
|
784
|
+
let data = await action.form.getData()
|
|
785
|
+
for (let i = 0; i < elements.length; i++)
|
|
786
|
+
render({ source: elements[i], data: data[0] });
|
|
787
|
+
|
|
788
|
+
document.dispatchEvent(new CustomEvent('render', {
|
|
789
|
+
detail: {}
|
|
790
|
+
}));
|
|
791
|
+
}
|
|
792
|
+
});
|
|
793
|
+
|
|
763
794
|
Observer.init({
|
|
764
795
|
name: 'render',
|
|
765
796
|
observe: ['addedNodes'],
|