@sprucelabs/spruce-heartwood-utils 38.17.7 → 38.17.8
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/README.md
CHANGED
|
@@ -59,7 +59,6 @@ import {
|
|
|
59
59
|
AutoLogoutPlugin,
|
|
60
60
|
loadActiveThemeForOrg,
|
|
61
61
|
Sizer,
|
|
62
|
-
SimpleEmitter,
|
|
63
62
|
} from '@sprucelabs/spruce-heartwood-utils/web'
|
|
64
63
|
```
|
|
65
64
|
|
|
@@ -675,7 +674,6 @@ import {
|
|
|
675
674
|
// Utilities
|
|
676
675
|
sizeUtil, Settings,
|
|
677
676
|
// Emitter — pass to Sizer and DelayedPlacer to coordinate layout events
|
|
678
|
-
SimpleEmitter,
|
|
679
677
|
// Types
|
|
680
678
|
AnimationEmitter,
|
|
681
679
|
SizerProps,
|
|
@@ -773,15 +771,15 @@ Pass the **same emitter instance** to `Sizer` and `DelayedPlacer` when they are
|
|
|
773
771
|
|
|
774
772
|
### AnimationEmitter
|
|
775
773
|
|
|
776
|
-
The interface `Sizer` and `DelayedPlacer` use to communicate layout-change events. Pass an instance as the `emitter` prop to coordinate components. The package exports `
|
|
774
|
+
The interface `Sizer` and `DelayedPlacer` use to communicate layout-change events. Pass an instance as the `emitter` prop to coordinate components. The package exports `SkillViewEmitter` for this:
|
|
777
775
|
|
|
778
776
|
```ts
|
|
779
|
-
import {
|
|
777
|
+
import { SkillViewEmitter } from '@sprucelabs/spruce-heartwood-utils/web'
|
|
780
778
|
|
|
781
|
-
const emitter =
|
|
779
|
+
const emitter = SkillViewEmitter.getInstance()
|
|
782
780
|
```
|
|
783
781
|
|
|
784
|
-
`
|
|
782
|
+
`SkillViewEmitter` implements all three methods (`on`, `off`, `emit`) needed by `AnimationEmitter`.
|
|
785
783
|
|
|
786
784
|
The `AnimationEmitter` interface, for reference:
|
|
787
785
|
|
|
@@ -804,9 +802,9 @@ interface AnimationEmitter {
|
|
|
804
802
|
2. **Create an emitter** — one per component tree, stable across renders:
|
|
805
803
|
|
|
806
804
|
```ts
|
|
807
|
-
import {
|
|
805
|
+
import { SkillViewEmitter } from '@sprucelabs/spruce-heartwood-utils/web'
|
|
808
806
|
|
|
809
|
-
const emitter = useMemo(() =>
|
|
807
|
+
const emitter = useMemo(() => SkillViewEmitter.getInstance(), [])
|
|
810
808
|
```
|
|
811
809
|
|
|
812
810
|
3. **Wire to components and emit events** — pass the emitter to `Sizer` and/or `DelayedPlacer`, then signal layout changes:
|
|
@@ -1074,9 +1072,9 @@ Wraps children in a div whose `height` is set via inline style to match the meas
|
|
|
1074
1072
|
2. **Wrap your content** — `shouldHideOverflow` clips children during the height transition:
|
|
1075
1073
|
|
|
1076
1074
|
```tsx
|
|
1077
|
-
import { Sizer
|
|
1075
|
+
import { Sizer } from '@sprucelabs/spruce-heartwood-utils/web'
|
|
1078
1076
|
|
|
1079
|
-
const emitter = useMemo(() =>
|
|
1077
|
+
const emitter = useMemo(() => SkillViewEmitter.getInstance(), [])
|
|
1080
1078
|
|
|
1081
1079
|
<Sizer emitter={emitter} shouldHideOverflow>
|
|
1082
1080
|
<YourContent />
|
|
@@ -1142,7 +1140,7 @@ sizer.current?.hideOverflow(): void // re-apply overflow: hidden
|
|
|
1142
1140
|
#### Usage
|
|
1143
1141
|
|
|
1144
1142
|
```tsx
|
|
1145
|
-
import { Sizer
|
|
1143
|
+
import { Sizer } from '@sprucelabs/spruce-heartwood-utils/web'
|
|
1146
1144
|
|
|
1147
1145
|
// Simplest — just clip overflow during height transition:
|
|
1148
1146
|
<Sizer shouldHideOverflow>
|
|
@@ -1155,7 +1153,7 @@ import { Sizer, SimpleEmitter } from '@sprucelabs/spruce-heartwood-utils/web'
|
|
|
1155
1153
|
</Sizer>
|
|
1156
1154
|
|
|
1157
1155
|
// Manually trigger resize when content changes outside React state:
|
|
1158
|
-
const emitter = useMemo(() =>
|
|
1156
|
+
const emitter = useMemo(() => SkillViewEmitter.getInstance(), [])
|
|
1159
1157
|
const sizer = useRef<React.ElementRef<typeof Sizer>>(null)
|
|
1160
1158
|
|
|
1161
1159
|
<Sizer shouldHideOverflow ref={sizer} emitter={emitter}>
|
|
@@ -1204,9 +1202,9 @@ When `isEnabled={false}`, children render inline with no wrapper.
|
|
|
1204
1202
|
2. **Wrap your content** — `isEnabled`, `className`, and `isFocused` are all required:
|
|
1205
1203
|
|
|
1206
1204
|
```tsx
|
|
1207
|
-
import { DelayedPlacer
|
|
1205
|
+
import { DelayedPlacer } from '@sprucelabs/spruce-heartwood-utils/web'
|
|
1208
1206
|
|
|
1209
|
-
const emitter = useMemo(() =>
|
|
1207
|
+
const emitter = useMemo(() => SkillViewEmitter.getInstance(), [])
|
|
1210
1208
|
|
|
1211
1209
|
<DelayedPlacer
|
|
1212
1210
|
className="placer__card"
|
|
@@ -1274,11 +1272,11 @@ delayedPlacer.current?.placeRightAway(): void // re-measure and re-place immedi
|
|
|
1274
1272
|
|
|
1275
1273
|
```tsx
|
|
1276
1274
|
import React, { useRef, useMemo } from 'react'
|
|
1277
|
-
import { DelayedPlacer
|
|
1275
|
+
import { DelayedPlacer } from '@sprucelabs/spruce-heartwood-utils/web'
|
|
1278
1276
|
|
|
1279
1277
|
function YourPanel({ isFocused }: { isFocused: () => boolean }) {
|
|
1280
1278
|
const placerRef = useRef<React.ElementRef<typeof DelayedPlacer>>(null)
|
|
1281
|
-
const emitter = useMemo(() =>
|
|
1279
|
+
const emitter = useMemo(() => SkillViewEmitter.getInstance(), [])
|
|
1282
1280
|
|
|
1283
1281
|
return (
|
|
1284
1282
|
<DelayedPlacer
|
|
@@ -1365,11 +1363,11 @@ A complete example showing all three systems working together in a card componen
|
|
|
1365
1363
|
```tsx
|
|
1366
1364
|
import React, { useMemo } from 'react'
|
|
1367
1365
|
import {
|
|
1368
|
-
Sizer, DelayedPlacer, queueShow, Settings,
|
|
1366
|
+
Sizer, DelayedPlacer, queueShow, Settings,
|
|
1369
1367
|
} from '@sprucelabs/spruce-heartwood-utils/web'
|
|
1370
1368
|
|
|
1371
1369
|
function YourCard({ isPlaced, isFocused }: { isPlaced: boolean; isFocused: () => boolean }) {
|
|
1372
|
-
const emitter = useMemo(() =>
|
|
1370
|
+
const emitter = useMemo(() => SkillViewEmitter.getInstance(), [])
|
|
1373
1371
|
|
|
1374
1372
|
return (
|
|
1375
1373
|
<DelayedPlacer
|
|
@@ -6,4 +6,3 @@ export type { DelayedPlacerProps } from './DelayedPlacerExport';
|
|
|
6
6
|
export { default as sizeUtil } from '../calendars/utils/size.utility';
|
|
7
7
|
export { default as Settings } from '../Settings';
|
|
8
8
|
export type { AnimationEmitter } from './types';
|
|
9
|
-
export { default as SimpleEmitter } from './SimpleEmitter';
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.Settings = exports.sizeUtil = exports.DelayedPlacer = exports.Sizer = exports.stopQueue = exports.clearPendingShowAndQueueHide = exports.clearPendingHideAndQueueShow = exports.callbackImmediately = exports.queueCallback = exports.queueHide = exports.queueShow = exports.hideRightAway = exports.showRightAway = exports.useShowNow = exports.useQueueShow = void 0;
|
|
7
7
|
// Queue system — all functions and hooks
|
|
8
8
|
var queueShow_1 = require("../../hooks/queueShow");
|
|
9
9
|
Object.defineProperty(exports, "useQueueShow", { enumerable: true, get: function () { return queueShow_1.useQueueShow; } });
|
|
@@ -27,6 +27,4 @@ var size_utility_1 = require("../calendars/utils/size.utility");
|
|
|
27
27
|
Object.defineProperty(exports, "sizeUtil", { enumerable: true, get: function () { return __importDefault(size_utility_1).default; } });
|
|
28
28
|
var Settings_1 = require("../Settings");
|
|
29
29
|
Object.defineProperty(exports, "Settings", { enumerable: true, get: function () { return __importDefault(Settings_1).default; } });
|
|
30
|
-
var SimpleEmitter_1 = require("./SimpleEmitter");
|
|
31
|
-
Object.defineProperty(exports, "SimpleEmitter", { enumerable: true, get: function () { return __importDefault(SimpleEmitter_1).default; } });
|
|
32
30
|
//# sourceMappingURL=index.js.map
|
|
@@ -6,4 +6,3 @@ export type { DelayedPlacerProps } from './DelayedPlacerExport';
|
|
|
6
6
|
export { default as sizeUtil } from '../calendars/utils/size.utility';
|
|
7
7
|
export { default as Settings } from '../Settings';
|
|
8
8
|
export type { AnimationEmitter } from './types';
|
|
9
|
-
export { default as SimpleEmitter } from './SimpleEmitter';
|
|
@@ -6,4 +6,3 @@ export { default as DelayedPlacer } from './DelayedPlacerExport.js';
|
|
|
6
6
|
// Utilities (useful for consumers who want to measure DOM nodes)
|
|
7
7
|
export { default as sizeUtil } from '../calendars/utils/size.utility.js';
|
|
8
8
|
export { default as Settings } from '../Settings.js';
|
|
9
|
-
export { default as SimpleEmitter } from './SimpleEmitter.js';
|