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

{{#let (find-by "name" "path" @secret.allFields) as |attr|}}
  {{#if (eq @type "edit")}}
    <ReadonlyFormField @attr={{attr}} @value={{get @secret attr.name}} />
  {{else if (eq @type "create")}}
    <FormField @attr={{attr}} @model={{@secret}} @modelValidations={{@modelValidations}} @onKeyUp={{@pathValidations}} />
  {{/if}}
{{/let}}

<hr class="is-marginless has-background-gray-200" />
{{#if @showJson}}
  {{#if (eq @type "details")}}
    <Hds::CodeBlock
      data-test-code-block="secret-data"
      @value={{this.stringifiedSecretData}}
      @language="json"
      @hasCopyButton={{true}}
      @maxHeight="300px"
      as |CB|
    >
      <CB.Title @tag="h3">
        Version data
      </CB.Title>
    </Hds::CodeBlock>
  {{else}}
    <JsonEditor
      @title="{{if (eq @type 'create') 'Secret' 'Version'}} data"
      @value={{this.stringifiedSecretData}}
      @valueUpdated={{this.handleJson}}
      @viewportMargin={{this.viewportMargin}}
    />
  {{/if}}
  {{#if (or @modelValidations.secretData.errors this.lintingErrors)}}
    <AlertInline
      @color={{if this.lintingErrors "warning" "critical"}}
      class="has-top-padding-s"
      @message={{if
        @modelValidations.secretData.errors
        @modelValidations.secretData.errors
        "JSON is unparsable. Fix linting errors to avoid data discrepancies."
      }}
    />
  {{/if}}
{{else if (eq @type "details")}}
  {{#each-in @secret.secretData as |key value|}}
    <InfoTableRow @label={{key}} @value={{value}} @alwaysRender={{true}}>
      <MaskedInput @name={{key}} @value={{value}} @displayOnly={{true}} @allowCopy={{true}} @allowDownload={{true}} />
    </InfoTableRow>
  {{else}}
    <InfoTableRow @label="" @value="" @alwaysRender={{true}} />
  {{/each-in}}
{{else}}
  <KvObjectEditor
    class="has-top-margin-m"
    @label="{{if (eq @type 'create') 'Secret' 'Version'}} data"
    @value={{@secret.secretData}}
    @onChange={{fn (mut @secret.secretData)}}
    @isMasked={{true}}
    @warnNonStringValues={{true}}
  />
{{/if}}