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: 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,
    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,
  ],
);