diff --git a/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt..st b/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt..st new file mode 100644 index 000000000..a4047ea5f --- /dev/null +++ b/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt..st @@ -0,0 +1,4 @@ +accessing-attributes +dataAttributeAt: aString + + ^ self attributes at: 'data-',aString \ No newline at end of file diff --git a/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt.ifAbsent..st b/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt.ifAbsent..st new file mode 100644 index 000000000..44de499bd --- /dev/null +++ b/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt.ifAbsent..st @@ -0,0 +1,4 @@ +accessing-attributes +dataAttributeAt: aString ifAbsent: aBlock + + ^ self attributes at: 'data-',aString ifAbsent: aBlock \ No newline at end of file diff --git a/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt.put..st b/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt.put..st new file mode 100644 index 000000000..eb9cc175f --- /dev/null +++ b/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt.put..st @@ -0,0 +1,4 @@ +accessing-attributes +dataAttributeAt: aString put: aValue + + self attributes at: 'data-',aString put: aValue \ No newline at end of file diff --git a/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt.put.if..st b/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt.put.if..st new file mode 100644 index 000000000..3ca19fd9b --- /dev/null +++ b/repository/Seaside-Canvas.package/WATagBrush.class/instance/dataAttributeAt.put.if..st @@ -0,0 +1,4 @@ +accessing-attributes +dataAttributeAt: aString put: aValue if: aBoolean + + aBoolean ifTrue:[ self dataAttributeAt: aString put: aValue ] \ No newline at end of file diff --git a/repository/Seaside-Core.package/WACallbackRegistry.class/instance/handle..st b/repository/Seaside-Core.package/WACallbackRegistry.class/instance/handle..st index d0c4e7045..94b8ac10b 100644 --- a/repository/Seaside-Core.package/WACallbackRegistry.class/instance/handle..st +++ b/repository/Seaside-Core.package/WACallbackRegistry.class/instance/handle..st @@ -7,6 +7,7 @@ handle: aRequestContext callbacks at: key ifPresent: [ :callback | (callback isEnabledFor: aRequestContext) ifTrue: [ set add: callback ] ] ]. + "Process the callbacks in order of priority" set sorted do: [ :callback | callback evaluateWithFieldValues: (fields allAt: callback key) ] \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WAAnchorTag.extension/instance/turboAction..st b/repository/Seaside-HotwireTurbo.package/WAAnchorTag.extension/instance/turboAction..st new file mode 100644 index 000000000..fbb61dae5 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WAAnchorTag.extension/instance/turboAction..st @@ -0,0 +1,5 @@ +*Seaside-HotwireTurbo +turboAction: aString + (#('replace' 'advance') includes: aString) ifFalse: [ + self error. ]. + self dataAttributeAt: 'turbo-action' put: aString \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WAAnchorTag.extension/instance/turboFrameTarget..st b/repository/Seaside-HotwireTurbo.package/WAAnchorTag.extension/instance/turboFrameTarget..st new file mode 100644 index 000000000..13d94fd02 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WAAnchorTag.extension/instance/turboFrameTarget..st @@ -0,0 +1,4 @@ +*Seaside-HotwireTurbo +turboFrameTarget: aString + + self dataAttributeAt: 'turbo-frame' put: aString \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WAAnchorTag.extension/instance/turbocallback..st b/repository/Seaside-HotwireTurbo.package/WAAnchorTag.extension/instance/turbocallback..st index d13686e06..bc8de4202 100644 --- a/repository/Seaside-HotwireTurbo.package/WAAnchorTag.extension/instance/turbocallback..st +++ b/repository/Seaside-HotwireTurbo.package/WAAnchorTag.extension/instance/turbocallback..st @@ -1,4 +1,5 @@ *Seaside-HotwireTurbo -turbocallback: aNiladicValuable - aNiladicValuable argumentCount > 0 ifTrue: [ GRInvalidArgumentCount signal: 'Anchors expect a niladic callback.' ]. +turboCallback: aNiladicValuable + aNiladicValuable argumentCount > 0 ifTrue: [ + GRInvalidArgumentCount signal: 'Anchors expect a niladic callback.' ]. self url addField: (self storeCallback: (WATurboFrameActionCallback on: aNiladicValuable)) \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WAButtonTag.extension/instance/turboCallback..st b/repository/Seaside-HotwireTurbo.package/WAButtonTag.extension/instance/turboCallback..st new file mode 100644 index 000000000..133936ff1 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WAButtonTag.extension/instance/turboCallback..st @@ -0,0 +1,5 @@ +*Seaside-HotwireTurbo +turboCallback: aNiladicValuable + aNiladicValuable argumentCount > 0 ifTrue: [ + GRInvalidArgumentCount signal: 'Buttons expect a niladic callback.' ]. + self name: (self storeCallback: (WATurboFrameActionCallback on: aNiladicValuable)) \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WAButtonTag.extension/instance/turboStreamCallback..st b/repository/Seaside-HotwireTurbo.package/WAButtonTag.extension/instance/turboStreamCallback..st new file mode 100644 index 000000000..903a58041 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WAButtonTag.extension/instance/turboStreamCallback..st @@ -0,0 +1,4 @@ +*Seaside-HotwireTurbo +turboStreamCallback: aValuable + + self name: (self storeCallback: ((WATurboStreamCallback on: aValuable) context: canvas context)) \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WAButtonTag.extension/properties.json b/repository/Seaside-HotwireTurbo.package/WAButtonTag.extension/properties.json new file mode 100644 index 000000000..ce95d022e --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WAButtonTag.extension/properties.json @@ -0,0 +1,3 @@ +{ + "name" : "WAButtonTag" +} \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WAComponent.extension/instance/turboframeDecoration.st b/repository/Seaside-HotwireTurbo.package/WAComponent.extension/instance/turboframeDecoration.st new file mode 100644 index 000000000..6cb3eb1ee --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WAComponent.extension/instance/turboframeDecoration.st @@ -0,0 +1,4 @@ +*Seaside-HotwireTurbo +turboframeDecoration + + ^ self decorations detect:[ :dec | dec class == WATurboFrame ] \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WAComponent.extension/properties.json b/repository/Seaside-HotwireTurbo.package/WAComponent.extension/properties.json new file mode 100644 index 000000000..94b6f7e9d --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WAComponent.extension/properties.json @@ -0,0 +1,3 @@ +{ + "name" : "WAComponent" +} \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WASubmitButtonTag.extension/instance/turboCallback..st b/repository/Seaside-HotwireTurbo.package/WASubmitButtonTag.extension/instance/turboCallback..st new file mode 100644 index 000000000..51497871a --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WASubmitButtonTag.extension/instance/turboCallback..st @@ -0,0 +1,5 @@ +*Seaside-HotwireTurbo +turboCallback: aNiladicValuable + aNiladicValuable argumentCount > 0 ifTrue: [ + GRInvalidArgumentCount signal: 'Submit buttons expect a niladic callback.' ]. + self name: (self storeCallback: (WATurboFrameActionCallback on: aNiladicValuable)) \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WASubmitButtonTag.extension/instance/turboFrameTarget..st b/repository/Seaside-HotwireTurbo.package/WASubmitButtonTag.extension/instance/turboFrameTarget..st new file mode 100644 index 000000000..13d94fd02 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WASubmitButtonTag.extension/instance/turboFrameTarget..st @@ -0,0 +1,4 @@ +*Seaside-HotwireTurbo +turboFrameTarget: aString + + self dataAttributeAt: 'turbo-frame' put: aString \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WASubmitButtonTag.extension/properties.json b/repository/Seaside-HotwireTurbo.package/WASubmitButtonTag.extension/properties.json new file mode 100644 index 000000000..717195ed5 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WASubmitButtonTag.extension/properties.json @@ -0,0 +1,3 @@ +{ + "name" : "WASubmitButtonTag" +} \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/class/new.st b/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/class/new.st new file mode 100644 index 000000000..18248469f --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/class/new.st @@ -0,0 +1,3 @@ +instance creation +new + ^ self basicNew initializeWithId: 'id-', UUIDGenerator default next asString \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/class/newWithId..st b/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/class/newWithId..st new file mode 100644 index 000000000..f5daa5064 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/class/newWithId..st @@ -0,0 +1,3 @@ +instance creation +newWithId: aString + ^ self basicNew initializeWithId: aString \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/instance/id.st b/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/instance/id.st index e5e2cc605..e65ff1312 100644 --- a/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/instance/id.st +++ b/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/instance/id.st @@ -1,3 +1,3 @@ accessing id - ^ 'id-',id \ No newline at end of file + ^ id \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/instance/initialize.st b/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/instance/initialize.st deleted file mode 100644 index 051356988..000000000 --- a/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/instance/initialize.st +++ /dev/null @@ -1,4 +0,0 @@ -initialization -initialize - super initialize. - id := UUIDGenerator default next asString \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/instance/initializeWithId..st b/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/instance/initializeWithId..st new file mode 100644 index 000000000..6b498cc48 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/instance/initializeWithId..st @@ -0,0 +1,4 @@ +initialization +initializeWithId: aString + self initialize. + id := aString \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/properties.json b/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/properties.json index 8e33ea3d2..616434178 100644 --- a/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/properties.json +++ b/repository/Seaside-HotwireTurbo.package/WATurboFrame.class/properties.json @@ -6,7 +6,6 @@ "pools" : [ ], "classvars" : [ ], "instvars" : [ - "counter", "id" ], "name" : "WATurboFrame", diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/README.md b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/class/newWithRenderContext..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/class/newWithRenderContext..st new file mode 100644 index 000000000..b537f3067 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/class/newWithRenderContext..st @@ -0,0 +1,4 @@ +instance creation +newWithRenderContext: aRenderContext + + ^ self new initializeWithContext: aRenderContext; yourself \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/after.with..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/after.with..st new file mode 100644 index 000000000..64936c319 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/after.with..st @@ -0,0 +1,3 @@ +actions +after: anId with: aRenderable + self turboStreamAction: 'after' target: anId with: aRenderable \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/append.with..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/append.with..st new file mode 100644 index 000000000..a3e8c4a17 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/append.with..st @@ -0,0 +1,3 @@ +actions +append: anId with: aRenderable + self turboStreamAction: 'append' target: anId with: aRenderable \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/before.with..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/before.with..st new file mode 100644 index 000000000..dc6121ebc --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/before.with..st @@ -0,0 +1,3 @@ +actions +before: anId with: aRenderable + self turboStreamAction: 'before' target: anId with: aRenderable \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/initializeWithContext..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/initializeWithContext..st new file mode 100644 index 000000000..fc8b35f85 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/initializeWithContext..st @@ -0,0 +1,4 @@ +initialize +initializeWithContext: aRenderContext + + canvas := WAHtmlCanvas context: aRenderContext \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/prepend.with..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/prepend.with..st new file mode 100644 index 000000000..e3b7f7429 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/prepend.with..st @@ -0,0 +1,3 @@ +actions +prepend: anId with: aRenderable + self turboStreamAction: 'prepend' target: anId with: aRenderable \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/remove..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/remove..st new file mode 100644 index 000000000..7616c45d3 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/remove..st @@ -0,0 +1,3 @@ +actions +remove: anId + self turboStreamAction: 'remove' target: anId with: nil \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/replace.with..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/replace.with..st new file mode 100644 index 000000000..44091d5fd --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/replace.with..st @@ -0,0 +1,3 @@ +actions +replace: anId with: aRenderable + self turboStreamAction: 'replace' target: anId with: aRenderable \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/turboStreamAction.target.with..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/turboStreamAction.target.with..st new file mode 100644 index 000000000..737a0ba85 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/turboStreamAction.target.with..st @@ -0,0 +1,9 @@ +private +turboStreamAction: aName target: anId with: aRenderable + (canvas tag: 'turbo-stream') + attributeAt: 'action' put: aName; + attributeAt: 'target' put: anId; + with: [ + aRenderable ifNotNil:[ + (canvas tag: 'template') + with:[ aRenderable renderOn: canvas ] ] ] \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/update.with..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/update.with..st new file mode 100644 index 000000000..34d2b3c32 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/instance/update.with..st @@ -0,0 +1,3 @@ +actions +update: anId with: aRenderable + self turboStreamAction: 'update' target: anId with: aRenderable \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/properties.json b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/properties.json new file mode 100644 index 000000000..03a8dceec --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamBuilder.class/properties.json @@ -0,0 +1,13 @@ +{ + "commentStamp" : "", + "super" : "WAObject", + "category" : "Seaside-HotwireTurbo", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "canvas" + ], + "name" : "WATurboStreamBuilder", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/README.md b/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/instance/context..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/instance/context..st new file mode 100644 index 000000000..1641a8f09 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/instance/context..st @@ -0,0 +1,3 @@ +accessing +context: aContext + renderContext := aContext \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/instance/evaluateWithArgument..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/instance/evaluateWithArgument..st new file mode 100644 index 000000000..f4484ac51 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/instance/evaluateWithArgument..st @@ -0,0 +1,8 @@ +evaluation +evaluateWithArgument: anObject + + self requestContext respond: [ :response | + response + doNotCache; + contentType: 'text/vnd.turbo-stream.html'. + self renderTurboStreamOn: response stream ] \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/instance/renderTurboStreamOn..st b/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/instance/renderTurboStreamOn..st new file mode 100644 index 000000000..a47dd0eae --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/instance/renderTurboStreamOn..st @@ -0,0 +1,11 @@ +evaluation +renderTurboStreamOn: aStream + + | document | + document := (WAHtmlDocument + on: aStream + codec: self requestContext codec) + scriptGenerator: self requestContext handler scriptGeneratorClass new; + yourself. + renderContext document: document during: [ + block value: (WATurboStreamBuilder newWithRenderContext: renderContext) ] \ No newline at end of file diff --git a/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/properties.json b/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/properties.json new file mode 100644 index 000000000..9c3bd56f9 --- /dev/null +++ b/repository/Seaside-HotwireTurbo.package/WATurboStreamCallback.class/properties.json @@ -0,0 +1,13 @@ +{ + "commentStamp" : "", + "super" : "WAActionCallback", + "category" : "Seaside-HotwireTurbo", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "renderContext" + ], + "name" : "WATurboStreamCallback", + "type" : "normal" +} \ No newline at end of file