# Pastebin TTzx7OPg unit class Selkie::UI::ReactiveHash does Associative does Iterable; has $.store is required; has Str $.name is required; method sink { .{$!name} = True with %*UI-PATHS } method !get-val { $.sink; $!store.get-in: $!name } method !set-val($key, $value) { $!store.assoc-in: $!name, $key, :$value; self } method keys { self!get-val.keys } method values { self!get-val.values } method kv { self!get-val.kv } method pairs { self!get-val.pairs } method AT-KEY($key) { $.sink; $!store.get-in: $!name, $key } method EXISTS-KEY($key) { self!get-val.EXISTS-KEY: $key } method STORE(Hash() $values) { $!store.assoc-in: $!name, value => $values; self } method ASSIGN-KEY($key, $value) { self!set-val: $key, $value } method DELETE-KEY($key) { my $v = $.AT-KEY($key) // return Nil; $!store.assoc-in: $!name, $key, value => Nil; $v }