descriptor top-level property

ContentExtensionDescriptor descriptor
final

Implementation

final descriptor = ContentExtensionDescriptor(
  contents: [
    RouteDescriptor(routeTypes: [
      PageRouteType.typeDescriptor,
      DialogRouteType.typeDescriptor,
    ], layouts: [
      DefaultRouteLayout.typeDescriptor,
      TabsRouteLayout.typeDescriptor,
      SingleItemLayout.typeDescriptor,
      RouteConditionalLayout.typeDescriptor,
    ]),
    Card.descriptor(layouts: [
      DefaultCardLayout.typeDescriptor,
      ListItemCardLayout.typeDescriptor,
      ButtonCardLayout.typeDescriptor,
      CardConditionalLayout.typeDescriptor,
    ]),
    GroupDescriptor(layouts: [
      CarouselGroupLayout.typeDescriptor,
      GridGroupLayout.typeDescriptor,
      ListGroupLayout.typeDescriptor,
      GroupConditionalLayout.typeDescriptor,
    ]),
    ConditionalDescriptor(),
    ConditionalRouteDescriptor(),
    EmptyDescriptor(),
    PortableTextDescriptor(
      markDefs: [
        MarkDefDescriptor(
          schemaType: 'invokeAction',
          fromJson: InvokeActionMarkDef.fromJson,
          styleBuilder: (context, def, style) {
            final theme = Theme.of(context);

            return style.apply(
              decorationColor: theme.colorScheme.primary,
              decorationStyle: TextDecorationStyle.solid,
              decoration: TextDecoration.underline,
              fontWeightDelta: 2,
              shadows: [
                Shadow(
                  color: theme.colorScheme.primary,
                  offset: const Offset(0, -2),
                ),
              ],
              color: Colors.transparent,
            );
          },
          spanBuilder: (context, def, text, style) {
            return WidgetSpan(
              child: GestureDetector(
                onTap: () {
                  (def as InvokeActionMarkDef).action.execute(context);
                },
                child: Wrap(
                  crossAxisAlignment: WrapCrossAlignment.center,
                  direction: Axis.horizontal,
                  alignment: WrapAlignment.start,
                  children: [
                    Text(
                      text,
                      style: style,
                      softWrap: false,
                      maxLines: 1,
                      overflow: TextOverflow.ellipsis,
                      textAlign: TextAlign.left,
                    ),
                  ],
                ),
              ),
            );
          },
        )
      ],
      blocks: [
        BlockItemDescriptor(
          type: Unknown.typeDescriptor,
          builder: (context, content) => VyuhBinding.instance.content
              .buildContent(context, content as Unknown),
        ),
        BlockItemDescriptor(
          type: TypeDescriptor(
            schemaType: TextBlockItem.schemaName,
            fromJson: TextBlockItem.fromJson,
            title: 'Text Block',
          ),
          builder: (_, content) =>
              PortableTextBlock(model: content as TextBlockItem),
        ),
        BlockItemDescriptor(
          type: Card.typeDescriptor,
          builder: (context, content) => VyuhBinding.instance.content
              .buildContent(context, content as Card),
        ),
        BlockItemDescriptor(
          type: Group.typeDescriptor,
          builder: (context, content) => VyuhBinding.instance.content
              .buildContent(context, content as Group),
        ),
        BlockItemDescriptor(
          type: Divider.typeDescriptor,
          builder: (context, content) => VyuhBinding.instance.content
              .buildContent(context, content as Divider),
        ),
      ],
    ),
    DividerDescriptor(),
    APIContentDescriptor(
      configurations: [JsonPathApiConfiguration.typeDescriptor],
    ),
    DocumentViewDescriptor(
      layouts: [
        DocumentViewConditionalLayout.typeDescriptor,
      ],
    ),
    DocumentSectionViewDescriptor(
      layouts: [
        DocumentSectionViewConditionalLayout.typeDescriptor,
      ],
    ),
    DocumentListViewDescriptor(
      layouts: [
        DocumentListViewConditionalLayout.typeDescriptor,
      ],
    ),
  ],
  contentBuilders: [
    Route.contentBuilder,
    Card.contentBuilder,
    Group.contentBuilder,
    Conditional.contentBuilder,
    ConditionalRoute.contentBuilder,

    // This is defined explicitly because the ContentBuilder type is defined
    // in vyuh_extension_content and not in vyuh_core
    UnknownContentBuilder(),

    Empty.contentBuilder,
    PortableTextContent.contentBuilder,
    Divider.contentBuilder,
    Accordion.contentBuilder,
    APIContent.contentBuilder,
    VideoPlayerItem.contentBuilder,
    DocumentView.contentBuilder,
    DocumentSectionView.contentBuilder,
    DocumentListView.contentBuilder,
  ],
  contentModifiers: [
    ThemeModifier.typeDescriptor,
  ],
  conditions: [
    BooleanCondition.typeDescriptor,
    FeatureFlagCondition.typeDescriptor,
    UserAuthenticated.typeDescriptor,
    CurrentThemeMode.typeDescriptor,
    ScreenSize.typeDescriptor,
    CurrentPlatform.typeDescriptor,
  ],
  actions: [
    NavigationAction.typeDescriptor,
    NavigateBack.typeDescriptor,
    OpenUrlAction.typeDescriptor,
    OpenInDialogAction.typeDescriptor,
    ConditionalAction.typeDescriptor,
    RouteRefreshAction.typeDescriptor,
    ToggleThemeAction.typeDescriptor,
    RestartApplicationAction.typeDescriptor,
    ShowSnackBarAction.typeDescriptor,
    HideSnackBarAction.typeDescriptor,
    DrawerAction.typeDescriptor,
    ShowAlertAction.typeDescriptor,
    DelayAction.typeDescriptor,
  ],
);