prints n stuff

This commit is contained in:
Lukas Stabe 2022-10-05 16:38:25 +02:00
parent 56822c906b
commit f640e720f9
5 changed files with 48 additions and 7 deletions

View File

@ -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: [

View File

@ -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()
}
}

View File

@ -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

View File

@ -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
}

View File

@ -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