diff --git a/core/wiki/macros/CSS.tid b/core/wiki/macros/CSS.tid index 8f8397b035..e9f5bacc19 100644 --- a/core/wiki/macros/CSS.tid +++ b/core/wiki/macros/CSS.tid @@ -108,12 +108,18 @@ tags: $:/tags/Macro \widget $palette.preview(paletteTitle) \whitespace trim - \function colour-inner-get-imported-palette(name,paletteTitle) - [[palette-import@]addsuffix] :map[gethas[title]] +[!match[]] :else[get[palette-import]has[title]] :map[function[colour-inner-get-palette-entry],,] +[!match[]] + + \function colour-inner-get-imported-palette(name,paletteTitle,exclusions) + [[palette-import@]addsuffix] :map[gethas[title]] +[!match[]] :else[get[palette-import]has[title]] +[!match[]] :filter[enlistmatchcount[]compare:number:eq[0]] :map[function[colour-inner-descend-imported-palette],,,,] +[!match[]] \end colour-inner-get-imported-palette - \function colour-inner-get-palette-entry(name,paletteTitle) - [addprefix[@]addprefix] :map[getindex] +[!match[]] :else[getindex] :map[tf.colour-inner-transform-classic-palette-entry] :else[function[colour-inner-get-imported-palette],,] + + \function colour-inner-descend-imported-palette(name,paletteTitle,exclusions,parentTitle) + [enlist] [] +[format:titlelist[]join[ ]] :map[function[colour-inner-get-palette-entry],,,] + \end colour-inner-descend-imported-palette + + \function colour-inner-get-palette-entry(name,paletteTitle,exclusions) + [addsuffix[@]addsuffix] :map[getindex] +[!match[]] :else[getindex] :map[tf.colour-inner-transform-classic-palette-entry] :else[function[colour-inner-get-imported-palette],,,] \end colour-inner-get-palette-entry diff --git a/editions/test/tiddlers/tests/data/palettes/PreviewCyclicImports.tid b/editions/test/tiddlers/tests/data/palettes/PreviewCyclicImports.tid new file mode 100644 index 0000000000..960d8ae1e1 --- /dev/null +++ b/editions/test/tiddlers/tests/data/palettes/PreviewCyclicImports.tid @@ -0,0 +1,39 @@ +title: Operators/Palettes/PreviewCyclicImports +description: The palette.preview widget copes with palettes that import each other in a circular loop +type: text/vnd.tiddlywiki-multiple +tags: [[$:/tags/wiki-test-spec]] + +title: Output + +\import [subfilter{$:/core/config/GlobalImportFilter}] +<$palette.preview paletteTitle="PaletteA"> +<> +<> +<> + ++ +title: PaletteA +name: Palette A +tags: $:/tags/Palette +type: application/x-tiddler-dictionary +palette-import: PaletteB +color-scheme: light + +local: #111111 ++ +title: PaletteB +name: Palette B +tags: $:/tags/Palette +type: application/x-tiddler-dictionary +palette-import: PaletteA +color-scheme: light + +inherited: #222222 ++ +title: ExpectedResult + +

+#111111 +#222222 + +

\ No newline at end of file diff --git a/editions/test/tiddlers/tests/data/palettes/PreviewSchemeLookup.tid b/editions/test/tiddlers/tests/data/palettes/PreviewSchemeLookup.tid new file mode 100644 index 0000000000..1fde23226a --- /dev/null +++ b/editions/test/tiddlers/tests/data/palettes/PreviewSchemeLookup.tid @@ -0,0 +1,30 @@ +title: Operators/Palettes/PreviewSchemeLookup +description: The palette.preview widget resolves scheme-suffixed entries +type: text/vnd.tiddlywiki-multiple +tags: [[$:/tags/wiki-test-spec]] + +title: Output + +\import [subfilter{$:/core/config/GlobalImportFilter}] +<$palette.preview paletteTitle="MyPalette"> +<> +<> + ++ +title: MyPalette +name: My Palette +description: Palette with scheme-suffixed entries +tags: $:/tags/Palette +type: application/x-tiddler-dictionary +color-scheme: dark + +page-background: #fe0 +page-background@dark: #221 +only-dark@dark: #123 ++ +title: ExpectedResult + +

+#221 +#123 +

\ No newline at end of file