import { $ } from "../../dom.mjs";
import { CSSIcon } from "../../../common/codicons.mjs";
const labelWithIconsRegex = new RegExp(`(\\\\)?\\$\\((${CSSIcon.iconNameExpression}(?:${CSSIcon.iconModifierExpression})?)\\)`, "g");
function renderLabelWithIcons(text) {
  const elements = new Array();
  let match;
  let textStart = 0, textStop = 0;
  while ((match = labelWithIconsRegex.exec(text)) !== null) {
    textStop = match.index || 0;
    elements.push(text.substring(textStart, textStop));
    textStart = (match.index || 0) + match[0].length;
    const [, escaped, codicon] = match;
    elements.push(escaped ? `$(${codicon})` : renderIcon({ id: codicon }));
  }
  if (textStart < text.length) {
    elements.push(text.substring(textStart));
  }
  return elements;
}
function renderIcon(icon) {
  const node = $(`span`);
  node.classList.add(...CSSIcon.asClassNameArray(icon));
  return node;
}
export {
  renderIcon,
  renderLabelWithIcons
};
