Files
YouTube.js/src/parser/classes/TextFieldView.ts

62 lines
1.6 KiB
TypeScript

import { YTNode } from '../helpers.js';
import { type RawNode } from '../index.js';
export type DisplayProperties = {
isMultiline: boolean;
disableNewLines: boolean;
};
export type ContentProperties = {
labelText: string;
placeholderText: string;
maxCharacterCount: number;
};
export type InitialState = {
isFocused: boolean;
};
export type FormFieldMetadata = {
formId: string;
fieldId: string;
};
export default class TextFieldView extends YTNode {
static type = 'TextFieldView';
public display_properties?: DisplayProperties;
public content_properties?: ContentProperties;
public initial_state?: InitialState;
public form_field_metadata?: FormFieldMetadata;
constructor(data: RawNode) {
super();
if (Reflect.has(data, 'displayProperties')) {
this.display_properties = {
isMultiline: !!data.displayProperties.isMultiline,
disableNewLines: !!data.displayProperties.disableNewLines
};
}
if (Reflect.has(data, 'contentProperties')) {
this.content_properties = {
labelText: data.contentProperties.labelText,
placeholderText: data.contentProperties.placeholderText,
maxCharacterCount: data.contentProperties.maxCharacterCount
};
}
if (Reflect.has(data, 'initialState')) {
this.initial_state = {
isFocused: !!data.initialState.isFocused
};
}
if (Reflect.has(data, 'formFieldMetadata')) {
this.form_field_metadata = {
formId: data.formFieldMetadata.formId,
fieldId: data.formFieldMetadata.fieldId
};
}
}
}