Skip to content

Commit

Permalink
feature: added internal preview class
Browse files Browse the repository at this point in the history
  • Loading branch information
efraespada committed Oct 4, 2024
1 parent 771fb6c commit cd43854
Show file tree
Hide file tree
Showing 13 changed files with 155 additions and 36 deletions.
42 changes: 28 additions & 14 deletions example/assets/preview_config.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,34 @@
}
},
"children": {
"utils": {
"id": "utils",
"route": "widgets/utils",
"builtComponents": {},
"children": {
"bottom": {
"id": "bottom",
"route": "widgets/utils/bottom",
"builtComponents": {
"./example/lib/catalog/widgets/utils/bottom/fab_widget.dart": {
"path": "./example/lib/catalog/widgets/utils/bottom/fab_widget.dart",
"route": "widgets/utils/bottom",
"package": "package:example/catalog/widgets/utils/bottom/fab_widget.dart",
"clazzName": "FabWidgetPreviewPreviewPageDummy",
"preview": {
"id": "fab_widget",
"path": "widgets/utils/bottom",
"description": "Basic fab widget",
"parameters": [
"incrementCounter"
]
}
}
},
"children": {}
}
}
},
"screen": {
"id": "screen",
"route": "widgets/screen",
Expand All @@ -45,20 +73,6 @@
]
}
},
"./example/lib/catalog/widgets/screen/fab_widget.dart": {
"path": "./example/lib/catalog/widgets/screen/fab_widget.dart",
"route": "widgets/screen",
"package": "package:example/catalog/widgets/screen/fab_widget.dart",
"clazzName": "FabWidgetPreviewPreviewPageDummy",
"preview": {
"id": "fab_widget",
"path": "widgets/screen",
"description": "Basic fab widget",
"parameters": [
"incrementCounter"
]
}
},
"./example/lib/catalog/widgets/screen/counter_widget.dart": {
"path": "./example/lib/catalog/widgets/screen/counter_widget.dart",
"route": "widgets/screen",
Expand Down
46 changes: 39 additions & 7 deletions example/lib/catalog/catalog_component.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,15 @@ import 'package:flutter/material.dart';
import 'package:catalog/catalog.dart';


import 'package:example/catalog/widgets/screen/body_widget.dart';import 'package:example/catalog/widgets/screen/fab_widget.dart';import 'package:example/catalog/widgets/screen/counter_widget.dart';
import 'package:example/catalog/widgets/utils/bottom/fab_widget.dart';







import 'package:example/catalog/widgets/screen/body_widget.dart';import 'package:example/catalog/widgets/screen/counter_widget.dart';



Expand Down Expand Up @@ -45,27 +53,51 @@ class CatalogComponent extends StatefulWidget {

,
GoRoute(
path: 'screen',
path: 'utils',
redirect: (context, state) {
if (state.fullPath != state.matchedLocation) return null;
return CatalogComponent.routeName;
},
routes: [


GoRoute(
path: 'bottom',
redirect: (context, state) {
if (state.fullPath != state.matchedLocation) return null;
return CatalogComponent.routeName;
},
routes: [

GoRoute(
path: BodyWidgetPreviewPreviewPageDummy.routeName,
path: FabWidgetPreviewPreviewPageDummy.routeName,
pageBuilder: (context, state) => NoTransitionPage(
key: state.pageKey,
child: const BodyWidgetPreviewPreviewPageDummy(),
child: const FabWidgetPreviewPreviewPageDummy(),
),
)

,

,

],
)

],
)
, GoRoute(
path: 'screen',
redirect: (context, state) {
if (state.fullPath != state.matchedLocation) return null;
return CatalogComponent.routeName;
},
routes: [

GoRoute(
path: FabWidgetPreviewPreviewPageDummy.routeName,
path: BodyWidgetPreviewPreviewPageDummy.routeName,
pageBuilder: (context, state) => NoTransitionPage(
key: state.pageKey,
child: const FabWidgetPreviewPreviewPageDummy(),
child: const BodyWidgetPreviewPreviewPageDummy(),
),
)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/// AUTOGENERATED FILE. DO NOT EDIT
import 'package:flutter/material.dart';
import 'package:example/widgets/screen/catalog/preview/fab_widget.preview.dart';
import 'package:example/widgets/utils/bottom/catalog/preview/fab_widget.preview.dart';

class FabWidgetPreviewPreviewPageDummy extends StatefulWidget {

Expand Down
2 changes: 1 addition & 1 deletion example/lib/widgets/main_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:catalog/catalog.dart';
import 'package:flutter/material.dart';

import 'screen/body_widget.dart';
import 'screen/fab_widget.dart';
import 'utils/bottom/fab_widget.dart';

@Preview(
parameters: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import 'package:catalog/catalog.dart';
import 'package:flutter/material.dart';
import 'package:example/widgets/screen/fab_widget.dart';
import 'package:example/widgets/utils/bottom/fab_widget.dart';
import '../dummy/fab_widget.dummy.dart';

@Preview(
Expand Down
File renamed without changes.
66 changes: 66 additions & 0 deletions lib/src/annotations/internal_preview.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import 'dart:convert';

import 'package:catalog/src/base/serial.dart';

class InternalPreview implements Serial<InternalPreview> {
final String id;
final String path;
final String description;
final List<String> parameters;

const InternalPreview({
this.id = '',
this.path = '',
this.description = '',
this.parameters = const [],
});

@override
InternalPreview fromJson(Map<String, dynamic> json) => InternalPreview(
id: json['id'] ?? '',
path: json['path'] ?? '',
description: json['description'] ?? '',
parameters: Serial.listObjectFromBasicType<String>(
json['parameters'] ?? [],
),
);

@override
String getId() => id;

@override
InternalPreview instance() => const InternalPreview(id: '', path: '');

@override
Map<String, dynamic> toJson() => {
'id': id,
'path': path,
'description': description,
'parameters': parameters,
};

@override
InternalPreview fromString(String value) {
Map<String, dynamic> map = jsonDecode(value);
return fromJson(map);
}

@override
String stringValue() {
var map = toJson();
return jsonEncode(map);
}

InternalPreview copyWith({
String? id,
String? path,
String? description,
List<String>? parameters,
}) =>
InternalPreview(
id: id ?? this.id,
path: path ?? this.path,
description: description ?? this.description,
parameters: parameters ?? this.parameters,
);
}
2 changes: 2 additions & 0 deletions lib/src/base/serial.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'dart:convert';

import 'package:catalog/src/annotations/internal_preview.dart';
import 'package:catalog/src/annotations/preview.dart';
import 'package:catalog/src/builders/catalog/built_component.dart';
import 'package:catalog/src/builders/catalog/component_node.dart';
Expand Down Expand Up @@ -79,6 +80,7 @@ abstract class Serial<T> {
ComponentNode(),
BuiltComponent(),
const Preview(id: '', path: ''),
const InternalPreview(id: '', path: ''),
];

static Map<String, dynamic> internalLinkerToMap(map) {
Expand Down
4 changes: 2 additions & 2 deletions lib/src/bin/catalog_builder/catalog_builder.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'dart:io';

import 'package:catalog/src/annotations/preview.dart';
import 'package:catalog/src/annotations/internal_preview.dart';
import 'package:catalog/src/builders/catalog/built_component.dart';
import 'package:catalog/src/builders/catalog/component_node.dart';
import 'package:catalog/src/extensions/string_ext.dart';
Expand All @@ -22,7 +22,7 @@ Future<BuiltComponent?> createPage(
String outputPath,
String outputFile,
String prefix,
Preview preview,
InternalPreview preview,
String import,
String name,
) async {
Expand Down
6 changes: 3 additions & 3 deletions lib/src/bin/preview_builder/preview_builder.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'dart:io';

import 'package:catalog/src/annotations/preview.dart';
import 'package:catalog/src/annotations/internal_preview.dart';

Future<String?> findClassName(String path) async {
try {
Expand All @@ -20,7 +20,7 @@ Future<void> generatePreview(
String previewAnnotation,
String className,
String prefix,
Preview preview,
InternalPreview preview,
) async {
var clazz = className.replaceAll('()', '');

Expand Down Expand Up @@ -168,7 +168,7 @@ String dummyWidgetBuilder(String clazz, String widgetCompose) {
''';
}

String dummyWidgetContent(String className, Preview preview) {
String dummyWidgetContent(String className, InternalPreview preview) {
var clazz = className.replaceAll('()', '');

var widgetCompose = '$clazz(';
Expand Down
12 changes: 8 additions & 4 deletions lib/src/bin/utils/configuration.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'dart:convert';
import 'dart:io';

import 'package:catalog/src/annotations/preview.dart';
import 'package:catalog/src/annotations/internal_preview.dart';
import 'package:yaml/yaml.dart';

import 'exceptions.dart';
Expand Down Expand Up @@ -74,7 +74,7 @@ String loadId(String basePath) {
return yamlMap[nammeId];
}

Future<Preview?> previewOnFile(
Future<InternalPreview?> previewOnFile(
String basePath,
dynamic config,
String originalFilePath,
Expand Down Expand Up @@ -172,8 +172,12 @@ void main(List<String> arguments) async {

var path = file.absolute.path;
var result = await Process.run('dart', ['run', path]);
var preview =
const Preview(id: '', path: '').fromJson(jsonDecode(result.stdout));
var preview = const InternalPreview(
id: '',
path: '',
).fromJson(
jsonDecode(result.stdout),
);

if (preview.id.isEmpty) {
preview = preview.copyWith(
Expand Down
7 changes: 4 additions & 3 deletions lib/src/builders/catalog/built_component.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import 'package:catalog/src/annotations/preview.dart';
import 'package:catalog/src/annotations/internal_preview.dart';
import 'package:catalog/src/base/serial.dart';

class BuiltComponent extends Serial<BuiltComponent> {
String path = '';
String route = '';
String package = '';
String clazzName = '';
Preview? preview;
InternalPreview? preview;

String get name {
if (!path.contains('/')) return path;
Expand Down Expand Up @@ -35,7 +35,8 @@ class BuiltComponent extends Serial<BuiltComponent> {
package = json['package'] ?? '';
clazzName = json['clazzName'] ?? '';
if (json['preview'] != null) {
preview = const Preview(id: '', path: '').fromJson(json['preview'] ?? {});
preview = const InternalPreview(id: '', path: '')
.fromJson(json['preview'] ?? {});
}
return this;
}
Expand Down

0 comments on commit cd43854

Please sign in to comment.