* fix(search): use anchor element
This addresses #698 to allow search title to include links for SPA
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* fix: formatter
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* chore: move itemTile to `a`
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* chore: remove nested a title
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* chore(search): remove spaNavigate
since now searchResult is an `a` item
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
---------
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* add an option to display or not reading time from notes
* Prettier (?)
* Remove ContentMeta override from quartz.layout.ts
* Make it positive ! 🌞
* Update quartz/components/ContentMeta.tsx
---------
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* fix: allow publish property to be a string (ExplicitPublish)
Previously, the ExplicitPublish filter would publish if the `publish`
property was truthy.
The filter expects the `publish` property to be a boolean:
```
---
publish: true
---
```
However, Obsidian only shows the above if you are viewing a page in
“Source” mode.
If you are not in Source view, and you choose Three Dots Menu (...),
“Add file property”, you will get a string, not a boolean. It seems
likely that many users will do this and get:
```
publish: "true"
```
Notice that `"true"` is a string, not the boolean value `true`. If the
user changes this to `"false"`, the page will still be published:
```
publish: "false"
```
That is because the string value `"false"` is truthy.
This PR does the following:
- Allows the `publish` property to be either a boolean or a string.
- If it’s a string, it’s considered `true` if the string is `"true"`
(not case-sensitive; it will also work if it is `"True"`, `"TRUE"`,
etc.)
- Guarantees that the returned value from `shouldPublish` is a `boolean`
-- previously it could be any truthy value even though it was cast to
`boolean`
* style: use double-quotes everywhere
* style: format according to project style guide
* Add option to allow embedding YouTube videos with Obsidian Markdown syntax
* Update Obsidian compatability doc page
* Switch to converting YT links as an html plugin
* Continue setup even if a file to delete is not found
For various reasons, `.gitkeep` may be deleted already.
(In my case, even though I followed the [Getting Started](https://quartz.jzhao.xyz) instructions exactly, my first run resulted in an `fatal: 'upstream' does not appear to be a git repository`)
If we try to delete `.gitkeep` again and don't ignore `ENOENT`, then the whole setup fails.
* Use fs.existsSync
* use slugs instead of title as basis for explorer
* fix folder persist state, better default behaviour
* use relative path instead of full path as full path is affected by -d
* dont use title in breadcrumb if it's just index lol
* fix(breadcrumbs): problem with folder whitespace
use slugs for folder hrefs so folder paths get resolved properly
* feat: only use `slug` for constructing crumbs
* fix: remove capitalization
* fix: Fix `Backlinks` not applying the display class
Fix#518
* fix: Apply `displayClass` to all layout components
* refactor: Use same style
* fix: Remove `undefined` class using coalescing operator
ox-hugo currently supports the following syntax for latex equations:
- https://orgmode.org/manual/LaTeX-fragments.html
- https://ox-hugo.scripter.co/doc/equations
This syntax is supported by mathjax as is mentioned in the ox-hugo documentation.
But quartz uses remark-math which has some issues with the \( \) syntax.
See https://github.com/remarkjs/remark-math/issues/39
This change adds few more transformations to the OxHugoFlavouredMarkdown
plugin, which makes a best effort conversion of this syntax into what
the Quartz Latex transformer plugin supports.
With these changes, the generated files show latex formatting with
default quartz configuration.
Sidenote on `\_` escape by ox-hugo:
ox-hugo escapes, _ using \_, we match against it after we transform
equations into what quartz supports($$ and $).
This could be achieved using lookaround like regex as follows
```js
(?<=(\$|\$\$)[\s\S]*) -> Positive lookbehind for $ or $$
\\_ -> Matches \_
(?=[\s\S]*(?:\1)) Positive lookahead for $ or $$ if matched
const escapedUnderscoreRegex = new RegExp(/(?<=(\$|\$\$)[\s\S]*)\\_(?=[\s\S]*(?:\1))/, "g")
````
But since lookahead/behind can slow things down on large files, we just
look up all equations with $ and $$ delimiters and then try replacing \_
* fix(explorer): default sortFn implementation (#511)
* fix: use `numeric` + `base` for localeCompare
* docs(explorer): update default sortFn
* fix: better and more responsive tag behavior
* tags css moved to TagList.tsx
* used npm run format
* merged tag declarations
---------
Co-authored-by: Ben Schlegel <31989404+benschlegel@users.noreply.github.com>
* feat(consistency): use `all: unset` on button
* style: improve accessibility and consistency for explorer
* fix: localStorage bug with folder name changes
* chore: bump quartz version
add config for `order` array, which determines the order in which all passed config functions for explorer will get executed in.
functions will now dynamically be called on `fileTree` via array accessor (e.g. fileTree["sort"].call(...)) with corresponding function from options being passed to call)
* feat: add basic explorer structure„
* feat: integrate new component/plugin
* feat: add basic explorer structure
* feat: add sort to FileNodes
* style: improve style for explorer
* refactor: remove unused explorer plugin
* refactor: clean explorer structure, fix base (toc)
* refactor: clean css, respect displayClass
* style: add styling to chevron
* refactor: clean up debug statements
* refactor: remove unused import
* fix: clicking folder icon sometimes turns invisible
* refactor: clean css
* feat(explorer): add config for title
* feat: add config for folder click behavior
* fix: `no-pointer` not being set for all elements
new approach, have one `no-pointer` class, that removes pointer events and one `clickable` class on the svg and button (everything that can normally be clicked). then, find all children with `clickable` and toggle `no-pointer`
* fix: bug where nested folders got incorrect height
this fixes the bug where nested folders weren't calculating their total height correctly. done by adding class to main container of all children and calculating total
* feat: introduce `folderDefaultState` config
* feat: store depth for explorer nodes
* feat: implement option for collapsed state + bug fixes
folderBehavior: "link" still has bad styling, but major bugs with pointers fixed (not clean yet, but working)
* fix: default folder icon rotation
* fix: hitbox problem with folder links, fix style
* fix: redirect url for nested folders
* fix: inconsistent behavior with 'collapseFolders' opt
* chore: add comments to `ExplorerNode`
* feat: save explorer state to local storage (not clean)
* feat: rework `getFolders()`, fix localstorage read + write
* feat: set folder state from localStorage
needs serious refactoring but functional (except folder icon orientation)
* fix: folder icon orientation after local storage
* feat: add config for `useSavedState`
* refactor: clean `explorer.inline.ts`
remove unused functions, comments, unused code, add types to EventHandler
* refactor: clean explorer
merge `isSvg` paths, remove console logs
* refactor: add documentation, remove unused funcs
* feat: rework folder collapse logic
use grids instead of jank scuffed solution with calculating total heights
* refactor: remove depth arg from insert
* feat: restore collapse functionality to clicks
allow folder icon + folder label to collapse folders again
* refactor: remove `pointer-event` jank
* feat: improve svg viewbox + remove unused props
* feat: use css selector to toggle icon
rework folder icon to work purely with css instead of JS manipulation
* refactor: remove unused cfg
* feat: move TOC to right sidebar
* refactor: clean css
* style: fix overflow + overflow margin
* fix: use `resolveRelative` to resolve file paths
* fix: `defaultFolderState` config option
* refactor: rename import, rename `folderLi` + ul
* fix: use `QuartzPluginData` type
* docs: add explorer documentation
* feat(search): add arrow navigation
* chore: format
* refactor: simplify arrow navigation
* chore: remove comment
* feat: rework arrow navigation to work without state
* feat: make pressing enter work with arrow navigation
* fix: remove unused css class
* chore: correct comment
* refactor(search): use optional chaining
* Quartz sync: Aug 29, 2023, 10:17 PM
* style: add basic style to tags in search
* feat: add SearchType + tags to search preview
* feat: support multiple matches
* style(search): add style to matching tags
* feat(search): add content to preview for tag search
* fix: only display tags on tag search
* feat: support basic + tag search
* refactor: extract common `fillDocument`, format
* feat: add hotkey to search for tags
* chore: remove logs
* fix: dont render empty `<ul>` if tags not present
* fix(search-tag): make case insensitive
* refactor: clean `hideSearch` and `showSearch`
* feat: trim content similar to `description.ts`
* fix(search-tag): hotkey for windows
* perf: re-use main index for tag search
* enhancement: support kebab-case and nested tags in ofm transformer
* update regex/capture groups to allow for (arbitrarily) nested values and tags of only -/_
* Update quartz/plugins/transformers/ofm.ts
---------
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* feat(cli): add new args for content + link resolve
* feat(cli): validate cmd args
* feat(cli): add chalk + error code to errors
* feat(cli): support for setup/link via args
* refactor(cli): use yargs choices instead of manual
Scrap manual check if arguments are valid, use yargs "choices" field instead.
* feat(cli): add in-dir argument+ handle errors
add new "in-directory" argument, used if "setup" is "copy" or "symlink" to determine source. add error handling for invalid permutations of arguments or non existent path
* feat(cli): dynamically use cli or provided args
use "in-directory" arg as `originalFolder` if available, otherwise get it from manual cli process
* run format
* fix: use process.exit instead of return
* refactor: split CommonArgv and CreateArgv
* refactor(cli): rename create args, use ${} syntax
* fix(cli): fix link resolution strategy arg
* format
* feat(consistency): allow partial cmd args
* feat(plugins): add OxHugoFlavouredMarkdown
ox-hugo is an org exporter backend that exports org files to
hugo-compatible markdown in an opinionated way. This plugin adds some
tweaks to the generated markdown to make it compatible with quartz but
the list of changes applied it is not extensive.
In the future however, we could leapfrog ox-hugo altogether and
create a quartz site directly out of org-roam files. That way we won't
have to do all the ritual dancing that this plugin has to perform.
See https://github.com/k2052/org-to-markdown
* fix: add toml to remarkFrontmatter configuration
* docs: add docs for OxHugoFlavouredMarkdown
* fixup! docs: add docs for OxHugoFlavouredMarkdown
* feat(plugins): add toml support for frontmatter
Currently frontmatter is expected to be yaml, with delimiter set to
"---". This might not always be the case, for example ox-hugo(a hugo
exporter for org-mode files) exports in toml format with the delimiter
set to "+++" by default.
With this change, the users will be able use frontmatter plugin to
support this toml frontmatter format.
Example usage: `Plugin.FrontMatter({delims: "+++", language: 'toml'})`
- [0] https://ox-hugo.scripter.co/doc/org-meta-data-to-hugo-front-matter/
* fixup! feat(plugins): add toml support for frontmatter