Skip to content

Commit

Permalink
feat(generator): ✨ add FrameAddon to generator
Browse files Browse the repository at this point in the history
  • Loading branch information
jenshor committed Dec 18, 2022
1 parent 0df318e commit c77fdde
Show file tree
Hide file tree
Showing 19 changed files with 241 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export './addon_instance.dart';
export './frame_addon/frame_addon.dart';
export './localization_addon/localization_addon.dart';
export './material_theme_addon/material_theme_addon.dart';
export './text_scale_addon/text_scale_addon.dart';
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export 'frame_addon_instance.dart';
export 'frame_setting_instance.dart';
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:widgetbook_annotation/widgetbook_annotation.dart';
import 'package:widgetbook_generator/code_generators/instances/instances.dart';
import 'package:widgetbook_generator/code_generators/properties/property.dart';

class FrameAddonInstance extends AddOnInstance {
FrameAddonInstance({
required List<Device> devices,
}) : super(
name: 'FrameAddon',
properties: [
Property(
key: 'setting',
instance: FrameSettingInstance(
devices: devices,
),
),
],
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import 'package:widgetbook_annotation/widgetbook_annotation.dart';
import 'package:widgetbook_generator/code_generators/instances/addons/frame_addon/frames/frames.dart';
import 'package:widgetbook_generator/code_generators/instances/instance.dart';
import 'package:widgetbook_generator/code_generators/instances/list_instance.dart';
import 'package:widgetbook_generator/code_generators/properties/property.dart';

class FrameSettingInstance extends Instance {
FrameSettingInstance({
required List<Device> devices,
}) : super(
name: 'FrameSetting',
properties: [
Property(
key: 'frames',
instance: ListInstance(
instances: [
const NoFrameInstance(),
DeviceFrameInstance(devices: devices),
WidgetbookFrameInstance(devices: devices),
],
),
),
const Property(
key: 'activeFrame',
instance: NoFrameInstance(),
),
],
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export './device_frame_instance.dart';
export './device_frame_setting_instance.dart';
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import 'package:widgetbook_generator/code_generators/instances/addons/frame_addon/frames/frames.dart';
import 'package:widgetbook_generator/code_generators/instances/instance.dart';
import 'package:widgetbook_generator/code_generators/properties/property.dart';
import 'package:widgetbook_models/widgetbook_models.dart';

class DeviceFrameInstance extends Instance {
DeviceFrameInstance({
required List<Device> devices,
}) : super(
// TODO still not a huge fan of this name
name: 'DefaultDeviceFrame',
properties: [
Property(
key: 'setting',
instance: DeviceFrameSettingInstance(
devices: devices,
),
),
],
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import 'package:widgetbook_generator/code_generators/instances/device_instance.dart';
import 'package:widgetbook_generator/code_generators/instances/instance.dart';
import 'package:widgetbook_generator/code_generators/instances/list_instance.dart';
import 'package:widgetbook_generator/code_generators/properties/property.dart';
import 'package:widgetbook_models/widgetbook_models.dart';

class DeviceFrameSettingInstance extends Instance {
DeviceFrameSettingInstance({
required List<Device> devices,
}) : super(
name: 'DeviceSetting',
properties: [
Property(
key: 'devices',
instance: ListInstance(
instances: devices
.map(
(e) => DeviceInstance(device: e),
)
.toList(),
),
),
Property(
key: 'activeDevice',
instance: DeviceInstance(device: devices.first),
),
],
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export './device_frame/device_frame.dart';
export './no_frame/no_frame.dart';
export './widgetbook_frame/widgetbook_frame.dart';
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export './no_frame_instance.dart';
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import 'package:widgetbook_generator/code_generators/instances/instance.dart';

class NoFrameInstance extends Instance {
const NoFrameInstance()
: super(
name: 'NoFrame',
properties: const [],
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export './widgetbook_frame_instance.dart';
export './widgetbook_frame_setting_instance.dart';
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import 'package:widgetbook_generator/code_generators/instances/addons/frame_addon/frames/frames.dart';
import 'package:widgetbook_generator/code_generators/instances/instance.dart';
import 'package:widgetbook_generator/code_generators/properties/property.dart';
import 'package:widgetbook_models/widgetbook_models.dart';

class WidgetbookFrameInstance extends Instance {
WidgetbookFrameInstance({
required List<Device> devices,
}) : super(
name: 'WidgetbookFrame',
properties: [
Property(
key: 'setting',
instance: WidgetbookFrameSettingInstance(
devices: devices,
),
),
],
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import 'package:widgetbook_generator/code_generators/instances/addons/frame_addon/frames/frames.dart';
import 'package:widgetbook_models/widgetbook_models.dart';

/// Currently these two Frames share the same implementation
class WidgetbookFrameSettingInstance extends DeviceFrameSettingInstance {
WidgetbookFrameSettingInstance({required List<Device> devices})
: super(devices: devices);
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ String generateWidgetbook({
),
);
}
addons.add(FrameAddonInstance(devices: devices));

final widgetbookInstanceCode = WidgetbookInstance(
constructor: constructor,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:test/test.dart';
import 'package:widgetbook_generator/code_generators/instances/addons/frame_addon/frames/frames.dart';
import 'package:widgetbook_models/widgetbook_models.dart';

void main() {
group(
'$DeviceFrameInstance',
() {
test('.name is "DefaultDeviceFrame"', () {
final sut = DeviceFrameInstance(
devices: const [
Apple.iPhone11,
],
);
expect(sut.name, equals('DefaultDeviceFrame'));
});
},
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import 'package:test/test.dart';
import 'package:widgetbook_generator/code_generators/instances/addons/frame_addon/frames/device_frame/device_frame_setting_instance.dart';
import 'package:widgetbook_models/widgetbook_models.dart';

void main() {
group('$DeviceFrameSettingInstance', () {
test(
'.name returns "DeviceSetting"',
() {
expect(
DeviceFrameSettingInstance(
devices: const [
Apple.iPhone11,
],
).name,
equals('DeviceSetting'),
);
},
);
});
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import 'package:test/test.dart';
import 'package:widgetbook_generator/code_generators/instances/addons/frame_addon/frames/no_frame/no_frame_instance.dart';

void main() {
group(
'$NoFrameInstance',
() {
test('.name is "NoFrame"', () {
const sut = NoFrameInstance();
expect(sut.name, equals('NoFrame'));
});
},
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:test/test.dart';
import 'package:widgetbook_generator/code_generators/instances/addons/frame_addon/frames/frames.dart';
import 'package:widgetbook_models/widgetbook_models.dart';

void main() {
group(
'$WidgetbookFrameInstance',
() {
test('.name is "WidgetbookFrame"', () {
final sut = WidgetbookFrameInstance(
devices: const [
Apple.iPhone11,
],
);
expect(sut.name, equals('WidgetbookFrame'));
});
},
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import 'package:test/test.dart';
import 'package:widgetbook_generator/code_generators/instances/addons/frame_addon/frames/widgetbook_frame/widgetbook_frame_setting_instance.dart';
import 'package:widgetbook_models/widgetbook_models.dart';

void main() {
group('$WidgetbookFrameSettingInstance', () {
test(
'.name returns "DeviceSetting"',
() {
expect(
WidgetbookFrameSettingInstance(
devices: const [
Apple.iPhone11,
],
).name,
equals('DeviceSetting'),
);
},
);
});
}

0 comments on commit c77fdde

Please sign in to comment.