diff --git a/actions/publishToPublication.ts b/actions/publishToPublication.ts index ebec9212..04a319ef 100644 --- a/actions/publishToPublication.ts +++ b/actions/publishToPublication.ts @@ -195,12 +195,16 @@ async function processBlocksToPages( let alignmentValue = scan.eav(blockOrList.block.value, "block/text-alignment")[0]?.data .value || "left"; - let alignment = + let alignment: ExcludeString< + PubLeafletPagesLinearDocument.Block["alignment"] + > = alignmentValue === "center" ? "lex:pub.leaflet.pages.linearDocument#textAlignCenter" : alignmentValue === "right" ? "lex:pub.leaflet.pages.linearDocument#textAlignRight" - : undefined; + : alignmentValue === "justify" + ? "lex:pub.leaflet.pages.linearDocument#textAlignJustify" + : undefined; let b = await blockToRecord(blockOrList.block, did); if (!b) return []; let block: PubLeafletPagesLinearDocument.Block = { @@ -547,3 +551,9 @@ function YJSFragmentToFacets( } return []; } + +type ExcludeString = T extends string + ? string extends T + ? never + : T /* maybe literal, not the whole `string` */ + : T; /* not a string */ diff --git a/lexicons/api/index.ts b/lexicons/api/index.ts index 15977768..f1e2a4d0 100644 --- a/lexicons/api/index.ts +++ b/lexicons/api/index.ts @@ -96,6 +96,8 @@ export const PUB_LEAFLET_PAGES = { 'pub.leaflet.pages.linearDocument#textAlignCenter', LinearDocumentTextAlignRight: 'pub.leaflet.pages.linearDocument#textAlignRight', + LinearDocumentTextAlignJustify: + 'pub.leaflet.pages.linearDocument#textAlignJustify', } export class AtpBaseClient extends XrpcClient { diff --git a/lexicons/api/lexicons.ts b/lexicons/api/lexicons.ts index 95cc129d..e9e744ca 100644 --- a/lexicons/api/lexicons.ts +++ b/lexicons/api/lexicons.ts @@ -1615,6 +1615,9 @@ export const schemaDict = { textAlignRight: { type: 'token', }, + textAlignJustify: { + type: 'token', + }, quote: { type: 'object', required: ['start', 'end'], diff --git a/lexicons/api/types/pub/leaflet/pages/linearDocument.ts b/lexicons/api/types/pub/leaflet/pages/linearDocument.ts index ed5785b2..2b4af672 100644 --- a/lexicons/api/types/pub/leaflet/pages/linearDocument.ts +++ b/lexicons/api/types/pub/leaflet/pages/linearDocument.ts @@ -81,6 +81,7 @@ export function validateBlock(v: V) { export const TEXTALIGNLEFT = `${id}#textAlignLeft` export const TEXTALIGNCENTER = `${id}#textAlignCenter` export const TEXTALIGNRIGHT = `${id}#textAlignRight` +export const TEXTALIGNJUSTIFY = `${id}#textAlignJustify` export interface Quote { $type?: 'pub.leaflet.pages.linearDocument#quote' diff --git a/lexicons/pub/leaflet/pages/linearDocument.json b/lexicons/pub/leaflet/pages/linearDocument.json index ab40f46f..ff45455b 100644 --- a/lexicons/pub/leaflet/pages/linearDocument.json +++ b/lexicons/pub/leaflet/pages/linearDocument.json @@ -64,6 +64,9 @@ "textAlignRight": { "type": "token" }, + "textAlignJustify": { + "type": "token" + }, "quote": { "type": "object", "required": [ diff --git a/lexicons/src/pages/LinearDocument.ts b/lexicons/src/pages/LinearDocument.ts index 9c5a7625..b2ee6f79 100644 --- a/lexicons/src/pages/LinearDocument.ts +++ b/lexicons/src/pages/LinearDocument.ts @@ -32,6 +32,7 @@ export const PubLeafletPagesLinearDocument: LexiconDoc = { textAlignLeft: { type: "token" }, textAlignCenter: { type: "token" }, textAlignRight: { type: "token" }, + textAlignJustify: { type: "token" }, quote: { type: "object", required: ["start", "end"],