{{!
  Copyright (c) HashiCorp, Inc.
  SPDX-License-Identifier: BUSL-1.1
~}}

<form
  {{on "submit" (fn @doSubmit (hash ciphertext=@ciphertext context=@context nonce=@nonce key_version=@key_version))}}
  ...attributes
>
  <div class="box is-sideless is-fullwidth is-marginless">
    <NamespaceReminder @mode="perform" @noun="rewrap" />
    <div class="content has-bottom-margin-l">
      <p>
        You can rewrap the provided ciphertext using the latest version of
        <code>{{@key.name}}</code>
        as the cryptographic key.
      </p>
    </div>
    <KeyVersionSelect @key={{@key}} @onVersionChange={{fn (mut @key_version)}} @key_version={{@key_version}} />
    <div class="field">
      <div class="control is-expanded">
        <JsonEditor @title="Ciphertext" @valueUpdated={{fn (mut @ciphertext)}} @mode="ruby" />
      </div>
    </div>
    {{#if @key.derived}}
      <div class="field">
        <label for="context" class="is-label">
          Context
        </label>
        <div class="field has-addons">
          <div class="control">
            <Input @type="text" id="context" @value={{@context}} class="input" data-test-transit-input="context" />
          </div>
          <div class="control">
            <B64Toggle @value={{@context}} @data-test-transit-b64-toggle="context" />
          </div>
        </div>
      </div>
    {{/if}}
    {{#if (eq @key.convergentEncryptionVersion 1)}}
      <div class="field">
        <label for="nonce" class="is-label">Nonce</label>
        <div class="field has-addons">
          <div class="control">
            <Input @type="text" id="nonce" @value={{@nonce}} class="input" data-test-transit-input="nonce" />
          </div>
          <div class="control">
            <B64Toggle @value={{@nonce}} @data-test-transit-b64-toggle="nonce" />
          </div>
        </div>
      </div>
    {{/if}}
  </div>
  <div class="field box is-fullwidth is-bottomless">
    <div class="content has-bottom-margin-l">
      <p class="help">
        Submitting this form will update the
        <code>ciphertext</code>
        in-place.
      </p>
    </div>
    <div class="control">
      <Hds::Button @text="Rewrap" type="submit" />
    </div>
  </div>
</form>
{{#if @isModalActive}}
  <Hds::Modal id="transit-rewrap-modal" @onClose={{fn (mut @isModalActive) false}} as |M|>
    <M.Header>
      Copy your token
    </M.Header>
    <M.Body>
      <h2 class="title is-6">Ciphertext</h2>
      <Hds::Copy::Snippet
        @textToCopy={{@ciphertext}}
        @color="secondary"
        @container="#transit-rewrap-modal"
        @isFullWidth={{true}}
        @isTruncated={{true}}
        @onError={{(fn (set-flash-message "Clipboard copy failed. The Clipboard API requires a secure context." "danger"))}}
      />
    </M.Body>
    <M.Footer as |F|>
      <Hds::Button @text="Close" {{on "click" F.close}} />
    </M.Footer>
  </Hds::Modal>
{{/if}}