simplified reactivity for map

pull/11774/head
godzylinux 2 years ago
parent 38c085702f
commit 5fea78937d

@ -2,7 +2,7 @@ import { make_reactive, NOTIFY_WITH_ALL_PARAMS } from './utils.js';
export const ReactiveMap = make_reactive(Map, { export const ReactiveMap = make_reactive(Map, {
write_properties: ['clear', 'delete', 'set'], write_properties: ['clear', 'delete', 'set'],
read_properties: ['get', 'keys', 'entries', 'values', 'has'], read_properties: ['get', 'keys', 'has'],
interceptors: { interceptors: {
set: (notify_read_methods, value, property, ...params) => { set: (notify_read_methods, value, property, ...params) => {
if (value.get(params[0]) === params[1]) { if (value.get(params[0]) === params[1]) {
@ -11,15 +11,14 @@ export const ReactiveMap = make_reactive(Map, {
if (!value.has(params[0])) { if (!value.has(params[0])) {
notify_read_methods(['keys']); notify_read_methods(['keys']);
} }
notify_read_methods(['entries', 'values']); notify_read_methods(['get', 'has'], params[0]);
notify_read_methods(['get', 'has'], params[1]);
return true; return true;
}, },
clear: (notify_read_methods, value, property, ...params) => { clear: (notify_read_methods, value, property, ...params) => {
if (value.size === 0) { if (value.size === 0) {
return false; return false;
} }
notify_read_methods(['keys', 'values', 'entries', 'has'], NOTIFY_WITH_ALL_PARAMS); notify_read_methods(['keys', 'has'], NOTIFY_WITH_ALL_PARAMS);
return true; return true;
}, },
delete: (notify_read_methods, value, property, ...params) => { delete: (notify_read_methods, value, property, ...params) => {
@ -27,7 +26,7 @@ export const ReactiveMap = make_reactive(Map, {
return false; return false;
} }
notify_read_methods(['get', 'has'], params[0]); notify_read_methods(['get', 'has'], params[0]);
notify_read_methods(['keys', 'values', 'entries']); notify_read_methods(['keys']);
return true; return true;
} }
} }

@ -142,7 +142,7 @@ function create_notifiers(
entity_instance, entity_instance,
property, property,
...params ...params
) === true; ) !== false; // not saying `===true` because not returning anything is considered true for this scenario as well.
if (!is_property_reactive) { if (!is_property_reactive) {
return notifiers; return notifiers;

Loading…
Cancel
Save