Emile Bangma
2024-06-13 81d00fc9c003a37033e0c0d92333801fa94d0633
.callout-content support (#1188)

* .callout-content support

* Use BlockContent | FootnoteContent for callout body

* Update quartz/plugins/transformers/ofm.ts

Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>

* Refactor

* Combine child selectors

* Fix multiple callout members

* Empty check

* Replace splice

---------

Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
2 files modified
21 ■■■■ changed files
quartz/plugins/transformers/ofm.ts 19 ●●●● patch | view | raw | blame | history
quartz/styles/callouts.scss 2 ●●● patch | view | raw | blame | history
quartz/plugins/transformers/ofm.ts
@@ -414,8 +414,8 @@
                return
              }
              // find first line
              const firstChild = node.children[0]
              // find first line and callout content
              const [firstChild, ...calloutContent] = node.children
              if (firstChild.type !== "paragraph" || firstChild.children[0]?.type !== "text") {
                return
              }
@@ -492,6 +492,21 @@
                    "data-callout-metadata": calloutMetaData,
                  },
                }
                // Add callout-content class to callout body if it has one.
                if (calloutContent.length > 0) {
                  const contentData: BlockContent | DefinitionContent = {
                    data: {
                      hProperties: {
                        className: "callout-content",
                      },
                      hName: "div",
                    },
                    type: "blockquote",
                    children: [...calloutContent],
                  }
                  node.children = [node.children[0], contentData]
                }
              }
            })
          }
quartz/styles/callouts.scss
@@ -10,7 +10,7 @@
  transition: max-height 0.3s ease;
  box-sizing: border-box;
  & > *:nth-child(2) {
  & > .callout-content > :first-child {
    margin-top: 0;
  }