prints n stuff
This commit is contained in:
parent
56822c906b
commit
f640e720f9
|
@ -15,6 +15,7 @@ let package = Package(
|
|||
name: "TokamakDemo",
|
||||
targets: ["TokamakDemo"]
|
||||
),
|
||||
.executable(name: "RecRep", targets: ["RecRep"]),
|
||||
.library(
|
||||
name: "TokamakDOM",
|
||||
targets: ["TokamakDOM"]
|
||||
|
@ -167,6 +168,24 @@ let package = Package(
|
|||
"OpenCombineJS",
|
||||
]
|
||||
),
|
||||
.executableTarget(
|
||||
name: "RecRep",
|
||||
dependencies: [
|
||||
"TokamakShim",
|
||||
.product(
|
||||
name: "JavaScriptKit",
|
||||
package: "JavaScriptKit",
|
||||
condition: .when(platforms: [.wasi])
|
||||
),
|
||||
]
|
||||
// resources: [.copy("logo-header.png")],
|
||||
// linkerSettings: [
|
||||
// .unsafeFlags(
|
||||
// ["-Xlinker", "--stack-first", "-Xlinker", "-z", "-Xlinker", "stack-size=16777216"],
|
||||
// .when(platforms: [.wasi])
|
||||
// ),
|
||||
// ]
|
||||
),
|
||||
.executableTarget(
|
||||
name: "TokamakDemo",
|
||||
dependencies: [
|
||||
|
|
|
@ -34,13 +34,13 @@ extension FiberReconciler.Fiber: CustomDebugStringConvertible {
|
|||
proposal: .unspecified
|
||||
)
|
||||
return """
|
||||
\(spaces)\(String(describing: typeInfo?.type ?? Any.self)
|
||||
.split(separator: "<")[0])\(element != nil ? "(\(element!))" : "") {\(element != nil ?
|
||||
"\n\(spaces)geometry: \(geometry)" :
|
||||
"")
|
||||
\(child?.flush(level: level + 2) ?? "")
|
||||
\(spaces)}
|
||||
\(spaces)\(debugDescription)\(element != nil ? "(\(element!))" : "")
|
||||
\(child?.flush(level: level + 2) ?? "")\
|
||||
\(sibling?.flush(level: level) ?? "")
|
||||
"""
|
||||
}
|
||||
|
||||
public var recursiveDescription: String {
|
||||
flush()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -243,10 +243,12 @@ public final class FiberReconciler<Renderer: FiberRenderer> {
|
|||
///
|
||||
/// A `reconcile()` call is queued from `fiberChanged` once per run loop.
|
||||
func reconcile() {
|
||||
print("xxx============== BEFORE\n\(current.recursiveDescription)\n\nxxx============== AFTER\n\(alternate.recursiveDescription)")
|
||||
isReconciling = true
|
||||
let changedFibers = changedFibers
|
||||
self.changedFibers.removeAll()
|
||||
// Create a list of mutations.
|
||||
print(changedFibers)
|
||||
let visitor = ReconcilerVisitor(root: current, changedFibers: changedFibers, reconciler: self)
|
||||
switch current.content {
|
||||
case let .view(_, visit):
|
||||
|
@ -266,6 +268,8 @@ public final class FiberReconciler<Renderer: FiberRenderer> {
|
|||
// Essentially, making the work in progress tree the current,
|
||||
// and leaving the current available to be the work in progress
|
||||
// on our next update.
|
||||
|
||||
print("============== BEFORE\n\(current.recursiveDescription)\n\n============== AFTER\n\(alternate.recursiveDescription)")
|
||||
let alternate = alternate
|
||||
self.alternate = current
|
||||
current = alternate
|
||||
|
|
|
@ -72,6 +72,7 @@ struct ReconcilePass: FiberReconcilerPass {
|
|||
var shouldReconcile = false
|
||||
|
||||
while true {
|
||||
print(node.fiber as Any)
|
||||
if !shouldReconcile {
|
||||
if let fiber = node.fiber,
|
||||
changedFibers.contains(ObjectIdentifier(fiber))
|
||||
|
@ -99,6 +100,12 @@ struct ReconcilePass: FiberReconcilerPass {
|
|||
caches.mutations.append(mutation)
|
||||
}
|
||||
|
||||
|
||||
///////------------_!!!!!!!!!!!!!!!!!!!!
|
||||
//////// wheeeere are new fiber elements creted?????
|
||||
////.how is element formed?
|
||||
////-------------------
|
||||
|
||||
// Ensure the `TreeReducer` can access any necessary state.
|
||||
node.elementIndices = caches.elementIndices
|
||||
// Pass view traits down to the nearest element fiber.
|
||||
|
@ -223,10 +230,12 @@ struct ReconcilePass: FiberReconcilerPass {
|
|||
in reconciler: FiberReconciler<R>,
|
||||
caches: FiberReconciler<R>.Caches
|
||||
) -> Mutation<R>? {
|
||||
print("rec node:", node.fiber?.typeInfo?.type, node.fiber?.alternate?.typeInfo?.type)
|
||||
if let element = node.fiber?.element,
|
||||
let index = node.fiber?.elementIndex,
|
||||
let parent = node.fiber?.elementParent?.element
|
||||
{
|
||||
print("actually do it")
|
||||
if node.fiber?.alternate == nil { // This didn't exist before (no alternate)
|
||||
if let fiber = node.fiber {
|
||||
invalidateCache(for: fiber, in: reconciler, caches: caches)
|
||||
|
@ -258,6 +267,7 @@ struct ReconcilePass: FiberReconcilerPass {
|
|||
)
|
||||
}
|
||||
}
|
||||
print("nvm el", node.fiber?.element != nil, "ind", node.fiber?.elementIndex != nil, "par", node.fiber?.elementParent?.element != nil)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -57,6 +57,12 @@ public final class DOMElement: FiberElement {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
extension DOMElement: CustomStringConvertible {
|
||||
public var description: String {
|
||||
"DOMElement(tag: \(content.tag), attributes: \(content.attributes.filter { $0.key != "style" }), innerHTML: \(content.innerHTML ?? "nil"))"
|
||||
}
|
||||
}
|
||||
public extension DOMElement.Content {
|
||||
init<V>(from primitiveView: V, useDynamicLayout: Bool) where V: View {
|
||||
guard let primitiveView = primitiveView as? HTMLConvertible else { fatalError() }
|
||||
|
@ -291,6 +297,7 @@ public struct DOMFiberRenderer: FiberRenderer {
|
|||
|
||||
public func commit(_ mutations: [Mutation<Self>]) {
|
||||
for mutation in mutations {
|
||||
print(mutation)
|
||||
switch mutation {
|
||||
case let .insert(newElement, parent, index):
|
||||
let element = createElement(newElement)
|
||||
|
@ -310,7 +317,8 @@ public struct DOMFiberRenderer: FiberRenderer {
|
|||
fatalError("The previous element does not exist (trying to replace element).")
|
||||
}
|
||||
let replacementElement = createElement(replacement)
|
||||
_ = parentElement.replaceChild?(previousElement, replacementElement)
|
||||
_ = parentElement.replaceChild?(replacementElement, previousElement)
|
||||
// _ = parentElement.replaceChild?(previousElement, replacementElement)
|
||||
case let .update(previous, newContent, geometry):
|
||||
previous.update(with: newContent)
|
||||
guard let previousElement = previous.reference
|
||||
|
|
Loading…
Reference in New Issue