mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-15 12:19:47 +07:00
cache has_hidden_fragments flag in chunks
This commit is contained in:
16
evolved.lua
16
evolved.lua
@@ -124,6 +124,7 @@ local __query_sorted_excludes = {} ---@type table<evolved.query, evolved.assoc_l
|
|||||||
---@field package __has_assign_hooks boolean
|
---@field package __has_assign_hooks boolean
|
||||||
---@field package __has_insert_hooks boolean
|
---@field package __has_insert_hooks boolean
|
||||||
---@field package __has_remove_hooks boolean
|
---@field package __has_remove_hooks boolean
|
||||||
|
---@field package __has_hidden_fragments boolean
|
||||||
local __chunk_mt = {}
|
local __chunk_mt = {}
|
||||||
__chunk_mt.__index = __chunk_mt
|
__chunk_mt.__index = __chunk_mt
|
||||||
|
|
||||||
@@ -1013,6 +1014,9 @@ local function __new_chunk(chunk_parent, chunk_fragment)
|
|||||||
local has_remove_hooks = (chunk_parent and chunk_parent.__has_remove_hooks)
|
local has_remove_hooks = (chunk_parent and chunk_parent.__has_remove_hooks)
|
||||||
or __evolved_has(chunk_fragment, __ON_REMOVE)
|
or __evolved_has(chunk_fragment, __ON_REMOVE)
|
||||||
|
|
||||||
|
local has_hidden_fragments = (chunk_parent and chunk_parent.__has_hidden_fragments)
|
||||||
|
or __evolved_has(chunk_fragment, __HIDDEN)
|
||||||
|
|
||||||
---@type evolved.chunk
|
---@type evolved.chunk
|
||||||
local chunk = __lua_setmetatable({
|
local chunk = __lua_setmetatable({
|
||||||
__parent = nil,
|
__parent = nil,
|
||||||
@@ -1036,6 +1040,7 @@ local function __new_chunk(chunk_parent, chunk_fragment)
|
|||||||
__has_assign_hooks = has_assign_hooks,
|
__has_assign_hooks = has_assign_hooks,
|
||||||
__has_insert_hooks = has_insert_hooks,
|
__has_insert_hooks = has_insert_hooks,
|
||||||
__has_remove_hooks = has_remove_hooks,
|
__has_remove_hooks = has_remove_hooks,
|
||||||
|
__has_hidden_fragments = has_hidden_fragments,
|
||||||
}, __chunk_mt)
|
}, __chunk_mt)
|
||||||
|
|
||||||
if chunk_parent then
|
if chunk_parent then
|
||||||
@@ -5023,10 +5028,14 @@ local function __update_chunk_caches_trace(chunk)
|
|||||||
local has_remove_hooks = (chunk_parent and chunk_parent.__has_remove_hooks)
|
local has_remove_hooks = (chunk_parent and chunk_parent.__has_remove_hooks)
|
||||||
or __evolved_has(chunk_fragment, __ON_REMOVE)
|
or __evolved_has(chunk_fragment, __ON_REMOVE)
|
||||||
|
|
||||||
|
local has_hidden_fragments = (chunk_parent and chunk_parent.__has_hidden_fragments)
|
||||||
|
or __evolved_has(chunk_fragment, __HIDDEN)
|
||||||
|
|
||||||
chunk.__has_setup_hooks = has_setup_hooks
|
chunk.__has_setup_hooks = has_setup_hooks
|
||||||
chunk.__has_assign_hooks = has_assign_hooks
|
chunk.__has_assign_hooks = has_assign_hooks
|
||||||
chunk.__has_insert_hooks = has_insert_hooks
|
chunk.__has_insert_hooks = has_insert_hooks
|
||||||
chunk.__has_remove_hooks = has_remove_hooks
|
chunk.__has_remove_hooks = has_remove_hooks
|
||||||
|
chunk.__has_hidden_fragments = has_hidden_fragments
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
@@ -5118,6 +5127,10 @@ local function __update_fragment_tags(fragment)
|
|||||||
__trace_fragment_chunks(fragment, __update_chunk_tags_trace, fragment)
|
__trace_fragment_chunks(fragment, __update_chunk_tags_trace, fragment)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function __update_fragment_hiddens(fragment)
|
||||||
|
__trace_fragment_chunks(fragment, __update_chunk_caches_trace, fragment)
|
||||||
|
end
|
||||||
|
|
||||||
---@param fragment evolved.fragment
|
---@param fragment evolved.fragment
|
||||||
local function __update_fragment_defaults(fragment)
|
local function __update_fragment_defaults(fragment)
|
||||||
__trace_fragment_chunks(fragment, __update_chunk_caches_trace, fragment)
|
__trace_fragment_chunks(fragment, __update_chunk_caches_trace, fragment)
|
||||||
@@ -5131,6 +5144,9 @@ end
|
|||||||
__evolved_set(__TAG, __ON_INSERT, __update_fragment_tags)
|
__evolved_set(__TAG, __ON_INSERT, __update_fragment_tags)
|
||||||
__evolved_set(__TAG, __ON_REMOVE, __update_fragment_tags)
|
__evolved_set(__TAG, __ON_REMOVE, __update_fragment_tags)
|
||||||
|
|
||||||
|
__evolved_set(__HIDDEN, __ON_INSERT, __update_fragment_hiddens)
|
||||||
|
__evolved_set(__HIDDEN, __ON_REMOVE, __update_fragment_hiddens)
|
||||||
|
|
||||||
__evolved_set(__DEFAULT, __ON_INSERT, __update_fragment_defaults)
|
__evolved_set(__DEFAULT, __ON_INSERT, __update_fragment_defaults)
|
||||||
__evolved_set(__DEFAULT, __ON_REMOVE, __update_fragment_defaults)
|
__evolved_set(__DEFAULT, __ON_REMOVE, __update_fragment_defaults)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user