moderator-toolbox-nxg-for-reddit / modules/removalreasons/components/RemovalReasonsOverlay.helpers

modules/removalreasons/components/RemovalReasonsOverlay.helpers

Functions

choiceTokenToRadioGroup()

choiceTokenToRadioGroup(parser, token, anonId): string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:77

Renders a {choice} token as a radio button group. Each option string is both the inserted value and the visible label; labels are rendered as markdown so options can contain links and emphasis. Any prompt is plain markdown text above the block, rendered as normal markdown rather than by this function. A <input type="hidden"> inside the wrapper tracks the selected value for the save logic.

Parameters

parser

Parser

SnuOwnd parser instance for rendering option markdown labels.

token

InteractiveToken

The parsed choice token.

anonId

string

Stable id to use when the choice has no explicit #id. Derived from the reason’s position and the choice’s position so the selection persists across overlay reopens (a mutable counter would change each render and orphan the cached value).

Returns

string

HTML string containing a .toolbox-radio-group div with a hidden input inside.


composeReasonText()

composeReasonText(checkedOrdered, getOverride, getInputValues): ComposedReason

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:254

Composes the final reason markdown and flair values from the selected reasons, in display order. For reasons without an edited override, each interactive token in the markdown is substituted with the corresponding user-entered value; the tokens and the rendered controls share the same document order, so the values map 1:1.

Parameters

checkedOrdered

RenderedReason[]

Selected reasons in their current display order.

getOverride

(id) => string | undefined

Returns the edited markdown override for a reason, if any.

getInputValues

(id) => string[]

Returns the current user-input values inside a reason’s rendered content, in document order (excluding individual radio inputs).

Returns

ComposedReason



renderReasonHtml()

renderReasonHtml(parser, text, idPrefix?): string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:145

Renders a removal reason text field to HTML. The text is first normalized to token form (legacy limited-HTML configs are up-converted on the fly), then split into segments: {choice} blocks become radio groups, {input: ...}/{textarea: ...} tokens become inline form elements carried through the markdown render via the parser’s element whitelist, and everything else renders as markdown.

Parameters

parser

Parser

SnuOwnd parser instance.

text

string

Reason text in token form or legacy HTML form (already decoded via decodeHtmlAngleBrackets).

idPrefix?

string = DEFAULT_ANON_CHOICE_PREFIX

Stable prefix for id-less {choice} blocks (e.g. the reason’s positional id). Each id-less choice gets ${idPrefix}-${n} by its position, so its selection persists across reopens. Callers rendering a single reason in isolation (e.g. previews) can omit it.

Returns

string

Rendered HTML with form controls in place of the interactive tokens.


settingToReasonType()

settingToReasonType(s): ReasonType

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:198

Maps a reasonType setting’s stored string value to the overlay’s delivery type.

Parameters

s

string

Returns

ReasonType


syncRadiosToHiddenInput()

syncRadiosToHiddenInput(input): void

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:189

Syncs radio button checked states inside a .toolbox-radio-group to match the current value of the hidden input that tracks the selection.

Parameters

input

HTMLInputElement

The <input type="hidden"> inside the radio group wrapper.

Returns

void

Interfaces

ComposedReason

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:230

The combined message and flair data composed from the selected reasons.

Properties

flairCSS

flairCSS: string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:236

Space-joined flair CSS classes from all selected reasons.

flairTemplateID

flairTemplateID: string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:238

Flair template ID from the last selected reason that has one.

flairText

flairText: string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:234

Space-joined flair text from all selected reasons.

pieces

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:240

Per-reason resolved bodies in display order, for re-seeding the overlay later.

reason

reason: string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:232

Concatenated reason markdown, with user input values substituted in.


ComposedReasonPiece

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:220

One selected reason’s resolved body, for capturing the trainee’s selection.

Properties

id

id: string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:222

Persistent RemovalReason.id (falls back to the positional id when absent).

text

text: string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:224

This reason’s resolved body (override or token-substituted markdown).

title?

optional title?: string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:226

The reason’s display title, if any.


RenderedReason

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:35

A removal reason with its pre-rendered markdown and HTML.

Properties

html

html: string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:42

Pre-rendered HTML for display.

id

id: string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:37

Stable key used as the dnd-kit sort ID.

markdown

markdown: string

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:40

Raw markdown string with a trailing newline, healed to token form.

reason

reason: RemovalReason

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:38

Type Aliases

ReasonType

ReasonType = "reply" | "pm" | "both" | "none"

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:32

How the removal reason message will be delivered to the author.

Variables

banError

const banError: "failed to issue ban" = 'failed to issue ban'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:61


distinguishError

const distinguishError: "failed to distinguish reply" = 'failed to distinguish reply'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:55


flairError

const flairError: "failed to flair post" = 'failed to flair post'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:48


lockCommentError

const lockCommentError: "failed to lock reply" = 'failed to lock reply'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:57


lockPostError

const lockPostError: "failed to lock post" = 'failed to lock post'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:56


logPostError

const logPostError: "failed to create log post" = 'failed to create log post'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:59


logReasonMissingError

const logReasonMissingError: "public log reason missing" = 'public log reason missing'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:58


modmailArchiveError

const modmailArchiveError: "failed to archive sent Modmail" = 'failed to archive sent Modmail'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:54


modmailError

const modmailError: "failed to send Modmail" = 'failed to send Modmail'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:53


noReasonError

const noReasonError: "no reason selected" = 'no reason selected'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:49


noReplyTypeError

const noReplyTypeError: "no reply type selected" = 'no reply type selected'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:50


removeError

const removeError: "failed to remove item" = 'failed to remove item'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:47


replyError

const replyError: "failed to post reply" = 'failed to post reply'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:51


replyErrorSubreddit

const replyErrorSubreddit: "failed to post reply as ModTeam account" = 'failed to post reply as ModTeam account'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:52


statusDefaultText

const statusDefaultText: "saving..." = 'saving...'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:46


usernoteError

const usernoteError: "failed to save usernote" = 'failed to save usernote'

Defined in: extension/data/modules/removalreasons/components/RemovalReasonsOverlay.helpers.ts:60