quiver-cli 1.2.0 → 1.3.1
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/cli.js +237 -10
- package/package.json +1 -1
- package/template/.agents/skills/agent-browser/SKILL.md +1 -0
- package/template/.agents/skills/apps/skybridge/SKILL.md +2 -0
- package/template/.agents/skills/data/prisma-cli/SKILL.md +25 -7
- package/template/.agents/skills/data/prisma-cli/references/agent-safety.md +27 -0
- package/template/.agents/skills/data/prisma-cli/references/complete.md +22 -0
- package/template/.agents/skills/data/prisma-cli/references/db-push.md +2 -0
- package/template/.agents/skills/data/prisma-cli/references/init.md +3 -0
- package/template/.agents/skills/data/prisma-cli/references/mcp.md +2 -1
- package/template/.agents/skills/data/prisma-cli/references/migrate-dev.md +1 -1
- package/template/.agents/skills/data/prisma-cli/references/migrate-reset.md +2 -0
- package/template/.agents/skills/data/prisma-client-api/SKILL.md +1 -1
- package/template/.agents/skills/data/prisma-client-api/references/constructor.md +13 -0
- package/template/.agents/skills/data/prisma-client-api/references/raw-queries.md +4 -0
- package/template/.agents/skills/design/impeccable/SKILL.md +5 -5
- package/template/.agents/skills/design/impeccable/reference/android.md +6 -0
- package/template/.agents/skills/design/impeccable/reference/animate.md +3 -0
- package/template/.agents/skills/design/impeccable/reference/bolder.md +3 -1
- package/template/.agents/skills/design/impeccable/reference/craft-floor.md +2 -0
- package/template/.agents/skills/design/impeccable/reference/critique.md +23 -5
- package/template/.agents/skills/design/impeccable/reference/degraded/asset-producer.md +15 -68
- package/template/.agents/skills/design/impeccable/reference/degraded/finish-reviewer.md +13 -12
- package/template/.agents/skills/design/impeccable/reference/distill.md +1 -1
- package/template/.agents/skills/design/impeccable/reference/doctor.md +1 -0
- package/template/.agents/skills/design/impeccable/reference/document.md +1 -1
- package/template/.agents/skills/design/impeccable/reference/extract.md +1 -1
- package/template/.agents/skills/design/impeccable/reference/hooks.md +17 -11
- package/template/.agents/skills/design/impeccable/reference/init.md +9 -3
- package/template/.agents/skills/design/impeccable/reference/ios.md +6 -0
- package/template/.agents/skills/design/impeccable/reference/new-work.md +69 -29
- package/template/.agents/skills/design/impeccable/reference/overdrive.md +1 -1
- package/template/.agents/skills/design/impeccable/reference/polish.md +13 -5
- package/template/.agents/skills/design/impeccable/reference/quieter.md +1 -1
- package/template/.agents/skills/design/impeccable/reference/routing.md +1 -1
- package/template/.agents/skills/design/impeccable/reference/visualize.md +21 -22
- package/template/.agents/skills/design/impeccable/scripts/build-phase.mjs +1022 -0
- package/template/.agents/skills/design/impeccable/scripts/comp-diff.mjs +391 -0
- package/template/.agents/skills/design/impeccable/scripts/comp-spec.mjs +513 -0
- package/template/.agents/skills/design/impeccable/scripts/concept-seed.mjs +297 -41
- package/template/.agents/skills/design/impeccable/scripts/context-signals.mjs +10 -19
- package/template/.agents/skills/design/impeccable/scripts/context.mjs +124 -9
- package/template/.agents/skills/design/impeccable/scripts/critique-storage.mjs +279 -19
- package/template/.agents/skills/design/impeccable/scripts/data/font-index-failures.json +121 -0
- package/template/.agents/skills/design/impeccable/scripts/data/font-index.json +1 -0
- package/template/.agents/skills/design/impeccable/scripts/detect.mjs +9 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/browser/injected/index.mjs +192 -11
- package/template/.agents/skills/design/impeccable/scripts/detector/cli/main.mjs +10 -16
- package/template/.agents/skills/design/impeccable/scripts/detector/design-system.mjs +339 -11
- package/template/.agents/skills/design/impeccable/scripts/detector/detect-antipatterns-browser.js +1482 -722
- package/template/.agents/skills/design/impeccable/scripts/detector/detect-antipatterns.mjs +1 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/browser/detect-url.mjs +64 -2
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/regex/detect-text.mjs +580 -29
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +62 -7
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/detect-html.mjs +31 -7
- package/template/.agents/skills/design/impeccable/scripts/detector/node/file-system.mjs +23 -22
- package/template/.agents/skills/design/impeccable/scripts/detector/registry/antipatterns.mjs +18 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/rules/checks.mjs +471 -370
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/color.mjs +474 -2
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/constants.mjs +17 -2
- package/template/.agents/skills/design/impeccable/scripts/doctor.mjs +14 -21
- package/template/.agents/skills/design/impeccable/scripts/embed-prompt.mjs +81 -48
- package/template/.agents/skills/design/impeccable/scripts/font-match.mjs +457 -0
- package/template/.agents/skills/design/impeccable/scripts/generate-image.mjs +219 -12
- package/template/.agents/skills/design/impeccable/scripts/hook-admin.mjs +93 -15
- package/template/.agents/skills/design/impeccable/scripts/hook-before-edit.mjs +41 -19
- package/template/.agents/skills/design/impeccable/scripts/hook-lib.mjs +507 -117
- package/template/.agents/skills/design/impeccable/scripts/hook.mjs +10 -9
- package/template/.agents/skills/design/impeccable/scripts/lib/concept-catalog.mjs +40 -1
- package/template/.agents/skills/design/impeccable/scripts/lib/design-parser.mjs +120 -82
- package/template/.agents/skills/design/impeccable/scripts/lib/font-fingerprint.mjs +564 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/font-index.mjs +130 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/hero-checks.mjs +246 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/image-metrics.mjs +306 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/impeccable-config.mjs +41 -59
- package/template/.agents/skills/design/impeccable/scripts/lib/is-generated.mjs +5 -2
- package/template/.agents/skills/design/impeccable/scripts/lib/live-path-globs.mjs +37 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/open-system-browser.mjs +26 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/png.mjs +281 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/raster.mjs +194 -0
- package/template/.agents/skills/design/impeccable/scripts/lib/roll-selection.mjs +26 -19
- package/template/.agents/skills/design/impeccable/scripts/lib/staleness-deep.mjs +31 -3
- package/template/.agents/skills/design/impeccable/scripts/lib/staleness.mjs +93 -17
- package/template/.agents/skills/design/impeccable/scripts/lib/surface-briefs.mjs +9 -11
- package/template/.agents/skills/design/impeccable/scripts/live/browser-script-parts.mjs +31 -2
- package/template/.agents/skills/design/impeccable/scripts/live/project-ignores.mjs +139 -0
- package/template/.agents/skills/design/impeccable/scripts/live/svelte-ast.mjs +10 -2
- package/template/.agents/skills/design/impeccable/scripts/live/svelte-component.mjs +26 -2
- package/template/.agents/skills/design/impeccable/scripts/live/sveltekit-adapter.mjs +15 -27
- package/template/.agents/skills/design/impeccable/scripts/live/tanstack-adapter.mjs +4 -25
- package/template/.agents/skills/design/impeccable/scripts/live/ui-surfaces.mjs +75 -0
- package/template/.agents/skills/design/impeccable/scripts/live-accept.mjs +21 -37
- package/template/.agents/skills/design/impeccable/scripts/live-browser-ignores.js +242 -0
- package/template/.agents/skills/design/impeccable/scripts/live-browser.js +62 -23
- package/template/.agents/skills/design/impeccable/scripts/live-commit-manual-edits.mjs +68 -112
- package/template/.agents/skills/design/impeccable/scripts/live-copy-edit-agent.mjs +132 -15
- package/template/.agents/skills/design/impeccable/scripts/live-inject.mjs +2 -42
- package/template/.agents/skills/design/impeccable/scripts/live-poll.mjs +5 -4
- package/template/.agents/skills/design/impeccable/scripts/live-server.mjs +56 -19
- package/template/.agents/skills/design/impeccable/scripts/live.mjs +12 -37
- package/template/.agents/skills/design/impeccable/scripts/pin.mjs +8 -5
- package/template/.agents/skills/design/impeccable/scripts/serve-question.mjs +1006 -155
- package/template/.agents/skills/design/shadcn/rules/chat.md +26 -0
- package/template/.agents/skills/hono/SKILL.md +17 -3
- package/template/.agents/skills/integrations/langfuse/SKILL.md +8 -4
- package/template/.agents/skills/integrations/langfuse/references/cli.md +1 -1
- package/template/.agents/skills/integrations/langfuse/references/create-dataset.md +35 -0
- package/template/.agents/skills/integrations/langfuse/references/error-analysis.md +9 -10
- package/template/.agents/skills/integrations/langfuse/references/judge-calibration.md +8 -6
- package/template/.agents/skills/integrations/langfuse/references/sdk-upgrade.md +34 -0
- package/template/.agents/skills/integrations/langfuse/references/setting-up-evals.md +65 -0
- package/template/.agents/skills/integrations/langfuse/references/skill-feedback.md +20 -40
- package/template/.agents/skills/integrations/langfuse/references/user-feedback.md +4 -30
- package/template/.agents/skills/integrations/langfuse/references/v4-project-migration.md +3 -1
- package/template/.agents/skills/supabase/CHANGELOG.md +7 -0
- package/template/.agents/skills/supabase/SKILL.md +5 -1
- package/template/.agents/skills/writing/humanizer/LICENSE +21 -0
- package/template/.agents/skills/writing/humanizer/README.md +209 -0
- package/template/.agents/skills/writing/humanizer/SKILL.md +173 -338
- package/template/.agents/upstreams.json +21 -22
- package/template/.agents/skills/design/impeccable/scripts/live/ui-core.mjs +0 -180
|
@@ -3,22 +3,22 @@
|
|
|
3
3
|
"repo": "alpic-ai/skybridge",
|
|
4
4
|
"path": "skills/skybridge",
|
|
5
5
|
"ref": "main",
|
|
6
|
-
"commit": "
|
|
7
|
-
"fetchedAt": "2026-
|
|
6
|
+
"commit": "1e7aae5b53fe9785da8aac3a6367220672681f5c",
|
|
7
|
+
"fetchedAt": "2026-09-01T18:38:40.321Z"
|
|
8
8
|
},
|
|
9
9
|
"prisma-cli": {
|
|
10
10
|
"repo": "prisma/skills",
|
|
11
11
|
"path": "prisma-cli",
|
|
12
12
|
"ref": "main",
|
|
13
|
-
"commit": "
|
|
14
|
-
"fetchedAt": "2026-
|
|
13
|
+
"commit": "808913c1dac11dc425631c2454f7fcb2d5ade5ca",
|
|
14
|
+
"fetchedAt": "2026-09-01T18:38:32.155Z"
|
|
15
15
|
},
|
|
16
16
|
"prisma-client-api": {
|
|
17
17
|
"repo": "prisma/skills",
|
|
18
18
|
"path": "prisma-client-api",
|
|
19
19
|
"ref": "main",
|
|
20
|
-
"commit": "
|
|
21
|
-
"fetchedAt": "2026-
|
|
20
|
+
"commit": "808913c1dac11dc425631c2454f7fcb2d5ade5ca",
|
|
21
|
+
"fetchedAt": "2026-09-01T18:38:34.600Z"
|
|
22
22
|
},
|
|
23
23
|
"vercel-react-best-practices": {
|
|
24
24
|
"repo": "vercel-labs/agent-skills",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"repo": "vercel-labs/agent-browser",
|
|
47
47
|
"path": "skills/agent-browser",
|
|
48
48
|
"ref": "main",
|
|
49
|
-
"commit": "
|
|
50
|
-
"fetchedAt": "2026-
|
|
49
|
+
"commit": "021d9255e543d2f1ab66b87f338d85c3d7a910be",
|
|
50
|
+
"fetchedAt": "2026-09-01T18:38:21.142Z"
|
|
51
51
|
},
|
|
52
52
|
"skill-creator": {
|
|
53
53
|
"repo": "anthropics/skills",
|
|
@@ -60,22 +60,22 @@
|
|
|
60
60
|
"repo": "pbakaus/impeccable",
|
|
61
61
|
"path": ".pi/skills/impeccable",
|
|
62
62
|
"ref": "main",
|
|
63
|
-
"commit": "
|
|
64
|
-
"fetchedAt": "2026-
|
|
63
|
+
"commit": "94b7f34f6e27b95bc32d8284a671601ed6ac1b2a",
|
|
64
|
+
"fetchedAt": "2026-09-01T18:38:27.056Z"
|
|
65
65
|
},
|
|
66
66
|
"langfuse": {
|
|
67
67
|
"repo": "langfuse/skills",
|
|
68
68
|
"path": "skills/langfuse",
|
|
69
69
|
"ref": "main",
|
|
70
|
-
"commit": "
|
|
71
|
-
"fetchedAt": "2026-
|
|
70
|
+
"commit": "4a77f3a0c1a15c6e1e62d0e060e0eabe74ad5bda",
|
|
71
|
+
"fetchedAt": "2026-09-01T18:38:29.859Z"
|
|
72
72
|
},
|
|
73
73
|
"shadcn": {
|
|
74
74
|
"repo": "shadcn-ui/ui",
|
|
75
75
|
"path": "skills/shadcn",
|
|
76
76
|
"ref": "main",
|
|
77
|
-
"commit": "
|
|
78
|
-
"fetchedAt": "2026-
|
|
77
|
+
"commit": "503a3a57aec9a3817e37f90aa0817b1fabd284d0",
|
|
78
|
+
"fetchedAt": "2026-09-01T18:38:37.266Z"
|
|
79
79
|
},
|
|
80
80
|
"improve": {
|
|
81
81
|
"repo": "shadcn/improve",
|
|
@@ -88,23 +88,22 @@
|
|
|
88
88
|
"repo": "blader/humanizer",
|
|
89
89
|
"path": "",
|
|
90
90
|
"ref": "main",
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"fetchedAt": "2026-06-23T16:25:46.439Z"
|
|
91
|
+
"commit": "e2e92e7b4b8229253ed5c8e81dc65463fdeddda5",
|
|
92
|
+
"fetchedAt": "2026-09-01T18:43:37.912Z"
|
|
94
93
|
},
|
|
95
94
|
"hono": {
|
|
96
|
-
"repo": "
|
|
95
|
+
"repo": "honojs/skills",
|
|
97
96
|
"path": "skills/hono",
|
|
98
97
|
"ref": "main",
|
|
99
|
-
"commit": "
|
|
100
|
-
"fetchedAt": "2026-
|
|
98
|
+
"commit": "f09ea3c64255a7a21cbde226ee6d8312fc3c5f6d",
|
|
99
|
+
"fetchedAt": "2026-09-01T18:43:35.802Z"
|
|
101
100
|
},
|
|
102
101
|
"supabase": {
|
|
103
102
|
"repo": "supabase/agent-skills",
|
|
104
103
|
"path": "skills/supabase",
|
|
105
104
|
"ref": "main",
|
|
106
|
-
"commit": "
|
|
107
|
-
"fetchedAt": "2026-
|
|
105
|
+
"commit": "8331f910845103c08d51f6ca1d86ebb7d1f745e3",
|
|
106
|
+
"fetchedAt": "2026-09-01T18:38:42.644Z"
|
|
108
107
|
},
|
|
109
108
|
"supabase-postgres-best-practices": {
|
|
110
109
|
"repo": "supabase/agent-skills",
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Framework-neutral Impeccable live chrome contract.
|
|
3
|
-
*
|
|
4
|
-
* The production browser bundle is intentionally plain DOM so Svelte, React,
|
|
5
|
-
* Vue, and static adapters can all mount the same chrome. This module is the
|
|
6
|
-
* testable contract/inventory for that bundle; live-browser.js mirrors these
|
|
7
|
-
* values at runtime because it is served as a standalone script.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export const LIVE_CHROME_MOUNT_CONTRACT = Object.freeze([
|
|
11
|
-
'root',
|
|
12
|
-
'transport',
|
|
13
|
-
'state',
|
|
14
|
-
'actions',
|
|
15
|
-
]);
|
|
16
|
-
|
|
17
|
-
export const LIVE_UI_SURFACES = Object.freeze([
|
|
18
|
-
{
|
|
19
|
-
key: 'global-bottom-bar',
|
|
20
|
-
ids: [
|
|
21
|
-
'impeccable-live-global-bar',
|
|
22
|
-
'impeccable-live-global-bar-brand',
|
|
23
|
-
'impeccable-live-pick-toggle',
|
|
24
|
-
'impeccable-live-insert-toggle',
|
|
25
|
-
'impeccable-live-detect-toggle',
|
|
26
|
-
'impeccable-live-detect-badge',
|
|
27
|
-
'impeccable-live-design-toggle',
|
|
28
|
-
'impeccable-live-page-chat',
|
|
29
|
-
'impeccable-live-page-chat-input',
|
|
30
|
-
'impeccable-live-page-chat-voice',
|
|
31
|
-
],
|
|
32
|
-
states: ['rest', 'hover', 'focus-visible', 'pressed', 'active', 'tooltip'],
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
key: 'pending-copy-edit-dock',
|
|
36
|
-
ids: ['impeccable-live-pending-dock'],
|
|
37
|
-
states: ['closed', 'open', 'hover', 'pressed', 'loading', 'rollback', 'keep-fixing'],
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
key: 'element-selection-chrome',
|
|
41
|
-
ids: [
|
|
42
|
-
'impeccable-live-highlight',
|
|
43
|
-
'impeccable-live-tooltip',
|
|
44
|
-
'impeccable-live-bar',
|
|
45
|
-
'impeccable-live-selection-pill',
|
|
46
|
-
'impeccable-live-input',
|
|
47
|
-
'impeccable-live-configure-voice',
|
|
48
|
-
'impeccable-live-configure-bar-tooltip',
|
|
49
|
-
],
|
|
50
|
-
states: ['rest', 'hover', 'focus-visible', 'pressed', 'disabled'],
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
key: 'action-picker',
|
|
54
|
-
ids: ['impeccable-live-picker'],
|
|
55
|
-
states: ['closed', 'open', 'option-hover', 'option-focus'],
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
key: 'edit-chrome',
|
|
59
|
-
ids: ['impeccable-live-edit-badge'],
|
|
60
|
-
states: ['enabled', 'disabled', 'editing', 'cancel', 'save', 'edited-content'],
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
key: 'generating-row',
|
|
64
|
-
ids: ['impeccable-live-bar', 'impeccable-live-shader'],
|
|
65
|
-
states: ['action-label', 'animated-dots', 'generating', 'done'],
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
key: 'variant-cycling-row',
|
|
69
|
-
ids: ['impeccable-live-bar', 'impeccable-live-params-panel'],
|
|
70
|
-
states: ['variant-1', 'variant-2', 'variant-3', 'left-disabled', 'right-disabled', 'dot-click', 'accept', 'discard'],
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
key: 'variant-params-panel',
|
|
74
|
-
ids: ['impeccable-live-params-panel'],
|
|
75
|
-
states: ['closed', 'open-above', 'open-below', 'range', 'steps', 'toggle'],
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
key: 'saving-confirmed-rows',
|
|
79
|
-
ids: ['impeccable-live-bar'],
|
|
80
|
-
states: ['saving', 'applying-variant', 'confirmed'],
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
key: 'insert-mode-chrome',
|
|
84
|
-
ids: [
|
|
85
|
-
'impeccable-live-insert-line',
|
|
86
|
-
'impeccable-live-insert-placeholder',
|
|
87
|
-
'impeccable-live-placeholder-resize',
|
|
88
|
-
'impeccable-live-insert-input',
|
|
89
|
-
'impeccable-live-insert-voice',
|
|
90
|
-
'impeccable-live-insert-create',
|
|
91
|
-
'impeccable-live-insert-create-tooltip',
|
|
92
|
-
],
|
|
93
|
-
states: ['toggle-active', 'line', 'placeholder', 'resize', 'enabled', 'disabled', 'tooltip'],
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
key: 'annotation-chrome',
|
|
97
|
-
ids: [
|
|
98
|
-
'impeccable-live-annot',
|
|
99
|
-
'impeccable-live-annot-svg',
|
|
100
|
-
'impeccable-live-annot-pins',
|
|
101
|
-
'impeccable-live-annot-clear',
|
|
102
|
-
],
|
|
103
|
-
states: ['overlay', 'drawing', 'pin', 'pin-edit', 'clear'],
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
key: 'design-system-panel',
|
|
107
|
-
ids: ['impeccable-live-design-host'],
|
|
108
|
-
states: ['closed', 'open', 'tabs', 'token-tiles', 'copy'],
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
key: 'toasts-and-errors',
|
|
112
|
-
ids: ['impeccable-live-toast'],
|
|
113
|
-
states: ['normal', 'error', 'no-variants-mounted'],
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
key: 'css-isolation-boundary',
|
|
117
|
-
ids: ['impeccable-live-root'],
|
|
118
|
-
states: ['shadow-root', 'style-tags', 'hostile-css'],
|
|
119
|
-
},
|
|
120
|
-
]);
|
|
121
|
-
|
|
122
|
-
export const LIVE_UI_COMPONENT_IDS = Object.freeze([
|
|
123
|
-
...new Set(LIVE_UI_SURFACES.flatMap((surface) => surface.ids)),
|
|
124
|
-
]);
|
|
125
|
-
|
|
126
|
-
export function resolveLiveUiRoot(env = globalThis) {
|
|
127
|
-
const doc = env?.document;
|
|
128
|
-
const explicit = env?.__IMPECCABLE_LIVE_UI_ROOT__
|
|
129
|
-
|| env?.window?.__IMPECCABLE_LIVE_UI_ROOT__;
|
|
130
|
-
if (explicit && typeof explicit.appendChild === 'function') return explicit;
|
|
131
|
-
return doc?.body || null;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
export function getLiveUiElementById(id, env = globalThis) {
|
|
135
|
-
const doc = env?.document;
|
|
136
|
-
const root = resolveLiveUiRoot(env);
|
|
137
|
-
if (!id) return null;
|
|
138
|
-
if (root?.getElementById) {
|
|
139
|
-
const found = root.getElementById(id);
|
|
140
|
-
if (found) return found;
|
|
141
|
-
}
|
|
142
|
-
if (root?.querySelector) {
|
|
143
|
-
const found = root.querySelector('#' + escapeCssIdent(id));
|
|
144
|
-
if (found) return found;
|
|
145
|
-
}
|
|
146
|
-
return doc?.getElementById?.(id) || null;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export function appendToLiveUiRoot(el, env = globalThis) {
|
|
150
|
-
const root = resolveLiveUiRoot(env);
|
|
151
|
-
if (!root) throw new Error('Impeccable live UI root is not available');
|
|
152
|
-
root.appendChild(el);
|
|
153
|
-
return el;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
export function appendStyleToLiveUiRoot(styleEl, env = globalThis) {
|
|
157
|
-
const doc = env?.document;
|
|
158
|
-
const root = resolveLiveUiRoot(env);
|
|
159
|
-
if (root && root !== doc?.body) {
|
|
160
|
-
root.appendChild(styleEl);
|
|
161
|
-
} else {
|
|
162
|
-
(doc?.head || doc?.body || root).appendChild(styleEl);
|
|
163
|
-
}
|
|
164
|
-
return styleEl;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
export function activeElementDeep(doc = globalThis.document) {
|
|
168
|
-
let active = doc?.activeElement || null;
|
|
169
|
-
while (active?.shadowRoot?.activeElement) {
|
|
170
|
-
active = active.shadowRoot.activeElement;
|
|
171
|
-
}
|
|
172
|
-
return active;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
function escapeCssIdent(value) {
|
|
176
|
-
if (typeof CSS !== 'undefined' && typeof CSS.escape === 'function') {
|
|
177
|
-
return CSS.escape(String(value));
|
|
178
|
-
}
|
|
179
|
-
return String(value).replace(/([ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, '\\$1');
|
|
180
|
-
}
|