@seed-ship/mcp-ui-solid 1.0.12 → 1.0.15

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.
Files changed (57) hide show
  1. package/LICENSE +0 -2
  2. package/dist/components/UIResourceRenderer.d.ts.map +1 -1
  3. package/dist/components.cjs +3 -3
  4. package/dist/components.js +3 -3
  5. package/dist/hooks.cjs +1 -1
  6. package/dist/hooks.js +1 -1
  7. package/dist/index.cjs +6 -6
  8. package/dist/index.js +6 -6
  9. package/dist/mcp-ui-solid/src/components/GenerativeUIErrorBoundary.cjs.map +1 -0
  10. package/dist/mcp-ui-solid/src/components/GenerativeUIErrorBoundary.js.map +1 -0
  11. package/dist/mcp-ui-solid/src/components/StreamingUIRenderer.cjs.map +1 -0
  12. package/dist/mcp-ui-solid/src/components/StreamingUIRenderer.js.map +1 -0
  13. package/dist/{components → mcp-ui-solid/src/components}/UIResourceRenderer.cjs +80 -5
  14. package/dist/mcp-ui-solid/src/components/UIResourceRenderer.cjs.map +1 -0
  15. package/dist/{components → mcp-ui-solid/src/components}/UIResourceRenderer.js +82 -7
  16. package/dist/mcp-ui-solid/src/components/UIResourceRenderer.js.map +1 -0
  17. package/dist/mcp-ui-solid/src/hooks/useStreamingUI.cjs.map +1 -0
  18. package/dist/mcp-ui-solid/src/hooks/useStreamingUI.js.map +1 -0
  19. package/dist/mcp-ui-solid/src/services/component-registry.cjs.map +1 -0
  20. package/dist/mcp-ui-solid/src/services/component-registry.js.map +1 -0
  21. package/dist/mcp-ui-solid/src/services/validation.cjs.map +1 -0
  22. package/dist/mcp-ui-solid/src/services/validation.js.map +1 -0
  23. package/dist/mcp-ui-solid/src/utils/logger.cjs.map +1 -0
  24. package/dist/mcp-ui-solid/src/utils/logger.js.map +1 -0
  25. package/dist/node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.esm.cjs +1118 -0
  26. package/dist/node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.esm.cjs.map +1 -0
  27. package/dist/node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.esm.js +1119 -0
  28. package/dist/node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.esm.js.map +1 -0
  29. package/dist/types/index.d.ts +1 -1
  30. package/dist/types/index.d.ts.map +1 -1
  31. package/package.json +2 -1
  32. package/dist/components/GenerativeUIErrorBoundary.cjs.map +0 -1
  33. package/dist/components/GenerativeUIErrorBoundary.js.map +0 -1
  34. package/dist/components/StreamingUIRenderer.cjs.map +0 -1
  35. package/dist/components/StreamingUIRenderer.js.map +0 -1
  36. package/dist/components/UIResourceRenderer.cjs.map +0 -1
  37. package/dist/components/UIResourceRenderer.js.map +0 -1
  38. package/dist/hooks/useStreamingUI.cjs.map +0 -1
  39. package/dist/hooks/useStreamingUI.js.map +0 -1
  40. package/dist/services/component-registry.cjs.map +0 -1
  41. package/dist/services/component-registry.js.map +0 -1
  42. package/dist/services/validation.cjs.map +0 -1
  43. package/dist/services/validation.js.map +0 -1
  44. package/dist/utils/logger.cjs.map +0 -1
  45. package/dist/utils/logger.js.map +0 -1
  46. /package/dist/{components → mcp-ui-solid/src/components}/GenerativeUIErrorBoundary.cjs +0 -0
  47. /package/dist/{components → mcp-ui-solid/src/components}/GenerativeUIErrorBoundary.js +0 -0
  48. /package/dist/{components → mcp-ui-solid/src/components}/StreamingUIRenderer.cjs +0 -0
  49. /package/dist/{components → mcp-ui-solid/src/components}/StreamingUIRenderer.js +0 -0
  50. /package/dist/{hooks → mcp-ui-solid/src/hooks}/useStreamingUI.cjs +0 -0
  51. /package/dist/{hooks → mcp-ui-solid/src/hooks}/useStreamingUI.js +0 -0
  52. /package/dist/{services → mcp-ui-solid/src/services}/component-registry.cjs +0 -0
  53. /package/dist/{services → mcp-ui-solid/src/services}/component-registry.js +0 -0
  54. /package/dist/{services → mcp-ui-solid/src/services}/validation.cjs +0 -0
  55. /package/dist/{services → mcp-ui-solid/src/services}/validation.js +0 -0
  56. /package/dist/{utils → mcp-ui-solid/src/utils}/logger.cjs +0 -0
  57. /package/dist/{utils → mcp-ui-solid/src/utils}/logger.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marked.esm.js","sources":["../../../../../../../../node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.esm.js"],"sourcesContent":["/**\n * marked v16.4.2 - a markdown parser\n * Copyright (c) 2018-2025, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=L();function G(l){T=l}var E={exec:()=>null};function d(l,e=\"\"){let t=typeof l==\"string\"?l:l.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var be=(()=>{try{return!!new RegExp(\"(?<=1)(?<!1)\")}catch{return!1}})(),m={codeRemoveIndent:/^(?: {1,4}| {0,3}\\t)/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceTabs:/^\\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] /,listReplaceTask:/^\\[[ xX]\\] +/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,unescapeTest:/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:l=>new RegExp(`^( {0,3}${l})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}#`),htmlBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}<(?:[a-z].*>|!--)`,\"i\")},Re=/^(?:[ \\t]*(?:\\n|$))+/,Te=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Oe=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,I=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,we=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,F=/(?:[*+-]|\\d{1,9}[.)])/,ie=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,oe=d(ie).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),ye=d(ie).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),j=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,Pe=/^[^\\n]+/,Q=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,Se=d(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",Q).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),$e=d(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,F).getRegex(),v=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",U=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,_e=d(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",U).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),ae=d(j).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Le=d(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",ae).getRegex(),K={blockquote:Le,code:Te,def:Se,fences:Oe,heading:we,hr:I,html:_e,lheading:oe,list:$e,newline:Re,paragraph:ae,table:E,text:Pe},re=d(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Me={...K,lheading:ye,table:re,paragraph:d(j).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",re).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},ze={...K,html:d(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",U).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:E,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:d(j).replace(\"hr\",I).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",oe).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Ae=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,Ee=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,le=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ie=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,D=/[\\p{P}\\p{S}]/u,W=/[\\s\\p{P}\\p{S}]/u,ue=/[^\\s\\p{P}\\p{S}]/u,Ce=d(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,W).getRegex(),pe=/(?!~)[\\p{P}\\p{S}]/u,Be=/(?!~)[\\s\\p{P}\\p{S}]/u,qe=/(?:[^\\s\\p{P}\\p{S}]|~)/u,ve=d(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",be?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ce=/^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/,De=d(ce,\"u\").replace(/punct/g,D).getRegex(),He=d(ce,\"u\").replace(/punct/g,pe).getRegex(),he=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",Ze=d(he,\"gu\").replace(/notPunctSpace/g,ue).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Ge=d(he,\"gu\").replace(/notPunctSpace/g,qe).replace(/punctSpace/g,Be).replace(/punct/g,pe).getRegex(),Ne=d(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,ue).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Fe=d(/\\\\(punct)/,\"gu\").replace(/punct/g,D).getRegex(),je=d(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Qe=d(U).replace(\"(?:-->|$)\",\"-->\").getRegex(),Ue=d(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",Qe).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/,Ke=d(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),de=d(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",Q).getRegex(),ke=d(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",Q).getRegex(),We=d(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",de).replace(\"nolink\",ke).getRegex(),se=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,X={_backpedal:E,anyPunctuation:Fe,autolink:je,blockSkip:ve,br:le,code:Ee,del:E,emStrongLDelim:De,emStrongRDelimAst:Ze,emStrongRDelimUnd:Ne,escape:Ae,link:Ke,nolink:ke,punctuation:Ce,reflink:de,reflinkSearch:We,tag:Ue,text:Ie,url:E},Xe={...X,link:d(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:d(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},N={...X,emStrongRDelimAst:Ge,emStrongLDelim:He,url:d(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",se).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:d(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\",se).getRegex()},Je={...N,br:d(le).replace(\"{2,}\",\"*\").getRegex(),text:d(N.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},C={normal:K,gfm:Me,pedantic:ze},M={normal:X,gfm:N,breaks:Je,pedantic:Xe};var Ve={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},ge=l=>Ve[l];function w(l,e){if(e){if(m.escapeTest.test(l))return l.replace(m.escapeReplace,ge)}else if(m.escapeTestNoEncode.test(l))return l.replace(m.escapeReplaceNoEncode,ge);return l}function J(l){try{l=encodeURI(l).replace(m.percentDecode,\"%\")}catch{return null}return l}function V(l,e){let t=l.replace(m.findPipe,(i,s,a)=>{let o=!1,p=s;for(;--p>=0&&a[p]===\"\\\\\";)o=!o;return o?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function z(l,e,t){let n=l.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=l.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return l.slice(0,n-r)}function fe(l,e){if(l.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<l.length;n++)if(l[n]===\"\\\\\")n++;else if(l[n]===e[0])t++;else if(l[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function me(l,e,t,n,r){let i=e.href,s=e.title||null,a=l[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let o={type:l[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function Ye(l,e,t){let n=l.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`\n`)}var y=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:z(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Ye(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=z(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:z(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=z(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let a=!1,o=[],p;for(p=0;p<n.length;p++)if(this.rules.other.blockquoteStart.test(n[p]))o.push(n[p]),a=!0;else if(!a)o.push(n[p]);else break;n=n.slice(p);let u=o.join(`\n`),c=u.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${u}`:u,i=i?`${i}\n${c}`:c;let g=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=g,n.length===0)break;let h=s.at(-1);if(h?.type===\"code\")break;if(h?.type===\"blockquote\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.blockquote(f);s[s.length-1]=O,r=r.substring(0,r.length-R.raw.length)+O.raw,i=i.substring(0,i.length-R.text.length)+O.text;break}else if(h?.type===\"list\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.list(f);s[s.length-1]=O,r=r.substring(0,r.length-h.raw.length)+O.raw,i=i.substring(0,i.length-R.raw.length)+O.raw,n=f.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let p=!1,u=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;u=t[0],e=e.substring(u.length);let g=t[2].split(`\n`,1)[0].replace(this.rules.other.listReplaceTabs,H=>\" \".repeat(3*H.length)),h=e.split(`\n`,1)[0],R=!g.trim(),f=0;if(this.options.pedantic?(f=2,c=g.trimStart()):R?f=t[1].length+1:(f=t[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=g.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(u+=h+`\n`,e=e.substring(h.length+1),p=!0),!p){let H=this.rules.other.nextBulletRegex(f),ee=this.rules.other.hrRegex(f),te=this.rules.other.fencesBeginRegex(f),ne=this.rules.other.headingBeginRegex(f),xe=this.rules.other.htmlBeginRegex(f);for(;e;){let Z=e.split(`\n`,1)[0],A;if(h=Z,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting,\" \"),A=h):A=h.replace(this.rules.other.tabCharGlobal,\" \"),te.test(h)||ne.test(h)||xe.test(h)||H.test(h)||ee.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`\n`+A.slice(f);else{if(R||g.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||te.test(g)||ne.test(g)||ee.test(g))break;c+=`\n`+h}!R&&!h.trim()&&(R=!0),u+=Z+`\n`,e=e.substring(Z.length+1),g=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(u)&&(a=!0));let O=null,Y;this.options.gfm&&(O=this.rules.other.listIsTask.exec(c),O&&(Y=O[0]!==\"[ ] \",c=c.replace(this.rules.other.listReplaceTask,\"\"))),i.items.push({type:\"list_item\",raw:u,task:!!O,checked:Y,loose:!1,text:c,tokens:[]}),i.raw+=u}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let p=0;p<i.items.length;p++)if(this.lexer.state.top=!1,i.items[p].tokens=this.lexer.blockTokens(i.items[p].text,[]),!i.loose){let u=i.items[p].tokens.filter(g=>g.type===\"space\"),c=u.length>0&&u.some(g=>this.rules.other.anyLine.test(g.raw));i.loose=c}if(i.loose)for(let p=0;p<i.items.length;p++)i.items[p].loose=!0;return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(a)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(a)?s.align.push(\"left\"):s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(V(a,s.header.length).map((o,p)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[p]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=z(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=fe(t[2],\"()\");if(s===-2)return;if(s>-1){let o=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),me(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return me(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,p=s,u=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!=null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){p+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){u+=o;continue}if(p-=o,p>0)continue;o=Math.min(o,o+p+u);let g=[...r[0]][0].length,h=e.slice(0,s+r.index+g+o);if(Math.min(s,o)%2){let f=h.slice(1,-1);return{type:\"em\",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:\"strong\",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var x=class l{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||T,this.options.tokenizer=this.options.tokenizer||new y,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:C.normal,inline:M.normal};this.options.pedantic?(t.block=C.pedantic,t.inline=M.pedantic):this.options.gfm&&(t.block=C.gfm,this.options.breaks?t.inline=M.breaks:t.inline=M.gfm),this.tokenizer.rules=t}static get rules(){return{block:C,inline:M}}static lex(e,t){return new l(t).lex(e)}static lexInline(e,t){return new l(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\" \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,a=e.slice(1),o;this.options.extensions.startBlock.forEach(p=>{o=p.call({lexer:this},a),typeof o==\"number\"&&o>=0&&(s=Math.min(s,o))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+\"[\"+\"a\".repeat(r[0].length-i-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a=\"\";for(;e;){s||(a=\"\"),s=!1;let o;if(this.options.extensions?.inline?.some(u=>(o=u.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let u=t.at(-1);o.type===\"text\"&&u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let p=e;if(this.options.extensions?.startInline){let u=1/0,c=e.slice(1),g;this.options.extensions.startInline.forEach(h=>{g=h.call({lexer:this},c),typeof g==\"number\"&&g>=0&&(u=Math.min(u,g))}),u<1/0&&u>=0&&(p=e.substring(0,u+1))}if(o=this.tokenizer.inlineText(p)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(a=o.raw.slice(-1)),s=!0;let u=t.at(-1);u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(e){let u=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}};var P=class{options;parser;constructor(e){this.options=e||T}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+w(r)+'\">'+(n?i:w(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:w(i,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let a=0;a<e.items.length;a++){let o=e.items[a];r+=this.listitem(o)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\n`}listitem(e){let t=\"\";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type===\"paragraph\"?(e.tokens[0].text=n+\" \"+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type===\"text\"&&(e.tokens[0].tokens[0].text=n+\" \"+w(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:\"text\",raw:n+\" \",text:n+\" \",escaped:!0}):t+=n+\" \"}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let a=0;a<s.length;a++)n+=this.tablecell(s[a]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+w(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return w(n);e=i;let s=`<img src=\"${e}\" alt=\"${n}\"`;return t&&(s+=` title=\"${w(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}};var b=class l{options;renderer;textRenderer;constructor(e){this.options=e||T,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new l(t).parse(e)}static parseInline(e,t){return new l(t).parseInline(e)}parse(e,t=!0){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=i,o=this.options.extensions.renderers[a.type].call({parser:this},a);if(o!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"def\",\"paragraph\",\"text\"].includes(a.type)){n+=o||\"\";continue}}let s=i;switch(s.type){case\"space\":{n+=this.renderer.space(s);continue}case\"hr\":{n+=this.renderer.hr(s);continue}case\"heading\":{n+=this.renderer.heading(s);continue}case\"code\":{n+=this.renderer.code(s);continue}case\"table\":{n+=this.renderer.table(s);continue}case\"blockquote\":{n+=this.renderer.blockquote(s);continue}case\"list\":{n+=this.renderer.list(s);continue}case\"html\":{n+=this.renderer.html(s);continue}case\"def\":{n+=this.renderer.def(s);continue}case\"paragraph\":{n+=this.renderer.paragraph(s);continue}case\"text\":{let a=s,o=this.renderer.text(a);for(;r+1<e.length&&e[r+1].type===\"text\";)a=e[++r],o+=`\n`+this.renderer.text(a);t?n+=this.renderer.paragraph({type:\"paragraph\",raw:o,text:o,tokens:[{type:\"text\",raw:o,text:o,escaped:!0}]}):n+=o;continue}default:{let a='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(a),\"\";throw new Error(a)}}}return n}parseInline(e,t=this.renderer){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=this.options.extensions.renderers[i.type].call({parser:this},i);if(a!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let a='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(a),\"\";throw new Error(a)}}}return n}};var S=class{options;block;constructor(e){this.options=e||T}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?x.lex:x.lexInline}provideParser(){return this.block?b.parse:b.parseInline}};var B=class{defaults=L();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=P;TextRenderer=$;Lexer=x;Tokenizer=y;Hooks=S;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let a of s)n=n.concat(this.walkTokens(a.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new P(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let a=s,o=n.renderer[a],p=i[a];i[a]=(...u)=>{let c=o.apply(i,u);return c===!1&&(c=p.apply(i,u)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new y(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let a=s,o=n.tokenizer[a],p=i[a];i[a]=(...u)=>{let c=o.apply(i,u);return c===!1&&(c=p.apply(i,u)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new S;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let a=s,o=n.hooks[a],p=i[a];S.passThroughHooks.has(s)?i[a]=u=>{if(this.defaults.async&&S.passThroughHooksRespectAsync.has(s))return(async()=>{let g=await o.call(i,u);return p.call(i,g)})();let c=o.call(i,u);return p.call(i,c)}:i[a]=(...u)=>{if(this.defaults.async)return(async()=>{let g=await o.apply(i,u);return g===!1&&(g=await p.apply(i,u)),g})();let c=o.apply(i,u);return c===!1&&(c=p.apply(i,u)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return a(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return a(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,u=await(s.hooks?await s.hooks.provideLexer():e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(u):u;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser():e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let p=(s.hooks?s.hooks.provideLexer():e?x.lex:x.lexInline)(n,s);s.hooks&&(p=s.hooks.processAllTokens(p)),s.walkTokens&&this.walkTokens(p,s.walkTokens);let c=(s.hooks?s.hooks.provideParser():e?b.parse:b.parseInline)(p,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var _=new B;function k(l,e){return _.parse(l,e)}k.options=k.setOptions=function(l){return _.setOptions(l),k.defaults=_.defaults,G(k.defaults),k};k.getDefaults=L;k.defaults=T;k.use=function(...l){return _.use(...l),k.defaults=_.defaults,G(k.defaults),k};k.walkTokens=function(l,e){return _.walkTokens(l,e)};k.parseInline=_.parseInline;k.Parser=b;k.parser=b.parse;k.Renderer=P;k.TextRenderer=$;k.Lexer=x;k.lexer=x.lex;k.Tokenizer=y;k.Hooks=S;k.parse=k;var Zt=k.options,Gt=k.setOptions,Nt=k.use,Ft=k.walkTokens,jt=k.parseInline,Qt=k,Ut=b.parse,Kt=x.lex;export{S as Hooks,x as Lexer,B as Marked,b as Parser,P as Renderer,$ as TextRenderer,y as Tokenizer,T as defaults,L as getDefaults,Kt as lexer,k as marked,Zt as options,Qt as parse,jt as parseInline,Ut as parser,Gt as setOptions,Nt as use,Ft as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n"],"names":["l","_a","_e"],"mappings":"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","x_google_ignoreList":[0]}
@@ -7,7 +7,7 @@
7
7
  /**
8
8
  * Component types supported by the renderer
9
9
  */
10
- export type ComponentType = 'chart' | 'table' | 'metric' | 'text' | 'grid';
10
+ export type ComponentType = 'chart' | 'table' | 'metric' | 'text' | 'grid' | 'iframe' | 'image' | 'link';
11
11
  /**
12
12
  * Chart types (powered by Quickchart)
13
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAE1E;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAA;AAEjF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,EAAE,CAAA;QAChB,QAAQ,EAAE,KAAK,CAAC;YACd,KAAK,EAAE,MAAM,CAAA;YACb,IAAI,EAAE,MAAM,EAAE,CAAA;YACd,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;YACnC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;YAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;SACrB,CAAC,CAAA;KACH,CAAA;IACD,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,mBAAmB,CAAC,EAAE,OAAO,CAAA;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,MAAM,CAAC,EAAE,GAAG,CAAA;QACZ,OAAO,CAAC,EAAE,GAAG,CAAA;KACd,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,KAAK,CAAC;QACb,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAC,CAAA;IACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IAChC,UAAU,CAAC,EAAE;QACX,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAA;KACrC,CAAA;IACD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IAEV;;OAEG;IACH,IAAI,EAAE,aAAa,CAAA;IAEnB;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAA;IAEtB;;OAEG;IACH,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,mBAAmB,CAAA;IAEjG;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KACrB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IAEV;;OAEG;IACH,UAAU,EAAE,WAAW,EAAE,CAAA;IAEzB;;OAEG;IACH,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAA;QACf,GAAG,EAAE,MAAM,CAAA;QACX,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;IAED;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,IAAI,EAAE,aAAa,CAAA;IAEnB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,MAAM,EAAE,GAAG,CAAA;IAEX;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,WAAW,CAAA;KACvB,CAAC,CAAA;IAEF;;OAEG;IACH,MAAM,EAAE,cAAc,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;CACH;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,gBAAgB,GAChB,SAAS,GACT,UAAU,CAAA;AAEd;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,GAAG,CAAA;CACd;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,iBAAiB,GACjB,WAAW,GACX,oBAAoB,GACpB,OAAO,GACP,UAAU,CAAA;AAEd;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,CAAA;IACtB,IAAI,EAAE,GAAG,CAAA;IACT,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seed-ship/mcp-ui-solid",
3
- "version": "1.0.12",
3
+ "version": "1.0.15",
4
4
  "description": "SolidJS components for rendering MCP-generated UI resources",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -41,6 +41,7 @@
41
41
  "solid-js": "^1.9.0"
42
42
  },
43
43
  "dependencies": {
44
+ "marked": "^16.3.0",
44
45
  "zod": "^3.22.4"
45
46
  },
46
47
  "devDependencies": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"GenerativeUIErrorBoundary.cjs","sources":["../../src/components/GenerativeUIErrorBoundary.tsx"],"sourcesContent":["/**\n * Generative UI Error Boundary with Telemetry\n * Phase 0: Error isolation + structured logging\n *\n * Features:\n * - Component-level error isolation\n * - Structured logging with context\n * - Performance timing\n * - Retry mechanism\n * - User-friendly fallback UI\n */\n\nimport { Component, ErrorBoundary, createSignal, Show } from 'solid-js'\nimport { isServer } from 'solid-js/web'\nimport { createLogger } from '../utils/logger'\nimport type { RendererError } from '../types'\n\nconst logger = createLogger('generative-ui')\n\n/**\n * Props for GenerativeUIErrorBoundary\n */\nexport interface GenerativeUIErrorBoundaryProps {\n /**\n * Component identifier for telemetry\n */\n componentId: string\n\n /**\n * Component type for context\n */\n componentType: string\n\n /**\n * Error callback\n */\n onError?: (error: RendererError) => void\n\n /**\n * Allow retry on error\n */\n allowRetry?: boolean\n\n /**\n * Child components to wrap\n */\n children: any\n\n /**\n * Custom fallback UI (optional)\n */\n fallback?: (error: Error, retry?: () => void) => any\n}\n\n/**\n * Default fallback UI for errors\n */\nfunction DefaultErrorFallback(props: {\n error: Error\n componentId: string\n componentType: string\n allowRetry?: boolean\n onRetry?: () => void\n}) {\n return (\n <div class=\"w-full h-full bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4\">\n <div class=\"flex items-start gap-3\">\n <div class=\"flex-shrink-0\">\n <svg\n class=\"w-5 h-5 text-yellow-600 dark:text-yellow-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n </div>\n <div class=\"flex-1 min-w-0\">\n <p class=\"text-sm font-medium text-yellow-900 dark:text-yellow-100\">\n Component Failed to Render\n </p>\n <p class=\"text-xs text-yellow-700 dark:text-yellow-300 mt-1\">\n Type: {props.componentType || 'unknown'} | ID: {props.componentId?.slice(0, 8) || 'unknown'}...\n </p>\n <Show when={import.meta.env.DEV}>\n <p class=\"text-xs text-yellow-600 dark:text-yellow-400 mt-2 font-mono\">\n {props.error.message}\n </p>\n </Show>\n <Show when={props.allowRetry}>\n <button\n onClick={props.onRetry}\n class=\"mt-3 text-xs font-medium text-yellow-800 dark:text-yellow-200 hover:text-yellow-900 dark:hover:text-yellow-100 underline\"\n >\n Retry Rendering\n </button>\n </Show>\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * Generative UI Error Boundary Component\n */\nexport const GenerativeUIErrorBoundary: Component<GenerativeUIErrorBoundaryProps> = (props) => {\n const [retryKey, setRetryKey] = createSignal(0)\n const [renderStartTime] = createSignal(isServer ? 0 : performance.now())\n\n // Handle error with telemetry\n const handleError = (error: Error) => {\n const renderEndTime = isServer ? 0 : performance.now()\n const renderDuration = renderEndTime - renderStartTime()\n\n // Structure error context\n const errorContext = {\n componentId: props.componentId,\n componentType: props.componentType,\n errorMessage: error.message,\n errorStack: error.stack,\n renderDuration,\n retryCount: retryKey(),\n timestamp: new Date().toISOString(),\n userAgent: isServer ? 'server' : navigator.userAgent,\n viewport: isServer\n ? { width: 0, height: 0 }\n : { width: window.innerWidth, height: window.innerHeight },\n }\n\n // Log to structured logger\n logger.error(`Component render failed: ${props.componentType}`, errorContext)\n\n // Call error callback\n props.onError?.({\n type: 'render',\n message: error.message,\n componentId: props.componentId,\n details: errorContext,\n })\n\n // In production, send to monitoring service\n if (import.meta.env.PROD) {\n // Future: Send to Sentry or other APM\n // Sentry.captureException(error, { contexts: { component: errorContext } })\n }\n }\n\n // Retry mechanism\n const handleRetry = () => {\n const newRetryCount = retryKey() + 1\n logger.info(`Retrying component render: ${props.componentType}`, {\n componentId: props.componentId,\n retryCount: newRetryCount,\n })\n setRetryKey(newRetryCount)\n }\n\n return (\n <ErrorBoundary\n fallback={(error) => {\n handleError(error)\n\n // Use custom fallback if provided\n if (props.fallback) {\n return props.fallback(error, props.allowRetry ? handleRetry : undefined)\n }\n\n // Default fallback\n return (\n <DefaultErrorFallback\n error={error}\n componentId={props.componentId}\n componentType={props.componentType}\n allowRetry={props.allowRetry}\n onRetry={handleRetry}\n />\n )\n }}\n >\n {/* Key prop for forcing remount on retry */}\n {(() => {\n const _ = retryKey() // Access signal to track changes\n return <>{props.children}</>\n })()}\n </ErrorBoundary>\n )\n}\n\n/**\n * Performance monitoring wrapper\n * Logs render times for performance analysis\n */\nexport function withPerformanceMonitoring<P extends { componentId: string; componentType: string }>(\n WrappedComponent: Component<P>\n) {\n return (props: P) => {\n const renderStart = isServer ? 0 : performance.now()\n\n // Log render start\n logger.debug(`Component render start: ${props.componentType}`, {\n componentId: props.componentId,\n timestamp: new Date().toISOString(),\n })\n\n // Measure on mount completion (client-side only)\n if (!isServer && typeof window !== 'undefined') {\n requestAnimationFrame(() => {\n const renderEnd = performance.now()\n const duration = renderEnd - renderStart\n\n logger.info(`Component rendered: ${props.componentType}`, {\n componentId: props.componentId,\n renderDuration: duration,\n timestamp: new Date().toISOString(),\n })\n\n // Warn if render is slow (>50ms target)\n if (duration > 50) {\n logger.warn(`Slow component render: ${props.componentType}`, {\n componentId: props.componentId,\n renderDuration: duration,\n threshold: 50,\n })\n }\n })\n }\n\n return <WrappedComponent {...props} />\n }\n}\n\n/**\n * Hook to track component lifecycle events\n */\nexport function useComponentTelemetry(componentId: string, componentType: string) {\n const mountTime = isServer ? 0 : performance.now()\n\n // Log mount\n logger.debug(`Component mounted: ${componentType}`, {\n componentId,\n timestamp: new Date().toISOString(),\n })\n\n // Return cleanup function for unmount\n return () => {\n const lifetime = isServer ? 0 : performance.now() - mountTime\n logger.debug(`Component unmounted: ${componentType}`, {\n componentId,\n lifetime,\n timestamp: new Date().toISOString(),\n })\n }\n}\n"],"names":["logger","createLogger","DefaultErrorFallback","props","_$ssr","_tmpl$3","_$ssrHydrationKey","_$escape","componentType","componentId","slice","_$createComponent","Show","when","import","children","_tmpl$","error","message","allowRetry","_tmpl$2","GenerativeUIErrorBoundary","retryKey","setRetryKey","createSignal","renderStartTime","isServer","performance","now","handleError","renderEndTime","renderDuration","errorContext","errorMessage","errorStack","stack","retryCount","timestamp","Date","toISOString","userAgent","navigator","viewport","width","height","window","innerWidth","innerHeight","onError","type","details","handleRetry","newRetryCount","info","ErrorBoundary","fallback","undefined","onRetry"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GenerativeUIErrorBoundary.js","sources":["../../src/components/GenerativeUIErrorBoundary.tsx"],"sourcesContent":["/**\n * Generative UI Error Boundary with Telemetry\n * Phase 0: Error isolation + structured logging\n *\n * Features:\n * - Component-level error isolation\n * - Structured logging with context\n * - Performance timing\n * - Retry mechanism\n * - User-friendly fallback UI\n */\n\nimport { Component, ErrorBoundary, createSignal, Show } from 'solid-js'\nimport { isServer } from 'solid-js/web'\nimport { createLogger } from '../utils/logger'\nimport type { RendererError } from '../types'\n\nconst logger = createLogger('generative-ui')\n\n/**\n * Props for GenerativeUIErrorBoundary\n */\nexport interface GenerativeUIErrorBoundaryProps {\n /**\n * Component identifier for telemetry\n */\n componentId: string\n\n /**\n * Component type for context\n */\n componentType: string\n\n /**\n * Error callback\n */\n onError?: (error: RendererError) => void\n\n /**\n * Allow retry on error\n */\n allowRetry?: boolean\n\n /**\n * Child components to wrap\n */\n children: any\n\n /**\n * Custom fallback UI (optional)\n */\n fallback?: (error: Error, retry?: () => void) => any\n}\n\n/**\n * Default fallback UI for errors\n */\nfunction DefaultErrorFallback(props: {\n error: Error\n componentId: string\n componentType: string\n allowRetry?: boolean\n onRetry?: () => void\n}) {\n return (\n <div class=\"w-full h-full bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4\">\n <div class=\"flex items-start gap-3\">\n <div class=\"flex-shrink-0\">\n <svg\n class=\"w-5 h-5 text-yellow-600 dark:text-yellow-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n </div>\n <div class=\"flex-1 min-w-0\">\n <p class=\"text-sm font-medium text-yellow-900 dark:text-yellow-100\">\n Component Failed to Render\n </p>\n <p class=\"text-xs text-yellow-700 dark:text-yellow-300 mt-1\">\n Type: {props.componentType || 'unknown'} | ID: {props.componentId?.slice(0, 8) || 'unknown'}...\n </p>\n <Show when={import.meta.env.DEV}>\n <p class=\"text-xs text-yellow-600 dark:text-yellow-400 mt-2 font-mono\">\n {props.error.message}\n </p>\n </Show>\n <Show when={props.allowRetry}>\n <button\n onClick={props.onRetry}\n class=\"mt-3 text-xs font-medium text-yellow-800 dark:text-yellow-200 hover:text-yellow-900 dark:hover:text-yellow-100 underline\"\n >\n Retry Rendering\n </button>\n </Show>\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * Generative UI Error Boundary Component\n */\nexport const GenerativeUIErrorBoundary: Component<GenerativeUIErrorBoundaryProps> = (props) => {\n const [retryKey, setRetryKey] = createSignal(0)\n const [renderStartTime] = createSignal(isServer ? 0 : performance.now())\n\n // Handle error with telemetry\n const handleError = (error: Error) => {\n const renderEndTime = isServer ? 0 : performance.now()\n const renderDuration = renderEndTime - renderStartTime()\n\n // Structure error context\n const errorContext = {\n componentId: props.componentId,\n componentType: props.componentType,\n errorMessage: error.message,\n errorStack: error.stack,\n renderDuration,\n retryCount: retryKey(),\n timestamp: new Date().toISOString(),\n userAgent: isServer ? 'server' : navigator.userAgent,\n viewport: isServer\n ? { width: 0, height: 0 }\n : { width: window.innerWidth, height: window.innerHeight },\n }\n\n // Log to structured logger\n logger.error(`Component render failed: ${props.componentType}`, errorContext)\n\n // Call error callback\n props.onError?.({\n type: 'render',\n message: error.message,\n componentId: props.componentId,\n details: errorContext,\n })\n\n // In production, send to monitoring service\n if (import.meta.env.PROD) {\n // Future: Send to Sentry or other APM\n // Sentry.captureException(error, { contexts: { component: errorContext } })\n }\n }\n\n // Retry mechanism\n const handleRetry = () => {\n const newRetryCount = retryKey() + 1\n logger.info(`Retrying component render: ${props.componentType}`, {\n componentId: props.componentId,\n retryCount: newRetryCount,\n })\n setRetryKey(newRetryCount)\n }\n\n return (\n <ErrorBoundary\n fallback={(error) => {\n handleError(error)\n\n // Use custom fallback if provided\n if (props.fallback) {\n return props.fallback(error, props.allowRetry ? handleRetry : undefined)\n }\n\n // Default fallback\n return (\n <DefaultErrorFallback\n error={error}\n componentId={props.componentId}\n componentType={props.componentType}\n allowRetry={props.allowRetry}\n onRetry={handleRetry}\n />\n )\n }}\n >\n {/* Key prop for forcing remount on retry */}\n {(() => {\n const _ = retryKey() // Access signal to track changes\n return <>{props.children}</>\n })()}\n </ErrorBoundary>\n )\n}\n\n/**\n * Performance monitoring wrapper\n * Logs render times for performance analysis\n */\nexport function withPerformanceMonitoring<P extends { componentId: string; componentType: string }>(\n WrappedComponent: Component<P>\n) {\n return (props: P) => {\n const renderStart = isServer ? 0 : performance.now()\n\n // Log render start\n logger.debug(`Component render start: ${props.componentType}`, {\n componentId: props.componentId,\n timestamp: new Date().toISOString(),\n })\n\n // Measure on mount completion (client-side only)\n if (!isServer && typeof window !== 'undefined') {\n requestAnimationFrame(() => {\n const renderEnd = performance.now()\n const duration = renderEnd - renderStart\n\n logger.info(`Component rendered: ${props.componentType}`, {\n componentId: props.componentId,\n renderDuration: duration,\n timestamp: new Date().toISOString(),\n })\n\n // Warn if render is slow (>50ms target)\n if (duration > 50) {\n logger.warn(`Slow component render: ${props.componentType}`, {\n componentId: props.componentId,\n renderDuration: duration,\n threshold: 50,\n })\n }\n })\n }\n\n return <WrappedComponent {...props} />\n }\n}\n\n/**\n * Hook to track component lifecycle events\n */\nexport function useComponentTelemetry(componentId: string, componentType: string) {\n const mountTime = isServer ? 0 : performance.now()\n\n // Log mount\n logger.debug(`Component mounted: ${componentType}`, {\n componentId,\n timestamp: new Date().toISOString(),\n })\n\n // Return cleanup function for unmount\n return () => {\n const lifetime = isServer ? 0 : performance.now() - mountTime\n logger.debug(`Component unmounted: ${componentType}`, {\n componentId,\n lifetime,\n timestamp: new Date().toISOString(),\n })\n }\n}\n"],"names":["logger","createLogger","DefaultErrorFallback","props","_$ssr","_tmpl$3","_$ssrHydrationKey","_$escape","componentType","componentId","slice","_$createComponent","Show","when","import","children","_tmpl$","error","message","allowRetry","_tmpl$2","GenerativeUIErrorBoundary","retryKey","setRetryKey","createSignal","renderStartTime","isServer","performance","now","handleError","renderEndTime","renderDuration","errorContext","errorMessage","errorStack","stack","retryCount","timestamp","Date","toISOString","userAgent","navigator","viewport","width","height","window","innerWidth","innerHeight","onError","type","details","handleRetry","newRetryCount","info","ErrorBoundary","fallback","undefined","onRetry"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"StreamingUIRenderer.cjs","sources":["../../src/components/StreamingUIRenderer.tsx"],"sourcesContent":["/**\n * StreamingUIRenderer Component - Phase 2\n *\n * Renders streaming dashboard components with skeleton states and progress indicators.\n * Uses the useStreamingUI hook for SSE connection and state management.\n *\n * Features:\n * - Skeleton loading states while components stream\n * - Progress bar and status messages\n * - Smooth component animations on arrival\n * - Error handling with retry capability\n * - Responsive 12-column grid layout\n *\n * Usage:\n * ```tsx\n * <StreamingUIRenderer\n * query=\"Show me revenue trends\"\n * spaceIds={['uuid1', 'uuid2']}\n * onComplete={(metadata) => console.log('Done!', metadata)}\n * />\n * ```\n */\n\nimport { Show, For, createSignal, onMount } from 'solid-js'\nimport { useStreamingUI, type UseStreamingUIOptions } from '../hooks/useStreamingUI'\nimport type { UIComponent, RendererError } from '../types'\nimport { validateComponent } from '../services/validation'\nimport { GenerativeUIErrorBoundary } from './GenerativeUIErrorBoundary'\n\nexport interface StreamingUIRendererProps extends UseStreamingUIOptions {\n class?: string\n showProgress?: boolean\n showMetadata?: boolean\n onRenderError?: (error: RendererError) => void\n}\n\n/**\n * Component Renderer - Inline lightweight version\n * (Full implementation in UIResourceRenderer)\n */\nfunction StreamingComponentRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n // Validate component before rendering\n const validation = validateComponent(props.component)\n if (!validation.valid) {\n props.onError?.({\n type: 'validation',\n message: 'Component validation failed',\n componentId: props.component.id,\n details: validation.errors,\n })\n\n return (\n <div class=\"w-full bg-error-subtle border border-border-error rounded-lg p-4\">\n <p class=\"text-sm font-medium text-error-primary\">Validation Error</p>\n <p class=\"text-xs text-text-secondary mt-1\">\n {validation.errors?.[0]?.message || 'Unknown validation error'}\n </p>\n </div>\n )\n }\n\n // Simplified renderer - just show component type and title\n // Full rendering logic in UIResourceRenderer\n const params = props.component.params as any\n\n return (\n <GenerativeUIErrorBoundary\n componentId={props.component.id}\n componentType={props.component.type}\n onError={props.onError}\n allowRetry={false}\n >\n <div class=\"w-full bg-surface-secondary border border-border-subtle rounded-lg p-4\">\n <div class=\"flex items-center gap-2 mb-2\">\n <span class=\"text-xs font-medium text-text-tertiary uppercase\">\n {props.component.type}\n </span>\n </div>\n <Show when={params?.title}>\n <h3 class=\"text-sm font-semibold text-text-primary\">{params.title}</h3>\n </Show>\n <Show when={props.component.type === 'metric' && params?.value}>\n <div class=\"mt-2\">\n <p class=\"text-2xl font-semibold text-text-primary\">{params.value}</p>\n <Show when={params.unit}>\n <span class=\"text-sm text-text-secondary\">{params.unit}</span>\n </Show>\n </div>\n </Show>\n <div class=\"mt-3 text-xs text-text-tertiary\">\n Component ID: {props.component.id.slice(0, 8)}...\n </div>\n </div>\n </GenerativeUIErrorBoundary>\n )\n}\n\nexport function StreamingUIRenderer(props: StreamingUIRendererProps) {\n const { components, isLoading, isStreaming, error, progress, metadata, startStreaming } =\n useStreamingUI({\n query: props.query,\n spaceIds: props.spaceIds,\n sessionId: props.sessionId,\n options: props.options,\n onComplete: props.onComplete,\n onError: props.onError,\n onComponentReceived: props.onComponentReceived,\n })\n\n const [animatingComponents, setAnimatingComponents] = createSignal<Set<string>>(new Set())\n\n // Track new components for animation\n const handleComponentRender = (componentId: string) => {\n setAnimatingComponents((prev) => new Set([...prev, componentId]))\n\n // Remove from animating set after animation completes\n setTimeout(() => {\n setAnimatingComponents((prev) => {\n const next = new Set(prev)\n next.delete(componentId)\n return next\n })\n }, 500)\n }\n\n return (\n <div class={`streaming-ui-renderer ${props.class || ''}`}>\n {/* Progress Bar */}\n <Show when={props.showProgress !== false && (isLoading() || isStreaming())}>\n <div class=\"mb-4 rounded-lg border border-border-subtle bg-surface-secondary p-4\">\n {/* Status Message */}\n <div class=\"mb-2 flex items-center justify-between\">\n <span class=\"text-sm font-medium text-text-primary\">{progress().message}</span>\n <Show when={progress().totalCount !== null}>\n <span class=\"text-sm text-text-secondary\">\n {progress().receivedCount} / {progress().totalCount}\n </span>\n </Show>\n </div>\n\n {/* Progress Bar */}\n <div class=\"h-2 w-full overflow-hidden rounded-full bg-surface-tertiary\">\n <div\n class=\"h-full bg-brand-primary transition-all duration-300 ease-out\"\n style={\n progress().totalCount !== null\n ? `width: ${(progress().receivedCount / progress().totalCount!) * 100}%`\n : 'width: 0%'\n }\n />\n </div>\n\n {/* Indeterminate Progress (when totalCount unknown) */}\n <Show when={progress().totalCount === null && isStreaming()}>\n <div class=\"mt-2\">\n <div class=\"h-1 w-full overflow-hidden rounded-full bg-surface-tertiary\">\n <div class=\"animate-progress-indeterminate h-full w-1/3 bg-brand-primary\" />\n </div>\n </div>\n </Show>\n </div>\n </Show>\n\n {/* Error State */}\n <Show when={error()}>\n <div class=\"mb-4 rounded-lg border border-border-error bg-error-subtle p-4\">\n <div class=\"mb-2 flex items-center gap-2\">\n <svg\n class=\"h-5 w-5 text-error-primary\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <span class=\"font-medium text-error-primary\">{error()?.error}</span>\n </div>\n <p class=\"text-sm text-text-secondary\">{error()?.message}</p>\n\n {/* Retry Button (if recoverable) */}\n <Show when={error()?.recoverable}>\n <button\n type=\"button\"\n class=\"mt-3 rounded-md bg-error-primary px-3 py-1.5 text-sm font-medium text-white hover:bg-error-hover\"\n onClick={() => startStreaming()}\n >\n Retry\n </button>\n </Show>\n </div>\n </Show>\n\n {/* Components Grid */}\n <div class=\"grid grid-cols-12 gap-4\">\n {/* Render received components */}\n <For each={components()}>\n {(component) => {\n // Trigger animation on mount (SSR-safe, no 'use' directive needed)\n onMount(() => handleComponentRender(component.id))\n\n return (\n <div\n class={`\n col-span-${component.position.colSpan}\n ${animatingComponents().has(component.id) ? 'animate-fade-in-up' : ''}\n `}\n style={`grid-column-start: ${component.position.colStart}; grid-column-end: ${component.position.colStart + component.position.colSpan}`}\n >\n <StreamingComponentRenderer component={component} onError={props.onRenderError} />\n </div>\n )\n }}\n </For>\n\n {/* Skeleton placeholders (if streaming and expecting more) */}\n <Show when={isStreaming() && progress().totalCount !== null}>\n <For\n each={Array.from({\n length: progress().totalCount! - progress().receivedCount,\n })}\n >\n {() => <SkeletonComponent />}\n </For>\n </Show>\n </div>\n\n {/* Metadata Display */}\n <Show when={props.showMetadata !== false && metadata()}>\n <div class=\"mt-6 rounded-lg border border-border-subtle bg-surface-secondary p-4 text-sm text-text-secondary\">\n <div class=\"grid grid-cols-2 gap-4 md:grid-cols-4\">\n <div>\n <div class=\"font-medium text-text-primary\">Provider</div>\n <div>{metadata()?.provider}</div>\n </div>\n <div>\n <div class=\"font-medium text-text-primary\">Model</div>\n <div>{metadata()?.model}</div>\n </div>\n <div>\n <div class=\"font-medium text-text-primary\">Execution Time</div>\n <div>{metadata()?.executionTimeMs}ms</div>\n </div>\n <Show when={metadata()?.costUSD !== undefined}>\n <div>\n <div class=\"font-medium text-text-primary\">Cost</div>\n <div>${metadata()?.costUSD?.toFixed(4)}</div>\n </div>\n </Show>\n <div>\n <div class=\"font-medium text-text-primary\">TTFB</div>\n <div>{metadata()?.firstTokenMs}ms</div>\n </div>\n <Show when={metadata()?.cached}>\n <div>\n <div class=\"font-medium text-text-primary\">Cached</div>\n <div class=\"text-success-primary\">Yes</div>\n </div>\n </Show>\n </div>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Skeleton Component - Placeholder while components load\n */\nfunction SkeletonComponent() {\n return (\n <div class=\"col-span-12 md:col-span-6 lg:col-span-4\">\n <div class=\"animate-pulse rounded-lg border border-border-subtle bg-surface-secondary p-4\">\n {/* Header skeleton */}\n <div class=\"mb-4 h-6 w-1/2 rounded bg-surface-tertiary\" />\n\n {/* Content skeleton */}\n <div class=\"space-y-3\">\n <div class=\"h-4 rounded bg-surface-tertiary\" />\n <div class=\"h-4 w-5/6 rounded bg-surface-tertiary\" />\n <div class=\"h-4 w-4/6 rounded bg-surface-tertiary\" />\n </div>\n\n {/* Chart/visual skeleton */}\n <div class=\"mt-4 h-32 rounded bg-surface-tertiary\" />\n </div>\n </div>\n )\n}\n\n// CSS Animations (add to global styles or Tailwind config)\n/*\n@keyframes fade-in-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes progress-indeterminate {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(400%);\n }\n}\n\n.animate-fade-in-up {\n animation: fade-in-up 0.5s ease-out;\n}\n\n.animate-progress-indeterminate {\n animation: progress-indeterminate 1.5s infinite ease-in-out;\n}\n*/\n"],"names":["StreamingComponentRenderer","props","validation","validateComponent","component","valid","onError","type","message","componentId","id","details","errors","_$ssr","_tmpl$","_$ssrHydrationKey","_$escape","params","_$createComponent","GenerativeUIErrorBoundary","componentType","allowRetry","children","_tmpl$5","Show","when","title","_tmpl$2","value","_tmpl$4","unit","_tmpl$3","slice","StreamingUIRenderer","components","isLoading","isStreaming","error","progress","metadata","startStreaming","useStreamingUI","query","spaceIds","sessionId","options","onComplete","onComponentReceived","animatingComponents","setAnimatingComponents","createSignal","Set","handleComponentRender","prev","setTimeout","next","delete","_tmpl$12","class","showProgress","_tmpl$8","totalCount","_tmpl$6","receivedCount","_$ssrStyle","_tmpl$7","_tmpl$0","recoverable","_tmpl$9","For","each","onMount","_tmpl$13","position","colSpan","has","colStart","onRenderError","Array","from","length","SkeletonComponent","showMetadata","_tmpl$11","provider","model","executionTimeMs","costUSD","undefined","_tmpl$1","toFixed","firstTokenMs","cached","_tmpl$10","_tmpl$14"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"StreamingUIRenderer.js","sources":["../../src/components/StreamingUIRenderer.tsx"],"sourcesContent":["/**\n * StreamingUIRenderer Component - Phase 2\n *\n * Renders streaming dashboard components with skeleton states and progress indicators.\n * Uses the useStreamingUI hook for SSE connection and state management.\n *\n * Features:\n * - Skeleton loading states while components stream\n * - Progress bar and status messages\n * - Smooth component animations on arrival\n * - Error handling with retry capability\n * - Responsive 12-column grid layout\n *\n * Usage:\n * ```tsx\n * <StreamingUIRenderer\n * query=\"Show me revenue trends\"\n * spaceIds={['uuid1', 'uuid2']}\n * onComplete={(metadata) => console.log('Done!', metadata)}\n * />\n * ```\n */\n\nimport { Show, For, createSignal, onMount } from 'solid-js'\nimport { useStreamingUI, type UseStreamingUIOptions } from '../hooks/useStreamingUI'\nimport type { UIComponent, RendererError } from '../types'\nimport { validateComponent } from '../services/validation'\nimport { GenerativeUIErrorBoundary } from './GenerativeUIErrorBoundary'\n\nexport interface StreamingUIRendererProps extends UseStreamingUIOptions {\n class?: string\n showProgress?: boolean\n showMetadata?: boolean\n onRenderError?: (error: RendererError) => void\n}\n\n/**\n * Component Renderer - Inline lightweight version\n * (Full implementation in UIResourceRenderer)\n */\nfunction StreamingComponentRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n // Validate component before rendering\n const validation = validateComponent(props.component)\n if (!validation.valid) {\n props.onError?.({\n type: 'validation',\n message: 'Component validation failed',\n componentId: props.component.id,\n details: validation.errors,\n })\n\n return (\n <div class=\"w-full bg-error-subtle border border-border-error rounded-lg p-4\">\n <p class=\"text-sm font-medium text-error-primary\">Validation Error</p>\n <p class=\"text-xs text-text-secondary mt-1\">\n {validation.errors?.[0]?.message || 'Unknown validation error'}\n </p>\n </div>\n )\n }\n\n // Simplified renderer - just show component type and title\n // Full rendering logic in UIResourceRenderer\n const params = props.component.params as any\n\n return (\n <GenerativeUIErrorBoundary\n componentId={props.component.id}\n componentType={props.component.type}\n onError={props.onError}\n allowRetry={false}\n >\n <div class=\"w-full bg-surface-secondary border border-border-subtle rounded-lg p-4\">\n <div class=\"flex items-center gap-2 mb-2\">\n <span class=\"text-xs font-medium text-text-tertiary uppercase\">\n {props.component.type}\n </span>\n </div>\n <Show when={params?.title}>\n <h3 class=\"text-sm font-semibold text-text-primary\">{params.title}</h3>\n </Show>\n <Show when={props.component.type === 'metric' && params?.value}>\n <div class=\"mt-2\">\n <p class=\"text-2xl font-semibold text-text-primary\">{params.value}</p>\n <Show when={params.unit}>\n <span class=\"text-sm text-text-secondary\">{params.unit}</span>\n </Show>\n </div>\n </Show>\n <div class=\"mt-3 text-xs text-text-tertiary\">\n Component ID: {props.component.id.slice(0, 8)}...\n </div>\n </div>\n </GenerativeUIErrorBoundary>\n )\n}\n\nexport function StreamingUIRenderer(props: StreamingUIRendererProps) {\n const { components, isLoading, isStreaming, error, progress, metadata, startStreaming } =\n useStreamingUI({\n query: props.query,\n spaceIds: props.spaceIds,\n sessionId: props.sessionId,\n options: props.options,\n onComplete: props.onComplete,\n onError: props.onError,\n onComponentReceived: props.onComponentReceived,\n })\n\n const [animatingComponents, setAnimatingComponents] = createSignal<Set<string>>(new Set())\n\n // Track new components for animation\n const handleComponentRender = (componentId: string) => {\n setAnimatingComponents((prev) => new Set([...prev, componentId]))\n\n // Remove from animating set after animation completes\n setTimeout(() => {\n setAnimatingComponents((prev) => {\n const next = new Set(prev)\n next.delete(componentId)\n return next\n })\n }, 500)\n }\n\n return (\n <div class={`streaming-ui-renderer ${props.class || ''}`}>\n {/* Progress Bar */}\n <Show when={props.showProgress !== false && (isLoading() || isStreaming())}>\n <div class=\"mb-4 rounded-lg border border-border-subtle bg-surface-secondary p-4\">\n {/* Status Message */}\n <div class=\"mb-2 flex items-center justify-between\">\n <span class=\"text-sm font-medium text-text-primary\">{progress().message}</span>\n <Show when={progress().totalCount !== null}>\n <span class=\"text-sm text-text-secondary\">\n {progress().receivedCount} / {progress().totalCount}\n </span>\n </Show>\n </div>\n\n {/* Progress Bar */}\n <div class=\"h-2 w-full overflow-hidden rounded-full bg-surface-tertiary\">\n <div\n class=\"h-full bg-brand-primary transition-all duration-300 ease-out\"\n style={\n progress().totalCount !== null\n ? `width: ${(progress().receivedCount / progress().totalCount!) * 100}%`\n : 'width: 0%'\n }\n />\n </div>\n\n {/* Indeterminate Progress (when totalCount unknown) */}\n <Show when={progress().totalCount === null && isStreaming()}>\n <div class=\"mt-2\">\n <div class=\"h-1 w-full overflow-hidden rounded-full bg-surface-tertiary\">\n <div class=\"animate-progress-indeterminate h-full w-1/3 bg-brand-primary\" />\n </div>\n </div>\n </Show>\n </div>\n </Show>\n\n {/* Error State */}\n <Show when={error()}>\n <div class=\"mb-4 rounded-lg border border-border-error bg-error-subtle p-4\">\n <div class=\"mb-2 flex items-center gap-2\">\n <svg\n class=\"h-5 w-5 text-error-primary\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <span class=\"font-medium text-error-primary\">{error()?.error}</span>\n </div>\n <p class=\"text-sm text-text-secondary\">{error()?.message}</p>\n\n {/* Retry Button (if recoverable) */}\n <Show when={error()?.recoverable}>\n <button\n type=\"button\"\n class=\"mt-3 rounded-md bg-error-primary px-3 py-1.5 text-sm font-medium text-white hover:bg-error-hover\"\n onClick={() => startStreaming()}\n >\n Retry\n </button>\n </Show>\n </div>\n </Show>\n\n {/* Components Grid */}\n <div class=\"grid grid-cols-12 gap-4\">\n {/* Render received components */}\n <For each={components()}>\n {(component) => {\n // Trigger animation on mount (SSR-safe, no 'use' directive needed)\n onMount(() => handleComponentRender(component.id))\n\n return (\n <div\n class={`\n col-span-${component.position.colSpan}\n ${animatingComponents().has(component.id) ? 'animate-fade-in-up' : ''}\n `}\n style={`grid-column-start: ${component.position.colStart}; grid-column-end: ${component.position.colStart + component.position.colSpan}`}\n >\n <StreamingComponentRenderer component={component} onError={props.onRenderError} />\n </div>\n )\n }}\n </For>\n\n {/* Skeleton placeholders (if streaming and expecting more) */}\n <Show when={isStreaming() && progress().totalCount !== null}>\n <For\n each={Array.from({\n length: progress().totalCount! - progress().receivedCount,\n })}\n >\n {() => <SkeletonComponent />}\n </For>\n </Show>\n </div>\n\n {/* Metadata Display */}\n <Show when={props.showMetadata !== false && metadata()}>\n <div class=\"mt-6 rounded-lg border border-border-subtle bg-surface-secondary p-4 text-sm text-text-secondary\">\n <div class=\"grid grid-cols-2 gap-4 md:grid-cols-4\">\n <div>\n <div class=\"font-medium text-text-primary\">Provider</div>\n <div>{metadata()?.provider}</div>\n </div>\n <div>\n <div class=\"font-medium text-text-primary\">Model</div>\n <div>{metadata()?.model}</div>\n </div>\n <div>\n <div class=\"font-medium text-text-primary\">Execution Time</div>\n <div>{metadata()?.executionTimeMs}ms</div>\n </div>\n <Show when={metadata()?.costUSD !== undefined}>\n <div>\n <div class=\"font-medium text-text-primary\">Cost</div>\n <div>${metadata()?.costUSD?.toFixed(4)}</div>\n </div>\n </Show>\n <div>\n <div class=\"font-medium text-text-primary\">TTFB</div>\n <div>{metadata()?.firstTokenMs}ms</div>\n </div>\n <Show when={metadata()?.cached}>\n <div>\n <div class=\"font-medium text-text-primary\">Cached</div>\n <div class=\"text-success-primary\">Yes</div>\n </div>\n </Show>\n </div>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Skeleton Component - Placeholder while components load\n */\nfunction SkeletonComponent() {\n return (\n <div class=\"col-span-12 md:col-span-6 lg:col-span-4\">\n <div class=\"animate-pulse rounded-lg border border-border-subtle bg-surface-secondary p-4\">\n {/* Header skeleton */}\n <div class=\"mb-4 h-6 w-1/2 rounded bg-surface-tertiary\" />\n\n {/* Content skeleton */}\n <div class=\"space-y-3\">\n <div class=\"h-4 rounded bg-surface-tertiary\" />\n <div class=\"h-4 w-5/6 rounded bg-surface-tertiary\" />\n <div class=\"h-4 w-4/6 rounded bg-surface-tertiary\" />\n </div>\n\n {/* Chart/visual skeleton */}\n <div class=\"mt-4 h-32 rounded bg-surface-tertiary\" />\n </div>\n </div>\n )\n}\n\n// CSS Animations (add to global styles or Tailwind config)\n/*\n@keyframes fade-in-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes progress-indeterminate {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(400%);\n }\n}\n\n.animate-fade-in-up {\n animation: fade-in-up 0.5s ease-out;\n}\n\n.animate-progress-indeterminate {\n animation: progress-indeterminate 1.5s infinite ease-in-out;\n}\n*/\n"],"names":["StreamingComponentRenderer","props","validation","validateComponent","component","valid","onError","type","message","componentId","id","details","errors","_$ssr","_tmpl$","_$ssrHydrationKey","_$escape","params","_$createComponent","GenerativeUIErrorBoundary","componentType","allowRetry","children","_tmpl$5","Show","when","title","_tmpl$2","value","_tmpl$4","unit","_tmpl$3","slice","StreamingUIRenderer","components","isLoading","isStreaming","error","progress","metadata","startStreaming","useStreamingUI","query","spaceIds","sessionId","options","onComplete","onComponentReceived","animatingComponents","setAnimatingComponents","createSignal","Set","handleComponentRender","prev","setTimeout","next","delete","_tmpl$12","class","showProgress","_tmpl$8","totalCount","_tmpl$6","receivedCount","_$ssrStyle","_tmpl$7","_tmpl$0","recoverable","_tmpl$9","For","each","onMount","_tmpl$13","position","colSpan","has","colStart","onRenderError","Array","from","length","SkeletonComponent","showMetadata","_tmpl$11","provider","model","executionTimeMs","costUSD","undefined","_tmpl$1","toFixed","firstTokenMs","cached","_tmpl$10","_tmpl$14"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UIResourceRenderer.cjs","sources":["../../src/components/UIResourceRenderer.tsx"],"sourcesContent":["/**\n * UI Resource Renderer Component\n * Phase 0: Foundation with iframe sandbox and composite grid support\n *\n * Security features:\n * - Sandboxed iframes for untrusted content\n * - CSP enforcement via middleware\n * - XSS prevention with DOMPurify\n * - Domain whitelist validation\n *\n * Performance:\n * - Lazy loading with Intersection Observer\n * - Render timeout enforcement\n * - Error boundaries for isolation\n */\n\nimport { Component, createSignal, onMount, Show, For } from 'solid-js'\nimport type { UIComponent, UILayout, RendererError, ComponentType } from '../types'\nimport { validateComponent, DEFAULT_RESOURCE_LIMITS } from '../services/validation'\nimport { GenerativeUIErrorBoundary } from './GenerativeUIErrorBoundary'\n\n/**\n * Props for UIResourceRenderer\n */\nexport interface UIResourceRendererProps {\n /**\n * Single component or full layout to render\n */\n content: UIComponent | UILayout\n\n /**\n * Lazy loading (default: true)\n */\n lazyLoad?: boolean\n\n /**\n * Error callback\n */\n onError?: (error: RendererError) => void\n\n /**\n * Custom CSS class\n */\n class?: string\n}\n\n/**\n * Render a single chart component in a sandboxed iframe\n */\nfunction ChartRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const [iframeUrl, setIframeUrl] = createSignal<string>()\n const [isLoading, setIsLoading] = createSignal(true)\n const [error, setError] = createSignal<string>()\n\n onMount(() => {\n const chartParams = props.component.params as any\n\n // Build Quickchart URL\n const chartConfig = {\n type: chartParams.type,\n data: chartParams.data,\n options: {\n ...chartParams.options,\n responsive: true,\n maintainAspectRatio: false,\n },\n }\n\n // Encode chart configuration for Quickchart API\n const configStr = encodeURIComponent(JSON.stringify(chartConfig))\n const url = `https://quickchart.io/chart?c=${configStr}&width=500&height=300&devicePixelRatio=2`\n\n // Validate domain (should always pass for quickchart.io)\n setIframeUrl(url)\n setIsLoading(false)\n })\n\n return (\n <div class=\"relative w-full h-full min-h-[300px] bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <Show when={isLoading()}>\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div class=\"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600\" />\n </div>\n </Show>\n\n <Show when={error()}>\n <div class=\"absolute inset-0 flex items-center justify-center p-4\">\n <div class=\"text-center\">\n <p class=\"text-red-600 dark:text-red-400 text-sm font-medium\">Chart Error</p>\n <p class=\"text-gray-600 dark:text-gray-400 text-xs mt-1\">{error()}</p>\n </div>\n </div>\n </Show>\n\n <Show when={iframeUrl() && !error()}>\n <div class=\"w-full h-full p-4\">\n <Show when={(props.component.params as any).title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {(props.component.params as any).title}\n </h3>\n </Show>\n <div class=\"w-full h-full\">\n <img\n src={iframeUrl()}\n alt=\"Chart visualization\"\n class=\"w-full h-auto max-h-[300px] object-contain\"\n onError={() => {\n setError('Failed to load chart')\n props.onError?.({\n type: 'render',\n message: 'Chart rendering failed',\n componentId: props.component.id,\n })\n }}\n />\n </div>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Render a table component\n */\nfunction TableRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const tableParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <div class=\"p-4\">\n <Show when={tableParams.title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {tableParams.title}\n </h3>\n </Show>\n\n <div class=\"overflow-x-auto\">\n <table class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700\">\n <thead class=\"bg-gray-50 dark:bg-gray-900\">\n <tr>\n <For each={tableParams.columns}>\n {(column: any) => (\n <th\n scope=\"col\"\n class=\"px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider\"\n style={column.width ? { width: column.width } : {}}\n >\n {column.label}\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody class=\"bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700\">\n <For each={tableParams.rows.slice(0, DEFAULT_RESOURCE_LIMITS.maxTableRows)}>\n {(row: any) => (\n <tr class=\"hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors\">\n <For each={tableParams.columns}>\n {(column: any) => (\n <td class=\"px-4 py-3 text-sm text-gray-900 dark:text-gray-100 whitespace-nowrap\">\n {row[column.key] || '-'}\n </td>\n )}\n </For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n </div>\n\n <Show when={tableParams.pagination}>\n <div class=\"mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400\">\n <span>\n Showing {tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1} -{' '}\n {Math.min(\n (tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize,\n tableParams.pagination.totalRows\n )}{' '}\n of {tableParams.pagination.totalRows}\n </span>\n </div>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Render a metric card component\n */\nfunction MetricRenderer(props: { component: UIComponent }) {\n const metricParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div class=\"flex flex-col h-full justify-between\">\n <div>\n <p class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n {metricParams.title}\n </p>\n <div class=\"mt-2 flex items-baseline\">\n <p class=\"text-2xl font-semibold text-gray-900 dark:text-white\">{metricParams.value}</p>\n <Show when={metricParams.unit}>\n <span class=\"ml-2 text-sm font-medium text-gray-500 dark:text-gray-400\">\n {metricParams.unit}\n </span>\n </Show>\n </div>\n </div>\n\n <Show when={metricParams.trend}>\n <div class=\"mt-3 flex items-center\">\n <span\n class={`text-sm font-medium ${\n metricParams.trend.direction === 'up'\n ? 'text-green-600 dark:text-green-400'\n : metricParams.trend.direction === 'down'\n ? 'text-red-600 dark:text-red-400'\n : 'text-gray-600 dark:text-gray-400'\n }`}\n >\n {metricParams.trend.direction === 'up'\n ? '�'\n : metricParams.trend.direction === 'down'\n ? '�'\n : '�'}{' '}\n {Math.abs(metricParams.trend.value)}%\n </span>\n </div>\n </Show>\n\n <Show when={metricParams.subtitle}>\n <p class=\"mt-2 text-xs text-gray-500 dark:text-gray-400\">{metricParams.subtitle}</p>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Render a text component (with optional markdown)\n */\nfunction TextRenderer(props: { component: UIComponent }) {\n const textParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div\n class={`prose prose-sm dark:prose-invert max-w-none ${textParams.className || ''}`}\n innerHTML={textParams.content} // Note: Should be sanitized at generation time\n />\n </div>\n )\n}\n\n/**\n * Render a single component with error boundary\n */\nfunction ComponentRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n // Validate component before rendering\n const validation = validateComponent(props.component)\n if (!validation.valid) {\n props.onError?.({\n type: 'validation',\n message: 'Component validation failed',\n componentId: props.component.id,\n details: validation.errors,\n })\n\n return (\n <div class=\"w-full h-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4\">\n <p class=\"text-sm font-medium text-red-900 dark:text-red-100\">Validation Error</p>\n <p class=\"text-xs text-red-700 dark:text-red-300 mt-1\">\n {validation.errors?.[0]?.message || 'Unknown validation error'}\n </p>\n </div>\n )\n }\n\n // Render based on component type with enhanced error boundary\n return (\n <GenerativeUIErrorBoundary\n componentId={props.component.id}\n componentType={props.component.type}\n onError={props.onError}\n allowRetry={true}\n >\n <Show when={props.component.type === 'chart'}>\n <ChartRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'table'}>\n <TableRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'metric'}>\n <MetricRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'text'}>\n <TextRenderer component={props.component} />\n </Show>\n </GenerativeUIErrorBoundary>\n )\n}\n\n/**\n * Main UIResourceRenderer component\n */\nexport const UIResourceRenderer: Component<UIResourceRendererProps> = (props) => {\n const layout = () => {\n // ✅ PHASE 3.3 FIX: Check if content is a UIComponent (non-composite) vs UILayout (composite)\n // UILayout has type='composite', UIComponent has type='chart'|'table'|'metric'|'text'\n if ('type' in props.content && (props.content as any).type !== 'composite') {\n return {\n id: 'single-component',\n components: [props.content as UIComponent],\n grid: {\n columns: 12,\n gap: '1rem',\n },\n } as UILayout\n }\n return props.content as UILayout\n }\n\n // Grid position to CSS Grid styles\n const getGridStyles = (component: UIComponent) => {\n // ✅ PHASE 3 FIX: Defensive check for position field\n if (!component.position) {\n console.error('[UIResourceRenderer] Component missing position field:', component)\n return {\n 'grid-column': '1 / span 12',\n 'grid-row': 'auto',\n }\n }\n\n const { colStart, colSpan, rowStart, rowSpan = 1 } = component.position\n\n return {\n 'grid-column': `${colStart} / span ${colSpan}`,\n 'grid-row': rowStart ? `${rowStart} / span ${rowSpan}` : 'auto',\n }\n }\n\n // Convert grid styles to CSS string to avoid setStyleProperty\n const gridContainerStyle = () =>\n `grid-template-columns: repeat(${layout().grid.columns}, 1fr); gap: ${layout().grid.gap}`\n\n // Convert component grid styles to CSS string\n const getGridStyleString = (component: UIComponent) => {\n // ✅ PHASE 3 FIX: Defensive check for position field\n if (!component.position) {\n console.error('[UIResourceRenderer] Component missing position field:', component)\n return 'grid-column: 1 / span 12; grid-row: auto' // Default to full width\n }\n\n const { colStart, colSpan, rowStart, rowSpan = 1 } = component.position\n return `grid-column: ${colStart} / span ${colSpan}; grid-row: ${rowStart ? `${rowStart} / span ${rowSpan}` : 'auto'}`\n }\n\n return (\n <div class={`w-full ${props.class || ''}`}>\n <div class=\"grid gap-4\" style={gridContainerStyle()}>\n <For each={layout().components}>\n {(component) => (\n <div style={getGridStyleString(component)}>\n <ComponentRenderer component={component} onError={props.onError} />\n </div>\n )}\n </For>\n </div>\n </div>\n )\n}\n"],"names":["ChartRenderer","props","iframeUrl","setIframeUrl","createSignal","isLoading","setIsLoading","error","setError","onMount","chartParams","component","params","chartConfig","type","data","options","responsive","maintainAspectRatio","configStr","encodeURIComponent","JSON","stringify","url","_$ssr","_tmpl$5","_$ssrHydrationKey","_$escape","_$createComponent","Show","when","children","_tmpl$","_tmpl$2","_tmpl$4","title","_tmpl$3","_$ssrAttribute","TableRenderer","tableParams","_tmpl$7","For","each","columns","column","_tmpl$8","_$ssrStyle","width","label","rows","slice","DEFAULT_RESOURCE_LIMITS","maxTableRows","row","_tmpl$9","_tmpl$0","key","pagination","_tmpl$6","currentPage","pageSize","Math","min","totalRows","MetricRenderer","metricParams","_tmpl$12","value","unit","_tmpl$1","trend","_tmpl$10","direction","abs","subtitle","_tmpl$11","TextRenderer","textParams","_tmpl$13","className","content","ComponentRenderer","validation","validateComponent","valid","onError","message","componentId","id","details","errors","_tmpl$14","GenerativeUIErrorBoundary","componentType","allowRetry","UIResourceRenderer","layout","components","grid","gap","gridContainerStyle","getGridStyleString","position","console","colStart","colSpan","rowStart","rowSpan","_tmpl$15","class","_tmpl$16"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UIResourceRenderer.js","sources":["../../src/components/UIResourceRenderer.tsx"],"sourcesContent":["/**\n * UI Resource Renderer Component\n * Phase 0: Foundation with iframe sandbox and composite grid support\n *\n * Security features:\n * - Sandboxed iframes for untrusted content\n * - CSP enforcement via middleware\n * - XSS prevention with DOMPurify\n * - Domain whitelist validation\n *\n * Performance:\n * - Lazy loading with Intersection Observer\n * - Render timeout enforcement\n * - Error boundaries for isolation\n */\n\nimport { Component, createSignal, onMount, Show, For } from 'solid-js'\nimport type { UIComponent, UILayout, RendererError, ComponentType } from '../types'\nimport { validateComponent, DEFAULT_RESOURCE_LIMITS } from '../services/validation'\nimport { GenerativeUIErrorBoundary } from './GenerativeUIErrorBoundary'\n\n/**\n * Props for UIResourceRenderer\n */\nexport interface UIResourceRendererProps {\n /**\n * Single component or full layout to render\n */\n content: UIComponent | UILayout\n\n /**\n * Lazy loading (default: true)\n */\n lazyLoad?: boolean\n\n /**\n * Error callback\n */\n onError?: (error: RendererError) => void\n\n /**\n * Custom CSS class\n */\n class?: string\n}\n\n/**\n * Render a single chart component in a sandboxed iframe\n */\nfunction ChartRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const [iframeUrl, setIframeUrl] = createSignal<string>()\n const [isLoading, setIsLoading] = createSignal(true)\n const [error, setError] = createSignal<string>()\n\n onMount(() => {\n const chartParams = props.component.params as any\n\n // Build Quickchart URL\n const chartConfig = {\n type: chartParams.type,\n data: chartParams.data,\n options: {\n ...chartParams.options,\n responsive: true,\n maintainAspectRatio: false,\n },\n }\n\n // Encode chart configuration for Quickchart API\n const configStr = encodeURIComponent(JSON.stringify(chartConfig))\n const url = `https://quickchart.io/chart?c=${configStr}&width=500&height=300&devicePixelRatio=2`\n\n // Validate domain (should always pass for quickchart.io)\n setIframeUrl(url)\n setIsLoading(false)\n })\n\n return (\n <div class=\"relative w-full h-full min-h-[300px] bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <Show when={isLoading()}>\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div class=\"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600\" />\n </div>\n </Show>\n\n <Show when={error()}>\n <div class=\"absolute inset-0 flex items-center justify-center p-4\">\n <div class=\"text-center\">\n <p class=\"text-red-600 dark:text-red-400 text-sm font-medium\">Chart Error</p>\n <p class=\"text-gray-600 dark:text-gray-400 text-xs mt-1\">{error()}</p>\n </div>\n </div>\n </Show>\n\n <Show when={iframeUrl() && !error()}>\n <div class=\"w-full h-full p-4\">\n <Show when={(props.component.params as any).title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {(props.component.params as any).title}\n </h3>\n </Show>\n <div class=\"w-full h-full\">\n <img\n src={iframeUrl()}\n alt=\"Chart visualization\"\n class=\"w-full h-auto max-h-[300px] object-contain\"\n onError={() => {\n setError('Failed to load chart')\n props.onError?.({\n type: 'render',\n message: 'Chart rendering failed',\n componentId: props.component.id,\n })\n }}\n />\n </div>\n </div>\n </Show>\n </div>\n )\n}\n\n/**\n * Render a table component\n */\nfunction TableRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n const tableParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden\">\n <div class=\"p-4\">\n <Show when={tableParams.title}>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white mb-3\">\n {tableParams.title}\n </h3>\n </Show>\n\n <div class=\"overflow-x-auto\">\n <table class=\"min-w-full divide-y divide-gray-200 dark:divide-gray-700\">\n <thead class=\"bg-gray-50 dark:bg-gray-900\">\n <tr>\n <For each={tableParams.columns}>\n {(column: any) => (\n <th\n scope=\"col\"\n class=\"px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider\"\n style={column.width ? { width: column.width } : {}}\n >\n {column.label}\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody class=\"bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700\">\n <For each={tableParams.rows.slice(0, DEFAULT_RESOURCE_LIMITS.maxTableRows)}>\n {(row: any) => (\n <tr class=\"hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors\">\n <For each={tableParams.columns}>\n {(column: any) => (\n <td class=\"px-4 py-3 text-sm text-gray-900 dark:text-gray-100 whitespace-nowrap\">\n {row[column.key] || '-'}\n </td>\n )}\n </For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n </div>\n\n <Show when={tableParams.pagination}>\n <div class=\"mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400\">\n <span>\n Showing {tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1} -{' '}\n {Math.min(\n (tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize,\n tableParams.pagination.totalRows\n )}{' '}\n of {tableParams.pagination.totalRows}\n </span>\n </div>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Render a metric card component\n */\nfunction MetricRenderer(props: { component: UIComponent }) {\n const metricParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div class=\"flex flex-col h-full justify-between\">\n <div>\n <p class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n {metricParams.title}\n </p>\n <div class=\"mt-2 flex items-baseline\">\n <p class=\"text-2xl font-semibold text-gray-900 dark:text-white\">{metricParams.value}</p>\n <Show when={metricParams.unit}>\n <span class=\"ml-2 text-sm font-medium text-gray-500 dark:text-gray-400\">\n {metricParams.unit}\n </span>\n </Show>\n </div>\n </div>\n\n <Show when={metricParams.trend}>\n <div class=\"mt-3 flex items-center\">\n <span\n class={`text-sm font-medium ${\n metricParams.trend.direction === 'up'\n ? 'text-green-600 dark:text-green-400'\n : metricParams.trend.direction === 'down'\n ? 'text-red-600 dark:text-red-400'\n : 'text-gray-600 dark:text-gray-400'\n }`}\n >\n {metricParams.trend.direction === 'up'\n ? '�'\n : metricParams.trend.direction === 'down'\n ? '�'\n : '�'}{' '}\n {Math.abs(metricParams.trend.value)}%\n </span>\n </div>\n </Show>\n\n <Show when={metricParams.subtitle}>\n <p class=\"mt-2 text-xs text-gray-500 dark:text-gray-400\">{metricParams.subtitle}</p>\n </Show>\n </div>\n </div>\n )\n}\n\n/**\n * Render a text component (with optional markdown)\n */\nfunction TextRenderer(props: { component: UIComponent }) {\n const textParams = props.component.params as any\n\n return (\n <div class=\"w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4\">\n <div\n class={`prose prose-sm dark:prose-invert max-w-none ${textParams.className || ''}`}\n innerHTML={textParams.content} // Note: Should be sanitized at generation time\n />\n </div>\n )\n}\n\n/**\n * Render a single component with error boundary\n */\nfunction ComponentRenderer(props: {\n component: UIComponent\n onError?: (error: RendererError) => void\n}) {\n // Validate component before rendering\n const validation = validateComponent(props.component)\n if (!validation.valid) {\n props.onError?.({\n type: 'validation',\n message: 'Component validation failed',\n componentId: props.component.id,\n details: validation.errors,\n })\n\n return (\n <div class=\"w-full h-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4\">\n <p class=\"text-sm font-medium text-red-900 dark:text-red-100\">Validation Error</p>\n <p class=\"text-xs text-red-700 dark:text-red-300 mt-1\">\n {validation.errors?.[0]?.message || 'Unknown validation error'}\n </p>\n </div>\n )\n }\n\n // Render based on component type with enhanced error boundary\n return (\n <GenerativeUIErrorBoundary\n componentId={props.component.id}\n componentType={props.component.type}\n onError={props.onError}\n allowRetry={true}\n >\n <Show when={props.component.type === 'chart'}>\n <ChartRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'table'}>\n <TableRenderer component={props.component} onError={props.onError} />\n </Show>\n <Show when={props.component.type === 'metric'}>\n <MetricRenderer component={props.component} />\n </Show>\n <Show when={props.component.type === 'text'}>\n <TextRenderer component={props.component} />\n </Show>\n </GenerativeUIErrorBoundary>\n )\n}\n\n/**\n * Main UIResourceRenderer component\n */\nexport const UIResourceRenderer: Component<UIResourceRendererProps> = (props) => {\n const layout = () => {\n // ✅ PHASE 3.3 FIX: Check if content is a UIComponent (non-composite) vs UILayout (composite)\n // UILayout has type='composite', UIComponent has type='chart'|'table'|'metric'|'text'\n if ('type' in props.content && (props.content as any).type !== 'composite') {\n return {\n id: 'single-component',\n components: [props.content as UIComponent],\n grid: {\n columns: 12,\n gap: '1rem',\n },\n } as UILayout\n }\n return props.content as UILayout\n }\n\n // Grid position to CSS Grid styles\n const getGridStyles = (component: UIComponent) => {\n // ✅ PHASE 3 FIX: Defensive check for position field\n if (!component.position) {\n console.error('[UIResourceRenderer] Component missing position field:', component)\n return {\n 'grid-column': '1 / span 12',\n 'grid-row': 'auto',\n }\n }\n\n const { colStart, colSpan, rowStart, rowSpan = 1 } = component.position\n\n return {\n 'grid-column': `${colStart} / span ${colSpan}`,\n 'grid-row': rowStart ? `${rowStart} / span ${rowSpan}` : 'auto',\n }\n }\n\n // Convert grid styles to CSS string to avoid setStyleProperty\n const gridContainerStyle = () =>\n `grid-template-columns: repeat(${layout().grid.columns}, 1fr); gap: ${layout().grid.gap}`\n\n // Convert component grid styles to CSS string\n const getGridStyleString = (component: UIComponent) => {\n // ✅ PHASE 3 FIX: Defensive check for position field\n if (!component.position) {\n console.error('[UIResourceRenderer] Component missing position field:', component)\n return 'grid-column: 1 / span 12; grid-row: auto' // Default to full width\n }\n\n const { colStart, colSpan, rowStart, rowSpan = 1 } = component.position\n return `grid-column: ${colStart} / span ${colSpan}; grid-row: ${rowStart ? `${rowStart} / span ${rowSpan}` : 'auto'}`\n }\n\n return (\n <div class={`w-full ${props.class || ''}`}>\n <div class=\"grid gap-4\" style={gridContainerStyle()}>\n <For each={layout().components}>\n {(component) => (\n <div style={getGridStyleString(component)}>\n <ComponentRenderer component={component} onError={props.onError} />\n </div>\n )}\n </For>\n </div>\n </div>\n )\n}\n"],"names":["ChartRenderer","props","iframeUrl","setIframeUrl","createSignal","isLoading","setIsLoading","error","setError","onMount","chartParams","component","params","chartConfig","type","data","options","responsive","maintainAspectRatio","configStr","encodeURIComponent","JSON","stringify","url","_$ssr","_tmpl$5","_$ssrHydrationKey","_$escape","_$createComponent","Show","when","children","_tmpl$","_tmpl$2","_tmpl$4","title","_tmpl$3","_$ssrAttribute","TableRenderer","tableParams","_tmpl$7","For","each","columns","column","_tmpl$8","_$ssrStyle","width","label","rows","slice","DEFAULT_RESOURCE_LIMITS","maxTableRows","row","_tmpl$9","_tmpl$0","key","pagination","_tmpl$6","currentPage","pageSize","Math","min","totalRows","MetricRenderer","metricParams","_tmpl$12","value","unit","_tmpl$1","trend","_tmpl$10","direction","abs","subtitle","_tmpl$11","TextRenderer","textParams","_tmpl$13","className","content","ComponentRenderer","validation","validateComponent","valid","onError","message","componentId","id","details","errors","_tmpl$14","GenerativeUIErrorBoundary","componentType","allowRetry","UIResourceRenderer","layout","components","grid","gap","gridContainerStyle","getGridStyleString","position","console","colStart","colSpan","rowStart","rowSpan","_tmpl$15","class","_tmpl$16"],"mappings":"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"}