@fuzdev/fuz_ui 0.191.4 → 0.192.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/ApiModulesList.svelte +3 -3
- package/dist/ColorSchemeInput.svelte +6 -6
- package/dist/ContextmenuLinkEntry.svelte +1 -1
- package/dist/ContextmenuRoot.svelte +10 -10
- package/dist/ContextmenuRootForSafariCompatibility.svelte +19 -19
- package/dist/ContextmenuSeparator.svelte +3 -3
- package/dist/ContextmenuSubmenu.svelte +3 -3
- package/dist/CopyToClipboard.svelte +3 -3
- package/dist/DeclarationLink.svelte +1 -1
- package/dist/Dialog.svelte +16 -16
- package/dist/Docs.svelte +8 -8
- package/dist/DocsFooter.svelte +2 -2
- package/dist/DocsList.svelte +7 -7
- package/dist/DocsMenu.svelte +1 -1
- package/dist/DocsPageLinks.svelte +4 -4
- package/dist/DocsPrimaryNav.svelte +2 -2
- package/dist/DocsSecondaryNav.svelte +4 -4
- package/dist/DocsTertiaryNav.svelte +6 -6
- package/dist/GithubLink.svelte +1 -1
- package/dist/Hashlink.svelte +2 -2
- package/dist/HueInput.svelte +5 -5
- package/dist/LibraryDetail.svelte +8 -8
- package/dist/LibrarySummary.svelte +4 -4
- package/dist/MdnLink.svelte +1 -1
- package/dist/ModuleLink.svelte +1 -1
- package/dist/PasteFromClipboard.svelte +1 -1
- package/dist/PendingAnimation.svelte +2 -2
- package/dist/PendingButton.svelte +2 -2
- package/dist/ProjectLinks.svelte +4 -4
- package/dist/Teleport.svelte +2 -2
- package/dist/ThemeInput.svelte +5 -5
- package/dist/TomeContent.svelte +1 -1
- package/dist/TomeHeader.svelte +3 -3
- package/dist/TomeLink.svelte +1 -1
- package/dist/TomeSection.svelte +1 -1
- package/dist/TomeSectionHeader.svelte +3 -3
- package/dist/api_search.svelte.js +2 -2
- package/dist/contextmenu_state.svelte.d.ts.map +1 -1
- package/dist/contextmenu_state.svelte.js +10 -8
- package/dist/csp.d.ts +81 -90
- package/dist/csp.d.ts.map +1 -1
- package/dist/csp.js +150 -163
- package/dist/csp_of_fuzdev.d.ts +13 -3
- package/dist/csp_of_fuzdev.d.ts.map +1 -1
- package/dist/csp_of_fuzdev.js +23 -7
- package/dist/dimensions.svelte.d.ts.map +1 -1
- package/dist/dimensions.svelte.js +2 -2
- package/dist/library.svelte.d.ts +1 -1
- package/dist/library_generate.js +1 -1
- package/dist/style_variable_helpers.svelte.d.ts.map +1 -1
- package/dist/style_variable_helpers.svelte.js +1 -1
- package/dist/theme_state.svelte.d.ts.map +1 -1
- package/dist/theme_state.svelte.js +2 -2
- package/dist/tsdoc_helpers.d.ts +9 -0
- package/dist/tsdoc_helpers.d.ts.map +1 -1
- package/dist/tsdoc_helpers.js +15 -5
- package/package.json +5 -5
- package/src/lib/api_search.svelte.ts +2 -2
- package/src/lib/contextmenu_state.svelte.ts +9 -8
- package/src/lib/csp.ts +229 -259
- package/src/lib/csp_of_fuzdev.ts +24 -8
- package/src/lib/dimensions.svelte.ts +2 -2
- package/src/lib/library_generate.ts +1 -1
- package/src/lib/style_variable_helpers.svelte.ts +1 -1
- package/src/lib/theme_state.svelte.ts +2 -2
- package/src/lib/tsdoc_helpers.ts +18 -7
package/dist/csp_of_fuzdev.js
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Per-directive sources that allow full interop between fuzdev/sister sites
|
|
3
|
+
* (`*.fuz.dev`, `*.zzz.software`) — loading assets and APIs from each other,
|
|
4
|
+
* and iframing in both directions.
|
|
5
|
+
*
|
|
6
|
+
* Pass into `create_csp_directives({extend: [csp_directives_of_fuzdev]})`.
|
|
7
|
+
* Intended for sites within the ecosystem; external apps usually want a
|
|
8
|
+
* narrower, hand-written allow-list.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately scoped — `script-src`, `style-src`, `worker-src`, etc. are not
|
|
11
|
+
* granted, even between sister sites. Add at the call site if a specific page
|
|
12
|
+
* needs them.
|
|
3
13
|
*/
|
|
4
|
-
export const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
]
|
|
14
|
+
export const csp_directives_of_fuzdev = {
|
|
15
|
+
'img-src': ['https://*.fuz.dev/', 'https://*.zzz.software/'],
|
|
16
|
+
'media-src': ['https://*.fuz.dev/', 'https://*.zzz.software/'],
|
|
17
|
+
'font-src': ['https://*.fuz.dev/', 'https://*.zzz.software/'],
|
|
18
|
+
'connect-src': ['https://*.fuz.dev/', 'https://*.zzz.software/'],
|
|
19
|
+
'frame-src': ['https://*.fuz.dev/', 'https://*.zzz.software/'],
|
|
20
|
+
'frame-ancestors': ['https://*.fuz.dev/', 'https://*.zzz.software/'],
|
|
21
|
+
// `child-src` is intentionally omitted — it defaults to `['none']`, and `extend` cannot
|
|
22
|
+
// append to a `'none'`-valued directive. Including it here would break the common
|
|
23
|
+
// `create_csp_directives({extend: [csp_directives_of_fuzdev]})` call. `frame-src` is its
|
|
24
|
+
// fallback target anyway, so direct opt-in via `frame-src` is the supported path.
|
|
25
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimensions.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/dimensions.svelte.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACtB,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"dimensions.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/dimensions.svelte.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACtB,KAAK,EAAE,MAAM,CAAiB;IAC9B,MAAM,EAAE,MAAM,CAAiB;CAC/B"}
|
package/dist/library.svelte.d.ts
CHANGED
package/dist/library_generate.js
CHANGED
|
@@ -81,7 +81,7 @@ export const library_generate = (input) => {
|
|
|
81
81
|
// Phase 1: Analyze all modules and collect re-exports
|
|
82
82
|
const source_json = {
|
|
83
83
|
name: package_json.name,
|
|
84
|
-
version: package_json.version,
|
|
84
|
+
version: package_json.version || '',
|
|
85
85
|
modules,
|
|
86
86
|
};
|
|
87
87
|
// Collect re-exports for phase 2 merging
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style_variable_helpers.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/style_variable_helpers.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAK/D,qBAAa,qBAAqB;IACjC,KAAK,EAAE,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"style_variable_helpers.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/style_variable_helpers.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAK/D,qBAAa,qBAAqB;IACjC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAiB;gBAEhC,OAAO,GAAE,aAAa,GAAG,IAAW;CAGhD;AAED,eAAO,MAAM,yBAAyB;;;CAAwD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { create_context } from './context_helpers.js';
|
|
2
2
|
// TODO maybe change this to a generic wrapper class for any value?
|
|
3
3
|
export class SelectedStyleVariable {
|
|
4
|
-
value = $state();
|
|
4
|
+
value = $state.raw();
|
|
5
5
|
constructor(initial = null) {
|
|
6
6
|
this.value = initial;
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/theme_state.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,KAAK,EAAC,MAAM,0BAA0B,CAAC;AAOrF,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAExD,qBAAa,UAAU;IACtB,KAAK,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"theme_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/theme_state.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,KAAK,EAAC,MAAM,0BAA0B,CAAC;AAOrF,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAExD,qBAAa,UAAU;IACtB,KAAK,EAAE,KAAK,CAAiB;IAC7B,YAAY,EAAE,WAAW,CAAiB;gBAE9B,OAAO,CAAC,EAAE,iBAAiB;IAUvC,MAAM,IAAI,cAAc;CAMxB;AACD,eAAO,MAAM,mBAAmB;2CAAwB,UAAU;4BAAV,UAAU;uBAAV,UAAU,WAAV,UAAU;CAAG,CAAC;AAEtE,eAAO,MAAM,iBAAiB,GAAI,cAAc,WAAW,GAAG,IAAI,KAAG,IAOpE,CAAC;AAEF,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,eAAO,MAAM,iBAAiB,GAC7B,cAAc,WAAW,GAAG,IAAI,EAChC,YAA8B,KAC5B,IAEF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC7B,WAAU,WAAoB,EAC9B,YAA8B,KAC5B,WAA4E,CAAC;AAEhF,eAAO,MAAM,UAAU,GAAI,OAAO,KAAK,GAAG,IAAI,EAAE,YAAuB,KAAG,IAEzE,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,WAAU,KAA0B,EAAE,YAAuB,KAAG,KAC3C,CAAC"}
|
|
@@ -4,8 +4,8 @@ import { BROWSER } from 'esm-env';
|
|
|
4
4
|
import { create_context } from './context_helpers.js';
|
|
5
5
|
import { load_from_storage, save_to_storage } from './storage.js';
|
|
6
6
|
export class ThemeState {
|
|
7
|
-
theme = $state();
|
|
8
|
-
color_scheme = $state();
|
|
7
|
+
theme = $state.raw();
|
|
8
|
+
color_scheme = $state.raw();
|
|
9
9
|
constructor(options) {
|
|
10
10
|
const theme = options?.theme ?? default_themes[0];
|
|
11
11
|
const color_scheme = options?.color_scheme ?? 'auto';
|
package/dist/tsdoc_helpers.d.ts
CHANGED
|
@@ -98,6 +98,15 @@ export declare const tsdoc_parse: (node: ts.Node, source_file: ts.SourceFile) =>
|
|
|
98
98
|
* @mutates declaration - adds doc_comment, deprecated_message, examples, see_also, throws, since fields
|
|
99
99
|
*/
|
|
100
100
|
export declare const tsdoc_apply_to_declaration: (declaration: DeclarationJson, tsdoc: TsdocParsedComment | undefined) => void;
|
|
101
|
+
/**
|
|
102
|
+
* Concatenates a JSDoc comment (string or node array) into plain text, preserving `{@link ...}`.
|
|
103
|
+
*
|
|
104
|
+
* `JSDocLink` / `JSDocLinkCode` / `JSDocLinkPlain` nodes have empty `.text` — the identifier
|
|
105
|
+
* lives on `.name`, not `.text`. Using `.text` alone silently drops link content; we fall back
|
|
106
|
+
* to the source-text representation for link nodes so `{@link Foo}` survives intact for downstream
|
|
107
|
+
* renderers (see `tsdoc_mdz.ts`).
|
|
108
|
+
*/
|
|
109
|
+
export declare const tsdoc_comment_to_text: (comment: string | ts.NodeArray<ts.JSDocComment>, source_file: ts.SourceFile) => string;
|
|
101
110
|
/**
|
|
102
111
|
* Clean raw JSDoc comment text by removing comment markers and leading asterisks.
|
|
103
112
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsdoc_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/tsdoc_helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,MAAM,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACrD,oCAAoC;IACpC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,GACvB,MAAM,EAAE,CAAC,IAAI,EACb,aAAa,EAAE,CAAC,UAAU,KACxB,kBAAkB,GAAG,
|
|
1
|
+
{"version":3,"file":"tsdoc_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/tsdoc_helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,MAAM,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACrD,oCAAoC;IACpC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,GACvB,MAAM,EAAE,CAAC,IAAI,EACb,aAAa,EAAE,CAAC,UAAU,KACxB,kBAAkB,GAAG,SAoFvB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,GACtC,aAAa,eAAe,EAC5B,OAAO,kBAAkB,GAAG,SAAS,KACnC,IAmBF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GACjC,SAAS,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,CAAC,EAC/C,aAAa,EAAE,CAAC,UAAU,KACxB,MAGF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,cAAc,MAAM,KAAG,MAAM,GAAG,SAUnE,CAAC"}
|
package/dist/tsdoc_helpers.js
CHANGED
|
@@ -74,16 +74,13 @@ export const tsdoc_parse = (node, source_file) => {
|
|
|
74
74
|
// Extract main comment text
|
|
75
75
|
for (const comment of tsdoc_comments) {
|
|
76
76
|
if (ts.isJSDoc(comment) && comment.comment) {
|
|
77
|
-
|
|
78
|
-
? comment.comment
|
|
79
|
-
: comment.comment.map((c) => c.text).join('');
|
|
80
|
-
full_text += text + '\n';
|
|
77
|
+
full_text += tsdoc_comment_to_text(comment.comment, source_file) + '\n';
|
|
81
78
|
}
|
|
82
79
|
}
|
|
83
80
|
// Extract tags
|
|
84
81
|
const tags = ts.getJSDocTags(node);
|
|
85
82
|
for (const tag of tags) {
|
|
86
|
-
const tag_text =
|
|
83
|
+
const tag_text = tag.comment ? tsdoc_comment_to_text(tag.comment, source_file) : undefined;
|
|
87
84
|
const tag_name = tag.tagName.text;
|
|
88
85
|
if (tag_name === 'param' && ts.isJSDocParameterTag(tag)) {
|
|
89
86
|
// Extract parameter name and description
|
|
@@ -177,6 +174,19 @@ export const tsdoc_apply_to_declaration = (declaration, tsdoc) => {
|
|
|
177
174
|
declaration.since = tsdoc.since;
|
|
178
175
|
}
|
|
179
176
|
};
|
|
177
|
+
/**
|
|
178
|
+
* Concatenates a JSDoc comment (string or node array) into plain text, preserving `{@link ...}`.
|
|
179
|
+
*
|
|
180
|
+
* `JSDocLink` / `JSDocLinkCode` / `JSDocLinkPlain` nodes have empty `.text` — the identifier
|
|
181
|
+
* lives on `.name`, not `.text`. Using `.text` alone silently drops link content; we fall back
|
|
182
|
+
* to the source-text representation for link nodes so `{@link Foo}` survives intact for downstream
|
|
183
|
+
* renderers (see `tsdoc_mdz.ts`).
|
|
184
|
+
*/
|
|
185
|
+
export const tsdoc_comment_to_text = (comment, source_file) => {
|
|
186
|
+
if (typeof comment === 'string')
|
|
187
|
+
return comment;
|
|
188
|
+
return comment.map((c) => (ts.isJSDocLinkLike(c) ? c.getText(source_file) : c.text)).join('');
|
|
189
|
+
};
|
|
180
190
|
/**
|
|
181
191
|
* Clean raw JSDoc comment text by removing comment markers and leading asterisks.
|
|
182
192
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fuzdev/fuz_ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.192.0",
|
|
4
4
|
"description": "Svelte UI library",
|
|
5
5
|
"tagline": "friendly user zystem",
|
|
6
6
|
"glyph": "🧶",
|
|
@@ -81,11 +81,11 @@
|
|
|
81
81
|
"devDependencies": {
|
|
82
82
|
"@changesets/changelog-git": "^0.2.1",
|
|
83
83
|
"@fuzdev/fuz_code": "^0.45.1",
|
|
84
|
-
"@fuzdev/fuz_css": "^0.
|
|
85
|
-
"@fuzdev/fuz_util": "^0.
|
|
86
|
-
"@fuzdev/gro": "^0.
|
|
84
|
+
"@fuzdev/fuz_css": "^0.59.0",
|
|
85
|
+
"@fuzdev/fuz_util": "^0.57.0",
|
|
86
|
+
"@fuzdev/gro": "^0.198.0",
|
|
87
87
|
"@jridgewell/trace-mapping": "^0.3.31",
|
|
88
|
-
"@ryanatkn/eslint-config": "^0.
|
|
88
|
+
"@ryanatkn/eslint-config": "^0.11.0",
|
|
89
89
|
"@sveltejs/acorn-typescript": "^1.0.9",
|
|
90
90
|
"@sveltejs/adapter-static": "^3.0.10",
|
|
91
91
|
"@sveltejs/kit": "^2.55.0",
|
|
@@ -24,7 +24,7 @@ export interface ApiSearchState {
|
|
|
24
24
|
* Creates unified search state for the API index page (modules and declarations).
|
|
25
25
|
*/
|
|
26
26
|
export const create_api_search = (library: Library): ApiSearchState => {
|
|
27
|
-
let query = $state('');
|
|
27
|
+
let query = $state.raw('');
|
|
28
28
|
|
|
29
29
|
// Module filtering
|
|
30
30
|
const all_modules = $derived(library.modules_sorted);
|
|
@@ -77,7 +77,7 @@ export const create_api_search = (library: Library): ApiSearchState => {
|
|
|
77
77
|
export const create_module_declaration_search = (
|
|
78
78
|
declarations: Array<Declaration>,
|
|
79
79
|
): DeclarationSearchState => {
|
|
80
|
-
let query = $state('');
|
|
80
|
+
let query = $state.raw('');
|
|
81
81
|
|
|
82
82
|
const all = $derived(declarations);
|
|
83
83
|
|
|
@@ -31,9 +31,9 @@ export class EntryState {
|
|
|
31
31
|
readonly run: () => ContextmenuRun;
|
|
32
32
|
readonly disabled: () => boolean;
|
|
33
33
|
|
|
34
|
-
selected: boolean = $state(false);
|
|
35
|
-
pending: boolean = $state(false);
|
|
36
|
-
error_message: string | null = $state(null);
|
|
34
|
+
selected: boolean = $state.raw(false);
|
|
35
|
+
pending: boolean = $state.raw(false);
|
|
36
|
+
error_message: string | null = $state.raw(null);
|
|
37
37
|
promise: Promise<ContextmenuActivateResult> | null = $state.raw(null);
|
|
38
38
|
|
|
39
39
|
constructor(
|
|
@@ -52,7 +52,7 @@ export class SubmenuState {
|
|
|
52
52
|
readonly menu: SubmenuState | RootMenuState;
|
|
53
53
|
readonly depth: number;
|
|
54
54
|
|
|
55
|
-
selected: boolean = $state(false);
|
|
55
|
+
selected: boolean = $state.raw(false);
|
|
56
56
|
items: ReadonlyArray<ItemState> = $state.raw([]);
|
|
57
57
|
|
|
58
58
|
constructor(menu: SubmenuState | RootMenuState, depth: number) {
|
|
@@ -90,11 +90,11 @@ export class ContextmenuState {
|
|
|
90
90
|
readonly has_custom_layout: boolean;
|
|
91
91
|
|
|
92
92
|
// State for external consumers.
|
|
93
|
-
opened: boolean = $state(false);
|
|
94
|
-
x: number = $state(0);
|
|
95
|
-
y: number = $state(0);
|
|
93
|
+
opened: boolean = $state.raw(false);
|
|
94
|
+
x: number = $state.raw(0);
|
|
95
|
+
y: number = $state.raw(0);
|
|
96
96
|
params: ReadonlyArray<ContextmenuParams> = $state.raw([]);
|
|
97
|
-
error: string | undefined = $state();
|
|
97
|
+
error: string | undefined = $state.raw();
|
|
98
98
|
|
|
99
99
|
// These arrays use immutable updates (reassignment, not mutation).
|
|
100
100
|
// If you need reactivity, use `$contextmenu` in a reactive statement to react to all changes, and
|
|
@@ -301,6 +301,7 @@ export class ContextmenuState {
|
|
|
301
301
|
|
|
302
302
|
select_last(): void {
|
|
303
303
|
const {items} = this.selections.at(-1)?.menu ?? this.root_menu;
|
|
304
|
+
if (!items.length) return;
|
|
304
305
|
this.select(items.at(-1)!);
|
|
305
306
|
}
|
|
306
307
|
|