artifactuse 0.2.6 → 0.3.0
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/README.md +8 -0
- package/dist/{index-W575iBkm.js → index-vmcpJRYe.js} +149 -143
- package/dist/index.js +1 -1
- package/dist/react/ArtifactusePanel.d.ts +2 -1
- package/dist/react/index.js +946 -893
- package/dist/styles/components/panel.css +152 -0
- package/dist/svelte/index.js +2046 -1912
- package/dist/vue/index.js +1403 -1318
- package/dist/vue2/index.js +369 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -792,6 +792,14 @@ on('media:open', ({ type, src, alt, caption }) => {
|
|
|
792
792
|
on('edit:save', ({ artifactId, artifact, code }) => {
|
|
793
793
|
console.log('Code saved:', code);
|
|
794
794
|
});
|
|
795
|
+
|
|
796
|
+
// Console output from HTML artifacts
|
|
797
|
+
on('console:log', ({ artifactId, entry }) => {
|
|
798
|
+
// entry: { type: 'log'|'warn'|'error'|'info', content: string, timestamp: number, stack?: string }
|
|
799
|
+
if (entry.type === 'error') {
|
|
800
|
+
// Send error back to AI for auto-fix
|
|
801
|
+
}
|
|
802
|
+
});
|
|
795
803
|
```
|
|
796
804
|
|
|
797
805
|
## Programmatic API
|
|
@@ -581,9 +581,9 @@ function Kr(e, t, r, a) {
|
|
|
581
581
|
if (r === "smartdiff")
|
|
582
582
|
try {
|
|
583
583
|
const v = JSON.parse(t), M = Xr(v.oldCode, v.newCode).split(`
|
|
584
|
-
`), A = M.slice(0, s), S = A.map((B) => B[0] || " "), L = A.map((B) => B.slice(1)), $ = v.language || "plaintext",
|
|
585
|
-
`),
|
|
586
|
-
return `<div class="artifactuse-inline-preview${
|
|
584
|
+
`), A = M.slice(0, s), S = A.map((B) => B[0] || " "), L = A.map((B) => B.slice(1)), $ = v.language || "plaintext", k = ge($), z = ot(L.join(`
|
|
585
|
+
`), k), j = ae() && window.Prism.languages[k], P = M.length > s, T = n(M.length, P), N = T ? " artifactuse-inline-preview--static" : "", X = T ? ' data-non-clickable="true"' : "", O = o("smartdiff", M.length);
|
|
586
|
+
return `<div class="artifactuse-inline-preview${P ? " artifactuse-inline-preview--truncated" : ""}${N}" data-artifact-id="${e.id}" data-smartdiff="true" data-smartdiff-markers="${S.join(",")}"${X}><pre class="artifactuse-inline-preview__pre${j ? " language-" + $ : ""}"><code class="language-${$}${j ? " prism-highlighted" : ""}">${z}</code></pre>` + (P ? `<div class="artifactuse-inline-preview__fade"><span class="artifactuse-inline-preview__action">${O}</span></div>` : "") + "</div>";
|
|
587
587
|
} catch {
|
|
588
588
|
}
|
|
589
589
|
let i = t, u = r;
|
|
@@ -716,8 +716,8 @@ function ra() {
|
|
|
716
716
|
t.forEach(($) => {
|
|
717
717
|
try {
|
|
718
718
|
$(e);
|
|
719
|
-
} catch (
|
|
720
|
-
console.error("Artifactuse state subscriber error:",
|
|
719
|
+
} catch (k) {
|
|
720
|
+
console.error("Artifactuse state subscriber error:", k);
|
|
721
721
|
}
|
|
722
722
|
});
|
|
723
723
|
}
|
|
@@ -730,15 +730,15 @@ function ra() {
|
|
|
730
730
|
return { ...e };
|
|
731
731
|
}
|
|
732
732
|
function n($) {
|
|
733
|
-
const
|
|
734
|
-
if (
|
|
733
|
+
const k = e.artifacts.findIndex((z) => z.id === $.id);
|
|
734
|
+
if (k === -1)
|
|
735
735
|
e = {
|
|
736
736
|
...e,
|
|
737
737
|
artifacts: [...e.artifacts, $]
|
|
738
738
|
};
|
|
739
739
|
else {
|
|
740
740
|
const z = [...e.artifacts];
|
|
741
|
-
z[
|
|
741
|
+
z[k] = { ...z[k], ...$ }, e = {
|
|
742
742
|
...e,
|
|
743
743
|
artifacts: z
|
|
744
744
|
};
|
|
@@ -749,26 +749,26 @@ function ra() {
|
|
|
749
749
|
$.forEach(n);
|
|
750
750
|
}
|
|
751
751
|
function i($) {
|
|
752
|
-
const
|
|
752
|
+
const k = e.openTabs.filter((P) => P !== $), { [$]: z, ...j } = e.tabViewModes;
|
|
753
753
|
e = {
|
|
754
754
|
...e,
|
|
755
|
-
artifacts: e.artifacts.filter((
|
|
755
|
+
artifacts: e.artifacts.filter((P) => P.id !== $),
|
|
756
756
|
activeArtifactId: e.activeArtifactId === $ ? null : e.activeArtifactId,
|
|
757
757
|
isPanelOpen: e.activeArtifactId === $ ? !1 : e.isPanelOpen,
|
|
758
|
-
openTabs:
|
|
758
|
+
openTabs: k,
|
|
759
759
|
tabViewModes: j
|
|
760
760
|
}, r();
|
|
761
761
|
}
|
|
762
762
|
function u($) {
|
|
763
|
-
return e.artifacts.find((
|
|
763
|
+
return e.artifacts.find((k) => k.id === $) || null;
|
|
764
764
|
}
|
|
765
765
|
function l() {
|
|
766
766
|
return e.activeArtifactId ? u(e.activeArtifactId) : null;
|
|
767
767
|
}
|
|
768
768
|
function d($) {
|
|
769
|
-
const
|
|
769
|
+
const k = u($);
|
|
770
770
|
let z = e.tabViewModes[$];
|
|
771
|
-
z || (z = (
|
|
771
|
+
z || (z = (k == null ? void 0 : k.isPreviewable) === !1 ? "code" : "preview", k != null && k.tabs && !k.tabs.includes(z) && (z = k.tabs[0])), e = {
|
|
772
772
|
...e,
|
|
773
773
|
activeArtifactId: $,
|
|
774
774
|
viewMode: z,
|
|
@@ -793,11 +793,11 @@ function ra() {
|
|
|
793
793
|
console.warn(`Invalid view mode: ${$}`);
|
|
794
794
|
return;
|
|
795
795
|
}
|
|
796
|
-
const
|
|
796
|
+
const k = e.activeArtifactId ? { ...e.tabViewModes, [e.activeArtifactId]: $ } : e.tabViewModes;
|
|
797
797
|
e = {
|
|
798
798
|
...e,
|
|
799
799
|
viewMode: $,
|
|
800
|
-
tabViewModes:
|
|
800
|
+
tabViewModes: k
|
|
801
801
|
}, r();
|
|
802
802
|
}
|
|
803
803
|
function h($) {
|
|
@@ -813,39 +813,39 @@ function ra() {
|
|
|
813
813
|
}, r();
|
|
814
814
|
}
|
|
815
815
|
function g($) {
|
|
816
|
-
return e.artifacts.filter((
|
|
816
|
+
return e.artifacts.filter((k) => k.messageId === $);
|
|
817
817
|
}
|
|
818
818
|
function m($) {
|
|
819
|
-
return e.artifacts.filter((
|
|
819
|
+
return e.artifacts.filter((k) => k.type === $);
|
|
820
820
|
}
|
|
821
821
|
function b() {
|
|
822
822
|
return e.artifacts.length;
|
|
823
823
|
}
|
|
824
824
|
function v($) {
|
|
825
|
-
const
|
|
826
|
-
if (!
|
|
825
|
+
const k = u($);
|
|
826
|
+
if (!k) return;
|
|
827
827
|
const j = e.openTabs.includes($) ? e.openTabs : [...e.openTabs, $];
|
|
828
|
-
let
|
|
829
|
-
|
|
828
|
+
let P = e.tabViewModes[$];
|
|
829
|
+
P || (P = k.isPreviewable === !1 ? "code" : "preview", k.tabs && !k.tabs.includes(P) && (P = k.tabs[0])), e = {
|
|
830
830
|
...e,
|
|
831
831
|
openTabs: j,
|
|
832
832
|
activeArtifactId: $,
|
|
833
|
-
tabViewModes: { ...e.tabViewModes, [$]:
|
|
834
|
-
viewMode:
|
|
833
|
+
tabViewModes: { ...e.tabViewModes, [$]: P },
|
|
834
|
+
viewMode: P
|
|
835
835
|
}, r();
|
|
836
836
|
}
|
|
837
837
|
function x($) {
|
|
838
|
-
const
|
|
839
|
-
if (
|
|
840
|
-
const z = e.openTabs.filter((X) => X !== $), { [$]: j, ...
|
|
838
|
+
const k = e.openTabs.indexOf($);
|
|
839
|
+
if (k === -1) return;
|
|
840
|
+
const z = e.openTabs.filter((X) => X !== $), { [$]: j, ...P } = e.tabViewModes;
|
|
841
841
|
let T = e.activeArtifactId;
|
|
842
|
-
e.activeArtifactId === $ && (z.length === 0 ? T = null :
|
|
843
|
-
const N = T &&
|
|
842
|
+
e.activeArtifactId === $ && (z.length === 0 ? T = null : k >= z.length ? T = z[z.length - 1] : T = z[k]);
|
|
843
|
+
const N = T && P[T] || "preview";
|
|
844
844
|
e = {
|
|
845
845
|
...e,
|
|
846
846
|
openTabs: z,
|
|
847
847
|
activeArtifactId: T,
|
|
848
|
-
tabViewModes:
|
|
848
|
+
tabViewModes: P,
|
|
849
849
|
viewMode: N
|
|
850
850
|
}, r();
|
|
851
851
|
}
|
|
@@ -881,7 +881,7 @@ function ra() {
|
|
|
881
881
|
}, r();
|
|
882
882
|
}
|
|
883
883
|
function L($) {
|
|
884
|
-
const
|
|
884
|
+
const k = r;
|
|
885
885
|
let z = !1;
|
|
886
886
|
const j = () => {
|
|
887
887
|
z = !0;
|
|
@@ -892,7 +892,7 @@ function ra() {
|
|
|
892
892
|
configurable: !0
|
|
893
893
|
}), $();
|
|
894
894
|
} finally {
|
|
895
|
-
delete window.__artifactuse_notify__, z &&
|
|
895
|
+
delete window.__artifactuse_notify__, z && k();
|
|
896
896
|
}
|
|
897
897
|
}
|
|
898
898
|
return {
|
|
@@ -936,113 +936,113 @@ function aa(e = []) {
|
|
|
936
936
|
const t = Array.isArray(e) ? e : [e].filter(Boolean), r = new Set(t), a = /* @__PURE__ */ new Map();
|
|
937
937
|
let s = null, n = !1, o = !1;
|
|
938
938
|
const i = [];
|
|
939
|
-
function u(
|
|
939
|
+
function u(k) {
|
|
940
940
|
if (r.size === 0)
|
|
941
941
|
return console.warn("Artifactuse bridge: No allowed origins configured, accepting all messages"), !0;
|
|
942
|
-
const z = ut(
|
|
942
|
+
const z = ut(k);
|
|
943
943
|
if (!z) return !1;
|
|
944
944
|
for (const j of r) {
|
|
945
|
-
const
|
|
946
|
-
if (
|
|
945
|
+
const P = ut(j);
|
|
946
|
+
if (P && P === z || j === z)
|
|
947
947
|
return !0;
|
|
948
948
|
}
|
|
949
949
|
return !1;
|
|
950
950
|
}
|
|
951
|
-
function l(
|
|
952
|
-
var O, B,
|
|
953
|
-
if (((O =
|
|
954
|
-
((
|
|
951
|
+
function l(k) {
|
|
952
|
+
var O, B, y;
|
|
953
|
+
if (((O = k.data) == null ? void 0 : O.type) === "artifactuse" && (console.log("[Bridge] Message from:", k.origin, "action:", (B = k.data) == null ? void 0 : B.action), console.log("[Bridge] Allowed origins:", w())), !u(k.origin)) {
|
|
954
|
+
((y = k.data) == null ? void 0 : y.type) === "artifactuse" && console.warn("[Bridge] Origin NOT allowed:", k.origin);
|
|
955
955
|
return;
|
|
956
956
|
}
|
|
957
|
-
const { type: z, action: j, data:
|
|
957
|
+
const { type: z, action: j, data: P, requestId: T } = k.data || {};
|
|
958
958
|
if (z !== "artifactuse") return;
|
|
959
959
|
if (j === "ready" || j === "panel:ready") {
|
|
960
960
|
console.log("[Bridge] panel:ready received, setting isReady=true"), n = !0, o = !0, h();
|
|
961
961
|
return;
|
|
962
962
|
}
|
|
963
|
-
(a.get(j) || []).forEach((
|
|
963
|
+
(a.get(j) || []).forEach((E) => {
|
|
964
964
|
try {
|
|
965
|
-
P
|
|
965
|
+
E(P, T);
|
|
966
966
|
} catch (R) {
|
|
967
967
|
console.error(`Artifactuse bridge handler error (${j}):`, R);
|
|
968
968
|
}
|
|
969
|
-
}), (a.get("*") || []).forEach((
|
|
969
|
+
}), (a.get("*") || []).forEach((E) => {
|
|
970
970
|
try {
|
|
971
|
-
|
|
971
|
+
E({ action: j, data: P, requestId: T });
|
|
972
972
|
} catch (R) {
|
|
973
973
|
console.error("Artifactuse bridge wildcard handler error:", R);
|
|
974
974
|
}
|
|
975
975
|
});
|
|
976
976
|
}
|
|
977
977
|
window.addEventListener("message", l);
|
|
978
|
-
function d(
|
|
979
|
-
|
|
978
|
+
function d(k) {
|
|
979
|
+
k && typeof k == "string" && r.add(k);
|
|
980
980
|
}
|
|
981
|
-
function p(
|
|
982
|
-
|
|
981
|
+
function p(k) {
|
|
982
|
+
k && typeof k == "string" && r.delete(k);
|
|
983
983
|
}
|
|
984
984
|
function w() {
|
|
985
985
|
return [...r];
|
|
986
986
|
}
|
|
987
|
-
function c(
|
|
988
|
-
console.log("[Bridge] setIframe called, current isReady:", n, "readySignalReceived:", o, "same iframe:", s ===
|
|
987
|
+
function c(k) {
|
|
988
|
+
console.log("[Bridge] setIframe called, current isReady:", n, "readySignalReceived:", o, "same iframe:", s === k), s !== k && (s = k, o ? (console.log("[Bridge] Ready signal was already received, keeping isReady=true"), n = !0) : n = !1), console.log("[Bridge] setIframe done, isReady:", n, "pendingMessages:", i.length), h();
|
|
989
989
|
}
|
|
990
990
|
function h() {
|
|
991
|
-
console.log("[Bridge] flushPendingMessages: isReady=", n, "hasIframe=", !!(s != null && s.contentWindow), "pending=", i.length), n && (s != null && s.contentWindow) && i.length > 0 && (console.log("[Bridge] Flushing", i.length, "pending messages"), i.forEach((
|
|
991
|
+
console.log("[Bridge] flushPendingMessages: isReady=", n, "hasIframe=", !!(s != null && s.contentWindow), "pending=", i.length), n && (s != null && s.contentWindow) && i.length > 0 && (console.log("[Bridge] Flushing", i.length, "pending messages"), i.forEach((k) => f(k)), i.length = 0);
|
|
992
992
|
}
|
|
993
|
-
function f(
|
|
993
|
+
function f(k, z = "*") {
|
|
994
994
|
if (!(s != null && s.contentWindow))
|
|
995
995
|
return console.warn("Artifactuse: No panel iframe available"), !1;
|
|
996
996
|
try {
|
|
997
|
-
return s.contentWindow.postMessage(
|
|
997
|
+
return s.contentWindow.postMessage(k, z), !0;
|
|
998
998
|
} catch (j) {
|
|
999
999
|
return console.error("Artifactuse bridge send error:", j), !1;
|
|
1000
1000
|
}
|
|
1001
1001
|
}
|
|
1002
|
-
function g(
|
|
1002
|
+
function g(k, z, j = null, P = "*") {
|
|
1003
1003
|
const T = {
|
|
1004
1004
|
type: "artifactuse",
|
|
1005
|
-
action:
|
|
1005
|
+
action: k,
|
|
1006
1006
|
data: z,
|
|
1007
1007
|
requestId: j || dt(),
|
|
1008
1008
|
timestamp: Date.now()
|
|
1009
1009
|
};
|
|
1010
|
-
return n ? (f(T,
|
|
1010
|
+
return n ? (f(T, P), T.requestId) : (i.push(T), T.requestId);
|
|
1011
1011
|
}
|
|
1012
|
-
function m(
|
|
1013
|
-
return new Promise((
|
|
1012
|
+
function m(k, z, j = 3e4) {
|
|
1013
|
+
return new Promise((P, T) => {
|
|
1014
1014
|
const N = dt(), X = setTimeout(() => {
|
|
1015
|
-
v(`${
|
|
1016
|
-
}, j), O = (B,
|
|
1017
|
-
|
|
1015
|
+
v(`${k}:response`, O), T(new Error(`Artifactuse bridge request timeout: ${k}`));
|
|
1016
|
+
}, j), O = (B, y) => {
|
|
1017
|
+
y === N && (clearTimeout(X), v(`${k}:response`, O), P(B));
|
|
1018
1018
|
};
|
|
1019
|
-
b(`${
|
|
1019
|
+
b(`${k}:response`, O), g(k, z, N);
|
|
1020
1020
|
});
|
|
1021
1021
|
}
|
|
1022
|
-
function b(
|
|
1023
|
-
return a.has(
|
|
1022
|
+
function b(k, z) {
|
|
1023
|
+
return a.has(k) || a.set(k, []), a.get(k).push(z), () => v(k, z);
|
|
1024
1024
|
}
|
|
1025
|
-
function v(
|
|
1026
|
-
const j = a.get(
|
|
1025
|
+
function v(k, z) {
|
|
1026
|
+
const j = a.get(k);
|
|
1027
1027
|
if (j) {
|
|
1028
|
-
const
|
|
1029
|
-
|
|
1028
|
+
const P = j.indexOf(z);
|
|
1029
|
+
P > -1 && j.splice(P, 1);
|
|
1030
1030
|
}
|
|
1031
1031
|
}
|
|
1032
|
-
function x(
|
|
1033
|
-
return g("load:artifact",
|
|
1032
|
+
function x(k) {
|
|
1033
|
+
return g("load:artifact", k);
|
|
1034
1034
|
}
|
|
1035
|
-
function M(
|
|
1036
|
-
return g("update:artifact", { artifactId:
|
|
1035
|
+
function M(k, z) {
|
|
1036
|
+
return g("update:artifact", { artifactId: k, updates: z });
|
|
1037
1037
|
}
|
|
1038
1038
|
function A() {
|
|
1039
1039
|
return m("save", {});
|
|
1040
1040
|
}
|
|
1041
|
-
function S(
|
|
1042
|
-
return m("export", { format:
|
|
1041
|
+
function S(k = "default") {
|
|
1042
|
+
return m("export", { format: k });
|
|
1043
1043
|
}
|
|
1044
|
-
function L(
|
|
1045
|
-
return g("ai:response",
|
|
1044
|
+
function L(k, z) {
|
|
1045
|
+
return g("ai:response", k, z);
|
|
1046
1046
|
}
|
|
1047
1047
|
function $() {
|
|
1048
1048
|
window.removeEventListener("message", l), a.clear(), r.clear(), s = null, n = !1, o = !1, i.length = 0;
|
|
@@ -1726,23 +1726,23 @@ function ha(e = {}) {
|
|
|
1726
1726
|
rectangularSelection: A,
|
|
1727
1727
|
crosshairCursor: S,
|
|
1728
1728
|
highlightActiveLine: L
|
|
1729
|
-
} = t.view, { defaultKeymap: $, history:
|
|
1730
|
-
indentOnInput:
|
|
1729
|
+
} = t.view, { defaultKeymap: $, history: k, historyKeymap: z, indentWithTab: j } = t.commands, {
|
|
1730
|
+
indentOnInput: P,
|
|
1731
1731
|
syntaxHighlighting: T,
|
|
1732
1732
|
bracketMatching: N,
|
|
1733
1733
|
foldGutter: X,
|
|
1734
1734
|
foldKeymap: O,
|
|
1735
1735
|
HighlightStyle: B
|
|
1736
1736
|
} = t.language, {
|
|
1737
|
-
closeBrackets:
|
|
1738
|
-
closeBracketsKeymap:
|
|
1737
|
+
closeBrackets: y,
|
|
1738
|
+
closeBracketsKeymap: E,
|
|
1739
1739
|
autocompletion: R,
|
|
1740
1740
|
completionKeymap: C
|
|
1741
1741
|
} = t.autocomplete, D = ((U = t.lezerHighlight) == null ? void 0 : U.tags) || ((ve = t.language) == null ? void 0 : ve.tags), _ = l(c.sdkTheme), q = _ ? s(f) : n(f), J = [
|
|
1742
1742
|
m(),
|
|
1743
1743
|
b(),
|
|
1744
1744
|
v(),
|
|
1745
|
-
|
|
1745
|
+
k(),
|
|
1746
1746
|
X({
|
|
1747
1747
|
openText: "▾",
|
|
1748
1748
|
closedText: "▸"
|
|
@@ -1750,16 +1750,16 @@ function ha(e = {}) {
|
|
|
1750
1750
|
x(),
|
|
1751
1751
|
M(),
|
|
1752
1752
|
h.allowMultipleSelections.of(!0),
|
|
1753
|
-
|
|
1753
|
+
P(),
|
|
1754
1754
|
...D ? [T(o(B, D, _))] : [],
|
|
1755
1755
|
N(),
|
|
1756
|
-
|
|
1756
|
+
y(),
|
|
1757
1757
|
R(),
|
|
1758
1758
|
A(),
|
|
1759
1759
|
S(),
|
|
1760
1760
|
L(),
|
|
1761
1761
|
g.of([
|
|
1762
|
-
...
|
|
1762
|
+
...E,
|
|
1763
1763
|
...$,
|
|
1764
1764
|
...z,
|
|
1765
1765
|
...O,
|
|
@@ -3238,9 +3238,9 @@ function ds(e, t = {}) {
|
|
|
3238
3238
|
const v = new RegExp(`(?<!["'=])(https?:\\/\\/open\\.spotify\\.com\\/show\\/([a-zA-Z0-9]+))(?!["'])`, "gi");
|
|
3239
3239
|
e = e.replace(v, (A, S, L) => F("show", L, r));
|
|
3240
3240
|
const x = /<a[^>]*href="(https?:\/\/music\.apple\.com\/([a-z]{2})\/([a-z-]+)\/[^\/]+\/(\d+)[^"]*)"[^>]*>[^<]*<\/a>/gi;
|
|
3241
|
-
e = e.replace(x, (A, S, L, $,
|
|
3241
|
+
e = e.replace(x, (A, S, L, $, k) => xt(L, $, k));
|
|
3242
3242
|
const M = new RegExp(`(?<!["'=])(https?:\\/\\/music\\.apple\\.com\\/([a-z]{2})\\/([a-z-]+)\\/[^\\/\\s]+\\/(\\d+))(?!["'])`, "gi");
|
|
3243
|
-
e = e.replace(M, (A, S, L, $,
|
|
3243
|
+
e = e.replace(M, (A, S, L, $, k) => xt(L, $, k));
|
|
3244
3244
|
for (let A = a.length - 1; A >= 0; A--)
|
|
3245
3245
|
e = e.replace(`__PROTECTED_${A}__`, a[A]);
|
|
3246
3246
|
return e;
|
|
@@ -4864,6 +4864,9 @@ const Hr = {
|
|
|
4864
4864
|
// Show "Open in new tab" button in panel header to open preview URL externally
|
|
4865
4865
|
// Can be overridden per-artifact via openFile/openCode options or per-component via props
|
|
4866
4866
|
externalPreview: !1,
|
|
4867
|
+
// Show console panel footer for runtime logs/errors from HTML artifacts
|
|
4868
|
+
// When false, footer UI is hidden but console:log events still emit
|
|
4869
|
+
consolePanel: !0,
|
|
4867
4870
|
// Enable multi-tab mode (open multiple artifacts as tabs)
|
|
4868
4871
|
multiTab: !1,
|
|
4869
4872
|
// Panel configuration
|
|
@@ -5021,11 +5024,11 @@ function Ks(e, t) {
|
|
|
5021
5024
|
}
|
|
5022
5025
|
function wn(e = {}) {
|
|
5023
5026
|
const t = Ir(Ws, e), r = ra(), a = { ...Hr, ...t.panels }, s = Xs(a, t.cdnUrl), n = aa(s), o = ia(t.theme, t.colors || {}), i = Ks(t, n), u = fa(t.sharing), l = ha(t.editor);
|
|
5024
|
-
function d(
|
|
5025
|
-
let C = V.parse(
|
|
5027
|
+
function d(y, E, R = {}) {
|
|
5028
|
+
let C = V.parse(y);
|
|
5026
5029
|
const D = [], _ = { theme: o.resolved }, q = R.inlinePreview ?? t.inlinePreview ?? null, J = R.inlineCode ?? t.inlineCode ?? null, le = R.tabs ?? t.tabs ?? null, K = R.viewMode ?? t.viewMode ?? null;
|
|
5027
5030
|
if (t.processors.codeBlocks) {
|
|
5028
|
-
const U = ta(C,
|
|
5031
|
+
const U = ta(C, E, {
|
|
5029
5032
|
...t.codeExtraction,
|
|
5030
5033
|
inlinePreview: q,
|
|
5031
5034
|
inlineCode: J,
|
|
@@ -5041,9 +5044,9 @@ function wn(e = {}) {
|
|
|
5041
5044
|
artifacts: D
|
|
5042
5045
|
};
|
|
5043
5046
|
}
|
|
5044
|
-
async function p(
|
|
5045
|
-
const
|
|
5046
|
-
t.processors.math &&
|
|
5047
|
+
async function p(y = document) {
|
|
5048
|
+
const E = [], R = { theme: o.resolved };
|
|
5049
|
+
t.processors.math && E.push(jr()), t.processors.mermaid && E.push(_r(R)), t.processors.tables && Zs(), t.processors.audio && fs(y), t.syntaxHighlight && (pr(y), (y === document ? document : y).querySelectorAll(".artifactuse-inline-preview[data-smartdiff]").forEach((_) => {
|
|
5047
5050
|
var K;
|
|
5048
5051
|
const q = _.querySelector("code");
|
|
5049
5052
|
if (!q || q.dataset.smartdiffProcessed) return;
|
|
@@ -5054,27 +5057,27 @@ function wn(e = {}) {
|
|
|
5054
5057
|
return Y === "-" ? `<span class="token deleted">${U}</span>` : Y === "+" ? `<span class="token inserted">${U}</span>` : U;
|
|
5055
5058
|
}).join(`
|
|
5056
5059
|
`), q.dataset.smartdiffProcessed = "true";
|
|
5057
|
-
})), await Promise.all(
|
|
5060
|
+
})), await Promise.all(E);
|
|
5058
5061
|
}
|
|
5059
|
-
function w(
|
|
5060
|
-
if (
|
|
5061
|
-
console.warn("Attempted to open inline artifact in panel:",
|
|
5062
|
+
function w(y) {
|
|
5063
|
+
if (y.isInline) {
|
|
5064
|
+
console.warn("Attempted to open inline artifact in panel:", y.id);
|
|
5062
5065
|
return;
|
|
5063
5066
|
}
|
|
5064
|
-
t.multiTab ? r.openTab(
|
|
5067
|
+
t.multiTab ? r.openTab(y.id) : r.setActiveArtifact(y.id), r.setForceEmptyView(!1), r.setPanelOpen(!0), y.viewMode && r.setViewMode(y.viewMode), T("artifact:opened", y);
|
|
5065
5068
|
}
|
|
5066
|
-
function c(
|
|
5067
|
-
const C =
|
|
5068
|
-
return q ? (f(q.id,
|
|
5069
|
+
function c(y, E, R = {}) {
|
|
5070
|
+
const C = y.split(".").pop(), D = R.language || Ur(C) || C, _ = R.title || y, q = r.getState().artifacts.find((J) => J.title === _ && !J.isInline);
|
|
5071
|
+
return q ? (f(q.id, E, { ...R, title: _ }), w(q), R.viewMode ? r.setViewMode(R.viewMode) : R.tabs && r.setViewMode(R.tabs[0]), r.getArtifact(q.id)) : h(E, D, { ...R, title: _ });
|
|
5069
5072
|
}
|
|
5070
|
-
function h(
|
|
5071
|
-
const C = R.messageId || Fr("open"), D = A({ type:
|
|
5072
|
-
return _.title = R.title || _.title, _.isInline = !1, _.editorLanguage =
|
|
5073
|
+
function h(y, E, R = {}) {
|
|
5074
|
+
const C = R.messageId || Fr("open"), D = A({ type: E, language: E }) ? E : "txt", _ = $e(y, D, C, 0);
|
|
5075
|
+
return _.title = R.title || _.title, _.isInline = !1, _.editorLanguage = E, R.tabs && (_.tabs = R.tabs), R.panelUrl && (_.panelUrl = R.panelUrl), R.externalPreview !== void 0 && (_.externalPreview = R.externalPreview), r.addArtifact(_), w(_), R.viewMode ? r.setViewMode(R.viewMode) : R.tabs && r.setViewMode(R.tabs[0]), _;
|
|
5073
5076
|
}
|
|
5074
|
-
function f(
|
|
5075
|
-
const C = typeof
|
|
5077
|
+
function f(y, E, R = {}) {
|
|
5078
|
+
const C = typeof y == "string" ? y : y == null ? void 0 : y.id, D = r.getArtifact(C);
|
|
5076
5079
|
if (!D) return null;
|
|
5077
|
-
const _ = { ...D, code:
|
|
5080
|
+
const _ = { ...D, code: E, _refreshToken: Date.now() };
|
|
5078
5081
|
return R.title !== void 0 && (_.title = R.title), R.tabs !== void 0 && (_.tabs = R.tabs), R.panelUrl !== void 0 && (_.panelUrl = R.panelUrl), R.externalPreview !== void 0 && (_.externalPreview = R.externalPreview), r.addArtifact(_), T("artifact:updated", { artifactId: C, artifact: r.getArtifact(C) }), r.getArtifact(C);
|
|
5079
5082
|
}
|
|
5080
5083
|
function g() {
|
|
@@ -5084,70 +5087,73 @@ function wn(e = {}) {
|
|
|
5084
5087
|
r.setPanelOpen(!1), r.setFullscreen(!1), T("panel:closed");
|
|
5085
5088
|
}
|
|
5086
5089
|
function b() {
|
|
5087
|
-
const
|
|
5088
|
-
r.clearActiveArtifact(), r.setPanelOpen(
|
|
5090
|
+
const y = !r.getState().isPanelOpen;
|
|
5091
|
+
r.clearActiveArtifact(), r.setPanelOpen(y), y || r.setFullscreen(!1), T("panel:toggled", { isOpen: y });
|
|
5089
5092
|
}
|
|
5090
5093
|
function v() {
|
|
5091
|
-
const
|
|
5092
|
-
r.setFullscreen(
|
|
5094
|
+
const y = !r.getState().isFullscreen;
|
|
5095
|
+
r.setFullscreen(y), T("fullscreen:toggled", { isFullscreen: y });
|
|
5093
5096
|
}
|
|
5094
|
-
function x(
|
|
5095
|
-
r.setViewMode(
|
|
5097
|
+
function x(y) {
|
|
5098
|
+
r.setViewMode(y), T("viewMode:changed", { mode: y });
|
|
5096
5099
|
}
|
|
5097
|
-
function M(
|
|
5098
|
-
if (!
|
|
5099
|
-
if (
|
|
5100
|
-
const { type: R, language: C } =
|
|
5101
|
-
theme:
|
|
5100
|
+
function M(y, E = {}) {
|
|
5101
|
+
if (!y) return null;
|
|
5102
|
+
if (y.panelUrl) return y.panelUrl;
|
|
5103
|
+
const { type: R, language: C } = y, D = {
|
|
5104
|
+
theme: E.theme || o.resolved
|
|
5102
5105
|
}, _ = o.colors;
|
|
5103
5106
|
_ != null && _.primary && (D.accent = _.primary);
|
|
5104
5107
|
let q = i.resolve(R, D);
|
|
5105
5108
|
return !q && C && (q = i.resolve(C, D)), q;
|
|
5106
5109
|
}
|
|
5107
|
-
function A(
|
|
5108
|
-
return
|
|
5110
|
+
function A(y) {
|
|
5111
|
+
return y ? i.has(y.type) || i.has(y.language) : !1;
|
|
5109
5112
|
}
|
|
5110
|
-
function S(
|
|
5111
|
-
i.register(
|
|
5113
|
+
function S(y, E) {
|
|
5114
|
+
i.register(y, E);
|
|
5112
5115
|
}
|
|
5113
|
-
function L(
|
|
5114
|
-
i.unregister(
|
|
5116
|
+
function L(y) {
|
|
5117
|
+
i.unregister(y);
|
|
5115
5118
|
}
|
|
5116
5119
|
function $() {
|
|
5117
5120
|
return i.getTypes();
|
|
5118
5121
|
}
|
|
5119
|
-
function y
|
|
5120
|
-
n.send(
|
|
5122
|
+
function k(y, E) {
|
|
5123
|
+
n.send(y, E);
|
|
5121
5124
|
}
|
|
5122
5125
|
const z = /* @__PURE__ */ new Map();
|
|
5123
|
-
function j(
|
|
5124
|
-
return z.has(
|
|
5126
|
+
function j(y, E) {
|
|
5127
|
+
return z.has(y) || z.set(y, /* @__PURE__ */ new Set()), z.get(y).add(E), () => {
|
|
5125
5128
|
var R;
|
|
5126
|
-
(R = z.get(
|
|
5129
|
+
(R = z.get(y)) == null || R.delete(E);
|
|
5127
5130
|
};
|
|
5128
5131
|
}
|
|
5129
|
-
function
|
|
5132
|
+
function P(y, E) {
|
|
5130
5133
|
var R;
|
|
5131
|
-
(R = z.get(
|
|
5134
|
+
(R = z.get(y)) == null || R.delete(E);
|
|
5132
5135
|
}
|
|
5133
|
-
function T(
|
|
5136
|
+
function T(y, E) {
|
|
5134
5137
|
var R;
|
|
5135
|
-
(R = z.get(
|
|
5138
|
+
(R = z.get(y)) == null || R.forEach((C) => {
|
|
5136
5139
|
try {
|
|
5137
|
-
C(
|
|
5140
|
+
C(E);
|
|
5138
5141
|
} catch (D) {
|
|
5139
|
-
console.error(`Artifactuse event handler error (${
|
|
5142
|
+
console.error(`Artifactuse event handler error (${y}):`, D);
|
|
5140
5143
|
}
|
|
5141
5144
|
});
|
|
5142
5145
|
}
|
|
5143
|
-
n.on("ai:request", (
|
|
5144
|
-
|
|
5146
|
+
n.on("ai:request", (y) => T("ai:request", y)), n.on("save:request", (y) => T("save:request", y)), n.on("export:complete", (y) => T("export:complete", y)), n.on("form:submit", (y) => T("form:submit", y)), n.on("form:cancel", (y) => T("form:cancel", y)), n.on("form:step", (y) => T("form:step", y)), n.on("social:copy", (y) => T("social:copy", y)), n.on("edit:save", (y) => {
|
|
5147
|
+
y != null && y.artifactId && (y == null ? void 0 : y.code) !== void 0 && f(y.artifactId, y.code), T("edit:save", y);
|
|
5148
|
+
}), n.on("console:log", (y) => {
|
|
5149
|
+
const E = r.getState().activeArtifactId;
|
|
5150
|
+
T("console:log", { artifactId: E, ...y });
|
|
5145
5151
|
});
|
|
5146
5152
|
function N() {
|
|
5147
5153
|
o.apply();
|
|
5148
5154
|
}
|
|
5149
|
-
function X(
|
|
5150
|
-
o.set(
|
|
5155
|
+
function X(y) {
|
|
5156
|
+
o.set(y);
|
|
5151
5157
|
}
|
|
5152
5158
|
function O() {
|
|
5153
5159
|
return o.resolved;
|
|
@@ -5176,10 +5182,10 @@ function wn(e = {}) {
|
|
|
5176
5182
|
toggleFullscreen: v,
|
|
5177
5183
|
setViewMode: x,
|
|
5178
5184
|
getPanelUrl: M,
|
|
5179
|
-
sendToPanel:
|
|
5185
|
+
sendToPanel: k,
|
|
5180
5186
|
// Multi-tab
|
|
5181
|
-
closeTab: (
|
|
5182
|
-
closeOtherTabs: (
|
|
5187
|
+
closeTab: (y) => r.closeTab(y),
|
|
5188
|
+
closeOtherTabs: (y) => r.closeOtherTabs(y),
|
|
5183
5189
|
closeAllTabs: () => r.closeAllTabs(),
|
|
5184
5190
|
// Panel management (new)
|
|
5185
5191
|
hasPanel: A,
|
|
@@ -5195,7 +5201,7 @@ function wn(e = {}) {
|
|
|
5195
5201
|
getTheme: O,
|
|
5196
5202
|
// Events
|
|
5197
5203
|
on: j,
|
|
5198
|
-
off:
|
|
5204
|
+
off: P,
|
|
5199
5205
|
emit: T,
|
|
5200
5206
|
// Editor (CodeMirror integration)
|
|
5201
5207
|
editor: l,
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as s, aJ as r, at as t, J as d, d as c, G as o, a_ as i, am as m, k as l, ar as b, ap as E, ak as n, a6 as p, a7 as g, E as h, ae as M, al as T, m as u, aG as A, X as f, ai as S, aj as C, ad as y, a5 as P, aq as I, a0 as G, a1 as L, N as V, O as D, s as k, af as F, S as z, T as v, a8 as B, V as w, C as K, aO as X, aw as x, au as H, as as O, P as R, a3 as N, _ as U, Y as J, W, aa as Y, ah as _, H as j, I as q, a9 as Q, j as Z, ac as $, l as aa, U as ea, R as sa, ao as ra, y as ta, w as da, z as ca, B as oa, A as ia, L as ma, aZ as la, aI as ba, e as Ea, aL as na, a$ as pa, aT as ga, aB as ha, aW as Ma, aY as Ta, aX as ua, K as Aa, aP as fa, ax as Sa, aM as Ca, h as ya, aS as Pa, aA as Ia, i as Ga, u as La, aQ as Va, ay as Da, aV as ka, n as Fa, p as za, ag as va, F as Ba, a4 as wa, ab as Ka, $ as Xa, q as xa, o as Ha, an as Oa, M as Ra, aN as Na, aU as Ua, av as Ja, aC as Wa, a2 as Ya, Z as _a, Q as ja, aF as qa, x as Qa, t as Za, r as $a, v as ae, aD as ee, aR as se, az as re, aK as te, aH as de, aE as ce } from "./index-
|
|
1
|
+
import { D as s, aJ as r, at as t, J as d, d as c, G as o, a_ as i, am as m, k as l, ar as b, ap as E, ak as n, a6 as p, a7 as g, E as h, ae as M, al as T, m as u, aG as A, X as f, ai as S, aj as C, ad as y, a5 as P, aq as I, a0 as G, a1 as L, N as V, O as D, s as k, af as F, S as z, T as v, a8 as B, V as w, C as K, aO as X, aw as x, au as H, as as O, P as R, a3 as N, _ as U, Y as J, W, aa as Y, ah as _, H as j, I as q, a9 as Q, j as Z, ac as $, l as aa, U as ea, R as sa, ao as ra, y as ta, w as da, z as ca, B as oa, A as ia, L as ma, aZ as la, aI as ba, e as Ea, aL as na, a$ as pa, aT as ga, aB as ha, aW as Ma, aY as Ta, aX as ua, K as Aa, aP as fa, ax as Sa, aM as Ca, h as ya, aS as Pa, aA as Ia, i as Ga, u as La, aQ as Va, ay as Da, aV as ka, n as Fa, p as za, ag as va, F as Ba, a4 as wa, ab as Ka, $ as Xa, q as xa, o as Ha, an as Oa, M as Ra, aN as Na, aU as Ua, av as Ja, aC as Wa, a2 as Ya, Z as _a, Q as ja, aF as qa, x as Qa, t as Za, r as $a, v as ae, aD as ee, aR as se, az as re, aK as te, aH as de, aE as ce } from "./index-vmcpJRYe.js";
|
|
2
2
|
export {
|
|
3
3
|
s as DEFAULT_PANELS,
|
|
4
4
|
r as copyTableToClipboard,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Side panel for viewing artifact previews and code
|
|
5
5
|
* Flex-based layout - should be a sibling to main content area
|
|
6
6
|
*/
|
|
7
|
-
export default function ArtifactusePanel({ onAIRequest, onSave, onExport, className, panelWidth: panelWidthProp, splitPosition: splitPositionProp, externalPreview: externalPreviewProp, }: {
|
|
7
|
+
export default function ArtifactusePanel({ onAIRequest, onSave, onExport, className, panelWidth: panelWidthProp, splitPosition: splitPositionProp, externalPreview: externalPreviewProp, consolePanel: consolePanelProp, }: {
|
|
8
8
|
onAIRequest: any;
|
|
9
9
|
onSave: any;
|
|
10
10
|
onExport: any;
|
|
@@ -12,4 +12,5 @@ export default function ArtifactusePanel({ onAIRequest, onSave, onExport, classN
|
|
|
12
12
|
panelWidth: any;
|
|
13
13
|
splitPosition: any;
|
|
14
14
|
externalPreview: any;
|
|
15
|
+
consolePanel: any;
|
|
15
16
|
}): any;
|