use latest version of timline poc

This commit is contained in:
2026-03-02 15:50:38 +01:00
parent de0be12aab
commit abb97d84fb
56 changed files with 1787 additions and 308 deletions

View File

@@ -0,0 +1,37 @@
import 'dart:convert';
import 'dart:js_interop';
@JS('window.__zendegi__')
external _ZendegiBridge? get _bridge;
extension type _ZendegiBridge._(JSObject _) implements JSObject {
external JSString getState();
external void onEvent(JSString json);
external set updateState(JSFunction callback);
}
Map<String, dynamic>? readInitialState() {
final bridge = _bridge;
if (bridge == null) return null;
final json = bridge.getState().toDart;
return jsonDecode(json) as Map<String, dynamic>;
}
void onStateUpdated(void Function(Map<String, dynamic> state) callback) {
final bridge = _bridge;
if (bridge == null) return;
bridge.updateState = ((JSString json) {
final decoded = jsonDecode(json.toDart) as Map<String, dynamic>;
callback(decoded);
}).toJS;
}
void emitEvent(String type, [Map<String, dynamic>? payload]) {
final bridge = _bridge;
if (bridge == null) return;
final event = <String, dynamic>{'type': type};
if (payload != null) {
event['payload'] = payload;
}
bridge.onEvent(jsonEncode(event).toJS);
}