When providing an absolute path to the content directory (e.g. when using an Obsidian Vault in another directory), the build step would fail with
Failed to process `/absolute/path/to/file.md`: ENOENT: no such file or directory, stat '/current/working/directory/absolute/path/'
This problem originated in the `CreatedModifiedDate` transformer which tries to construct a native filesystem path to the file to call `fs.stat` on. It did not however, account for the original file path contained in the received `VFile` being an absolute path and so, just concatenated the current working directory with the absolute path producing a nonexistent one.
This patch adds a simple fix for this issue by checking if the original file path is already absolute before concatenating with the current working directory.
* fix(search): increase size on fullPageWidth viewport
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* chore: fix width size to be consistent on multiple views
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* chore: set layout to 0 if there is no term
remove flashing by setting max-height
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
---------
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* feat(search): telescope-style search
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* chore(search): cleanup some basis and borders
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* fix(search): make sure to set overflow-y
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* feat(search): shows preview on desktop only search
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* perf: add options to control layout through config
cache memoize results to avoid fetching
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* chore: use the default configuration
* fix: correct minor type for search
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* fix: use datasets to query for preview
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* chore: layout changes
show preview on normal layout, and only show previous layout in list page.
* fix(type): annotate search with types
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* chore: apply jacky's suggestion
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* chore: using map API and scss
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* fix: styling on search container view on phones
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
* Update quartz.layout.ts
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
---------
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* Add icons as masks
To handle a simple way to add custom icons, i made it pure css. Icon are now a mask for the callout-icon div, so they always follow the --color form the current callout.
Now to add a custom icon, you simply add
```css
.callout {
&[data-callout="custom"] {
--color: #customcolor;
--border: #custombordercolor;
--bg: #custombg;
--callout-icon: url('data:image/svg+xml; utf8, <custom formatted svg>');
}
```
to custom.scss
* remove now unused code
* Make callouts an enum
* docs: update instructions for custom callouts
* Prettier & run format
* dynamic matching
For maintainability, make dynamic mathching. If we or Obsidian want to support more callouts, we simply add it to the enum
* callout mapping const
Getting ride of the enum entierly as it's not worth here?
* fix callout icon styling
* Add forgotten icons
* Rebase
* harmonize callout icon and fold icon
* fix docs + prettier
* Update docs/features/callouts.md
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* Update quartz/plugins/transformers/ofm.ts
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* Suggestions fix
* remove unecessary rules
* comment is always nice
* Update docs/features/callouts.md
---------
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* feat: div that encapsulate PageList component
* change class to follow review
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* apply page-listing div to TagContent
---------
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* fix: alt error mix with height/width
More granular detection of alt and resize in image
* fix: format
* feat: allow to translate the date displayed
* style: format
* fix: rename to fusion dateLocale with locale (i18n support)
* Update quartz/components/PageList.tsx
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* remove default key as it was already set
* add docstring for locale
---------
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* docs: improve first-time git setup
* fix: cssClasses was not applied on index page
* refactor: remove vscode files
* fix: format
* fix: cssClasses should be applied on the entire div, not only the article
* feat: support cssClasses for tag-listing
---------
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* 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