payload-richtext-tiptap 0.0.29 → 0.0.30

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.
@@ -1 +1 @@
1
- {"version":3,"file":"InstagramEmbed.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Instagram/InstagramEmbed.tsx"],"names":[],"mappings":"gCAIuB;IAAE,IAAI,EAAE;QAAE,KAAK,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE;AAA5D,wBAeE"}
1
+ {"version":3,"file":"InstagramEmbed.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Instagram/InstagramEmbed.tsx"],"names":[],"mappings":"gCAKuB;IAAE,IAAI,EAAE;QAAE,KAAK,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE;AAA5D,wBAeE"}
@@ -2,13 +2,14 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Instagram } from "lucide-react";
3
3
  import { InstagramEmbed } from "react-social-media-embed";
4
4
  import SocialMediaEmbed from "../SocialMediaEmbed.js";
5
+ import { twj } from "tw-to-css";
5
6
  export default ((props)=>{
6
7
  return /*#__PURE__*/ _jsx(SocialMediaEmbed, {
7
8
  props: props,
8
9
  Icon: Instagram,
9
10
  text: "Embed a post from Instagram",
10
11
  children: /*#__PURE__*/ _jsx(InstagramEmbed, {
11
- className: "max-w-[328px]",
12
+ style: twj("max-w-[328px]"),
12
13
  url: props?.node?.attrs?.url ?? "",
13
14
  width: 328,
14
15
  captioned: true
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Instagram/InstagramEmbed.tsx"],"sourcesContent":["import { Instagram } from \"lucide-react\";\nimport { InstagramEmbed } from \"react-social-media-embed\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Instagram}\n text={\"Embed a post from Instagram\"}\n >\n <InstagramEmbed\n className=\"max-w-[328px]\"\n url={props?.node?.attrs?.url ?? \"\"}\n width={328}\n captioned\n />\n </SocialMediaEmbed>\n );\n};\n"],"names":["Instagram","InstagramEmbed","SocialMediaEmbed","props","Icon","text","className","url","node","attrs","width","captioned"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":";AAAA,SAASA,SAAS,QAAQ,eAAe;AACzC,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,OAAOC,sBAAsB,yBAAyB;AAEtD,eAAe,CAAA,CAACC;IACd,qBACE,KAACD;QACCC,OAAOA;QACPC,MAAMJ;QACNK,MAAM;kBAEN,cAAA,KAACJ;YACCK,WAAU;YACVC,KAAKJ,OAAOK,MAAMC,OAAOF,OAAO;YAChCG,OAAO;YACPC,SAAS;;;AAIjB,CAAA,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Instagram/InstagramEmbed.tsx"],"sourcesContent":["import { Instagram } from \"lucide-react\";\nimport { InstagramEmbed } from \"react-social-media-embed\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\nimport { twj } from \"tw-to-css\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Instagram}\n text={\"Embed a post from Instagram\"}\n >\n <InstagramEmbed\n style={twj(\"max-w-[328px]\")}\n url={props?.node?.attrs?.url ?? \"\"}\n width={328}\n captioned\n />\n </SocialMediaEmbed>\n );\n};\n"],"names":["Instagram","InstagramEmbed","SocialMediaEmbed","twj","props","Icon","text","style","url","node","attrs","width","captioned"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":";AAAA,SAASA,SAAS,QAAQ,eAAe;AACzC,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,OAAOC,sBAAsB,yBAAyB;AACtD,SAASC,GAAG,QAAQ,YAAY;AAEhC,eAAe,CAAA,CAACC;IACd,qBACE,KAACF;QACCE,OAAOA;QACPC,MAAML;QACNM,MAAM;kBAEN,cAAA,KAACL;YACCM,OAAOJ,IAAI;YACXK,KAAKJ,OAAOK,MAAMC,OAAOF,OAAO;YAChCG,OAAO;YACPC,SAAS;;;AAIjB,CAAA,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"SocialMediaEmbed.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.tsx"],"names":[],"mappings":"0DAEiD,GAAG;AAApD,wBA2CE"}
1
+ {"version":3,"file":"SocialMediaEmbed.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.tsx"],"names":[],"mappings":"0DAGiD,GAAG;AAApD,wBA6CE"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { NodeViewContent, NodeViewWrapper } from "@tiptap/react";
3
+ import { twj } from "tw-to-css";
3
4
  export default (({ props, children, Icon, text })=>{
4
5
  return /*#__PURE__*/ _jsx(NodeViewWrapper, {
5
6
  className: "react-component",
@@ -16,7 +17,7 @@ export default (({ props, children, Icon, text })=>{
16
17
  width: "100%"
17
18
  },
18
19
  children: !props?.node?.attrs?.url ?? "" ? /*#__PURE__*/ _jsxs("div", {
19
- className: "w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard",
20
+ style: twj("w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard"),
20
21
  draggable: "true",
21
22
  "data-drag-handle": "",
22
23
  contentEditable: "false",
@@ -25,8 +26,8 @@ export default (({ props, children, Icon, text })=>{
25
26
  size: 24
26
27
  }),
27
28
  /*#__PURE__*/ _jsx("p", {
28
- className: "w-full flex items-center justify-start mt-0",
29
29
  style: {
30
+ ...twj("w-full flex items-center justify-start mt-0"),
30
31
  marginTop: 0
31
32
  },
32
33
  children: text
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\n\nexport default ({ props, children, Icon, text }: any) => {\n return (\n <NodeViewWrapper\n className=\"react-component\"\n onClick={() => {\n props.editor.commands.setNodeSelection(props.getPos());\n }}\n >\n <NodeViewContent contentEditable=\"false\" className=\"socialMediaContainer\">\n {props?.node.type.spec.draggable ? (\n <div draggable=\"true\" data-drag-handle=\"\" style={{ width: \"100%\" }}>\n {!props?.node?.attrs?.url ?? \"\" ? (\n <div\n className=\"w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard\"\n draggable=\"true\"\n data-drag-handle=\"\"\n contentEditable=\"false\"\n >\n <Icon size={24} />\n <p\n className=\"w-full flex items-center justify-start mt-0\"\n style={{\n marginTop: 0,\n }}\n >\n {text}\n </p>\n </div>\n ) : (\n <div\n style={{ display: \"flex\", justifyContent: \"center\" }}\n draggable=\"true\"\n data-drag-handle=\"\"\n contentEditable=\"false\"\n >\n {children}\n </div>\n )}\n </div>\n ) : null}\n </NodeViewContent>\n </NodeViewWrapper>\n );\n};\n"],"names":["NodeViewContent","NodeViewWrapper","props","children","Icon","text","className","onClick","editor","commands","setNodeSelection","getPos","contentEditable","node","type","spec","draggable","div","data-drag-handle","style","width","attrs","url","size","p","marginTop","display","justifyContent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,SAASA,eAAe,EAAEC,eAAe,QAAQ,gBAAgB;AAEjE,eAAe,CAAA,CAAC,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,IAAI,EAAO;IAClD,qBACE,KAACJ;QACCK,WAAU;QACVC,SAAS;YACPL,MAAMM,MAAM,CAACC,QAAQ,CAACC,gBAAgB,CAACR,MAAMS,MAAM;QACrD;kBAEA,cAAA,KAACX;YAAgBY,iBAAgB;YAAQN,WAAU;sBAChDJ,OAAOW,KAAKC,KAAKC,KAAKC,0BACrB,KAACC;gBAAID,WAAU;gBAAOE,oBAAiB;gBAAGC,OAAO;oBAAEC,OAAO;gBAAO;0BAC9D,CAAClB,OAAOW,MAAMQ,OAAOC,OAAO,mBAC3B,MAACL;oBACCX,WAAU;oBACVU,WAAU;oBACVE,oBAAiB;oBACjBN,iBAAgB;;sCAEhB,KAACR;4BAAKmB,MAAM;;sCACZ,KAACC;4BACClB,WAAU;4BACVa,OAAO;gCACLM,WAAW;4BACb;sCAECpB;;;mCAIL,KAACY;oBACCE,OAAO;wBAAEO,SAAS;wBAAQC,gBAAgB;oBAAS;oBACnDX,WAAU;oBACVE,oBAAiB;oBACjBN,iBAAgB;8BAEfT;;iBAIL;;;AAIZ,CAAA,EAAE"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\nimport { twj } from \"tw-to-css\";\n\nexport default ({ props, children, Icon, text }: any) => {\n return (\n <NodeViewWrapper\n className=\"react-component\"\n onClick={() => {\n props.editor.commands.setNodeSelection(props.getPos());\n }}\n >\n <NodeViewContent contentEditable=\"false\" className=\"socialMediaContainer\">\n {props?.node.type.spec.draggable ? (\n <div draggable=\"true\" data-drag-handle=\"\" style={{ width: \"100%\" }}>\n {!props?.node?.attrs?.url ?? \"\" ? (\n <div\n style={twj(\n \"w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard\"\n )}\n draggable=\"true\"\n data-drag-handle=\"\"\n contentEditable=\"false\"\n >\n <Icon size={24} />\n <p\n style={{\n ...twj(\"w-full flex items-center justify-start mt-0\"),\n marginTop: 0,\n }}\n >\n {text}\n </p>\n </div>\n ) : (\n <div\n style={{ display: \"flex\", justifyContent: \"center\" }}\n draggable=\"true\"\n data-drag-handle=\"\"\n contentEditable=\"false\"\n >\n {children}\n </div>\n )}\n </div>\n ) : null}\n </NodeViewContent>\n </NodeViewWrapper>\n );\n};\n"],"names":["NodeViewContent","NodeViewWrapper","twj","props","children","Icon","text","className","onClick","editor","commands","setNodeSelection","getPos","contentEditable","node","type","spec","draggable","div","data-drag-handle","style","width","attrs","url","size","p","marginTop","display","justifyContent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,SAASA,eAAe,EAAEC,eAAe,QAAQ,gBAAgB;AACjE,SAASC,GAAG,QAAQ,YAAY;AAEhC,eAAe,CAAA,CAAC,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,IAAI,EAAO;IAClD,qBACE,KAACL;QACCM,WAAU;QACVC,SAAS;YACPL,MAAMM,MAAM,CAACC,QAAQ,CAACC,gBAAgB,CAACR,MAAMS,MAAM;QACrD;kBAEA,cAAA,KAACZ;YAAgBa,iBAAgB;YAAQN,WAAU;sBAChDJ,OAAOW,KAAKC,KAAKC,KAAKC,0BACrB,KAACC;gBAAID,WAAU;gBAAOE,oBAAiB;gBAAGC,OAAO;oBAAEC,OAAO;gBAAO;0BAC9D,CAAClB,OAAOW,MAAMQ,OAAOC,OAAO,mBAC3B,MAACL;oBACCE,OAAOlB,IACL;oBAEFe,WAAU;oBACVE,oBAAiB;oBACjBN,iBAAgB;;sCAEhB,KAACR;4BAAKmB,MAAM;;sCACZ,KAACC;4BACCL,OAAO;gCACL,GAAGlB,IAAI,8CAA8C;gCACrDwB,WAAW;4BACb;sCAECpB;;;mCAIL,KAACY;oBACCE,OAAO;wBAAEO,SAAS;wBAAQC,gBAAgB;oBAAS;oBACnDX,WAAU;oBACVE,oBAAiB;oBACjBN,iBAAgB;8BAEfT;;iBAIL;;;AAIZ,CAAA,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"IframeLinkEditorPanel.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAMrD,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,kBAAkB,+BAG5B,0BAA0B;;;sBAIjB,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC;sBAS1C,KAAK,CAAC,SAAS;CAetB,CAAC;AAEF,eAAO,MAAM,qBAAqB,oDAI/B,0BAA0B,sBAiC5B,CAAC"}
1
+ {"version":3,"file":"IframeLinkEditorPanel.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAOrD,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,kBAAkB,+BAG5B,0BAA0B;;;sBAIjB,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC;sBAS1C,KAAK,CAAC,SAAS;CAetB,CAAC;AAEF,eAAO,MAAM,qBAAqB,oDAI/B,0BAA0B,sBAuC5B,CAAC"}
@@ -4,6 +4,7 @@ import { Link } from "lucide-react";
4
4
  import { Button } from "../../ui/Button/Button.js";
5
5
  import { Icon } from "../../ui/Icon.js";
6
6
  import { Surface } from "../../ui/Surface.js";
7
+ import { twj } from "tw-to-css";
7
8
  export const useLinkEditorState = ({ initialSrc, onSetLink })=>{
8
9
  const [url, setUrl] = useState(initialSrc || "");
9
10
  const onChange = useCallback((event)=>{
@@ -33,19 +34,19 @@ export const IframeLinkEditorPanel = ({ onSetLink, initialOpenInNewTab, initialS
33
34
  initialSrc
34
35
  });
35
36
  return /*#__PURE__*/ _jsx(Surface, {
36
- className: "p-2",
37
+ style: twj("p-2"),
37
38
  children: /*#__PURE__*/ _jsxs("div", {
38
- className: "flex items-center gap-2",
39
+ style: twj("flex items-center gap-2"),
39
40
  children: [
40
41
  /*#__PURE__*/ _jsxs("label", {
41
- className: "flex items-center gap-2 p-2 rounded-lg bg-neutral-100 dark:bg-neutral-900 cursor-text",
42
+ style: twj("flex items-center gap-2 p-2 rounded-lg bg-neutral-100 dark:bg-neutral-900 cursor-text"),
42
43
  children: [
43
44
  /*#__PURE__*/ _jsx(Icon, {
44
45
  icon: Link,
45
46
  className: "flex-none text-black dark:text-white"
46
47
  }),
47
48
  /*#__PURE__*/ _jsx("textarea", {
48
- className: "flex-1 bg-transparent outline-none min-w-[12rem] text-black text-sm dark:text-white",
49
+ style: twj("flex-1 bg-transparent outline-none min-w-[12rem] text-black text-sm dark:text-white"),
49
50
  placeholder: "Enter Embed Code",
50
51
  value: state.url,
51
52
  onChange: state.onChange
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport { Link } from \"lucide-react\";\nimport { Button } from \"../../ui/Button/Button.js\";\nimport { Icon } from \"../../ui/Icon.js\";\nimport { Surface } from \"../../ui/Surface.js\";\n\nexport type IframeLinkEditorPanelProps = {\n initialSrc?: string;\n initialOpenInNewTab?: boolean;\n onSetLink: (src: string) => void;\n};\n\nexport const useLinkEditorState = ({\n initialSrc,\n onSetLink,\n}: IframeLinkEditorPanelProps) => {\n const [url, setUrl] = useState(initialSrc || \"\");\n\n const onChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n setUrl(event.target.value);\n },\n []\n );\n\n // const isValidUrl = useMemo(() => /^(\\S+):(\\/\\/)?\\S+$/.test(url), [url]);\n\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n // if (isValidUrl) {\n onSetLink(url);\n // }\n },\n [url, onSetLink]\n );\n\n return {\n url,\n setUrl,\n onChange,\n handleSubmit,\n };\n};\n\nexport const IframeLinkEditorPanel = ({\n onSetLink,\n initialOpenInNewTab,\n initialSrc,\n}: IframeLinkEditorPanelProps) => {\n const state = useLinkEditorState({\n onSetLink,\n initialOpenInNewTab,\n initialSrc,\n });\n\n return (\n <Surface className=\"p-2\">\n <div className=\"flex items-center gap-2\">\n <label className=\"flex items-center gap-2 p-2 rounded-lg bg-neutral-100 dark:bg-neutral-900 cursor-text\">\n <Icon icon={Link} className=\"flex-none text-black dark:text-white\" />\n <textarea\n className=\"flex-1 bg-transparent outline-none min-w-[12rem] text-black text-sm dark:text-white\"\n placeholder=\"Enter Embed Code\"\n value={state.url}\n onChange={state.onChange}\n />\n </label>\n <Button\n variant=\"primary\"\n buttonSize=\"small\"\n type=\"button\"\n onClick={(e) => {\n state.handleSubmit(e);\n }}\n // disabled={!state.isValidUrl}\n >\n Set Link\n </Button>\n </div>\n </Surface>\n );\n};\n"],"names":["React","useCallback","useState","Link","Button","Icon","Surface","useLinkEditorState","initialSrc","onSetLink","url","setUrl","onChange","event","target","value","handleSubmit","e","preventDefault","IframeLinkEditorPanel","initialOpenInNewTab","state","className","div","label","icon","textarea","placeholder","variant","buttonSize","type","onClick"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,OAAOA,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AACrD,SAASC,IAAI,QAAQ,eAAe;AACpC,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,IAAI,QAAQ,mBAAmB;AACxC,SAASC,OAAO,QAAQ,sBAAsB;AAQ9C,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,UAAU,EACVC,SAAS,EACkB;IAC3B,MAAM,CAACC,KAAKC,OAAO,GAAGT,SAASM,cAAc;IAE7C,MAAMI,WAAWX,YACf,CAACY;QACCF,OAAOE,MAAMC,MAAM,CAACC,KAAK;IAC3B,GACA,EAAE;IAGJ,2EAA2E;IAE3E,MAAMC,eAAef,YACnB,CAACgB;QACCA,EAAEC,cAAc;QAChB,oBAAoB;QACpBT,UAAUC;IACV,IAAI;IACN,GACA;QAACA;QAAKD;KAAU;IAGlB,OAAO;QACLC;QACAC;QACAC;QACAI;IACF;AACF,EAAE;AAEF,OAAO,MAAMG,wBAAwB,CAAC,EACpCV,SAAS,EACTW,mBAAmB,EACnBZ,UAAU,EACiB;IAC3B,MAAMa,QAAQd,mBAAmB;QAC/BE;QACAW;QACAZ;IACF;IAEA,qBACE,KAACF;QAAQgB,WAAU;kBACjB,cAAA,MAACC;YAAID,WAAU;;8BACb,MAACE;oBAAMF,WAAU;;sCACf,KAACjB;4BAAKoB,MAAMtB;4BAAMmB,WAAU;;sCAC5B,KAACI;4BACCJ,WAAU;4BACVK,aAAY;4BACZZ,OAAOM,MAAMX,GAAG;4BAChBE,UAAUS,MAAMT,QAAQ;;;;8BAG5B,KAACR;oBACCwB,SAAQ;oBACRC,YAAW;oBACXC,MAAK;oBACLC,SAAS,CAACd;wBACRI,MAAML,YAAY,CAACC;oBACrB;8BAED;;;;;AAMT,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport { Link } from \"lucide-react\";\nimport { Button } from \"../../ui/Button/Button.js\";\nimport { Icon } from \"../../ui/Icon.js\";\nimport { Surface } from \"../../ui/Surface.js\";\nimport { twj } from \"tw-to-css\";\n\nexport type IframeLinkEditorPanelProps = {\n initialSrc?: string;\n initialOpenInNewTab?: boolean;\n onSetLink: (src: string) => void;\n};\n\nexport const useLinkEditorState = ({\n initialSrc,\n onSetLink,\n}: IframeLinkEditorPanelProps) => {\n const [url, setUrl] = useState(initialSrc || \"\");\n\n const onChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n setUrl(event.target.value);\n },\n []\n );\n\n // const isValidUrl = useMemo(() => /^(\\S+):(\\/\\/)?\\S+$/.test(url), [url]);\n\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n // if (isValidUrl) {\n onSetLink(url);\n // }\n },\n [url, onSetLink]\n );\n\n return {\n url,\n setUrl,\n onChange,\n handleSubmit,\n };\n};\n\nexport const IframeLinkEditorPanel = ({\n onSetLink,\n initialOpenInNewTab,\n initialSrc,\n}: IframeLinkEditorPanelProps) => {\n const state = useLinkEditorState({\n onSetLink,\n initialOpenInNewTab,\n initialSrc,\n });\n\n return (\n <Surface style={twj(\"p-2\")}>\n <div style={twj(\"flex items-center gap-2\")}>\n <label\n style={twj(\n \"flex items-center gap-2 p-2 rounded-lg bg-neutral-100 dark:bg-neutral-900 cursor-text\"\n )}\n >\n <Icon icon={Link} className=\"flex-none text-black dark:text-white\" />\n <textarea\n style={twj(\n \"flex-1 bg-transparent outline-none min-w-[12rem] text-black text-sm dark:text-white\"\n )}\n placeholder=\"Enter Embed Code\"\n value={state.url}\n onChange={state.onChange}\n />\n </label>\n <Button\n variant=\"primary\"\n buttonSize=\"small\"\n type=\"button\"\n onClick={(e) => {\n state.handleSubmit(e);\n }}\n // disabled={!state.isValidUrl}\n >\n Set Link\n </Button>\n </div>\n </Surface>\n );\n};\n"],"names":["React","useCallback","useState","Link","Button","Icon","Surface","twj","useLinkEditorState","initialSrc","onSetLink","url","setUrl","onChange","event","target","value","handleSubmit","e","preventDefault","IframeLinkEditorPanel","initialOpenInNewTab","state","style","div","label","icon","className","textarea","placeholder","variant","buttonSize","type","onClick"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,OAAOA,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AACrD,SAASC,IAAI,QAAQ,eAAe;AACpC,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,IAAI,QAAQ,mBAAmB;AACxC,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,GAAG,QAAQ,YAAY;AAQhC,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,UAAU,EACVC,SAAS,EACkB;IAC3B,MAAM,CAACC,KAAKC,OAAO,GAAGV,SAASO,cAAc;IAE7C,MAAMI,WAAWZ,YACf,CAACa;QACCF,OAAOE,MAAMC,MAAM,CAACC,KAAK;IAC3B,GACA,EAAE;IAGJ,2EAA2E;IAE3E,MAAMC,eAAehB,YACnB,CAACiB;QACCA,EAAEC,cAAc;QAChB,oBAAoB;QACpBT,UAAUC;IACV,IAAI;IACN,GACA;QAACA;QAAKD;KAAU;IAGlB,OAAO;QACLC;QACAC;QACAC;QACAI;IACF;AACF,EAAE;AAEF,OAAO,MAAMG,wBAAwB,CAAC,EACpCV,SAAS,EACTW,mBAAmB,EACnBZ,UAAU,EACiB;IAC3B,MAAMa,QAAQd,mBAAmB;QAC/BE;QACAW;QACAZ;IACF;IAEA,qBACE,KAACH;QAAQiB,OAAOhB,IAAI;kBAClB,cAAA,MAACiB;YAAID,OAAOhB,IAAI;;8BACd,MAACkB;oBACCF,OAAOhB,IACL;;sCAGF,KAACF;4BAAKqB,MAAMvB;4BAAMwB,WAAU;;sCAC5B,KAACC;4BACCL,OAAOhB,IACL;4BAEFsB,aAAY;4BACZb,OAAOM,MAAMX,GAAG;4BAChBE,UAAUS,MAAMT,QAAQ;;;;8BAG5B,KAACT;oBACC0B,SAAQ;oBACRC,YAAW;oBACXC,MAAK;oBACLC,SAAS,CAACf;wBACRI,MAAML,YAAY,CAACC;oBACrB;8BAED;;;;;AAMT,EAAE"}