peter
fc32188fd2
refactor(chips): share the chip-overflow measure core between the two lanes (S3)
...
ActiveFilterChips (feed applied-filter row) and ChannelTagsControl both
hand-rolled the same single-line chip-fit measurer: a hidden mirror + a
layout-effect + ResizeObserver reading chip right edges, the real rem gap,
the pill width and the lane width. The policy half was already extracted
(decideChipLayout); the DOM-measurement half was still duplicated.
Promote that half to useChipOverflowFit(rowRef, chipsRef, pillRef, deps,
decide, initial): it owns the effect + observer + initial measure and reads
the common geometry, then hands it to each caller's own policy. The feed
row layers its leading label + trailing "Clear all" reservation on top and
keeps decideChipLayout; the tag cell's chips-only policy is extracted as
fitChipsWithPill (pure, unit-tested) alongside it. Add a jsdom test for the
hook (stubbed offsets, re-measure on deps). Behaviour unchanged — verified
in the browser: feed all/count modes + popover, tag "+N" fit + hover reveal.
2026-08-23 23:22:52 +02:00
..
2026-07-21 02:26:40 +02:00
2026-08-11 04:04:06 +02:00
2026-08-11 04:04:06 +02:00
2026-08-19 01:13:40 +02:00
2026-08-15 04:45:32 +02:00
2026-08-15 04:45:32 +02:00
2026-08-23 23:22:52 +02:00
2026-08-09 17:43:42 +02:00
2026-08-21 19:13:38 +02:00
2026-08-21 08:11:18 +02:00
2026-08-21 05:43:36 +02:00
2026-08-09 03:18:04 +02:00
2026-08-09 03:18:04 +02:00
2026-06-12 18:01:43 +02:00
2026-08-08 09:28:23 +02:00
2026-08-11 04:20:10 +02:00
2026-08-20 08:50:47 +02:00
2026-08-23 21:59:58 +02:00
2026-08-08 00:50:05 +02:00
2026-08-15 06:38:19 +02:00
2026-08-15 07:20:18 +02:00
2026-08-21 19:13:38 +02:00
2026-07-21 02:26:40 +02:00
2026-08-15 05:28:59 +02:00
2026-08-22 03:48:23 +02:00
2026-08-21 17:01:41 +02:00
2026-08-18 05:01:27 +02:00
2026-08-14 04:01:38 +02:00
2026-08-14 03:50:43 +02:00
2026-08-15 04:45:32 +02:00
2026-08-15 04:09:30 +02:00
2026-08-23 23:22:52 +02:00
2026-08-08 09:28:23 +02:00
2026-08-11 04:04:06 +02:00
2026-08-13 23:24:59 +02:00
2026-08-22 06:33:48 +02:00
2026-08-22 07:56:05 +02:00
2026-08-09 17:43:42 +02:00
2026-08-11 04:20:10 +02:00
2026-08-15 01:37:05 +02:00
2026-08-15 05:31:55 +02:00
2026-08-15 05:28:59 +02:00
2026-08-22 06:55:16 +02:00
2026-06-19 11:18:20 +02:00
2026-08-19 21:14:49 +02:00
2026-07-27 22:10:03 +02:00
2026-08-21 19:13:38 +02:00
2026-08-11 04:04:06 +02:00
2026-08-19 21:14:49 +02:00
2026-08-19 21:14:49 +02:00
2026-07-21 02:26:40 +02:00
2026-08-11 04:04:06 +02:00
2026-08-14 00:49:09 +02:00
2026-08-22 05:42:45 +02:00
2026-08-23 23:05:24 +02:00
2026-08-23 23:05:24 +02:00
2026-08-22 03:29:15 +02:00
2026-08-19 03:07:25 +02:00
2026-08-15 00:35:22 +02:00
2026-08-15 01:37:05 +02:00
2026-08-22 06:33:48 +02:00
2026-08-22 01:06:22 +02:00
2026-08-22 01:06:22 +02:00
2026-08-09 03:18:04 +02:00
2026-08-22 18:02:55 +02:00
2026-08-21 22:41:57 +02:00
2026-08-21 20:33:55 +02:00
2026-08-11 04:04:06 +02:00
2026-08-09 03:18:04 +02:00
2026-08-19 21:35:52 +02:00
2026-08-20 05:12:33 +02:00
2026-08-20 03:26:19 +02:00
2026-08-22 06:33:48 +02:00
2026-08-20 05:21:13 +02:00
2026-08-20 05:40:59 +02:00
2026-08-23 02:55:59 +02:00
2026-08-11 03:29:08 +02:00
2026-08-21 19:13:38 +02:00
2026-08-18 05:01:27 +02:00
2026-07-18 19:11:38 +02:00
2026-08-09 17:43:42 +02:00
2026-08-23 08:04:00 +02:00
2026-08-23 06:57:33 +02:00
2026-08-22 01:06:22 +02:00
2026-08-21 22:41:57 +02:00
2026-08-22 05:42:30 +02:00
2026-08-22 05:42:30 +02:00
2026-08-22 19:16:30 +02:00
2026-08-23 21:59:58 +02:00
2026-08-19 05:41:52 +02:00
2026-08-09 03:18:04 +02:00
2026-08-21 21:38:49 +02:00
2026-08-20 05:40:59 +02:00
2026-08-20 05:40:59 +02:00
2026-08-20 05:24:11 +02:00
2026-08-20 00:47:09 +02:00
2026-08-23 04:40:09 +02:00
2026-08-23 21:59:41 +02:00
2026-08-20 20:30:30 +02:00
2026-08-21 03:16:40 +02:00
2026-08-23 18:39:22 +02:00
2026-08-23 18:39:22 +02:00
2026-08-23 04:08:28 +02:00
2026-08-23 04:08:28 +02:00
2026-08-21 08:11:18 +02:00
2026-08-22 08:18:25 +02:00
2026-08-23 18:39:22 +02:00
2026-08-23 21:59:41 +02:00
2026-08-21 00:08:19 +02:00
2026-08-23 21:59:58 +02:00
2026-08-12 00:06:21 +02:00
2026-08-13 03:20:01 +02:00
2026-08-09 17:43:42 +02:00
2026-08-15 01:01:03 +02:00
2026-08-22 19:16:30 +02:00
2026-08-22 18:19:08 +02:00
2026-08-22 18:19:08 +02:00
2026-08-17 22:18:07 +02:00
2026-08-17 22:18:07 +02:00
2026-08-23 02:09:14 +02:00
2026-08-23 04:40:09 +02:00
2026-08-23 04:40:09 +02:00
2026-08-22 18:19:08 +02:00
2026-08-21 03:16:40 +02:00
2026-08-23 02:23:09 +02:00
2026-08-23 02:23:09 +02:00
2026-08-23 03:52:21 +02:00
2026-07-27 22:10:03 +02:00
2026-08-11 02:20:52 +02:00
2026-08-11 04:04:06 +02:00
2026-08-09 01:03:53 +02:00
2026-08-19 01:32:26 +02:00
2026-08-19 01:32:26 +02:00
2026-08-09 03:18:04 +02:00
2026-08-22 04:03:58 +02:00
2026-08-23 23:05:24 +02:00
2026-08-23 23:05:24 +02:00
2026-08-19 21:35:52 +02:00
2026-08-17 22:18:07 +02:00
2026-08-17 21:31:22 +02:00
2026-08-14 22:58:42 +02:00
2026-08-14 22:58:42 +02:00
2026-08-22 04:03:58 +02:00
2026-08-18 03:02:34 +02:00
2026-08-11 04:04:06 +02:00
2026-08-11 04:04:06 +02:00
2026-08-22 06:33:48 +02:00
2026-08-22 06:33:48 +02:00
2026-08-22 01:06:22 +02:00
2026-08-22 01:06:22 +02:00
2026-08-15 01:04:59 +02:00
2026-08-09 17:43:43 +02:00
2026-08-09 17:46:13 +02:00
2026-08-15 01:37:05 +02:00
2026-08-09 17:43:42 +02:00
2026-08-09 03:18:04 +02:00
2026-08-11 02:20:52 +02:00
2026-07-21 02:26:40 +02:00
2026-08-23 01:53:33 +02:00
2026-08-23 01:53:33 +02:00
2026-06-19 11:18:20 +02:00
2026-08-23 21:59:58 +02:00
2026-08-11 04:04:06 +02:00
2026-08-21 19:53:14 +02:00
2026-07-27 22:40:11 +02:00
2026-08-19 01:32:26 +02:00
2026-08-11 04:04:06 +02:00
2026-08-11 04:04:06 +02:00
2026-07-27 22:10:03 +02:00