<!--
Copyright (C) 2016 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../gr-linked-text/gr-linked-text.html">

<dom-module id="gr-formatted-text">
  <template>
    <style>
      :host {
        display: block;
        font-family: var(--font-family);
      }
      p,
      ul,
      blockquote,
      gr-linked-text.pre {
        margin: 0 0 1.4em 0;
      }
      p,
      ul,
      blockquote {
        max-width: var(--gr-formatted-text-prose-max-width, none);
      }
      :host.noTrailingMargin p:last-child,
      :host.noTrailingMargin ul:last-child,
      :host.noTrailingMargin blockquote:last-child,
      :host.noTrailingMargin gr-linked-text.pre:last-child {
        margin: 0;
      }
      blockquote {
        border-left: 1px solid #aaa;
        padding: 0 .7em;
      }
      li {
        margin-left: 1.4em;
      }
      gr-linked-text.pre {
        font-family: var(--monospace-font-family);
      }

    </style>
    <div id="container"></div>
  </template>
  <script src="gr-formatted-text.js"></script>
</dom-module>
