Skip to content

Commit

Permalink
[DEV-13006] Update model: callout block & highlighted text
Browse files Browse the repository at this point in the history
  • Loading branch information
e1himself committed Jun 19, 2024
1 parent 88f1d76 commit 895754b
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 0 deletions.
24 changes: 24 additions & 0 deletions packages/content-format/src/nodes/CalloutNode.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { ComposedElement } from '../ComposedElement';
import type { Node } from '../Node';

export interface CalloutNode<Inline extends Node> extends ComposedElement<typeof CalloutNode.TYPE, Inline> {}

export namespace CalloutNode {
export const TYPE = 'callout';

export function isCalloutNode<T extends CalloutNode<Inline>, Inline extends Node>(value: any): value is T {
return ComposedElement.isComposedElement(value, CalloutNode.TYPE);
}

export function validateCalloutNode<Quote extends CalloutNode<Inline>, Inline extends Node>(
value: any,
validateInlineNode: (node: any) => Inline | null,
): Quote | null {
const isValid =
ComposedElement.validateComposedElement(value, TYPE, validateInlineNode) &&
(typeof value.icon === 'string' || typeof value.icon === 'undefined') &&
(typeof value.align === 'string' || typeof value.align === 'undefined');

return isValid ? value : null;
}
}
1 change: 1 addition & 0 deletions packages/content-format/src/nodes/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export * from './AttachmentNode';
export * from './BookmarkNode';
export * from './ButtonBlockNode';
export * from './CalloutNode';
export * from './ContactNode';
export * from './CoverageNode';
export * from './DividerNode';
Expand Down
1 change: 1 addition & 0 deletions packages/content-format/src/traits/Stylable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export namespace Stylable {
UNDERLINED = 'underlined',
SUBSCRIPT = 'subscript',
SUPERSCRIPT = 'superscript',
HIGHLIGHTED = 'highlighted',
}

export function validateStylable<T extends Record<string, any>>(value: T): Stylable<T, Style>;
Expand Down
24 changes: 24 additions & 0 deletions packages/email-content-format/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export type BlockNode =
| AttachmentNode
| BookmarkNode
| ButtonBlockNode
| CalloutNode
| ContactNode
| CoverageNode
| DividerNode
Expand All @@ -62,6 +63,7 @@ export namespace BlockNode {
return (
AttachmentNode.isAttachmentNode(value) ||
ButtonBlockNode.isButtonBlockNode(value) ||
CalloutNode.isCalloutNode(value) ||
ContactNode.isContactNode(value) ||
CoverageNode.isCoverageNode(value) ||
DividerNode.isDividerNode(value) ||
Expand All @@ -85,6 +87,7 @@ export namespace BlockNode {
return (
AttachmentNode.validateAttachmentNode(value) ??
ButtonBlockNode.validateButtonBlockNode(value) ??
CalloutNode.validateCalloutNode(value) ??
ContactNode.validateContactNode(value) ??
CoverageNode.validateCoverageNode(value) ??
DividerNode.validateDividerNode(value) ??
Expand All @@ -110,6 +113,7 @@ export type ComposedElement =
| LinkNode
| HeadingNode
| ParagraphNode
| CalloutNode
| QuoteNode
| ListNode
| ListItemNode
Expand All @@ -125,6 +129,7 @@ export namespace ComposedElement {
LinkNode.isLinkNode(value) ||
HeadingNode.isHeadingNode(value) ||
ParagraphNode.isParagraphNode(value) ||
CalloutNode.isCalloutNode(value) ||
QuoteNode.isQuoteNode(value) ||
ListNode.isListNode(value) ||
ListItemNode.isListItemNode(value) ||
Expand All @@ -141,6 +146,7 @@ export namespace ComposedElement {
LinkNode.validateLinkNode(value) ??
HeadingNode.validateHeadingNode(value) ??
ParagraphNode.validateParagraphNode(value) ??
CalloutNode.validateCalloutNode(value) ??
QuoteNode.validateQuoteNode(value) ??
ListNode.validateListNode(value) ??
ListItemNode.validateListItemNode(value) ??
Expand Down Expand Up @@ -226,6 +232,24 @@ export namespace AttachmentNode {

export import BookmarkNode = Core.BookmarkNode;
export import ButtonBlockNode = Core.ButtonBlockNode;

export type CalloutNode = Core.Alignable<Core.CalloutNode<InlineNode>, false>;
export namespace CalloutNode {
export import TYPE = Core.CalloutNode.TYPE;
export import Alignment = Core.Alignable.Alignment;

export function isCalloutNode(value: any): value is CalloutNode {
return Core.CalloutNode.isCalloutNode(value);
}

export function validateCalloutNode(value: any): CalloutNode | null {
return Core.Alignable.validateAlignable<CalloutNode, false>(
Core.CalloutNode.validateCalloutNode(value, InlineNode.validateInlineNode),
false,
);
}
}

export import ContactNode = Core.ContactNode;
export import CoverageNode = Core.CoverageNode;
export import DividerNode = Core.DividerNode;
Expand Down
24 changes: 24 additions & 0 deletions packages/story-content-format/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export type BlockNode =
| AttachmentNode
| BookmarkNode
| ButtonBlockNode
| CalloutNode
| ContactNode
| DividerNode
| EmbedNode
Expand All @@ -64,6 +65,7 @@ export namespace BlockNode {
return (
AttachmentNode.isAttachmentNode(value) ||
ButtonBlockNode.isButtonBlockNode(value) ||
CalloutNode.isCalloutNode(value) ||
ContactNode.isContactNode(value) ||
DividerNode.isDividerNode(value) ||
EmbedNode.isEmbedNode(value) ||
Expand All @@ -87,6 +89,7 @@ export namespace BlockNode {
return (
AttachmentNode.validateAttachmentNode(value) ??
ButtonBlockNode.validateButtonBlockNode(value) ??
CalloutNode.validateCalloutNode(value) ??
ContactNode.validateContactNode(value) ??
DividerNode.validateDividerNode(value) ??
EmbedNode.validateEmbedNode(value) ??
Expand All @@ -113,6 +116,7 @@ export type ComposedElement =
| HeadingNode
| ImageNode
| ParagraphNode
| CalloutNode
| QuoteNode
| ListNode
| ListItemNode
Expand All @@ -129,6 +133,7 @@ export namespace ComposedElement {
HeadingNode.isHeadingNode(value) ||
ImageNode.isImageNode(value) ||
ParagraphNode.isParagraphNode(value) ||
CalloutNode.isCalloutNode(value) ||
QuoteNode.isQuoteNode(value) ||
ListNode.isListNode(value) ||
ListItemNode.isListItemNode(value) ||
Expand All @@ -145,6 +150,7 @@ export namespace ComposedElement {
LinkNode.validateLinkNode(value) ??
HeadingNode.validateHeadingNode(value) ??
ParagraphNode.validateParagraphNode(value) ??
CalloutNode.validateCalloutNode(value) ??
QuoteNode.validateQuoteNode(value) ??
ListNode.validateListNode(value) ??
ListItemNode.validateListItemNode(value) ??
Expand Down Expand Up @@ -226,6 +232,24 @@ export namespace AttachmentNode {

export import BookmarkNode = Core.BookmarkNode;
export import ButtonBlockNode = Core.ButtonBlockNode;

export type CalloutNode = Core.Alignable<Core.CalloutNode<InlineNode>, false>;
export namespace CalloutNode {
export import TYPE = Core.CalloutNode.TYPE;
export import Alignment = Core.Alignable.Alignment;

export function isCalloutNode(value: any): value is CalloutNode {
return Core.CalloutNode.isCalloutNode(value);
}

export function validateCalloutNode(value: any): CalloutNode | null {
return Core.Alignable.validateAlignable<CalloutNode, false>(
Core.CalloutNode.validateCalloutNode(value, InlineNode.validateInlineNode),
false,
);
}
}

export import ContactNode = Core.ContactNode;
export import DividerNode = Core.DividerNode;
export import EmbedNode = Core.EmbedNode;
Expand Down

0 comments on commit 895754b

Please sign in to comment.