{"version":3,"file":"checkbox.mjs","sources":["../../../../../../../packages/components/editor-md/src/plugins/checkbox.ts"],"sourcesContent":["import { extend } from 'lodash-unified'\n\nconst checkboxReplace = function (md: any, options: any) {\n  let lastId: number\n  const arrReplaceAt = md.utils.arrayReplaceAt\n  lastId = 0\n  const defaults = {\n    divWrap: false,\n    divClass: 'checkbox',\n    idPrefix: 'checkbox',\n  }\n  options = extend(defaults, options)\n  // eslint-disable-next-line no-useless-escape\n  const pattern = /\\[(X|\\s|\\_|\\-)\\]\\s(.*)/i\n  const createTokens = function (checked: any, label: any, Token: any) {\n    let token\n    const nodes = []\n    /**\n     * <div class=\"checkbox\">\n     */\n    if (options.divWrap) {\n      token = new Token('checkbox_open', 'div', 1)\n      token.attrs = [['class', 'checkbox']]\n      nodes.push(token)\n    }\n\n    /**\n     * <input type=\"checkbox\" id=\"checkbox{n}\" checked=\"true\">\n     */\n    const id = options.idPrefix + lastId\n    lastId += 1\n    token = new Token('checkbox_input', 'input', 0)\n    token.attrs = [\n      ['type', 'checkbox'],\n      ['id', id],\n    ]\n\n    if (options.disabled) {\n      token.attrs.push(['disabled', true])\n    }\n    if (checked === true) {\n      token.attrs.push(['checked', 'true'])\n    }\n    nodes.push(token)\n\n    /**\n     * <label for=\"checkbox{n}\">\n     */\n    token = new Token('label_open', 'label', 1)\n    token.attrs = [['for', id]]\n    nodes.push(token)\n\n    /**\n     * content of label tag\n     */\n    token = new Token('text', '', 0)\n    token.content = label\n    nodes.push(token)\n\n    /**\n     * closing tags\n     */\n    // eslint-disable-next-line unicorn/no-array-push-push\n    nodes.push(new Token('label_close', 'label', -1))\n    if (options.divWrap) {\n      nodes.push(new Token('checkbox_close', 'div', -1))\n    }\n    return nodes\n  }\n\n  const splitTextToken = function (original: any, Token: any) {\n    let checked\n    const text = original.content\n    const matches = text.match(pattern)\n\n    if (matches === null) {\n      return original\n    }\n    checked = false\n    const value = matches[1]\n    const label = matches[2]\n    if (value === 'X' || value === 'x') {\n      checked = true\n    }\n    return createTokens(checked, label, Token)\n  }\n\n  return function (state: any) {\n    let i, j, token, tokens\n    const blockTokens = state.tokens\n    j = 0\n    const l = blockTokens.length\n    while (j < l) {\n      if (blockTokens[j].type !== 'inline') {\n        j++\n        continue\n      }\n      tokens = blockTokens[j].children\n      i = tokens.length - 1\n      while (i >= 0) {\n        token = tokens[i]\n        if (token.type === 'text' && pattern.test(token.content)) {\n          blockTokens[j].children = tokens = arrReplaceAt(\n            tokens,\n            i,\n            splitTextToken(token, state.Token)\n          )\n        }\n        i--\n      }\n      j++\n    }\n  }\n}\n\nexport function checkbox(md: any, options: any) {\n  md.core.ruler.push('checkbox', checkboxReplace(md, options))\n}\n"],"names":[],"mappings":"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"}