/*
 This file is part of GNU Taler
 (C) 2022 Taler Systems S.A.
 GNU Taler is free software; you can redistribute it and/or modify it under the
 terms of the GNU General Public License as published by the Free Software
 Foundation; either version 3, or (at your option) any later version.
 GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 You should have received a copy of the GNU General Public License along with
 GNU Taler; see the file COPYING.  If not, see 
 */
import { Fragment, VNode, h } from "preact";
import { useState } from "preact/hooks";
export function ExchangeXmlTos({ doc }: { doc: Document }): VNode {
  if (typeof window === "undefined") {
    // in nodejs env we don't have xml api
    return 
;
  }
  const termsNode = doc.querySelector("[ids=terms-of-service]");
  if (!termsNode) {
    return (
      
        
          The exchange send us an xml but there is no node with
          'ids=terms-of-service'. This is the content:
        
        {new XMLSerializer().serializeToString(doc)}
       
    );
  }
  return {Array.from(termsNode.children).map(renderChild)};
}
/**
 * Map XML elements into HTML
 * @param child
 * @returns
 */
function renderChild(child: Element): VNode {
  const children = Array.from(child.children);
  switch (child.nodeName) {
    case "title":
      return ;
    case "#text":
      return ;
    case "paragraph":
      return {child.textContent}
;
    case "section": {
      return (
        
          {children.map(renderChild)}
        
      );
    }
    case "bullet_list": {
      return {children.map(renderChild)}
;
    }
    case "enumerated_list": {
      return{children.map(renderChild)}
;
    }
    case "list_item": {
      return {children.map(renderChild)};
    }
    case "block_quote": {
      return{children.map(renderChild)}
;
    }
    default:
      return (
        
          unknown tag {child.nodeName}
        
      );
  }
}
/**
 * Simple anchor with a state persisted into 'data-open' prop
 * @returns
 */
function AnchorWithOpenState(
  props: h.JSX.HTMLAttributes,
): VNode {
  const [open, setOpen] = useState(false);
  function doClick(e: h.JSX.TargetedMouseEvent): void {
    setOpen(!open);
    e.preventDefault();
  }
  return ;
}