Rename ComponentWrapper to MountedComponent
This commit is contained in:
parent
62dde168b6
commit
74746771a0
|
@ -44,9 +44,9 @@
|
|||
OBJ_145 /* UIKitRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_25 /* UIKitRenderer.swift */; };
|
||||
OBJ_147 /* Gluon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Gluon::Gluon::Product" /* Gluon.framework */; };
|
||||
OBJ_69 /* AnyEquatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_27 /* AnyEquatable.swift */; };
|
||||
OBJ_70 /* ComponentWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_29 /* ComponentWrapper.swift */; };
|
||||
OBJ_71 /* CompositeComponentWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_30 /* CompositeComponentWrapper.swift */; };
|
||||
OBJ_72 /* HostComponentWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_31 /* HostComponentWrapper.swift */; };
|
||||
OBJ_70 /* MountedComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_29 /* MountedComponent.swift */; };
|
||||
OBJ_71 /* MountedCompositeComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_30 /* MountedCompositeComponent.swift */; };
|
||||
OBJ_72 /* MountedHostComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_31 /* MountedHostComponent.swift */; };
|
||||
OBJ_73 /* Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_32 /* Default.swift */; };
|
||||
OBJ_74 /* Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_33 /* Diffable.swift */; };
|
||||
OBJ_75 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_34 /* Event.swift */; };
|
||||
|
@ -128,9 +128,9 @@
|
|||
OBJ_24 /* ControlWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ControlWrapper.swift; sourceTree = "<group>"; };
|
||||
OBJ_25 /* UIKitRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIKitRenderer.swift; sourceTree = "<group>"; };
|
||||
OBJ_27 /* AnyEquatable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyEquatable.swift; sourceTree = "<group>"; };
|
||||
OBJ_29 /* ComponentWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComponentWrapper.swift; sourceTree = "<group>"; };
|
||||
OBJ_30 /* CompositeComponentWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompositeComponentWrapper.swift; sourceTree = "<group>"; };
|
||||
OBJ_31 /* HostComponentWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HostComponentWrapper.swift; sourceTree = "<group>"; };
|
||||
OBJ_29 /* MountedComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MountedComponent.swift; sourceTree = "<group>"; };
|
||||
OBJ_30 /* MountedCompositeComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MountedCompositeComponent.swift; sourceTree = "<group>"; };
|
||||
OBJ_31 /* MountedHostComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MountedHostComponent.swift; sourceTree = "<group>"; };
|
||||
OBJ_32 /* Default.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Default.swift; sourceTree = "<group>"; };
|
||||
OBJ_33 /* Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Diffable.swift; sourceTree = "<group>"; };
|
||||
OBJ_34 /* Event.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = "<group>"; };
|
||||
|
@ -276,9 +276,9 @@
|
|||
OBJ_28 /* ComponentWrapper */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
OBJ_29 /* ComponentWrapper.swift */,
|
||||
OBJ_30 /* CompositeComponentWrapper.swift */,
|
||||
OBJ_31 /* HostComponentWrapper.swift */,
|
||||
OBJ_29 /* MountedComponent.swift */,
|
||||
OBJ_30 /* MountedCompositeComponent.swift */,
|
||||
OBJ_31 /* MountedHostComponent.swift */,
|
||||
);
|
||||
path = ComponentWrapper;
|
||||
sourceTree = "<group>";
|
||||
|
@ -297,7 +297,7 @@
|
|||
path = HostComponents;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
OBJ_5 /* */ = {
|
||||
OBJ_5 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
OBJ_6 /* Package.swift */,
|
||||
|
@ -306,7 +306,6 @@
|
|||
OBJ_58 /* Example */,
|
||||
OBJ_59 /* Products */,
|
||||
);
|
||||
name = "";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
OBJ_54 /* Tests */ = {
|
||||
|
@ -458,7 +457,7 @@
|
|||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = OBJ_5 /* */;
|
||||
mainGroup = OBJ_5;
|
||||
productRefGroup = OBJ_59 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
|
@ -517,9 +516,9 @@
|
|||
buildActionMask = 0;
|
||||
files = (
|
||||
OBJ_69 /* AnyEquatable.swift in Sources */,
|
||||
OBJ_70 /* ComponentWrapper.swift in Sources */,
|
||||
OBJ_71 /* CompositeComponentWrapper.swift in Sources */,
|
||||
OBJ_72 /* HostComponentWrapper.swift in Sources */,
|
||||
OBJ_70 /* MountedComponent.swift in Sources */,
|
||||
OBJ_71 /* MountedCompositeComponent.swift in Sources */,
|
||||
OBJ_72 /* MountedHostComponent.swift in Sources */,
|
||||
OBJ_73 /* Default.swift in Sources */,
|
||||
OBJ_74 /* Diffable.swift in Sources */,
|
||||
OBJ_75 /* Event.swift in Sources */,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// ValueTypes.swift
|
||||
// Component.swift
|
||||
// Gluon
|
||||
//
|
||||
// Created by Max Desiatov on 07/10/2018.
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Created by Max Desiatov on 28/11/2018.
|
||||
//
|
||||
|
||||
class ComponentWrapper<R: Renderer> {
|
||||
class MountedComponent<R: Renderer> {
|
||||
var node: Node
|
||||
|
||||
init(_ node: Node) {
|
||||
|
@ -26,13 +26,13 @@ class ComponentWrapper<R: Renderer> {
|
|||
}
|
||||
|
||||
extension Node {
|
||||
func makeComponentWrapper<R: Renderer>(_ parentTarget: R.Target)
|
||||
-> ComponentWrapper<R> {
|
||||
func makeMountedComponent<R: Renderer>(_ parentTarget: R.Target)
|
||||
-> MountedComponent<R> {
|
||||
switch type {
|
||||
case let .base(type):
|
||||
return HostComponentWrapper(self, type, parentTarget)
|
||||
return MountedHostComponent(self, type, parentTarget)
|
||||
case let .composite(type):
|
||||
return CompositeComponentWrapper(self, type, parentTarget)
|
||||
return MountedCompositeComponent(self, type, parentTarget)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// CompositeComponentWrapper.swift
|
||||
// MountedCompositeComponent.swift
|
||||
// Gluon
|
||||
//
|
||||
// Created by Max Desiatov on 03/12/2018.
|
||||
|
@ -14,10 +14,10 @@ extension CompositeComponent {
|
|||
}
|
||||
}
|
||||
|
||||
final class CompositeComponentWrapper<R: Renderer>: ComponentWrapper<R>,
|
||||
final class MountedCompositeComponent<R: Renderer>: MountedComponent<R>,
|
||||
Hashable {
|
||||
static func ==(lhs: CompositeComponentWrapper<R>,
|
||||
rhs: CompositeComponentWrapper<R>) -> Bool {
|
||||
static func ==(lhs: MountedCompositeComponent<R>,
|
||||
rhs: MountedCompositeComponent<R>) -> Bool {
|
||||
return lhs === rhs
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@ final class CompositeComponentWrapper<R: Renderer>: ComponentWrapper<R>,
|
|||
hasher.combine(ObjectIdentifier(self))
|
||||
}
|
||||
|
||||
private var mountedChildren = [ComponentWrapper<R>]()
|
||||
private var mountedChildren = [MountedComponent<R>]()
|
||||
private let type: AnyCompositeComponent.Type
|
||||
private let parentTarget: R.Target
|
||||
var state = [String: Any]()
|
||||
|
@ -42,8 +42,8 @@ final class CompositeComponentWrapper<R: Renderer>: ComponentWrapper<R>,
|
|||
override func mount(with reconciler: StackReconciler<R>) {
|
||||
let renderedNode = render(with: reconciler)
|
||||
|
||||
let child: ComponentWrapper<R> =
|
||||
renderedNode.makeComponentWrapper(parentTarget)
|
||||
let child: MountedComponent<R> =
|
||||
renderedNode.makeMountedComponent(parentTarget)
|
||||
mountedChildren = [child]
|
||||
child.mount(with: reconciler)
|
||||
}
|
||||
|
@ -58,8 +58,8 @@ final class CompositeComponentWrapper<R: Renderer>: ComponentWrapper<R>,
|
|||
switch (mountedChildren.last, render(with: reconciler)) {
|
||||
// no mounted children, but children available now
|
||||
case let (nil, renderedNode):
|
||||
let child: ComponentWrapper<R> =
|
||||
renderedNode.makeComponentWrapper(parentTarget)
|
||||
let child: MountedComponent<R> =
|
||||
renderedNode.makeMountedComponent(parentTarget)
|
||||
mountedChildren = [child]
|
||||
child.mount(with: reconciler)
|
||||
|
||||
|
@ -77,8 +77,8 @@ final class CompositeComponentWrapper<R: Renderer>: ComponentWrapper<R>,
|
|||
if wrapper.node.type != renderedNode.type {
|
||||
wrapper.unmount(with: reconciler)
|
||||
|
||||
let child: ComponentWrapper<R> =
|
||||
renderedNode.makeComponentWrapper(parentTarget)
|
||||
let child: MountedComponent<R> =
|
||||
renderedNode.makeMountedComponent(parentTarget)
|
||||
mountedChildren = [child]
|
||||
child.mount(with: reconciler)
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
//
|
||||
// HostComponentWrapper.swift
|
||||
// MountedHostComponent.swift
|
||||
// Gluon
|
||||
//
|
||||
// Created by Max Desiatov on 03/12/2018.
|
||||
//
|
||||
|
||||
final class HostComponentWrapper<R: Renderer>: ComponentWrapper<R> {
|
||||
private var mountedChildren = [ComponentWrapper<R>]()
|
||||
final class MountedHostComponent<R: Renderer>: MountedComponent<R> {
|
||||
private var mountedChildren = [MountedComponent<R>]()
|
||||
private let type: AnyHostComponent.Type
|
||||
private let parentTarget: R.Target
|
||||
private var target: R.Target?
|
||||
|
@ -29,11 +29,11 @@ final class HostComponentWrapper<R: Renderer>: ComponentWrapper<R> {
|
|||
|
||||
switch node.children.value {
|
||||
case let nodes as [Node]:
|
||||
mountedChildren = nodes.map { $0.makeComponentWrapper(target) }
|
||||
mountedChildren = nodes.map { $0.makeMountedComponent(target) }
|
||||
mountedChildren.forEach { $0.mount(with: reconciler) }
|
||||
|
||||
case let node as Node:
|
||||
let child: ComponentWrapper<R> = node.makeComponentWrapper(target)
|
||||
let child: MountedComponent<R> = node.makeMountedComponent(target)
|
||||
mountedChildren = [child]
|
||||
child.mount(with: reconciler)
|
||||
|
||||
|
@ -68,22 +68,22 @@ final class HostComponentWrapper<R: Renderer>: ComponentWrapper<R> {
|
|||
|
||||
// no existing children, mount all new
|
||||
case (true, false):
|
||||
mountedChildren = nodes.map { $0.makeComponentWrapper(target) }
|
||||
mountedChildren = nodes.map { $0.makeMountedComponent(target) }
|
||||
mountedChildren.forEach { $0.mount(with: reconciler) }
|
||||
|
||||
// both arrays have items, reconcile by types and keys
|
||||
case (false, false):
|
||||
var newChildren = [ComponentWrapper<R>]()
|
||||
var newChildren = [MountedComponent<R>]()
|
||||
|
||||
while let child = mountedChildren.first, let node = nodes.first {
|
||||
let newChild: ComponentWrapper<R>
|
||||
let newChild: MountedComponent<R>
|
||||
if node.type == mountedChildren[0].node.type {
|
||||
child.node = node
|
||||
child.update(with: reconciler)
|
||||
newChild = child
|
||||
} else {
|
||||
child.unmount(with: reconciler)
|
||||
newChild = node.makeComponentWrapper(target)
|
||||
newChild = node.makeMountedComponent(target)
|
||||
newChild.mount(with: reconciler)
|
||||
}
|
||||
newChildren.append(newChild)
|
||||
|
@ -103,7 +103,7 @@ final class HostComponentWrapper<R: Renderer>: ComponentWrapper<R> {
|
|||
child.node = node
|
||||
child.update(with: reconciler)
|
||||
} else {
|
||||
let child: ComponentWrapper<R> = node.makeComponentWrapper(target)
|
||||
let child: MountedComponent<R> = node.makeMountedComponent(target)
|
||||
child.mount(with: reconciler)
|
||||
}
|
||||
|
|
@ -8,23 +8,23 @@
|
|||
import Dispatch
|
||||
|
||||
public final class StackReconciler<R: Renderer> {
|
||||
private var queuedRerenders = Set<CompositeComponentWrapper<R>>()
|
||||
private var queuedRerenders = Set<MountedCompositeComponent<R>>()
|
||||
|
||||
public let rootTarget: R.Target
|
||||
private let rootComponent: ComponentWrapper<R>
|
||||
private let rootComponent: MountedComponent<R>
|
||||
private(set) weak var renderer: R?
|
||||
|
||||
public init(node: Node, target: R.Target, renderer: R) {
|
||||
self.renderer = renderer
|
||||
rootTarget = target
|
||||
|
||||
rootComponent = node.makeComponentWrapper(target)
|
||||
rootComponent = node.makeMountedComponent(target)
|
||||
|
||||
rootComponent.mount(with: self)
|
||||
}
|
||||
|
||||
func queue(state: Any,
|
||||
for component: CompositeComponentWrapper<R>,
|
||||
for component: MountedCompositeComponent<R>,
|
||||
id: String) {
|
||||
let scheduleReconcile = queuedRerenders.isEmpty
|
||||
|
||||
|
|
Loading…
Reference in New Issue