mancha 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.d.ts +4 -2
- package/dist/browser.js +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/css_custom.d.ts +1 -1
- package/dist/css_custom.js +44 -11
- package/dist/css_custom.js.map +1 -1
- package/dist/{interfaces-4UqEBAXK.d.ts → interfaces-C8heJ6BZ.d.ts} +32 -20
- package/dist/mancha.js +24 -24
- package/dist/renderer-B4AORGUN.js +43 -0
- package/dist/renderer.js +5 -1
- package/dist/renderer.js.map +1 -1
- package/dist/safe_browser.d.ts +1 -1
- package/dist/safe_browser.js +1 -1
- package/dist/store.d.ts +36 -27
- package/dist/store.js +234 -96
- package/dist/store.js.map +1 -1
- package/docs/02_initialization.md +2 -2
- package/docs/03_reactivity.md +18 -29
- package/docs/05_css.md +44 -7
- package/package.json +1 -1
- package/scripts/generate-css-docs.ts +47 -7
- package/dist/renderer-ZW6Iyyzj.js +0 -43
package/dist/browser.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { a as StoreState, i as IRenderer, n as RenderParams, r as RendererPlugin, t as ParserParams } from "./interfaces-
|
|
1
|
+
import { a as StoreState, i as IRenderer, n as RenderParams, r as RendererPlugin, t as ParserParams } from "./interfaces-C8heJ6BZ.js";
|
|
2
2
|
import { SafeStyleSheet } from "safevalues";
|
|
3
3
|
|
|
4
4
|
//#region src/css_custom.d.ts
|
|
5
5
|
|
|
6
|
+
/** Scan a DOM tree and inject CSS for all custom values found. Defaults to the whole document. */
|
|
7
|
+
declare function scanAndInject(root?: Element | Document | DocumentFragment): void;
|
|
6
8
|
/** For testing: reset module state. */
|
|
7
9
|
declare function _resetForTesting(): void;
|
|
8
10
|
//#endregion
|
|
@@ -83,4 +85,4 @@ interface InitManchaOptions<T extends StoreState = StoreState> {
|
|
|
83
85
|
*/
|
|
84
86
|
declare function initMancha<T extends StoreState = StoreState>(options?: InitManchaOptions<T>): Promise<Renderer<T>>;
|
|
85
87
|
//#endregion
|
|
86
|
-
export { CloakOptions, CssName, IRenderer, InitManchaOptions, Mancha, type ParserParams, type RenderParams, Renderer, type RendererPlugin, _resetForTesting as _resetCustomCssForTesting, rules as basicCssRules, initMancha, injectCss, rules$1 as minimalCssRules, rules$2 as utilsCssRules };
|
|
88
|
+
export { CloakOptions, CssName, IRenderer, InitManchaOptions, Mancha, type ParserParams, type RenderParams, Renderer, type RendererPlugin, _resetForTesting as _resetCustomCssForTesting, rules as basicCssRules, initMancha, injectCss, rules$1 as minimalCssRules, scanAndInject, rules$2 as utilsCssRules };
|
package/dist/browser.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,i as t,n,r,t as i}from"./renderer-
|
|
1
|
+
import{a as e,i as t,n,r,t as i}from"./renderer-B4AORGUN.js";import{safeStyleEl as a}from"safevalues/dom";import{concatStyleSheets as o,safeStyleSheet as s}from"safevalues";function c(){return o([s`*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}`,s`html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}`,s`body{margin:0;line-height:inherit}`,s`hr{height:0;color:inherit;border-top-width:1px}`,s`abbr:where([title]){text-decoration:underline dotted}`,s`b,strong{font-weight:bolder}`,s`code,kbd,samp,pre{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;font-size:1em}`,s`small{font-size:80%}`,s`sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}`,s`sub{bottom:-0.25em}`,s`sup{top:-0.5em}`,s`button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}`,s`button,select{text-transform:none}`,s`button,[type='button'],[type='reset'],[type='submit']{-webkit-appearance:button;background-color:transparent;background-image:none;cursor:pointer}`,s`:-moz-focusring{outline:auto}`,s`:-moz-ui-invalid{box-shadow:none}`,s`progress{vertical-align:baseline}`,s`::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}`,s`[type='search']{-webkit-appearance:textfield;outline-offset:-2px}`,s`::-webkit-search-decoration{-webkit-appearance:none}`,s`::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}`,s`summary{display:list-item}`,s`blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}`,s`fieldset{margin:0;padding:0}`,s`legend{padding:0}`,s`ol,ul,menu{list-style:none;margin:0;padding:0}`,s`textarea{resize:vertical}`,s`::placeholder{opacity:1;color:#9ca3af}`,s`button,[role="button"]{cursor:pointer}`,s`:disabled{cursor:default;pointer-events:none;opacity:0.75}`,s`img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}`,s`img,video{max-width:100%;height:auto}`,s`[hidden]{display:none}`,s`dialog{padding:0}`,s`dialog::backdrop{background:rgba(0,0,0,0.5)}`])}function l(){return o([s`html{`,s`max-width: 70ch;`,s`padding: 2em 1em;`,s`margin: auto;`,s`line-height: 1.75;`,s`font-size: 1.25em;`,s`font-family: sans-serif;`,s`}`,s`h1,h2,h3,h4,h5,h6{`,s`margin: 1em 0 0.5em;`,s`}`,s`p,ul,ol{`,s`margin-bottom: 1em;`,s`color: #1d1d1d;`,s`}`])}var u=class extends i{impl=`browser`;dirpath=n(globalThis.location?.href??`http://localhost/`);parseHTML(e,t={rootDocument:!1}){if(t.rootDocument)return new DOMParser().parseFromString(e,`text/html`);{let t=document.createRange();return t.selectNodeContents(document.body),t.createContextualFragment(e)}}serializeHTML(e){return new XMLSerializer().serializeToString(e).replace(/\s?xmlns="[^"]+"/gm,``)}preprocessLocal(e,t){return this.preprocessRemote(e,t)}createElement(e,t){return(t||document).createElement(e)}createComment(e,t){return(t||document).createComment(e)}textContent(e,t){e.textContent=t}};const d=new u;function f(n){for(let r of n){r=r.trim();let n=document.createElement(`style`);switch(r){case`minimal`:a.setTextContent(n,l());break;case`basic`:case`custom`:console.warn(`css="${r}" is deprecated; use css="utils" instead.`);continue;case`utils`:{a.setTextContent(n,c()),n.setAttribute(`data-mancha`,`basic`),globalThis.document.head.appendChild(n);let r=document.createElement(`style`);r.textContent=e(),r.setAttribute(`data-mancha`,`utils`),globalThis.document.head.appendChild(r),t(document);continue}default:console.error(`Unknown style name: "${r}"`);continue}globalThis.document.head.appendChild(n)}}const p=`mancha-cloak`;function m(e,t){let n=`${e.join(`, `)} { opacity: 0 !important; ${t>0?`transition: opacity ${t}ms ease-in-out !important;`:``} }`,r=document.getElementById(p);r||(r=document.createElement(`style`),r.id=p,document.head.appendChild(r)),r.textContent=n}function h(e){let t=!1;return async()=>{if(t)return;t=!0;let n=document.getElementById(p);if(n){if(e!==!1){let t=n.sheet;t&&t.cssRules.length>0&&t.cssRules[0].style.setProperty(`opacity`,`1`,`important`),await new Promise(t=>setTimeout(t,e))}typeof globalThis.requestAnimationFrame==`function`&&(await new Promise(e=>globalThis.requestAnimationFrame(e)),await new Promise(e=>globalThis.requestAnimationFrame(e))),n.remove()}}}async function g(e={}){let t;document.documentElement.classList.add(`mancha-loading`);let n=e.cloak?e.cloak===!0?{}:e.cloak:void 0;if(n){let r=e.target?Array.isArray(e.target)?e.target:[e.target]:[`body`],i=n.selector&&(Array.isArray(n.selector)||typeof n.selector==`string`)?Array.isArray(n.selector)?n.selector:[n.selector]:r,a=n.duration??0;m(i,a),t=h(a>0?a:!1)}else t=h(!1);document.readyState===`loading`&&await new Promise(e=>{window.addEventListener(`DOMContentLoaded`,()=>e(),{once:!0})});let r=e.renderer??new u;if(e.css&&e.css.length>0&&f(e.css),e.debug&&r.debug(!0),e.state)for(let[t,n]of Object.entries(e.state))await r.set(t,n);try{if(e.callback)await e.callback(r);else if(e.target){let t=Array.isArray(e.target)?e.target:[e.target];for(let n of t){let t=globalThis.document.querySelector(n);t?await r.mount(t,{cache:e.cache}):console.error(`Target element not found: "${n}"`)}}}finally{document.documentElement.classList.remove(`mancha-loading`),t&&await t()}return r}export{i as IRenderer,d as Mancha,u as Renderer,r as _resetCustomCssForTesting,c as basicCssRules,g as initMancha,f as injectCss,l as minimalCssRules,t as scanAndInject,e as utilsCssRules};
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/css_custom.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export declare function injectCustomClass(className: string, variant?: {
|
|
|
17
17
|
}): boolean;
|
|
18
18
|
/** Process a class string, inject CSS for any custom values. */
|
|
19
19
|
export declare function processClassString(classString: string): void;
|
|
20
|
-
/** Scan a DOM tree and inject CSS for all custom values found. */
|
|
20
|
+
/** Scan a DOM tree and inject CSS for all custom values found. Defaults to the whole document. */
|
|
21
21
|
export declare function scanAndInject(root?: Element | Document | DocumentFragment): void;
|
|
22
22
|
/**
|
|
23
23
|
* Render hook: scan a tree rendered by mount() for on-demand rules.
|
package/dist/css_custom.js
CHANGED
|
@@ -60,7 +60,8 @@ let styleSheet = null;
|
|
|
60
60
|
function findRuleDeclarations(className) {
|
|
61
61
|
if (typeof document === "undefined")
|
|
62
62
|
return null;
|
|
63
|
-
|
|
63
|
+
// selectorText is serialized escaped (e.g. ".w-50\%"), so escape before comparing.
|
|
64
|
+
const targetSelector = `.${escapeSelector(className)}`;
|
|
64
65
|
for (const sheet of document.styleSheets) {
|
|
65
66
|
try {
|
|
66
67
|
for (const rule of sheet.cssRules) {
|
|
@@ -83,7 +84,13 @@ export function isSupported() {
|
|
|
83
84
|
}
|
|
84
85
|
/** Escape CSS selector special characters. */
|
|
85
86
|
function escapeSelector(str) {
|
|
86
|
-
|
|
87
|
+
// A consumer that installs a fuller set of DOM globals can make isSupported()
|
|
88
|
+
// true while leaving CSS undefined. The regex fallback is approximate, but it
|
|
89
|
+
// keeps those environments working.
|
|
90
|
+
const css = globalThis.CSS;
|
|
91
|
+
if (typeof css?.escape === "function")
|
|
92
|
+
return css.escape(str);
|
|
93
|
+
return str.replace(/[[\]#.:>+~()'"/%,!]/g, "\\$&");
|
|
87
94
|
}
|
|
88
95
|
/** Get or create the stylesheet. */
|
|
89
96
|
function getStyleSheet() {
|
|
@@ -93,6 +100,9 @@ function getStyleSheet() {
|
|
|
93
100
|
// otherwise new rules would be inserted into a detached (invisible) sheet.
|
|
94
101
|
if (styleSheet && !styleSheet.ownerNode?.isConnected) {
|
|
95
102
|
styleSheet = null;
|
|
103
|
+
// The rules that lived in the removed sheet went with it, so forget them:
|
|
104
|
+
// otherwise the dedup cache would suppress re-injecting them forever.
|
|
105
|
+
injectedRules.clear();
|
|
96
106
|
}
|
|
97
107
|
if (styleSheet)
|
|
98
108
|
return styleSheet;
|
|
@@ -157,12 +167,15 @@ export function parseColorOpacityClass(className) {
|
|
|
157
167
|
/** Inject a single custom value class (with optional variant). */
|
|
158
168
|
export function injectCustomClass(className, variant) {
|
|
159
169
|
const fullClassName = variant ? `${variant.name}:${className}` : className;
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
170
|
+
// Resolve the stylesheet before consulting the cache: getStyleSheet() drops
|
|
171
|
+
// the cache when it has to recreate a removed sheet, and only the rules in
|
|
172
|
+
// the live sheet count as injected.
|
|
163
173
|
const sheet = getStyleSheet();
|
|
164
174
|
if (!sheet)
|
|
165
175
|
return false;
|
|
176
|
+
// Already injected.
|
|
177
|
+
if (injectedRules.has(fullClassName))
|
|
178
|
+
return true;
|
|
166
179
|
const escapedClass = escapeSelector(fullClassName);
|
|
167
180
|
// Resolve CSS declarations: try parsers, then fall back to stylesheet lookup.
|
|
168
181
|
const parsed = parseCustomValueClass(className) ?? parseColorOpacityClass(className);
|
|
@@ -192,7 +205,24 @@ export function injectCustomClass(className, variant) {
|
|
|
192
205
|
rule = `@media (min-width: ${bp}px) { .${escapedClass}${selectorSuffix} { ${declarations} } }`;
|
|
193
206
|
}
|
|
194
207
|
try {
|
|
195
|
-
sheet.insertRule(rule, sheet.cssRules.length);
|
|
208
|
+
const index = sheet.insertRule(rule, sheet.cssRules.length);
|
|
209
|
+
// The browser accepts a rule whose selector parses but whose declaration it
|
|
210
|
+
// cannot use, and an @media wrapper parses even with an invalid inner
|
|
211
|
+
// selector. Both leave an inert rule behind, so require a surviving
|
|
212
|
+
// declaration before caching. Which level holds it follows from the rule we
|
|
213
|
+
// built, not from the rule's shape: CSS Nesting gives plain style rules a
|
|
214
|
+
// cssRules list too, and `instanceof CSSMediaRule` would throw in a DOM shim
|
|
215
|
+
// lacking that global.
|
|
216
|
+
const inserted = sheet.cssRules[index];
|
|
217
|
+
const styleRule = (variant?.type === "media" ? inserted.cssRules[0] : inserted);
|
|
218
|
+
if (!styleRule?.style?.length) {
|
|
219
|
+
sheet.deleteRule(index);
|
|
220
|
+
console.warn(`Injected CSS rule had no effect: ${rule}`);
|
|
221
|
+
// Deliberately left uncached, so every later scan re-inserts, re-detects
|
|
222
|
+
// and re-warns for this class. That repeats once per scan rather than
|
|
223
|
+
// being bounded, but it keeps dead classes out of the cache.
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
196
226
|
injectedRules.add(fullClassName);
|
|
197
227
|
return true;
|
|
198
228
|
}
|
|
@@ -235,17 +265,20 @@ export function processClassString(classString) {
|
|
|
235
265
|
injectCustomClass(cls);
|
|
236
266
|
}
|
|
237
267
|
}
|
|
238
|
-
/** Scan a DOM tree and inject CSS for all custom values found. */
|
|
239
|
-
export function scanAndInject(root
|
|
268
|
+
/** Scan a DOM tree and inject CSS for all custom values found. Defaults to the whole document. */
|
|
269
|
+
export function scanAndInject(root) {
|
|
270
|
+
// Guard first: a default parameter would evaluate `document` before this
|
|
271
|
+
// runs and throw on the server, where the global does not exist.
|
|
240
272
|
if (!isSupported())
|
|
241
273
|
return;
|
|
274
|
+
const target = root ?? document;
|
|
242
275
|
// querySelectorAll only matches descendants; include the root's own classes.
|
|
243
|
-
if (
|
|
244
|
-
const rootClass =
|
|
276
|
+
if (target instanceof Element) {
|
|
277
|
+
const rootClass = target.getAttribute("class");
|
|
245
278
|
if (rootClass)
|
|
246
279
|
processClassString(rootClass);
|
|
247
280
|
}
|
|
248
|
-
const elements =
|
|
281
|
+
const elements = target.querySelectorAll("[class]");
|
|
249
282
|
for (const el of elements) {
|
|
250
283
|
const classAttr = el.getAttribute("class");
|
|
251
284
|
if (classAttr)
|
package/dist/css_custom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css_custom.js","sourceRoot":"","sources":["../src/css_custom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE/E,iDAAiD;AACjD,MAAM,kBAAkB,GAA2B;IAClD,IAAI,EAAE,OAAO;IACb,EAAE,EAAE,kBAAkB;IACtB,MAAM,EAAE,cAAc;IACtB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,cAAc;CACtB,CAAC;AAEF,iFAAiF;AACjF,MAAM,qBAAqB,GAAG,gDAAgD,CAAC;AAE/E,2CAA2C;AAC3C,MAAM,YAAY,GAA2B;IAC5C,UAAU;IACV,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,QAAQ;IACX,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IAErB,WAAW;IACX,CAAC,EAAE,QAAQ;IACX,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,aAAa;IACjB,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,cAAc;IAClB,CAAC,EAAE,SAAS;IACZ,EAAE,EAAE,aAAa;IACjB,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,eAAe;IAEnB,YAAY;IACZ,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IAEZ,SAAS;IACT,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,WAAW;IACjB,CAAC,EAAE,SAAS;IAEZ,UAAU;IACV,EAAE,EAAE,kBAAkB;IACtB,MAAM,EAAE,cAAc;CACtB,CAAC;AAEF,uDAAuD;AACvD,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AACvD,MAAM,eAAe,GAAG,mEAAmE,CAAC;AAC5F,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AACrD,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAE/C,gBAAgB;AAChB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;AACxC,IAAI,UAAU,GAAyB,IAAI,CAAC;AAE5C,gFAAgF;AAChF,SAAS,oBAAoB,CAAC,SAAiB;IAC9C,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,cAAc,GAAG,IAAI,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"css_custom.js","sourceRoot":"","sources":["../src/css_custom.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,12 +43,6 @@ type KeyValueHandler = (this: SignalStoreProxy, key: string, value: unknown) =>
|
|
|
43
43
|
|
|
44
44
|
/** Function type for computed value definitions. Receives reactive context as `$` parameter. */
|
|
45
45
|
type ComputedFn<T extends StoreState, R> = (this: ReactiveContext<T>, $: ReactiveContext<T>) => R;
|
|
46
|
-
/**
|
|
47
|
-
* How a key's notifications are scheduled: a debounce in millis, or "raf" for one
|
|
48
|
-
* flush per animation frame, which is the right clock for observers that end in a
|
|
49
|
-
* DOM write and is cheaper than a timer.
|
|
50
|
-
*/
|
|
51
|
-
type NotifyPolicy = number | "raf";
|
|
52
46
|
declare class SignalStore<T extends StoreState = StoreState> {
|
|
53
47
|
protected readonly evalkeys: string[];
|
|
54
48
|
protected readonly expressionCache: Map<string, EvalFunction>;
|
|
@@ -56,17 +50,22 @@ declare class SignalStore<T extends StoreState = StoreState> {
|
|
|
56
50
|
protected readonly keyHandlers: Map<RegExp, Set<KeyValueHandler>>;
|
|
57
51
|
readonly _store: Map<string, unknown>;
|
|
58
52
|
_lock: Promise<void>;
|
|
53
|
+
/** Keys with a scheduled observer run. */
|
|
54
|
+
private readonly _pending;
|
|
55
|
+
/** Keys whose observers are running right now. */
|
|
56
|
+
private readonly _executing;
|
|
57
|
+
/** Keys written while their own observers were running, to notify afterwards. */
|
|
58
|
+
private readonly _dirty;
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
60
|
+
* Stores created from this one, disposed along with it. A subrenderer is only reachable
|
|
61
|
+
* through the store that created it and the node it renders, so without this nothing ever
|
|
62
|
+
* disposes a nested `:for` row or a `:render` subrenderer.
|
|
62
63
|
*/
|
|
63
|
-
|
|
64
|
-
/** Per-key
|
|
65
|
-
private readonly
|
|
66
|
-
/**
|
|
67
|
-
|
|
68
|
-
/** When the current pending debounce burst started, per key. Bounds the trailing wait. */
|
|
69
|
-
private readonly _burstStart;
|
|
64
|
+
protected readonly _children: Set<SignalStore<StoreState>>;
|
|
65
|
+
/** Per-key deep-mutation subscribers, kept stable so they can be unsubscribed later. */
|
|
66
|
+
private readonly _mutationCallbacks;
|
|
67
|
+
/** Set by dispose(). Observers registered by a disposed store must no longer run. */
|
|
68
|
+
protected _disposed: boolean;
|
|
70
69
|
/**
|
|
71
70
|
* Tracks nested computed evaluation depth. When > 0, we're inside a computed
|
|
72
71
|
* function and writes to reactive properties should trigger a warning.
|
|
@@ -89,14 +88,19 @@ declare class SignalStore<T extends StoreState = StoreState> {
|
|
|
89
88
|
*/
|
|
90
89
|
private markDependentComputedsDirty;
|
|
91
90
|
/**
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* per-frame scalar; this opts a single key out without affecting the rest.
|
|
91
|
+
* Invokes `entries` and returns their pending tails. Stays synchronous from end to end:
|
|
92
|
+
* the caller relies on nothing being able to interleave until it returns.
|
|
95
93
|
*/
|
|
96
|
-
|
|
94
|
+
private runObservers;
|
|
97
95
|
notify(key: string, debounceMillis?: number): Promise<void>;
|
|
98
96
|
get<T>(key: string, observer?: Observer<T>): unknown;
|
|
99
97
|
private setupComputed;
|
|
98
|
+
/**
|
|
99
|
+
* Returns this store's deep-mutation subscriber for `key`. The same key always yields the
|
|
100
|
+
* same function, so subscriptions can be matched and removed. Created on demand, so a key
|
|
101
|
+
* that never holds an object never retains a closure.
|
|
102
|
+
*/
|
|
103
|
+
private mutationCallback;
|
|
100
104
|
/**
|
|
101
105
|
* Sets a value in the store.
|
|
102
106
|
* @param key - The key to set.
|
|
@@ -106,10 +110,18 @@ declare class SignalStore<T extends StoreState = StoreState> {
|
|
|
106
110
|
*/
|
|
107
111
|
set(key: string, value: unknown, local?: boolean): Promise<void>;
|
|
108
112
|
del(key: string): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Releases this store and every store created from it, recording them in `disposed` for the
|
|
115
|
+
* single ancestor pass that follows. Observers registered on ancestors are deliberately left
|
|
116
|
+
* to the caller: every store here shares this store's ancestors, so removing them once for
|
|
117
|
+
* the whole subtree replaces a scan of every ancestor once per descendant.
|
|
118
|
+
*/
|
|
119
|
+
private disposeSubtree;
|
|
109
120
|
/**
|
|
110
121
|
* Disposes this store by clearing all observers.
|
|
111
122
|
* Call this when the store is no longer needed to prevent memory leaks.
|
|
112
|
-
* Also removes any observers this store registered on ancestor stores
|
|
123
|
+
* Also removes any observers this store registered on ancestor stores, disposes the stores
|
|
124
|
+
* created from this one, and stops listening to deep mutations of the values it holds.
|
|
113
125
|
*/
|
|
114
126
|
dispose(): void;
|
|
115
127
|
keys(): string[];
|