@threadlabs/looma 0.2.8 → 0.2.10
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/{chunk-3HMMDK27.js → chunk-7DFU2ZEC.js} +1 -0
- package/dist/{chunk-3K45IWIJ.js → chunk-A5MSXQ7Y.js} +28 -10
- package/dist/declarative.cjs +1 -0
- package/dist/declarative.js +1 -1
- package/dist/index.cjs +29 -10
- package/dist/index.js +2 -2
- package/dist/loader.cjs +29 -10
- package/dist/loader.js +2 -2
- package/package.json +1 -1
- package/vue/{chunk-5OS45GWE.js → chunk-KQTGO5WQ.js} +17 -1
- package/vue/editor/index.js +1 -1
- package/vue/index.js +1 -1
|
@@ -2436,6 +2436,7 @@ ${o}
|
|
|
2436
2436
|
m.push(...h), f += h.length;
|
|
2437
2437
|
}
|
|
2438
2438
|
if (d) {
|
|
2439
|
+
m = m.flatMap((p) => p.nodeType === 11 ? Array.from(p.childNodes) : [p]);
|
|
2439
2440
|
for (let p = 0; p < m.length; p += 1) {
|
|
2440
2441
|
let h = m[p];
|
|
2441
2442
|
u.childNodes[p] !== h && u.insertBefore(h, u.childNodes[p] ?? null);
|
|
@@ -139,8 +139,8 @@ function toInitials(value) {
|
|
|
139
139
|
function controller3(host) {
|
|
140
140
|
const img = host.element.querySelector("img");
|
|
141
141
|
const fallback = host.element.querySelector(".fallback");
|
|
142
|
-
let hasImage = false;
|
|
143
142
|
const apply = () => {
|
|
143
|
+
const hasImage = host.state.hasImage;
|
|
144
144
|
const label = host.state.alt || host.state.name || "Avatar";
|
|
145
145
|
host.element.setAttribute("role", "img");
|
|
146
146
|
host.element.setAttribute("aria-label", label);
|
|
@@ -159,12 +159,10 @@ function controller3(host) {
|
|
|
159
159
|
else host.element.removeAttribute("data-has-image");
|
|
160
160
|
};
|
|
161
161
|
const onLoad = () => {
|
|
162
|
-
hasImage = true;
|
|
163
|
-
apply();
|
|
162
|
+
host.state.hasImage = true;
|
|
164
163
|
};
|
|
165
164
|
const onError = () => {
|
|
166
|
-
hasImage = false;
|
|
167
|
-
apply();
|
|
165
|
+
host.state.hasImage = false;
|
|
168
166
|
};
|
|
169
167
|
img?.addEventListener("load", onLoad);
|
|
170
168
|
img?.addEventListener("error", onError);
|
|
@@ -2020,13 +2018,18 @@ function controller19(host) {
|
|
|
2020
2018
|
const status = host.element.querySelector(".search-shell__status");
|
|
2021
2019
|
const footer = host.element.querySelector(".search-shell__footer");
|
|
2022
2020
|
const syncSlots = () => {
|
|
2023
|
-
|
|
2024
|
-
|
|
2021
|
+
const hasStatus = Boolean(status && hasContent2(status));
|
|
2022
|
+
const hasFooter = Boolean(footer && hasContent2(footer));
|
|
2023
|
+
host.state.hasStatus = hasStatus;
|
|
2024
|
+
host.state.hasFooter = hasFooter;
|
|
2025
|
+
if (status) status.hidden = !hasStatus;
|
|
2026
|
+
if (footer) footer.hidden = !hasFooter;
|
|
2025
2027
|
};
|
|
2026
2028
|
const observer = new MutationObserver(syncSlots);
|
|
2027
2029
|
if (status) observer.observe(status, { childList: true, subtree: true });
|
|
2028
2030
|
if (footer) observer.observe(footer, { childList: true, subtree: true });
|
|
2029
2031
|
syncSlots();
|
|
2032
|
+
queueMicrotask(syncSlots);
|
|
2030
2033
|
return () => observer.disconnect();
|
|
2031
2034
|
}
|
|
2032
2035
|
|
|
@@ -2467,13 +2470,24 @@ function hasContent3(region) {
|
|
|
2467
2470
|
return [...region.childNodes].some((node) => node.nodeType !== 3 || Boolean(node.textContent?.trim()));
|
|
2468
2471
|
}
|
|
2469
2472
|
function controller26(host) {
|
|
2470
|
-
const regions =
|
|
2473
|
+
const regions = {
|
|
2474
|
+
hasLeading: host.element.querySelector(".top-bar__leading"),
|
|
2475
|
+
hasSearch: host.element.querySelector(".top-bar__search"),
|
|
2476
|
+
hasActions: host.element.querySelector(".top-bar__actions")
|
|
2477
|
+
};
|
|
2471
2478
|
const syncSlots = () => {
|
|
2472
|
-
for (const region of regions)
|
|
2479
|
+
for (const [state, region] of Object.entries(regions)) {
|
|
2480
|
+
const present = Boolean(region && hasContent3(region));
|
|
2481
|
+
host.state[state] = present;
|
|
2482
|
+
if (region) region.hidden = !present;
|
|
2483
|
+
}
|
|
2473
2484
|
};
|
|
2474
2485
|
const observer = new MutationObserver(syncSlots);
|
|
2475
|
-
for (const region of regions)
|
|
2486
|
+
for (const region of Object.values(regions)) {
|
|
2487
|
+
if (region) observer.observe(region, { childList: true, subtree: true });
|
|
2488
|
+
}
|
|
2476
2489
|
syncSlots();
|
|
2490
|
+
queueMicrotask(syncSlots);
|
|
2477
2491
|
return () => observer.disconnect();
|
|
2478
2492
|
}
|
|
2479
2493
|
|
|
@@ -4431,6 +4445,10 @@ button:disabled,
|
|
|
4431
4445
|
pointer-events: none;
|
|
4432
4446
|
}
|
|
4433
4447
|
|
|
4448
|
+
:scope[hidden] {
|
|
4449
|
+
display: none;
|
|
4450
|
+
}
|
|
4451
|
+
|
|
4434
4452
|
:scope[popover] {
|
|
4435
4453
|
right: auto;
|
|
4436
4454
|
bottom: auto;
|
package/dist/declarative.cjs
CHANGED
|
@@ -2464,6 +2464,7 @@ ${o}
|
|
|
2464
2464
|
m.push(...h), f += h.length;
|
|
2465
2465
|
}
|
|
2466
2466
|
if (d) {
|
|
2467
|
+
m = m.flatMap((p) => p.nodeType === 11 ? Array.from(p.childNodes) : [p]);
|
|
2467
2468
|
for (let p = 0; p < m.length; p += 1) {
|
|
2468
2469
|
let h = m[p];
|
|
2469
2470
|
u.childNodes[p] !== h && u.insertBefore(h, u.childNodes[p] ?? null);
|
package/dist/declarative.js
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -184,8 +184,8 @@ function toInitials(value) {
|
|
|
184
184
|
function controller3(host) {
|
|
185
185
|
const img = host.element.querySelector("img");
|
|
186
186
|
const fallback = host.element.querySelector(".fallback");
|
|
187
|
-
let hasImage = false;
|
|
188
187
|
const apply = () => {
|
|
188
|
+
const hasImage = host.state.hasImage;
|
|
189
189
|
const label = host.state.alt || host.state.name || "Avatar";
|
|
190
190
|
host.element.setAttribute("role", "img");
|
|
191
191
|
host.element.setAttribute("aria-label", label);
|
|
@@ -204,12 +204,10 @@ function controller3(host) {
|
|
|
204
204
|
else host.element.removeAttribute("data-has-image");
|
|
205
205
|
};
|
|
206
206
|
const onLoad = () => {
|
|
207
|
-
hasImage = true;
|
|
208
|
-
apply();
|
|
207
|
+
host.state.hasImage = true;
|
|
209
208
|
};
|
|
210
209
|
const onError = () => {
|
|
211
|
-
hasImage = false;
|
|
212
|
-
apply();
|
|
210
|
+
host.state.hasImage = false;
|
|
213
211
|
};
|
|
214
212
|
img?.addEventListener("load", onLoad);
|
|
215
213
|
img?.addEventListener("error", onError);
|
|
@@ -2065,13 +2063,18 @@ function controller19(host) {
|
|
|
2065
2063
|
const status = host.element.querySelector(".search-shell__status");
|
|
2066
2064
|
const footer = host.element.querySelector(".search-shell__footer");
|
|
2067
2065
|
const syncSlots = () => {
|
|
2068
|
-
|
|
2069
|
-
|
|
2066
|
+
const hasStatus = Boolean(status && hasContent2(status));
|
|
2067
|
+
const hasFooter = Boolean(footer && hasContent2(footer));
|
|
2068
|
+
host.state.hasStatus = hasStatus;
|
|
2069
|
+
host.state.hasFooter = hasFooter;
|
|
2070
|
+
if (status) status.hidden = !hasStatus;
|
|
2071
|
+
if (footer) footer.hidden = !hasFooter;
|
|
2070
2072
|
};
|
|
2071
2073
|
const observer = new MutationObserver(syncSlots);
|
|
2072
2074
|
if (status) observer.observe(status, { childList: true, subtree: true });
|
|
2073
2075
|
if (footer) observer.observe(footer, { childList: true, subtree: true });
|
|
2074
2076
|
syncSlots();
|
|
2077
|
+
queueMicrotask(syncSlots);
|
|
2075
2078
|
return () => observer.disconnect();
|
|
2076
2079
|
}
|
|
2077
2080
|
|
|
@@ -2512,13 +2515,24 @@ function hasContent3(region) {
|
|
|
2512
2515
|
return [...region.childNodes].some((node) => node.nodeType !== 3 || Boolean(node.textContent?.trim()));
|
|
2513
2516
|
}
|
|
2514
2517
|
function controller26(host) {
|
|
2515
|
-
const regions =
|
|
2518
|
+
const regions = {
|
|
2519
|
+
hasLeading: host.element.querySelector(".top-bar__leading"),
|
|
2520
|
+
hasSearch: host.element.querySelector(".top-bar__search"),
|
|
2521
|
+
hasActions: host.element.querySelector(".top-bar__actions")
|
|
2522
|
+
};
|
|
2516
2523
|
const syncSlots = () => {
|
|
2517
|
-
for (const region of regions)
|
|
2524
|
+
for (const [state2, region] of Object.entries(regions)) {
|
|
2525
|
+
const present = Boolean(region && hasContent3(region));
|
|
2526
|
+
host.state[state2] = present;
|
|
2527
|
+
if (region) region.hidden = !present;
|
|
2528
|
+
}
|
|
2518
2529
|
};
|
|
2519
2530
|
const observer = new MutationObserver(syncSlots);
|
|
2520
|
-
for (const region of regions)
|
|
2531
|
+
for (const region of Object.values(regions)) {
|
|
2532
|
+
if (region) observer.observe(region, { childList: true, subtree: true });
|
|
2533
|
+
}
|
|
2521
2534
|
syncSlots();
|
|
2535
|
+
queueMicrotask(syncSlots);
|
|
2522
2536
|
return () => observer.disconnect();
|
|
2523
2537
|
}
|
|
2524
2538
|
|
|
@@ -4476,6 +4490,10 @@ button:disabled,
|
|
|
4476
4490
|
pointer-events: none;
|
|
4477
4491
|
}
|
|
4478
4492
|
|
|
4493
|
+
:scope[hidden] {
|
|
4494
|
+
display: none;
|
|
4495
|
+
}
|
|
4496
|
+
|
|
4479
4497
|
:scope[popover] {
|
|
4480
4498
|
right: auto;
|
|
4481
4499
|
bottom: auto;
|
|
@@ -7210,6 +7228,7 @@ ${o}
|
|
|
7210
7228
|
m.push(...h), f += h.length;
|
|
7211
7229
|
}
|
|
7212
7230
|
if (d) {
|
|
7231
|
+
m = m.flatMap((p) => p.nodeType === 11 ? Array.from(p.childNodes) : [p]);
|
|
7213
7232
|
for (let p = 0; p < m.length; p += 1) {
|
|
7214
7233
|
let h = m[p];
|
|
7215
7234
|
u.childNodes[p] !== h && u.insertBefore(h, u.childNodes[p] ?? null);
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
records,
|
|
3
3
|
styles
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-A5MSXQ7Y.js";
|
|
5
5
|
import {
|
|
6
6
|
attachLoomaComponent,
|
|
7
7
|
controllerFor,
|
|
8
8
|
manageComponentLifecycle,
|
|
9
9
|
registerLoomaPackage
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-7DFU2ZEC.js";
|
|
11
11
|
import "./chunk-MLKGABMK.js";
|
|
12
12
|
|
|
13
13
|
// src/input-modality.ts
|
package/dist/loader.cjs
CHANGED
|
@@ -160,8 +160,8 @@ function toInitials(value) {
|
|
|
160
160
|
function controller3(host) {
|
|
161
161
|
const img = host.element.querySelector("img");
|
|
162
162
|
const fallback = host.element.querySelector(".fallback");
|
|
163
|
-
let hasImage = false;
|
|
164
163
|
const apply = () => {
|
|
164
|
+
const hasImage = host.state.hasImage;
|
|
165
165
|
const label = host.state.alt || host.state.name || "Avatar";
|
|
166
166
|
host.element.setAttribute("role", "img");
|
|
167
167
|
host.element.setAttribute("aria-label", label);
|
|
@@ -180,12 +180,10 @@ function controller3(host) {
|
|
|
180
180
|
else host.element.removeAttribute("data-has-image");
|
|
181
181
|
};
|
|
182
182
|
const onLoad = () => {
|
|
183
|
-
hasImage = true;
|
|
184
|
-
apply();
|
|
183
|
+
host.state.hasImage = true;
|
|
185
184
|
};
|
|
186
185
|
const onError = () => {
|
|
187
|
-
hasImage = false;
|
|
188
|
-
apply();
|
|
186
|
+
host.state.hasImage = false;
|
|
189
187
|
};
|
|
190
188
|
img?.addEventListener("load", onLoad);
|
|
191
189
|
img?.addEventListener("error", onError);
|
|
@@ -2041,13 +2039,18 @@ function controller19(host) {
|
|
|
2041
2039
|
const status = host.element.querySelector(".search-shell__status");
|
|
2042
2040
|
const footer = host.element.querySelector(".search-shell__footer");
|
|
2043
2041
|
const syncSlots = () => {
|
|
2044
|
-
|
|
2045
|
-
|
|
2042
|
+
const hasStatus = Boolean(status && hasContent2(status));
|
|
2043
|
+
const hasFooter = Boolean(footer && hasContent2(footer));
|
|
2044
|
+
host.state.hasStatus = hasStatus;
|
|
2045
|
+
host.state.hasFooter = hasFooter;
|
|
2046
|
+
if (status) status.hidden = !hasStatus;
|
|
2047
|
+
if (footer) footer.hidden = !hasFooter;
|
|
2046
2048
|
};
|
|
2047
2049
|
const observer = new MutationObserver(syncSlots);
|
|
2048
2050
|
if (status) observer.observe(status, { childList: true, subtree: true });
|
|
2049
2051
|
if (footer) observer.observe(footer, { childList: true, subtree: true });
|
|
2050
2052
|
syncSlots();
|
|
2053
|
+
queueMicrotask(syncSlots);
|
|
2051
2054
|
return () => observer.disconnect();
|
|
2052
2055
|
}
|
|
2053
2056
|
|
|
@@ -2488,13 +2491,24 @@ function hasContent3(region) {
|
|
|
2488
2491
|
return [...region.childNodes].some((node) => node.nodeType !== 3 || Boolean(node.textContent?.trim()));
|
|
2489
2492
|
}
|
|
2490
2493
|
function controller26(host) {
|
|
2491
|
-
const regions =
|
|
2494
|
+
const regions = {
|
|
2495
|
+
hasLeading: host.element.querySelector(".top-bar__leading"),
|
|
2496
|
+
hasSearch: host.element.querySelector(".top-bar__search"),
|
|
2497
|
+
hasActions: host.element.querySelector(".top-bar__actions")
|
|
2498
|
+
};
|
|
2492
2499
|
const syncSlots = () => {
|
|
2493
|
-
for (const region of regions)
|
|
2500
|
+
for (const [state2, region] of Object.entries(regions)) {
|
|
2501
|
+
const present = Boolean(region && hasContent3(region));
|
|
2502
|
+
host.state[state2] = present;
|
|
2503
|
+
if (region) region.hidden = !present;
|
|
2504
|
+
}
|
|
2494
2505
|
};
|
|
2495
2506
|
const observer = new MutationObserver(syncSlots);
|
|
2496
|
-
for (const region of regions)
|
|
2507
|
+
for (const region of Object.values(regions)) {
|
|
2508
|
+
if (region) observer.observe(region, { childList: true, subtree: true });
|
|
2509
|
+
}
|
|
2497
2510
|
syncSlots();
|
|
2511
|
+
queueMicrotask(syncSlots);
|
|
2498
2512
|
return () => observer.disconnect();
|
|
2499
2513
|
}
|
|
2500
2514
|
|
|
@@ -4452,6 +4466,10 @@ button:disabled,
|
|
|
4452
4466
|
pointer-events: none;
|
|
4453
4467
|
}
|
|
4454
4468
|
|
|
4469
|
+
:scope[hidden] {
|
|
4470
|
+
display: none;
|
|
4471
|
+
}
|
|
4472
|
+
|
|
4455
4473
|
:scope[popover] {
|
|
4456
4474
|
right: auto;
|
|
4457
4475
|
bottom: auto;
|
|
@@ -7186,6 +7204,7 @@ ${o}
|
|
|
7186
7204
|
m.push(...h), f += h.length;
|
|
7187
7205
|
}
|
|
7188
7206
|
if (d) {
|
|
7207
|
+
m = m.flatMap((p) => p.nodeType === 11 ? Array.from(p.childNodes) : [p]);
|
|
7189
7208
|
for (let p = 0; p < m.length; p += 1) {
|
|
7190
7209
|
let h = m[p];
|
|
7191
7210
|
u.childNodes[p] !== h && u.insertBefore(h, u.childNodes[p] ?? null);
|
package/dist/loader.js
CHANGED
package/package.json
CHANGED
|
@@ -4,11 +4,24 @@ import "@threadlabs/looma/core";
|
|
|
4
4
|
|
|
5
5
|
// src/adapter.ts
|
|
6
6
|
import {
|
|
7
|
+
cloneVNode,
|
|
7
8
|
defineComponent,
|
|
9
|
+
Fragment,
|
|
8
10
|
h,
|
|
11
|
+
isVNode,
|
|
9
12
|
shallowRef,
|
|
10
13
|
watchEffect
|
|
11
14
|
} from "vue";
|
|
15
|
+
function assignNamedSlot(value, slotName) {
|
|
16
|
+
if (Array.isArray(value)) return value.map((child) => assignNamedSlot(child, slotName));
|
|
17
|
+
if (!isVNode(value)) return value;
|
|
18
|
+
if (value.type === Fragment && Array.isArray(value.children)) {
|
|
19
|
+
const fragment = cloneVNode(value);
|
|
20
|
+
fragment.children = value.children.map((child) => assignNamedSlot(child, slotName));
|
|
21
|
+
return fragment;
|
|
22
|
+
}
|
|
23
|
+
return cloneVNode(value, { slot: slotName });
|
|
24
|
+
}
|
|
12
25
|
var BASE_EVENT_BINDINGS = [
|
|
13
26
|
["open", "onOpen"],
|
|
14
27
|
["close", "onClose"],
|
|
@@ -68,7 +81,10 @@ function createAdapterComponent(component, displayName, additionalEventBindings
|
|
|
68
81
|
)
|
|
69
82
|
);
|
|
70
83
|
const componentSlots = Object.fromEntries(
|
|
71
|
-
Object.entries(slots).filter((entry) => Boolean(entry[1])).map(([slotName, slotFn]) => [
|
|
84
|
+
Object.entries(slots).filter((entry) => Boolean(entry[1])).map(([slotName, slotFn]) => [
|
|
85
|
+
slotName,
|
|
86
|
+
() => slotName === "default" ? slotFn() : assignNamedSlot(slotFn(), slotName)
|
|
87
|
+
])
|
|
72
88
|
);
|
|
73
89
|
return h(
|
|
74
90
|
component,
|
package/vue/editor/index.js
CHANGED