ember-primitives 0.48.2 → 0.50.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/bin/index.mjs +271 -0
- package/declarations/components/portal.d.ts.map +1 -1
- package/declarations/components/rating/public-types.d.ts +0 -4
- package/declarations/components/rating/public-types.d.ts.map +1 -1
- package/declarations/components/rating/rating.d.ts +9 -1
- package/declarations/components/rating/rating.d.ts.map +1 -1
- package/declarations/components/rating/stars.d.ts.map +1 -1
- package/declarations/components/rating/state.d.ts +4 -0
- package/declarations/components/rating/state.d.ts.map +1 -1
- package/declarations/components/rating/utils.d.ts +0 -1
- package/declarations/components/rating/utils.d.ts.map +1 -1
- package/declarations/tabster.d.ts.map +1 -1
- package/declarations/utils.d.ts.map +1 -1
- package/declarations/viewport/in-viewport.d.ts +70 -0
- package/declarations/viewport/in-viewport.d.ts.map +1 -0
- package/declarations/viewport/viewport.d.ts +59 -0
- package/declarations/viewport/viewport.d.ts.map +1 -0
- package/declarations/viewport.d.ts +3 -0
- package/declarations/viewport.d.ts.map +1 -0
- package/dist/-private.js +0 -1
- package/dist/-private.js.map +1 -1
- package/dist/color-scheme.js +0 -1
- package/dist/color-scheme.js.map +1 -1
- package/dist/{component-Bs3N-G9z.js → component-BXy_iafw.js} +2 -3
- package/dist/component-BXy_iafw.js.map +1 -0
- package/dist/components/accordion.js +5 -6
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/avatar.js +3 -4
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/dialog.js +2 -3
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/external-link.js +1 -2
- package/dist/components/external-link.js.map +1 -1
- package/dist/components/form.js +1 -2
- package/dist/components/form.js.map +1 -1
- package/dist/components/heading.js +1 -2
- package/dist/components/heading.js.map +1 -1
- package/dist/components/keys.js +2 -3
- package/dist/components/keys.js.map +1 -1
- package/dist/components/layout/hero.js +1 -1
- package/dist/components/layout/sticky-footer.js +1 -1
- package/dist/components/link.js +1 -2
- package/dist/components/link.js.map +1 -1
- package/dist/components/menu.js +6 -8
- package/dist/components/menu.js.map +1 -1
- package/dist/components/one-time-password.js +1 -2
- package/dist/components/popover.js +3 -4
- package/dist/components/popover.js.map +1 -1
- package/dist/components/portal-targets.js +2 -3
- package/dist/components/portal-targets.js.map +1 -1
- package/dist/components/portal.js +3 -7
- package/dist/components/portal.js.map +1 -1
- package/dist/components/progress.js +2 -3
- package/dist/components/progress.js.map +1 -1
- package/dist/components/rating.js +1 -2
- package/dist/components/scroller.js +1 -2
- package/dist/components/scroller.js.map +1 -1
- package/dist/components/shadowed.js +2 -3
- package/dist/components/shadowed.js.map +1 -1
- package/dist/components/switch.js +5 -6
- package/dist/components/switch.js.map +1 -1
- package/dist/components/tabs.js +6 -7
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/toggle-group.js +3 -4
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle.js +2 -3
- package/dist/components/toggle.js.map +1 -1
- package/dist/components/visually-hidden.js +1 -2
- package/dist/components/visually-hidden.js.map +1 -1
- package/dist/components/zoetrope.js +1 -2
- package/dist/dom-context.js +2 -3
- package/dist/dom-context.js.map +1 -1
- package/dist/floating-ui.js +1 -2
- package/dist/head.js +1 -2
- package/dist/head.js.map +1 -1
- package/dist/helpers/body-class.js +0 -1
- package/dist/helpers/body-class.js.map +1 -1
- package/dist/helpers/link.js +0 -1
- package/dist/helpers/link.js.map +1 -1
- package/dist/helpers/service.js +0 -1
- package/dist/helpers/service.js.map +1 -1
- package/dist/helpers.js +0 -1
- package/dist/helpers.js.map +1 -1
- package/dist/iframe.js +0 -1
- package/dist/iframe.js.map +1 -1
- package/dist/{index-DKE67I8L.js → index-gRO4Cvlf.js} +2 -2
- package/dist/index-gRO4Cvlf.js.map +1 -0
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/load.js +0 -1
- package/dist/load.js.map +1 -1
- package/dist/narrowing.js +0 -1
- package/dist/narrowing.js.map +1 -1
- package/dist/on-resize.js +0 -1
- package/dist/on-resize.js.map +1 -1
- package/dist/{otp-C6hCCXKx.js → otp-7rz1PWP0.js} +6 -7
- package/dist/otp-7rz1PWP0.js.map +1 -0
- package/dist/proper-links.js +0 -1
- package/dist/proper-links.js.map +1 -1
- package/dist/qp.js +0 -1
- package/dist/qp.js.map +1 -1
- package/dist/rating-BrIiwDLw.js +152 -0
- package/dist/rating-BrIiwDLw.js.map +1 -0
- package/dist/resize-observer.js +0 -1
- package/dist/resize-observer.js.map +1 -1
- package/dist/service.js +0 -1
- package/dist/service.js.map +1 -1
- package/dist/store.js +0 -1
- package/dist/store.js.map +1 -1
- package/dist/styles.css.js +0 -1
- package/dist/tabster.js +0 -1
- package/dist/tabster.js.map +1 -1
- package/dist/test-support.js +0 -1
- package/dist/test-support.js.map +1 -1
- package/dist/{utils-C5796IKA.js → utils-D0v9WKmV.js} +1 -2
- package/dist/utils-D0v9WKmV.js.map +1 -0
- package/dist/utils.js +4 -1
- package/dist/utils.js.map +1 -1
- package/dist/viewport/in-viewport.js +82 -0
- package/dist/viewport/in-viewport.js.map +1 -0
- package/dist/viewport/viewport.js +92 -0
- package/dist/viewport/viewport.js.map +1 -0
- package/dist/viewport.js +3 -0
- package/dist/viewport.js.map +1 -0
- package/package.json +24 -20
- package/src/-private.ts +4 -0
- package/src/color-scheme.ts +165 -0
- package/src/components/-private/typed-elements.gts +13 -0
- package/src/components/-private/utils.ts +16 -0
- package/src/components/accordion/content.gts +34 -0
- package/src/components/accordion/header.gts +36 -0
- package/src/components/accordion/item.gts +55 -0
- package/src/components/accordion/public.ts +64 -0
- package/src/components/accordion/trigger.gts +32 -0
- package/src/components/accordion.gts +195 -0
- package/src/components/avatar.gts +108 -0
- package/src/components/dialog.gts +234 -0
- package/src/components/external-link.gts +14 -0
- package/src/components/form.gts +75 -0
- package/src/components/heading.gts +36 -0
- package/src/components/keys.gts +53 -0
- package/src/components/layout/hero.css +5 -0
- package/src/components/layout/hero.gts +17 -0
- package/src/components/layout/sticky-footer.css +9 -0
- package/src/components/layout/sticky-footer.gts +40 -0
- package/src/components/link.gts +172 -0
- package/src/components/menu.gts +373 -0
- package/src/components/one-time-password/buttons.gts +31 -0
- package/src/components/one-time-password/input.gts +198 -0
- package/src/components/one-time-password/otp.gts +130 -0
- package/src/components/one-time-password/utils.ts +201 -0
- package/src/components/one-time-password.gts +2 -0
- package/src/components/popover.gts +248 -0
- package/src/components/portal-targets.gts +136 -0
- package/src/components/portal.gts +194 -0
- package/src/components/progress.gts +154 -0
- package/src/components/rating/public-types.ts +44 -0
- package/src/components/rating/range.gts +22 -0
- package/src/components/rating/rating.gts +228 -0
- package/src/components/rating/stars.gts +60 -0
- package/src/components/rating/state.gts +144 -0
- package/src/components/rating/utils.ts +7 -0
- package/src/components/rating.gts +5 -0
- package/src/components/scroller.gts +179 -0
- package/src/components/shadowed.gts +110 -0
- package/src/components/switch.gts +103 -0
- package/src/components/tabs.gts +519 -0
- package/src/components/toggle-group.gts +265 -0
- package/src/components/toggle.gts +81 -0
- package/src/components/violations.css +105 -0
- package/src/components/violations.css.ts +1 -0
- package/src/components/visually-hidden.css +14 -0
- package/src/components/visually-hidden.gts +15 -0
- package/src/components/zoetrope/index.gts +358 -0
- package/src/components/zoetrope/styles.css +40 -0
- package/src/components/zoetrope/types.ts +65 -0
- package/src/components/zoetrope.ts +3 -0
- package/src/dom-context.gts +245 -0
- package/src/floating-ui/component.gts +186 -0
- package/src/floating-ui/middleware.ts +13 -0
- package/src/floating-ui/modifier.ts +183 -0
- package/src/floating-ui.ts +2 -0
- package/src/head.gts +37 -0
- package/src/helpers/body-class.ts +94 -0
- package/src/helpers/link.ts +125 -0
- package/src/helpers/service.ts +25 -0
- package/src/helpers.ts +2 -0
- package/src/iframe.ts +31 -0
- package/src/index.ts +43 -0
- package/src/load.gts +77 -0
- package/src/narrowing.ts +7 -0
- package/src/on-resize.ts +64 -0
- package/src/proper-links.ts +140 -0
- package/src/qp.ts +107 -0
- package/src/resize-observer.ts +132 -0
- package/src/service.ts +103 -0
- package/src/store.ts +72 -0
- package/src/styles.css.ts +5 -0
- package/src/tabster.ts +54 -0
- package/src/template-registry.ts +44 -0
- package/src/test-support/a11y.ts +50 -0
- package/src/test-support/dom.ts +112 -0
- package/src/test-support/otp.ts +64 -0
- package/src/test-support/rating.ts +144 -0
- package/src/test-support/routing.ts +62 -0
- package/src/test-support/zoetrope.ts +51 -0
- package/src/test-support.gts +6 -0
- package/src/type-utils.ts +1 -0
- package/src/utils.ts +75 -0
- package/src/viewport/in-viewport.gts +128 -0
- package/src/viewport/viewport.ts +122 -0
- package/src/viewport.ts +2 -0
- package/dist/component-Bs3N-G9z.js.map +0 -1
- package/dist/index-DKE67I8L.js.map +0 -1
- package/dist/otp-C6hCCXKx.js.map +0 -1
- package/dist/rating-D052JWRa.js +0 -149
- package/dist/rating-D052JWRa.js.map +0 -1
- package/dist/utils-C5796IKA.js.map +0 -1
package/bin/index.mjs
ADDED
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/* eslint-disable n/no-process-exit */
|
|
3
|
+
|
|
4
|
+
import { spawn, spawnSync } from "node:child_process";
|
|
5
|
+
import { existsSync } from "node:fs";
|
|
6
|
+
import { glob, stat } from "node:fs/promises";
|
|
7
|
+
import { extname, isAbsolute, join, relative } from "node:path";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
import { parseArgs, styleText } from "node:util";
|
|
10
|
+
|
|
11
|
+
const repoURL = "https://github.com/universal-ember/ember-primitives.git";
|
|
12
|
+
const binName = "ember-primitives";
|
|
13
|
+
const repoPrefix = `ember-primitives/src/`;
|
|
14
|
+
|
|
15
|
+
async function findAvailableFiles() {
|
|
16
|
+
const packageRoot = fileURLToPath(new URL("..", import.meta.url));
|
|
17
|
+
const pattern = "./src/**/*";
|
|
18
|
+
|
|
19
|
+
const matches = [];
|
|
20
|
+
for await (const match of glob(pattern, { cwd: packageRoot })) {
|
|
21
|
+
const rel = isAbsolute(match) ? relative(packageRoot, match) : match;
|
|
22
|
+
matches.push(rel.replace(/\\/g, "/"));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// The built-in glob can include directories; filter to files.
|
|
26
|
+
// Do this after collecting to keep behavior stable.
|
|
27
|
+
const stats = await Promise.all(
|
|
28
|
+
matches.map(async (p) => {
|
|
29
|
+
try {
|
|
30
|
+
const s = await stat(join(packageRoot, p));
|
|
31
|
+
return s.isFile() ? p : null;
|
|
32
|
+
} catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}),
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
return stats.filter((p) => p !== null).map((x) => join("ember-primitives", x));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function printHelp() {
|
|
42
|
+
console.log(`\
|
|
43
|
+
${binName}
|
|
44
|
+
|
|
45
|
+
Usage:
|
|
46
|
+
${binName} emit <filepath> --output-folder <path> [--javascript] [--tag <tag>]
|
|
47
|
+
|
|
48
|
+
Description:
|
|
49
|
+
"emit" is a thin wrapper around unlibrary (https://github.com/NullVoxPopuli/unlibrary)
|
|
50
|
+
with defaults derived from this repository.
|
|
51
|
+
|
|
52
|
+
Examples:
|
|
53
|
+
${binName} emit store.ts --output-folder ./src/primitives/
|
|
54
|
+
${binName} emit ember-primitives/src/create-store.ts --output-folder ./src/primitives/ --javascript
|
|
55
|
+
|
|
56
|
+
Options:
|
|
57
|
+
--output-folder, --out <path> Where unlibrary should copy files (required)
|
|
58
|
+
--tag <tag> Override the git tag (default: vMAJOR.MINOR from package version)
|
|
59
|
+
--javascript Force JavaScript output when TS is encountered
|
|
60
|
+
-h, --help Show help
|
|
61
|
+
`);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function fail(message) {
|
|
65
|
+
console.error(message);
|
|
66
|
+
console.error("");
|
|
67
|
+
printHelp();
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function assertNodeVersion() {
|
|
72
|
+
// unlibrary currently requires Node >= 24.12.0 (per its package.json engines).
|
|
73
|
+
const major = Number(String(process.versions.node).split(".")[0]);
|
|
74
|
+
if (Number.isFinite(major) && major < 24) {
|
|
75
|
+
fail(
|
|
76
|
+
`unlibrary requires Node >= 24.12.0, but you're running Node ${process.versions.node}.\n` +
|
|
77
|
+
`Please upgrade Node (or run this in an environment that has Node 24+) and try again.`,
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function hasCommand(cmd) {
|
|
83
|
+
const result = spawnSync(cmd, ["--version"], { stdio: "ignore" });
|
|
84
|
+
if (result.error && result.error.code === "ENOENT") return false;
|
|
85
|
+
// Some tools return non-zero for --version in odd envs; if it spawned, we treat as present.
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function spawnWithInherit(cmd, args) {
|
|
90
|
+
return new Promise((resolve, reject) => {
|
|
91
|
+
const child = spawn(cmd, args, {
|
|
92
|
+
stdio: "inherit",
|
|
93
|
+
shell: false,
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
child.on("error", reject);
|
|
97
|
+
child.on("exit", (code, signal) => {
|
|
98
|
+
if (signal) {
|
|
99
|
+
resolve(1);
|
|
100
|
+
} else {
|
|
101
|
+
resolve(code ?? 1);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
async function runUnlibrary(unlibraryArgs) {
|
|
108
|
+
// Prefer GitHub source, then fall back to npm package.
|
|
109
|
+
// We also prefer pnpm (this repo uses pnpm) and fall back to npx.
|
|
110
|
+
const candidates = [];
|
|
111
|
+
|
|
112
|
+
if (hasCommand("pnpm")) {
|
|
113
|
+
candidates.push(["pnpm", ["dlx", "unlibrary@latest", ...unlibraryArgs]]);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (hasCommand("npx")) {
|
|
117
|
+
candidates.push(["npx", ["-y", "unlibrary@latest", ...unlibraryArgs]]);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (candidates.length === 0) {
|
|
121
|
+
fail("Could not find pnpm or npx to run unlibrary. Please install pnpm (recommended) or npm.");
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
console.log(`
|
|
125
|
+
Running:
|
|
126
|
+
|
|
127
|
+
${styleText("cyan", "unlibrary")} ${unlibraryArgs.map((arg) => (arg.startsWith("--") ? styleText("gray", arg) : styleText("yellow", arg))).join(" ")}
|
|
128
|
+
`);
|
|
129
|
+
|
|
130
|
+
let lastExitCode = 1;
|
|
131
|
+
let lastError;
|
|
132
|
+
|
|
133
|
+
for (const [cmd, args] of candidates) {
|
|
134
|
+
try {
|
|
135
|
+
lastExitCode = await spawnWithInherit(cmd, args);
|
|
136
|
+
if (lastExitCode === 0) return 0;
|
|
137
|
+
} catch (e) {
|
|
138
|
+
lastError = e;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (lastError) throw lastError;
|
|
143
|
+
return lastExitCode;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
async function check() {
|
|
147
|
+
const parsed = parseArgs({
|
|
148
|
+
args: process.argv.slice(2),
|
|
149
|
+
allowPositionals: true,
|
|
150
|
+
strict: false,
|
|
151
|
+
options: {
|
|
152
|
+
help: { type: "boolean", short: "h" },
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
if (parsed.values.help) {
|
|
157
|
+
printHelp();
|
|
158
|
+
process.exit(0);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
const [command, ...positionals] = parsed.positionals;
|
|
162
|
+
|
|
163
|
+
if (!command) {
|
|
164
|
+
printHelp();
|
|
165
|
+
process.exit(0);
|
|
166
|
+
}
|
|
167
|
+
if (command !== "emit") {
|
|
168
|
+
fail(`Unknown command: ${command}`);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
assertNodeVersion();
|
|
172
|
+
|
|
173
|
+
const errors = [];
|
|
174
|
+
|
|
175
|
+
const filepathInput = positionals[0];
|
|
176
|
+
if (!filepathInput) {
|
|
177
|
+
errors.push("Missing required argument: <filepath>");
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (errors.length > 0) {
|
|
181
|
+
console.error("Errors:");
|
|
182
|
+
errors.forEach((error) => console.error(` - ${error}`));
|
|
183
|
+
console.error("");
|
|
184
|
+
printHelp();
|
|
185
|
+
process.exit(1);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return { filepathInput };
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
async function findFile(filepathInput) {
|
|
192
|
+
const availableFiles = await findAvailableFiles();
|
|
193
|
+
|
|
194
|
+
let candidates = availableFiles.filter((available) => {
|
|
195
|
+
let trimmed = available.replace(repoPrefix, "");
|
|
196
|
+
|
|
197
|
+
if (trimmed === filepathInput) {
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
let ext = extname(trimmed);
|
|
202
|
+
let extensionless = trimmed.replace(new RegExp(RegExp.escape(ext) + "$"), "");
|
|
203
|
+
|
|
204
|
+
if (extensionless === filepathInput) {
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
if (candidates.length > 1) {
|
|
210
|
+
fail(`Too many candidate files found: ${candidates}. Please specify one only`);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (candidates === 0) {
|
|
214
|
+
let potentials = availableFiles
|
|
215
|
+
.map((x) => x.replace(repoPrefix, ""))
|
|
216
|
+
.filter((x) => x.includes(filepathInput));
|
|
217
|
+
|
|
218
|
+
fail(
|
|
219
|
+
`Not file matches found for ${filepathInput}. Did you mean one of ${potentials ?? availableFiles}`,
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
const filepath = candidates[0];
|
|
224
|
+
|
|
225
|
+
return { filepath };
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
function findOutput() {
|
|
229
|
+
let cwd = process.cwd();
|
|
230
|
+
let src = join(cwd, "src");
|
|
231
|
+
let app = join(cwd, "app");
|
|
232
|
+
|
|
233
|
+
if (existsSync(src)) return "src/primitives";
|
|
234
|
+
if (existsSync(app)) return "app/primitives";
|
|
235
|
+
|
|
236
|
+
fail(
|
|
237
|
+
`Could not determine output folder automatically. Please specify --output-folder ./place-to/emit/files`,
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
async function main() {
|
|
242
|
+
const { filepathInput } = await check();
|
|
243
|
+
const { filepath } = await findFile(filepathInput);
|
|
244
|
+
|
|
245
|
+
// Get remaining args that weren't parsed by parseArgs
|
|
246
|
+
const remainingArgs = process.argv.slice(2).filter((arg, index) => {
|
|
247
|
+
// Skip the command itself
|
|
248
|
+
if (index === 0) return false;
|
|
249
|
+
// Skip positional filepath argument
|
|
250
|
+
if (index === 1 && !arg.startsWith("-")) return false;
|
|
251
|
+
// Skip known parsed options and their values
|
|
252
|
+
if (arg === "--help" || arg === "-h") return false;
|
|
253
|
+
return true;
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
const unlibraryArgs = [
|
|
257
|
+
"--repo",
|
|
258
|
+
repoURL,
|
|
259
|
+
...(remainingArgs.includes("--filepath") ? [] : ["--filepath", filepath]),
|
|
260
|
+
...(remainingArgs.includes("--output-folder") ? [] : ["--output-folder", findOutput()]),
|
|
261
|
+
...remainingArgs,
|
|
262
|
+
];
|
|
263
|
+
|
|
264
|
+
const exitCode = await runUnlibrary(unlibraryArgs);
|
|
265
|
+
process.exit(exitCode);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
main().catch((e) => {
|
|
269
|
+
console.error(e);
|
|
270
|
+
process.exit(1);
|
|
271
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../src/components/portal.gts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../src/components/portal.gts"],"names":[],"mappings":"AA0MA,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAE1D,KAAK,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;AAqBtD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE;QACJ;;;;;;WAMG;QACH,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC;QAEzC;;;;WAIG;QACH,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB;;;;WAIG;QACH,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KAC7B,CAAC;IACF,MAAM,EAAE;QACN;;WAEG;QACH,OAAO,EAAE,EAAE,CAAC;KACb,CAAC;CACH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,kBAYlE;AA0CD,eAAO,MAAM,MAAM,EAAE,GAAG,CAAC,SAAS,CA+ChC,CAAC;AAkEH,eAAe,MAAM,CAAC"}
|
|
@@ -17,10 +17,6 @@ export interface ComponentIcons {
|
|
|
17
17
|
* Is this item selected?
|
|
18
18
|
*/
|
|
19
19
|
isSelected: boolean;
|
|
20
|
-
/**
|
|
21
|
-
* How much % of this item is selected?
|
|
22
|
-
*/
|
|
23
|
-
percentSelected: number;
|
|
24
20
|
/**
|
|
25
21
|
* Which number of item is this item within the overall rating group.
|
|
26
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-types.d.ts","sourceRoot":"","sources":["../../../src/components/rating/public-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,IAAI,EAAE,aAAa,CAAC;QAClB,OAAO,EAAE,WAAW,CAAC;QACrB,IAAI,EAAE;YACJ;;eAEG;YACH,UAAU,EAAE,OAAO,CAAC;YACpB;;eAEG;YACH,
|
|
1
|
+
{"version":3,"file":"public-types.d.ts","sourceRoot":"","sources":["../../../src/components/rating/public-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,IAAI,EAAE,aAAa,CAAC;QAClB,OAAO,EAAE,WAAW,CAAC;QACrB,IAAI,EAAE;YACJ;;eAEG;YACH,UAAU,EAAE,OAAO,CAAC;YACpB;;eAEG;YACH,KAAK,EAAE,MAAM,CAAC;YACd;;eAEG;YACH,QAAQ,EAAE,OAAO,CAAC;SACnB,CAAC;KACH,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -18,6 +18,15 @@ export interface Signature {
|
|
|
18
18
|
* Defaults to 0
|
|
19
19
|
*/
|
|
20
20
|
value?: number;
|
|
21
|
+
/**
|
|
22
|
+
* When generating the radio inputs, this changes what value of rating each radio
|
|
23
|
+
* input will be incremented by.
|
|
24
|
+
*
|
|
25
|
+
* e.g.: Set to 0.5 for half-star ratings.
|
|
26
|
+
*
|
|
27
|
+
* Defaults to 1
|
|
28
|
+
*/
|
|
29
|
+
step?: number;
|
|
21
30
|
/**
|
|
22
31
|
* Prevents click events on the icons and sets aria-readonly.
|
|
23
32
|
*
|
|
@@ -95,7 +104,6 @@ export declare class Rating extends Component<Signature> {
|
|
|
95
104
|
Element: HTMLElement;
|
|
96
105
|
Args: {
|
|
97
106
|
isSelected: boolean;
|
|
98
|
-
percentSelected: number;
|
|
99
107
|
value: number;
|
|
100
108
|
readonly: boolean;
|
|
101
109
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rating.d.ts","sourceRoot":"","sources":["../../../src/components/rating/rating.gts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rating.d.ts","sourceRoot":"","sources":["../../../src/components/rating/rating.gts"],"names":[],"mappings":"AAoOA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAK3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,SAAS;IAOxB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,IAAI,EAAE,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG;QACrC;;;;WAIG;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;QAEb;;;;WAIG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QAEf;;;;;;;WAOG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd;;;;WAIG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAC;QAEnB;;;;;;WAMG;QACH,WAAW,CAAC,EAAE,OAAO,CAAC;QAEtB;;;WAGG;QACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACpC,CAAC;IAEF,MAAM,EAAE;QACN,OAAO,EAAE;YACP,MAAM,EAAE;gBACN;;mBAEG;gBACH,GAAG,EAAE,MAAM,CAAC;gBACZ;;mBAEG;gBACH,KAAK,EAAE,MAAM,CAAC;gBACd;;mBAEG;gBACH,KAAK,EAAE,MAAM,CAAC;gBACd;;mBAEG;gBACH,IAAI,EAAE,MAAM,CAAC;gBACb;;mBAEG;gBACH,UAAU,EAAE,OAAO,CAAC;gBACpB;;mBAEG;gBACH,YAAY,EAAE,OAAO,CAAC;gBACtB;;mBAEG;gBACH,KAAK,EAAE,aAAa,CAClB,OAAO,KAAK,EACZ,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,CACpE,CAAC;gBACF;;mBAEG;gBACH,KAAK,EAAE,aAAa,CAAC,OAAO,WAAW,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC;aACrF;SACF,CAAC;QACF,KAAK,EAAE;YACL,KAAK,EAAE;gBACL;;mBAEG;gBACH,KAAK,EAAE,MAAM,CAAC;gBAEd;;mBAEG;gBACH,KAAK,EAAE,MAAM,CAAC;aACf;SACF,CAAC;KACH,CAAC;CACH;AAED,qBAAa,MAAO,SAAQ,SAAS,CAAC,SAAS,CAAC;IAC9C,IAAI,SAA0B;IAE9B,IAAI,IAAI;;;;;;;OAEP;IAED,IAAI,aAAa,YAEhB;IAED,IAAI,YAAY,YAIf;IAED,IAAI,UAAU,YAEb;IAED,IAAI,gBAAgB,YAEnB;CAiFF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stars.d.ts","sourceRoot":"","sources":["../../../src/components/rating/stars.gts"],"names":[],"mappings":"AA+DA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAE1D,eAAO,MAAM,KAAK,EAAE,GAAG,CAAC;IACtB,IAAI,EAAE;QAEJ,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACnD,UAAU,EAAE,OAAO,CAAC;QAGpB,IAAI,EAAE,MAAM,CAAC;QAGb,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,
|
|
1
|
+
{"version":3,"file":"stars.d.ts","sourceRoot":"","sources":["../../../src/components/rating/stars.gts"],"names":[],"mappings":"AA+DA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAE1D,eAAO,MAAM,KAAK,EAAE,GAAG,CAAC;IACtB,IAAI,EAAE;QAEJ,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACnD,UAAU,EAAE,OAAO,CAAC;QAGpB,IAAI,EAAE,MAAM,CAAC;QAGb,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CA6FC,CAAC"}
|
|
@@ -3,6 +3,7 @@ export declare class RatingState extends Component<{
|
|
|
3
3
|
Args: {
|
|
4
4
|
max: number | undefined;
|
|
5
5
|
value: number | undefined;
|
|
6
|
+
step: number | undefined;
|
|
6
7
|
readonly: boolean | undefined;
|
|
7
8
|
name: string;
|
|
8
9
|
onChange?: (value: number) => void;
|
|
@@ -11,6 +12,7 @@ export declare class RatingState extends Component<{
|
|
|
11
12
|
default: [
|
|
12
13
|
internalApi: {
|
|
13
14
|
stars: number[];
|
|
15
|
+
step: number;
|
|
14
16
|
value: number;
|
|
15
17
|
total: number;
|
|
16
18
|
handleClick: (event: Event) => void;
|
|
@@ -26,6 +28,8 @@ export declare class RatingState extends Component<{
|
|
|
26
28
|
}> {
|
|
27
29
|
_value: number;
|
|
28
30
|
get value(): number;
|
|
31
|
+
get step(): number;
|
|
32
|
+
get max(): number;
|
|
29
33
|
get stars(): number[];
|
|
30
34
|
setRating: (value: number) => void;
|
|
31
35
|
setFromString: (value: unknown) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/components/rating/state.gts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/components/rating/state.gts"],"names":[],"mappings":"AAgJA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAS3C,qBAAa,WAAY,SAAQ,SAAS,CAAC;IACzC,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;QACxB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACpC,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE;YACP,WAAW,EAAE;gBACX,KAAK,EAAE,MAAM,EAAE,CAAC;gBAChB,IAAI,EAAE,MAAM,CAAC;gBACb,KAAK,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,MAAM,CAAC;gBACd,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;gBACpC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;gBACrC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;aAClC;YACD,SAAS,EAAE;gBACT,KAAK,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,MAAM,CAAC;aACf;SACF,CAAC;KACH,CAAC;CACH,CAAC;IAEiC,MAAM,EAAE,MAAM,CAAC;IAEhD,IAAI,KAAK,WAER;IAED,IAAI,IAAI,WAEP;IAED,IAAI,GAAG,WAEN;IAED,IACI,KAAK,aAcR;IAED,SAAS,GAAI,OAAO,MAAM,UAYxB;IAEF,aAAa,GAAI,OAAO,OAAO,UAa7B;IAEF;;;;OAIG;IACH,WAAW,GAAI,OAAO,KAAK,UAazB;IAEF;;;OAGG;IACH,YAAY,GAAI,OAAO,KAAK,UAM1B;CAiBH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/rating/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,eAElC;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,WAEvC
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/rating/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,eAElC;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,WAEvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabster.d.ts","sourceRoot":"","sources":["../src/tabster.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY;AAChC;;;;GAIG;AACH,OAAO,EAAE,MAAM,EACf,EACE,OAAO,EACP,cAAc,GACf,GAAE;IACD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CACrB,
|
|
1
|
+
{"version":3,"file":"tabster.d.ts","sourceRoot":"","sources":["../src/tabster.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY;AAChC;;;;GAIG;AACH,OAAO,EAAE,MAAM,EACf,EACE,OAAO,EACP,cAAc,GACf,GAAE;IACD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CACrB,iBAyBP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,wBAAgB,QAAQ,IAAI,MAAM,CAQjC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,WAAW,CAAC,MAAM,CAAC,CAMtF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAI9C;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAKxE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,cAAc,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,wBAAgB,QAAQ,IAAI,MAAM,CAQjC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,WAAW,CAAC,MAAM,CAAC,CAMtF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAI9C;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAKxE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,cAAc,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAiBpE"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import Component from "@glimmer/component";
|
|
2
|
+
export type InViewportMode = "replace" | "contain";
|
|
3
|
+
/**
|
|
4
|
+
* Configuration for the InViewport component
|
|
5
|
+
*/
|
|
6
|
+
export interface InViewportSignature {
|
|
7
|
+
Element: HTMLElement;
|
|
8
|
+
Args: {
|
|
9
|
+
/**
|
|
10
|
+
* The tag name for the placeholder element.
|
|
11
|
+
* Can be any valid HTML tag name.
|
|
12
|
+
* Default: 'div'
|
|
13
|
+
*/
|
|
14
|
+
tagName?: string;
|
|
15
|
+
/**
|
|
16
|
+
* The mode determines how yielded content is rendered:
|
|
17
|
+
* - 'replace': yielded content replaces the placeholder element
|
|
18
|
+
* - 'contain': yielded content is rendered within the placeholder
|
|
19
|
+
* Default: 'contain'
|
|
20
|
+
*/
|
|
21
|
+
mode?: InViewportMode;
|
|
22
|
+
};
|
|
23
|
+
Blocks: {
|
|
24
|
+
/**
|
|
25
|
+
* Default block - rendered when the element is in the viewport
|
|
26
|
+
*/
|
|
27
|
+
default: [];
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A component that only renders its content when the element is near the viewport.
|
|
32
|
+
*
|
|
33
|
+
* This is useful for deferring the rendering of heavy components until they're
|
|
34
|
+
* actually needed, improving performance for pages with many components.
|
|
35
|
+
*
|
|
36
|
+
* Example usage:
|
|
37
|
+
* ```gjs
|
|
38
|
+
* import { InViewport } from 'ember-primitives';
|
|
39
|
+
*
|
|
40
|
+
* <template>
|
|
41
|
+
* <InViewport>
|
|
42
|
+
* <ExpensiveComponent />
|
|
43
|
+
* </InViewport>
|
|
44
|
+
* </template>
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* The component uses the Intersection Observer API to detect when the element
|
|
48
|
+
* is near the viewport. Once detected, the observer is destroyed and the content
|
|
49
|
+
* is rendered permanently.
|
|
50
|
+
*/
|
|
51
|
+
export declare class InViewport extends Component<InViewportSignature> {
|
|
52
|
+
#private;
|
|
53
|
+
/**
|
|
54
|
+
* Whether the element has been detected as in/near the viewport
|
|
55
|
+
*/
|
|
56
|
+
hasIntersected: boolean;
|
|
57
|
+
setupObserver: import("ember-modifier").FunctionBasedModifier<{
|
|
58
|
+
Args: {
|
|
59
|
+
Positional: unknown[];
|
|
60
|
+
Named: import("ember-modifier/-private/signature").EmptyObject;
|
|
61
|
+
};
|
|
62
|
+
Element: Element;
|
|
63
|
+
}>;
|
|
64
|
+
handle: (entry: IntersectionObserverEntry) => void;
|
|
65
|
+
get mode(): InViewportMode;
|
|
66
|
+
get tagName(): string;
|
|
67
|
+
get hasReachedViewport(): boolean;
|
|
68
|
+
get isReplacing(): boolean;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=in-viewport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-viewport.d.ts","sourceRoot":"","sources":["../../src/viewport/in-viewport.gts"],"names":[],"mappings":"AAgIA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAS3C,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE;QACJ;;;;WAIG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QAEjB;;;;;WAKG;QACH,IAAI,CAAC,EAAE,cAAc,CAAC;KACvB,CAAC;IACF,MAAM,EAAE;QACN;;WAEG;QACH,OAAO,EAAE,EAAE,CAAC;KACb,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,UAAW,SAAQ,SAAS,CAAC,mBAAmB,CAAC;;IAC5D;;OAEG;IACM,cAAc,UAAS;IAMhC,aAAa;;;;;;OAQV;IAEH,MAAM,GAAI,OAAO,yBAAyB,UAMxC;IAEF,IAAI,IAAI,IAAI,cAAc,CAOzB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;CAmCF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates or returns the ViewportObserverManager.
|
|
3
|
+
*
|
|
4
|
+
* Only one of these will exist per owner.
|
|
5
|
+
*
|
|
6
|
+
* Has only two methods:
|
|
7
|
+
* - observe(element, callback: (intersectionObserverEntry) => void, options?)
|
|
8
|
+
* - unobserve(element, callback: (intersectionObserverEntry) => void)
|
|
9
|
+
*
|
|
10
|
+
* Like with the underlying IntersectionObserver API (and all event listeners),
|
|
11
|
+
* the callback passed to unobserve must be the same reference as the one
|
|
12
|
+
* passed to observe.
|
|
13
|
+
*/
|
|
14
|
+
export declare function viewport(context: object): ViewportObserverManager;
|
|
15
|
+
export interface ViewportOptions {
|
|
16
|
+
/**
|
|
17
|
+
* A margin around the root. Can have values similar to the CSS margin property.
|
|
18
|
+
* The values can be percentages. This set of values serves to grow or shrink each
|
|
19
|
+
* side of the root element's bounding box before computing intersections.
|
|
20
|
+
* Defaults to all zeros.
|
|
21
|
+
*/
|
|
22
|
+
rootMargin?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Either a single number or an array of numbers which indicate at what percentage
|
|
25
|
+
* of the target's visibility the observer's callback should be executed. If you only
|
|
26
|
+
* want to detect when visibility passes the 50% mark, you can use a value of 0.5.
|
|
27
|
+
* If you want the callback to run every time visibility passes another 25%, you would
|
|
28
|
+
* specify the array [0, 0.25, 0.5, 0.75, 1]. The default is 0 (meaning as soon as
|
|
29
|
+
* even one pixel is visible, the callback will be run).
|
|
30
|
+
*/
|
|
31
|
+
threshold?: number | number[];
|
|
32
|
+
}
|
|
33
|
+
declare class ViewportObserverManager {
|
|
34
|
+
#private;
|
|
35
|
+
constructor();
|
|
36
|
+
/**
|
|
37
|
+
* Initiate the observing of the `element` or add an additional `callback`
|
|
38
|
+
* if the `element` is already observed.
|
|
39
|
+
*
|
|
40
|
+
* @param {object} element
|
|
41
|
+
* @param {function} callback The `callback` is called whenever the `element`
|
|
42
|
+
* intersects with the viewport. It is called with an `IntersectionObserverEntry`
|
|
43
|
+
* object for the particular `element`.
|
|
44
|
+
*/
|
|
45
|
+
observe(element: Element, callback: (entry: IntersectionObserverEntry) => unknown): void;
|
|
46
|
+
/**
|
|
47
|
+
* End the observing of the `element` or just remove the provided `callback`.
|
|
48
|
+
*
|
|
49
|
+
* It will unobserve the `element` if the `callback` is not provided
|
|
50
|
+
* or there are no more callbacks left for this `element`.
|
|
51
|
+
*
|
|
52
|
+
* @param {Element | undefined | null} element
|
|
53
|
+
* @param {function?} callback - The `callback` to remove from the listeners
|
|
54
|
+
* of the `element` intersection changes.
|
|
55
|
+
*/
|
|
56
|
+
unobserve(element: Element | undefined | null, callback: (entry: IntersectionObserverEntry) => unknown): void;
|
|
57
|
+
}
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=viewport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../../src/viewport/viewport.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,2BAEvC;AAED,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC/B;AAED,cAAM,uBAAuB;;;IA8B3B;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,OAAO;IAWjF;;;;;;;;;OASG;IACH,SAAS,CACP,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,EACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,OAAO;CAmB1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/-private.js
CHANGED
package/dist/-private.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"-private.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"-private.js","sources":["../src/-private.ts"],"sourcesContent":["/**\n * @internal\n */\nexport const PRIMITIVES = Symbol.for('ember-primitives-globals');\n"],"names":["PRIMITIVES","Symbol","for"],"mappings":"AAAA;AACA;AACA;AACO,MAAMA,UAAU,GAAGC,MAAM,CAACC,GAAG,CAAC,0BAA0B;;;;"}
|
package/dist/color-scheme.js
CHANGED
package/dist/color-scheme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-scheme.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"color-scheme.js","sources":["../src/color-scheme.ts"],"sourcesContent":["import { waitForPromise } from '@ember/test-waiters';\n\nimport { cell } from 'ember-resources';\n\nconst _colorScheme = cell<string | undefined>();\n\nlet callbacks: Set<(colorScheme: string) => void> = new Set();\n\nasync function runCallbacks(theme: string) {\n await Promise.resolve();\n\n for (const callback of callbacks.values()) {\n callback(theme);\n }\n}\n\n/**\n * Object for managing the color scheme\n */\nexport const colorScheme = {\n /**\n * Set's the current color scheme to the passed value\n */\n update: (value: string) => {\n colorScheme.current = value;\n\n void waitForPromise(runCallbacks(value));\n },\n\n on: {\n /**\n * register a function to be called when the color scheme changes.\n */\n update: (callback: (colorScheme: string) => void) => {\n callbacks.add(callback);\n },\n },\n off: {\n /**\n * unregister a function that would have been called when the color scheme changes.\n */\n update: (callback: (colorScheme: string) => void) => {\n callbacks.delete(callback);\n },\n },\n\n /**\n * the current valuel of the \"color scheme\"\n */\n get current(): string | undefined {\n return _colorScheme.current;\n },\n set current(value: string | undefined) {\n _colorScheme.current = value;\n\n if (!value) {\n localPreference.delete();\n\n return;\n }\n\n localPreference.update(value);\n setColorScheme(value);\n },\n};\n\n/**\n * Synchronizes state of `colorScheme` with the users preferences as well as reconciles with previously set theme in local storage.\n *\n * This may only be called once per app.\n */\nexport function sync() {\n /**\n * reset the callbacks\n */\n callbacks = new Set();\n\n /**\n * If local prefs are set, then we don't care what prefers-color-scheme is\n */\n const userPreference = localPreference.read();\n\n if (userPreference) {\n setColorScheme(userPreference);\n _colorScheme.current = userPreference;\n\n return;\n }\n\n if (prefers.dark()) {\n setColorScheme('dark');\n _colorScheme.current = 'dark';\n } else if (prefers.light()) {\n setColorScheme('light');\n _colorScheme.current = 'light';\n }\n}\n\n/**\n * Helper methods to determining what the user's preferred color scheme is\n * based on the system preferences rather than the users explicit preference.\n */\nexport const prefers = {\n dark: () => window.matchMedia('(prefers-color-scheme: dark)').matches,\n light: () => window.matchMedia('(prefers-color-scheme: light)').matches,\n custom: (name: string) => window.matchMedia(`(prefers-color-scheme: ${name})`).matches,\n none: () => window.matchMedia('(prefers-color-scheme: no-preference)').matches,\n};\n\nconst LOCAL_PREF_KEY = 'ember-primitives/color-scheme#local-preference';\n\n/**\n * Helper methods for working with the color scheme preference in local storage\n */\nexport const localPreference = {\n isSet: () => Boolean(localPreference.read()),\n read: () => localStorage.getItem(LOCAL_PREF_KEY),\n update: (value: string) => localStorage.setItem(LOCAL_PREF_KEY, value),\n delete: () => localStorage.removeItem(LOCAL_PREF_KEY),\n};\n\n/**\n * For the given element, returns the `color-scheme` of that element.\n */\nexport function getColorScheme(element?: HTMLElement) {\n const style = styleOf(element);\n\n return style.getPropertyValue('color-scheme');\n}\n\nexport function setColorScheme(element: HTMLElement, value: string): void;\nexport function setColorScheme(value: string): void;\n\nexport function setColorScheme(...args: [string] | [HTMLElement, string]): void {\n if (typeof args[0] === 'string') {\n styleOf().setProperty('color-scheme', args[0]);\n\n return;\n }\n\n if (typeof args[1] === 'string') {\n styleOf(args[0]).setProperty('color-scheme', args[1]);\n\n return;\n }\n\n throw new Error(`Invalid arity, expected up to 2 args, received ${args.length}`);\n}\n\n/**\n * Removes the `color-scheme` from the given element\n */\nexport function removeColorScheme(element?: HTMLElement) {\n const style = styleOf(element);\n\n style.removeProperty('color-scheme');\n}\n\nfunction styleOf(element?: HTMLElement) {\n if (element) {\n return element.style;\n }\n\n return document.documentElement.style;\n}\n"],"names":["_colorScheme","cell","callbacks","Set","runCallbacks","theme","Promise","resolve","callback","values","colorScheme","update","value","current","waitForPromise","on","add","off","delete","localPreference","setColorScheme","sync","userPreference","read","prefers","dark","light","window","matchMedia","matches","custom","name","none","LOCAL_PREF_KEY","isSet","Boolean","localStorage","getItem","setItem","removeItem","getColorScheme","element","style","styleOf","getPropertyValue","args","setProperty","Error","length","removeColorScheme","removeProperty","document","documentElement"],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
import Component from '@glimmer/component';
|
|
3
2
|
import { tracked } from '@glimmer/tracking';
|
|
4
3
|
import { hash } from '@ember/helper';
|
|
@@ -132,7 +131,7 @@ class FloatingUI extends Component {
|
|
|
132
131
|
this.reference = element;
|
|
133
132
|
};
|
|
134
133
|
static {
|
|
135
|
-
setComponentTemplate(precompileTemplate("
|
|
134
|
+
setComponentTemplate(precompileTemplate("{{#let (modifier anchorTo flipOptions=@flipOptions hideOptions=@hideOptions middleware=@middleware offsetOptions=@offsetOptions placement=@placement shiftOptions=@shiftOptions strategy=@strategy setData=this.setData) as |prewiredAnchorTo|}}\n {{#let (if this.reference (modifier prewiredAnchorTo this.reference)) as |floating|}}\n {{!-- @glint-nocheck -- Excessively deep, possibly infinite --}}\n {{yield (modifier ref this.setReference) floating (hash setReference=this.setReference data=this.data)}}\n {{/let}}\n{{/let}}", {
|
|
136
135
|
strictMode: true,
|
|
137
136
|
scope: () => ({
|
|
138
137
|
anchorTo,
|
|
@@ -144,4 +143,4 @@ class FloatingUI extends Component {
|
|
|
144
143
|
}
|
|
145
144
|
|
|
146
145
|
export { FloatingUI as F, anchorTo as a };
|
|
147
|
-
//# sourceMappingURL=component-
|
|
146
|
+
//# sourceMappingURL=component-BXy_iafw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-BXy_iafw.js","sources":["../src/floating-ui/middleware.ts","../src/floating-ui/modifier.ts","../src/floating-ui/component.gts"],"sourcesContent":["import type { Middleware } from '@floating-ui/dom';\n\nexport function exposeMetadata(): Middleware {\n return {\n name: 'metadata',\n fn: (data) => {\n // https://floating-ui.com/docs/middleware#always-return-an-object\n return {\n data,\n };\n },\n };\n}\n","import { assert } from '@ember/debug';\n\nimport { autoUpdate, computePosition, flip, hide, offset, shift } from '@floating-ui/dom';\nimport { modifier as eModifier } from 'ember-modifier';\n\nimport { exposeMetadata } from './middleware.ts';\n\nimport type {\n FlipOptions,\n HideOptions,\n Middleware,\n OffsetOptions,\n Placement,\n ShiftOptions,\n Strategy,\n} from '@floating-ui/dom';\n\nexport interface Signature {\n /**\n *\n */\n Element: HTMLElement;\n Args: {\n Positional: [\n /**\n * What do use as the reference element.\n * Can be a selector or element instance.\n *\n * Example:\n * ```gjs\n * import { anchorTo } from 'ember-primitives/floating-ui';\n *\n * <template>\n * <div id=\"reference\">...</div>\n * <div {{anchorTo \"#reference\"}}> ... </div>\n * </template>\n * ```\n */\n referenceElement: string | HTMLElement | SVGElement,\n ];\n Named: {\n /**\n * This is the type of CSS position property to use.\n * By default this is 'fixed', but can also be 'absolute'.\n *\n * See: [The strategy docs](https://floating-ui.com/docs/computePosition#strategy)\n */\n strategy?: Strategy;\n /**\n * Options to pass to the [offset middleware](https://floating-ui.com/docs/offset)\n */\n offsetOptions?: OffsetOptions;\n /**\n * Where to place the floating element relative to its reference element.\n * The default is 'bottom'.\n *\n * See: [The placement docs](https://floating-ui.com/docs/computePosition#placement)\n */\n placement?: Placement;\n /**\n * Options to pass to the [flip middleware](https://floating-ui.com/docs/flip)\n */\n flipOptions?: FlipOptions;\n /**\n * Options to pass to the [shift middleware](https://floating-ui.com/docs/shift)\n */\n shiftOptions?: ShiftOptions;\n /**\n * Options to pass to the [hide middleware](https://floating-ui.com/docs/hide)\n */\n hideOptions?: HideOptions;\n /**\n * Additional middleware to pass to FloatingUI.\n *\n * See: [The middleware docs](https://floating-ui.com/docs/middleware)\n */\n middleware?: Middleware[];\n /**\n * A callback for when data changes about the position / placement / etc\n * of the floating element.\n */\n setData?: Middleware['fn'];\n };\n };\n}\n\n/**\n * A modifier to apply to the _floating_ element.\n * This is what will anchor to the reference element.\n *\n * Example\n * ```gjs\n * import { anchorTo } from 'ember-primitives/floating-ui';\n *\n * <template>\n * <button id=\"my-button\"> ... </button>\n * <menu {{anchorTo \"#my-button\"}}> ... </menu>\n * </template>\n * ```\n */\nexport const anchorTo = eModifier<Signature>(\n (\n floatingElement,\n [_referenceElement],\n {\n strategy = 'fixed',\n offsetOptions = 0,\n placement = 'bottom',\n flipOptions,\n shiftOptions,\n middleware = [],\n setData,\n }\n ) => {\n const referenceElement: null | HTMLElement | SVGElement =\n typeof _referenceElement === 'string'\n ? document.querySelector(_referenceElement)\n : _referenceElement;\n\n assert(\n 'no reference element defined',\n referenceElement instanceof HTMLElement || referenceElement instanceof SVGElement\n );\n\n assert(\n 'no floating element defined',\n floatingElement instanceof HTMLElement || _referenceElement instanceof SVGElement\n );\n\n assert(\n 'reference and floating elements cannot be the same element',\n floatingElement !== _referenceElement\n );\n\n assert('@middleware must be an array of one or more objects', Array.isArray(middleware));\n\n Object.assign(floatingElement.style, {\n position: strategy,\n top: '0',\n left: '0',\n });\n\n const update = async () => {\n const { middlewareData, x, y } = await computePosition(referenceElement, floatingElement, {\n middleware: [\n offset(offsetOptions),\n flip(flipOptions),\n shift(shiftOptions),\n ...middleware,\n hide({ strategy: 'referenceHidden' }),\n hide({ strategy: 'escaped' }),\n exposeMetadata(),\n ],\n placement,\n strategy,\n });\n\n const referenceHidden = middlewareData.hide?.referenceHidden;\n\n Object.assign(floatingElement.style, {\n top: `${y}px`,\n left: `${x}px`,\n margin: 0,\n visibility: referenceHidden ? 'hidden' : 'visible',\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n void setData?.(middlewareData['metadata']);\n };\n\n void update();\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const cleanup = autoUpdate(referenceElement, floatingElement, update);\n\n /**\n * in the function-modifier manager, teardown of the previous modifier\n * occurs before setup of the next\n * https://github.com/ember-modifier/ember-modifier/blob/main/ember-modifier/src/-private/function-based/modifier-manager.ts#L58\n */\n return cleanup;\n }\n);\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { hash } from \"@ember/helper\";\n\nimport { modifier as eModifier } from \"ember-modifier\";\n\nimport { anchorTo } from \"./modifier.ts\";\n\nimport type { Signature as ModifierSignature } from \"./modifier.ts\";\nimport type { MiddlewareState } from \"@floating-ui/dom\";\nimport type { ModifierLike } from \"@glint/template\";\n\ntype ModifierArgs = ModifierSignature[\"Args\"][\"Named\"];\n\ninterface ReferenceSignature {\n Element: HTMLElement | SVGElement;\n}\n\nexport interface Signature {\n Args: {\n /**\n * Additional middleware to pass to FloatingUI.\n *\n * See: [The middleware docs](https://floating-ui.com/docs/middleware)\n */\n middleware?: ModifierArgs[\"middleware\"];\n /**\n * Where to place the floating element relative to its reference element.\n * The default is 'bottom'.\n *\n * See: [The placement docs](https://floating-ui.com/docs/computePosition#placement)\n */\n placement?: ModifierArgs[\"placement\"];\n /**\n * This is the type of CSS position property to use.\n * By default this is 'fixed', but can also be 'absolute'.\n *\n * See: [The strategy docs](https://floating-ui.com/docs/computePosition#strategy)\n */\n strategy?: ModifierArgs[\"strategy\"];\n /**\n * Options to pass to the [flip middleware](https://floating-ui.com/docs/flip)\n */\n flipOptions?: ModifierArgs[\"flipOptions\"];\n /**\n * Options to pass to the [hide middleware](https://floating-ui.com/docs/hide)\n */\n hideOptions?: ModifierArgs[\"hideOptions\"];\n /**\n * Options to pass to the [shift middleware](https://floating-ui.com/docs/shift)\n */\n shiftOptions?: ModifierArgs[\"shiftOptions\"];\n /**\n * Options to pass to the [offset middleware](https://floating-ui.com/docs/offset)\n */\n offsetOptions?: ModifierArgs[\"offsetOptions\"];\n };\n Blocks: {\n default: [\n /**\n * A modifier to apply to the _reference_ element.\n * This is what the floating element will use to anchor to.\n *\n * Example\n * ```gjs\n * import { FloatingUI } from 'ember-primitives/floating-ui';\n *\n * <template>\n * <FloatingUI as |reference floating|>\n * <button {{reference}}> ... </button>\n * ...\n * </FloatingUI>\n * </template>\n * ```\n */\n reference: ModifierLike<ReferenceSignature>,\n /**\n * A modifier to apply to the _floating_ element.\n * This is what will anchor to the reference element.\n *\n * Example\n * ```gjs\n * import { FloatingUI } from 'ember-primitives/floating-ui';\n *\n * <template>\n * <FloatingUI as |reference floating|>\n * <button {{reference}}> ... </button>\n * <menu {{floating}}> ... </menu>\n * </FloatingUI>\n * </template>\n * ```\n */\n floating:\n | undefined\n | ModifierLike<{\n Element: HTMLElement;\n Args: {\n Named: ModifierArgs;\n };\n }>,\n /**\n * Special utilities for advanced usage\n */\n util: {\n /**\n * If you want to have a single modifier with custom behavior\n * on your reference element, you may use this `setReference`\n * function to set the reference, rather than having multiple modifiers\n * on that element.\n */\n setReference: (element: HTMLElement | SVGElement) => void;\n /**\n * Metadata exposed from floating-ui.\n * Gives you x, y position, among other things.\n */\n data?: MiddlewareState;\n },\n ];\n };\n}\n\nconst ref = eModifier<{\n Element: HTMLElement | SVGElement;\n Args: {\n Positional: [setRef: (element: HTMLElement | SVGElement) => void];\n };\n}>((element: HTMLElement | SVGElement, positional) => {\n const fn = positional[0];\n\n fn(element);\n});\n\n/**\n * A component that provides no DOM and yields two modifiers for creating\n * creating floating uis, such as menus, popovers, tooltips, etc.\n * This component currently uses [Floating UI](https://floating-ui.com/)\n * but will be switching to [CSS Anchor Positioning](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_anchor_positioning) when that lands.\n *\n * Example usage:\n * ```gjs\n * import { FloatingUI } from 'ember-primitives/floating-ui';\n *\n * <template>\n * <FloatingUI as |reference floating|>\n * <button {{reference}}> ... </button>\n * <menu {{floating}}> ... </menu>\n * </FloatingUI>\n * </template>\n * ```\n */\nexport class FloatingUI extends Component<Signature> {\n @tracked reference?: HTMLElement | SVGElement = undefined;\n @tracked data?: MiddlewareState = undefined;\n\n setData: ModifierArgs[\"setData\"] = (data) => (this.data = data);\n\n setReference = (element: HTMLElement | SVGElement) => {\n this.reference = element;\n };\n\n <template>\n {{#let\n (modifier\n anchorTo\n flipOptions=@flipOptions\n hideOptions=@hideOptions\n middleware=@middleware\n offsetOptions=@offsetOptions\n placement=@placement\n shiftOptions=@shiftOptions\n strategy=@strategy\n setData=this.setData\n )\n as |prewiredAnchorTo|\n }}\n {{#let (if this.reference (modifier prewiredAnchorTo this.reference)) as |floating|}}\n {{! @glint-nocheck -- Excessively deep, possibly infinite }}\n {{yield\n (modifier ref this.setReference)\n floating\n (hash setReference=this.setReference data=this.data)\n }}\n {{/let}}\n {{/let}}\n </template>\n}\n"],"names":["exposeMetadata","name","fn","data","anchorTo","eModifier","floatingElement","_referenceElement","strategy","offsetOptions","placement","flipOptions","shiftOptions","middleware","setData","referenceElement","document","querySelector","assert","HTMLElement","SVGElement","Array","isArray","Object","assign","style","position","top","left","update","middlewareData","x","y","computePosition","offset","flip","shift","hide","referenceHidden","margin","visibility","cleanup","autoUpdate","ref","element","positional","FloatingUI","Component","g","prototype","tracked","undefined","i","setReference","reference","setComponentTemplate","precompileTemplate","strictMode","scope","hash"],"mappings":"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"}
|