JSFiddle - React, Tailwind, and code Playground

HTML

<script type="module">

  /************************************************************************************ 
   *
   * 1. File and certificate provisioning
   *
   ************************************************************************************/

  const mydocument = 'test';
  const mycertificate = {
    blockchains: {
      xrp: {
        transaction: 'A5C5547C67DC4BAAB1793F8DC83616B5AA988AB261F425AA459AF2B2B7812C00',
        block_timestamp: 786501601,
        merkle_tree_splice: [
          '7fDcxqo67ghGTV1HyJpscanO0EEerhijtXYA0USlxnk=',
          '',
          'IOxNJ/fhVpu5w+oOYXg4CIyfvBiKZ3ozPs2XnplyTBo='
        ]
      },
      solana: {
        transaction: '2j1tNuEP5LxcW9tKsi2Scr3fvjLkpJ1xcszzC8RdGwoJioppt7JzWSyJniTCGhSZorFNnR3y2nKZTs18nCfYADgr',
        block_timestamp: 1733187600,
        merkle_tree_splice: [
          '7fDcxqo67ghGTV1HyJpscanO0EEerhijtXYA0USlxnk=',
          '',
          'IOxNJ/fhVpu5w+oOYXg4CIyfvBiKZ3ozPs2XnplyTBo=',
          '56dme4H5OOa4yLMuyvK7KPMrXKFj/u/BHCc9RYmWHlk=',
          'Cz1F06Khmq1QmDxJ77PPNnmDSuWapPu/9HFyIY0AdZU=',
          'pGIWsoAJm+bVKvGVEUGaGK5Cb92+nnLYEgi5QUdHhVA=',
          'Nr/8EqtWd+XJhseUg2+6vNc4ST9j/FqjVdDewABwkTk=',
          'fVxcnHkJAS4vtJuWYg5HtDr3XKeK65rEo60IKpsr3Rg='
        ]
      }
    },
    meta: {
      version: 1,
      blockchains: ['solana', 'xrp'],
      salt: '00a54fabe12c75e8663534ecda19ab38'
    },
    info: {
      hash_algorithm: 'SHA-256',
      salted_hash: 'o0X9rt38cyVpTmfKmegkkXkjr1Z48T8ihsvxDFa1wCg='
    },
    document_hash: 'n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg='
  };
  
  /************************************************************************************ 
   *
   * 2. Hash regeneration
   *
   ************************************************************************************/

  async function hashString(message) {
    const messageUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array
    const hashBuffer = await...