{"version":3,"file":"markdown.cjs","names":["getContent","validateMarkdown","getMarkdownMetadata","getHTMLCustomComponents","MARKDOWN"],"sources":["../../../../src/transpiler/markdown/markdown.ts"],"sourcesContent":["import type { TypedNodeModel } from '@intlayer/types/nodeType';\nimport { formatNodeType, MARKDOWN } from '@intlayer/types/nodeType';\nimport { getContent } from '../../interpreter/getContent/getContent';\nimport { getHTMLCustomComponents } from '../html/getHTMLCustomComponents';\nimport { getMarkdownMetadata } from './getMarkdownMetadata';\nimport { validateMarkdown } from './validateMarkdown';\n\ntype PropsType = 'number' | 'string' | 'node';\n\ntype ComponentName = string;\n\nexport type MarkdownContentConstructor<\n  T extends Record<string, any> = {},\n  Content = unknown,\n> = TypedNodeModel<typeof MARKDOWN, Content, T>;\n\nexport type MarkdownContent<\n  Content = unknown,\n  Components extends Record<ComponentName, PropsType> = Record<\n    ComponentName,\n    PropsType\n  >,\n> = MarkdownContentConstructor<\n  {\n    metadata?: Record<string, any>;\n    tags?: string[] | Components;\n  },\n  Content\n>;\n\nconst awaitContent = async (content: any) => {\n  if (typeof content === 'string' || typeof content === 'object') {\n    return content as any;\n  }\n\n  if (typeof content === 'function') {\n    return content();\n  }\n  if (typeof content.then === 'function') {\n    return await content;\n  }\n};\n\n/**\n * Function intended to be used to build intlayer dictionaries.\n *\n * Allow to pick a content based on a quantity.\n *\n * Usage:\n *\n * ```ts\n * markdown('## Hello world!');\n * ```\n *\n */\nconst markdown = <\n  Components extends Record<string, any> = Record<string, any>,\n  Content = unknown,\n>(\n  content: Content,\n  components?: Components\n): MarkdownContent<Content, Components> => {\n  const metadata = async () => {\n    const awaitedContent = await awaitContent(content);\n\n    const flatContent = getContent(awaitedContent, {\n      dictionaryKey: '',\n      keyPath: [],\n    });\n\n    if (typeof flatContent === 'string') {\n      if (process.env.NODE_ENV !== 'production') {\n        const { issues } = validateMarkdown(flatContent);\n        for (const issue of issues) {\n          if (issue.type === 'error') {\n            console.error(`[intlayer/markdown] ${issue.message}`);\n          } else {\n            console.warn(`[intlayer/markdown] ${issue.message}`);\n          }\n        }\n      }\n\n      return getMarkdownMetadata(flatContent);\n    }\n  };\n\n  const getComponents = () => {\n    if (components) {\n      return components;\n    }\n\n    if (typeof content === 'string') {\n      return getHTMLCustomComponents(content);\n    }\n\n    let stringContent: any;\n\n    if (typeof content === 'function') {\n      stringContent = content();\n    } else if (typeof (content as Promise<string>).then === 'function') {\n      stringContent = async () =>\n        getHTMLCustomComponents((await (content as Promise<string>)) as string);\n    }\n\n    if (typeof stringContent === 'string') {\n      return getHTMLCustomComponents(stringContent);\n    }\n\n    try {\n      return getHTMLCustomComponents(JSON.stringify(content));\n    } catch (_e) {\n      return [];\n    }\n  };\n\n  return formatNodeType(MARKDOWN, content, {\n    metadata,\n    tags: getComponents(),\n  });\n};\n\nexport { markdown as md };\n"],"mappings":";;;;;;;;;AA8BA,MAAM,eAAe,OAAO,YAAiB;AAC3C,KAAI,OAAO,YAAY,YAAY,OAAO,YAAY,SACpD,QAAO;AAGT,KAAI,OAAO,YAAY,WACrB,QAAO,SAAS;AAElB,KAAI,OAAO,QAAQ,SAAS,WAC1B,QAAO,MAAM;;;;;;;;;;;;;;AAgBjB,MAAM,YAIJ,SACA,eACyC;CACzC,MAAM,WAAW,YAAY;EAG3B,MAAM,cAAcA,qDAAW,MAFF,aAAa,QAAQ,EAEH;GAC7C,eAAe;GACf,SAAS,EAAE;GACZ,CAAC;AAEF,MAAI,OAAO,gBAAgB,UAAU;AACnC,OAAI,QAAQ,IAAI,aAAa,cAAc;IACzC,MAAM,EAAE,WAAWC,8DAAiB,YAAY;AAChD,SAAK,MAAM,SAAS,OAClB,KAAI,MAAM,SAAS,QACjB,SAAQ,MAAM,uBAAuB,MAAM,UAAU;QAErD,SAAQ,KAAK,uBAAuB,MAAM,UAAU;;AAK1D,UAAOC,oEAAoB,YAAY;;;CAI3C,MAAM,sBAAsB;AAC1B,MAAI,WACF,QAAO;AAGT,MAAI,OAAO,YAAY,SACrB,QAAOC,wEAAwB,QAAQ;EAGzC,IAAI;AAEJ,MAAI,OAAO,YAAY,WACrB,iBAAgB,SAAS;WAChB,OAAQ,QAA4B,SAAS,WACtD,iBAAgB,YACdA,wEAAyB,MAAO,QAAuC;AAG3E,MAAI,OAAO,kBAAkB,SAC3B,QAAOA,wEAAwB,cAAc;AAG/C,MAAI;AACF,UAAOA,wEAAwB,KAAK,UAAU,QAAQ,CAAC;WAChD,IAAI;AACX,UAAO,EAAE;;;AAIb,qDAAsBC,mCAAU,SAAS;EACvC;EACA,MAAM,eAAe;EACtB,CAAC"}