@teambit/compositions 1.0.994 → 1.0.996

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.
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import type { ComponentModel } from '@teambit/component';
3
- import type { EmptyStateSlot, CompositionsMenuSlot, UsePreviewSandboxSlot } from './compositions.ui.runtime';
3
+ import type { EmptyStateSlot, CompositionsMenuSlot, UsePreviewSandboxSlot, UsePreviewPropsSlot } from './compositions.ui.runtime';
4
4
  import type { Composition } from './composition';
5
5
  import type { ComponentCompositionProps } from './ui/composition-preview';
6
6
  export type MenuBarWidget = {
@@ -11,9 +11,16 @@ export type CompositionsProp = {
11
11
  menuBarWidgets?: CompositionsMenuSlot;
12
12
  emptyState?: EmptyStateSlot;
13
13
  usePreviewSandboxSlot?: UsePreviewSandboxSlot;
14
+ /**
15
+ * per-component resolvers for iframe attributes on the composition preview (`allow`,
16
+ * `referrerPolicy`, ...). Each resolver gets the current `ComponentModel`; results merge
17
+ * with later registrations winning. Default `allow` (`clipboard-write`) lives on
18
+ * `ComponentPreview` and applies when no resolver overrides it.
19
+ */
20
+ usePreviewPropsSlot?: UsePreviewPropsSlot;
14
21
  enableLiveControls?: boolean;
15
22
  };
16
- export declare function Compositions({ menuBarWidgets, emptyState, usePreviewSandboxSlot, enableLiveControls, }: CompositionsProp): import("react/jsx-runtime").JSX.Element;
23
+ export declare function Compositions({ menuBarWidgets, emptyState, usePreviewSandboxSlot, usePreviewPropsSlot, enableLiveControls, }: CompositionsProp): import("react/jsx-runtime").JSX.Element;
17
24
  export type CompositionContentProps = {
18
25
  component: ComponentModel;
19
26
  selected?: Composition;
@@ -19,6 +19,13 @@ function _reactRouterDom() {
19
19
  };
20
20
  return data;
21
21
  }
22
+ function _classnames() {
23
+ const data = _interopRequireDefault(require("classnames"));
24
+ _classnames = function () {
25
+ return data;
26
+ };
27
+ return data;
28
+ }
22
29
  function _lodash() {
23
30
  const data = _interopRequireDefault(require("lodash.head"));
24
31
  _lodash = function () {
@@ -232,9 +239,9 @@ function _useDefaultControlsSchemaResponder() {
232
239
  const _excluded = ["component", "selected", "queryParams", "emptyState", "sandbox"];
233
240
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
234
241
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
235
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
236
242
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
237
243
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
244
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
238
245
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
239
246
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
240
247
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -246,6 +253,7 @@ function Compositions({
246
253
  menuBarWidgets,
247
254
  emptyState,
248
255
  usePreviewSandboxSlot,
256
+ usePreviewPropsSlot,
249
257
  enableLiveControls = true
250
258
  }) {
251
259
  const component = (0, _react().useContext)(_component().ComponentContext);
@@ -263,6 +271,7 @@ function Compositions({
263
271
  (0, _useDefaultControlsSchemaResponder().useDefaultControlsSchemaResponder)(componentIdStr, enableLiveControls);
264
272
  const properties = (0, _docsUiQueries().useDocs)(component.id);
265
273
  const previewSandboxHooks = usePreviewSandboxSlot?.values() ?? [];
274
+ const previewPropsHooks = usePreviewPropsSlot?.values() ?? [];
266
275
  const isMobile = (0, _uiFoundationUiHooks().useIsMobile)();
267
276
  const showSidebar = !isMobile && component.compositions.length > 0;
268
277
  const [isSidebarOpen, setSidebarOpenness] = (0, _react().useState)(showSidebar);
@@ -280,32 +289,55 @@ function Compositions({
280
289
  fullscreen: true
281
290
  });
282
291
  const queryParams = (0, _react().useMemo)(() => _queryString().default.stringify(compositionParams), [compositionParams]);
283
- const [controlsTrayOpen, setControlsTrayOpen] = (0, _react().useState)(false);
292
+
293
+ // Tracks compositions the user has explicitly collapsed. Anything not in
294
+ // this set defaults to expanded, which gives us "auto-open on load" as a
295
+ // pure derivation rather than an effect.
296
+ const [collapsedCompositions, setCollapsedCompositions] = (0, _react().useState)(() => new Set());
284
297
  const [isDraggingTray, setIsDraggingTray] = (0, _react().useState)(false);
285
298
  const trayRef = (0, _react().useRef)(null);
286
- const trayHeightRef = (0, _react().useRef)(260);
299
+ // `null` = auto-size to content (default). Becomes a number once the user
300
+ // drag-resizes — only then do we pin a fixed height.
301
+ const [trayHeight, setTrayHeight] = (0, _react().useState)(null);
287
302
  const {
288
303
  ready,
289
304
  defs,
290
305
  values,
291
306
  onChange
292
307
  } = (0, _compositionsUi2().useLiveControls)();
293
- const onTrayDragStart = (0, _react().useCallback)(e => {
308
+ const onResizeStripMouseDown = (0, _react().useCallback)(e => {
309
+ if (e.button !== 0) return;
294
310
  e.preventDefault();
295
311
  const startY = e.clientY;
296
- const startHeight = trayHeightRef.current;
312
+ // Seed the drag from the tray's current rendered height — handles the
313
+ // initial auto-sized case (where `trayHeight` is still null).
314
+ const startHeight = trayRef.current?.offsetHeight ?? 0;
315
+ const parentEl = trayRef.current?.parentElement;
316
+ const parentHeight = parentEl?.clientHeight ?? window.innerHeight;
317
+ const maxHeight = Math.max(120, parentHeight - 80);
297
318
  setIsDraggingTray(true);
298
319
  document.body.style.cursor = 'ns-resize';
299
320
  document.body.style.userSelect = 'none';
321
+ // Mutate the tray's inline height directly and rAF-throttle, so dragging
322
+ // doesn't re-render the whole compositions tree (including the iframe)
323
+ // on every mousemove. State is committed once on mouseup.
324
+ let pendingHeight = startHeight;
325
+ let rafScheduled = false;
326
+ const applyHeight = () => {
327
+ rafScheduled = false;
328
+ if (trayRef.current) trayRef.current.style.height = `${pendingHeight}px`;
329
+ };
300
330
  const onMove = ev => {
301
- const next = Math.max(120, Math.min(600, startHeight + (startY - ev.clientY)));
302
- trayHeightRef.current = next;
303
- if (trayRef.current) {
304
- trayRef.current.style.maxHeight = `${next}px`;
331
+ const delta = startY - ev.clientY;
332
+ pendingHeight = Math.max(120, Math.min(maxHeight, startHeight + delta));
333
+ if (!rafScheduled) {
334
+ rafScheduled = true;
335
+ requestAnimationFrame(applyHeight);
305
336
  }
306
337
  };
307
338
  const onUp = () => {
308
339
  setIsDraggingTray(false);
340
+ setTrayHeight(pendingHeight);
309
341
  document.body.style.cursor = '';
310
342
  document.body.style.userSelect = '';
311
343
  document.removeEventListener('mousemove', onMove);
@@ -335,7 +367,18 @@ function Compositions({
335
367
  });
336
368
  }, [enableLiveControls]);
337
369
  const currentCompositionHasControls = ready && defs.length > 0;
338
- const showControlsTray = currentCompositionHasControls && controlsTrayOpen;
370
+ const currentCompositionIdentifier = currentComposition?.identifier;
371
+ const isTrayCollapsedForCurrent = !!currentCompositionIdentifier && collapsedCompositions.has(currentCompositionIdentifier);
372
+ const showControlsTray = currentCompositionHasControls;
373
+ const isTrayCollapsed = showControlsTray && isTrayCollapsedForCurrent;
374
+ const toggleTrayCollapsed = (0, _react().useCallback)(() => {
375
+ if (!currentCompositionIdentifier) return;
376
+ setCollapsedCompositions(prev => {
377
+ const next = new Set(prev);
378
+ if (next.has(currentCompositionIdentifier)) next.delete(currentCompositionIdentifier);else next.add(currentCompositionIdentifier);
379
+ return next;
380
+ });
381
+ }, [currentCompositionIdentifier]);
339
382
  return /*#__PURE__*/_react().default.createElement(_compositionsUiHooks().CompositionContextProvider, {
340
383
  queryParams: compositionParams,
341
384
  setQueryParams: setCompositionParams
@@ -357,14 +400,6 @@ function Compositions({
357
400
  className: _compositionsModule().default.toolbarButton
358
401
  }, /*#__PURE__*/_react().default.createElement(_designUiInput().OptionButton, {
359
402
  icon: "open-tab"
360
- }))), currentCompositionHasControls && /*#__PURE__*/_react().default.createElement(_designUi4().Tooltip, {
361
- content: controlsTrayOpen ? 'Hide controls' : 'Show controls',
362
- placement: "bottom"
363
- }, /*#__PURE__*/_react().default.createElement("button", {
364
- className: `${_compositionsModule().default.toolbarButton} ${controlsTrayOpen ? _compositionsModule().default.toolbarButtonActive : ''}`,
365
- onClick: () => setControlsTrayOpen(o => !o)
366
- }, /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
367
- of: "settings"
368
403
  })))), /*#__PURE__*/_react().default.createElement(_previewUi().SandboxPermissionsAggregator, {
369
404
  hooks: previewSandboxHooks,
370
405
  onSandboxChange: setSandboxValue,
@@ -373,49 +408,27 @@ function Compositions({
373
408
  className: _compositionsModule().default.previewArea
374
409
  }, isDraggingTray && /*#__PURE__*/_react().default.createElement("div", {
375
410
  className: _compositionsModule().default.dragOverlay
376
- }), /*#__PURE__*/_react().default.createElement(CompositionContent, {
411
+ }), /*#__PURE__*/_react().default.createElement(_previewUi().PreviewPropsAggregator, {
412
+ hooks: previewPropsHooks,
413
+ component: component
414
+ }, previewAttrs => /*#__PURE__*/_react().default.createElement(CompositionContent, _extends({}, previewAttrs, {
377
415
  className: _compositionsModule().default.compositionPanel,
378
416
  emptyState: emptyState,
379
417
  component: component,
380
418
  selected: currentComposition,
381
419
  queryParams: queryParams,
382
420
  sandbox: sandboxValue
383
- }), showControlsTray && /*#__PURE__*/_react().default.createElement("div", {
384
- ref: trayRef,
385
- className: _compositionsModule().default.controlsTray,
386
- style: {
387
- maxHeight: trayHeightRef.current
388
- }
389
- }, /*#__PURE__*/_react().default.createElement("div", {
390
- className: _compositionsModule().default.trayDragHandle,
391
- onMouseDown: onTrayDragStart
392
- }, /*#__PURE__*/_react().default.createElement("div", {
393
- className: _compositionsModule().default.trayDragBar
394
- })), /*#__PURE__*/_react().default.createElement("div", {
395
- className: _compositionsModule().default.trayHeader
396
- }, /*#__PURE__*/_react().default.createElement("div", {
397
- className: _compositionsModule().default.trayTitleRow
398
- }, /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
399
- of: "settings",
400
- className: _compositionsModule().default.trayIcon
401
- }), /*#__PURE__*/_react().default.createElement("span", {
402
- className: _compositionsModule().default.trayTitle
403
- }, "Live Controls"), ready && defs.length > 0 && /*#__PURE__*/_react().default.createElement("span", {
404
- className: _compositionsModule().default.trayBadge
405
- }, defs.length)), /*#__PURE__*/_react().default.createElement("button", {
406
- className: _compositionsModule().default.trayClose,
407
- onClick: () => setControlsTrayOpen(false)
408
- }, /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
409
- of: "x"
410
- }))), /*#__PURE__*/_react().default.createElement("div", {
411
- className: _compositionsModule().default.trayBody
412
- }, ready ? /*#__PURE__*/_react().default.createElement(_liveControlPanel().LiveControls, {
421
+ }))), showControlsTray && /*#__PURE__*/_react().default.createElement(LiveControlsTray, {
422
+ trayRef: trayRef,
423
+ collapsed: isTrayCollapsed,
424
+ height: trayHeight,
425
+ ready: ready,
413
426
  defs: defs,
414
427
  values: values,
415
- onChange: onChange
416
- }) : /*#__PURE__*/_react().default.createElement("div", {
417
- className: _compositionsModule().default.trayEmpty
418
- }, "No live controls available for this composition"))))), /*#__PURE__*/_react().default.createElement(_baseUiSurfacesSplitPane2().HoverSplitter, {
428
+ onChange: onChange,
429
+ onResizeStripMouseDown: onResizeStripMouseDown,
430
+ onToggleExpanded: toggleTrayCollapsed
431
+ }))), /*#__PURE__*/_react().default.createElement(_baseUiSurfacesSplitPane2().HoverSplitter, {
419
432
  className: _compositionsModule().default.splitter
420
433
  }, /*#__PURE__*/_react().default.createElement(_uiFoundationUiButtons().Collapser, {
421
434
  placement: "left",
@@ -437,6 +450,9 @@ function Compositions({
437
450
  isScaling: isScaling,
438
451
  useNameParam: useNameParam,
439
452
  includesEnvTemplate: component.preview?.includesEnvTemplate,
453
+ hasLiveControls: currentCompositionHasControls,
454
+ liveControlsActive: currentCompositionHasControls && !isTrayCollapsedForCurrent,
455
+ onToggleLiveControls: toggleTrayCollapsed,
440
456
  onSelectComposition: composition => {
441
457
  if (!currentComposition || !location) return;
442
458
  const selectedCompositionFromUrl = params['*'];
@@ -452,9 +468,6 @@ function Compositions({
452
468
  }
453
469
  const newPath = pathSegments.join('/');
454
470
  navigate(`/${newPath}?${urlParams.toString()}`);
455
- // open the tray only on explicit user selection, so the
456
- // tray stays closed on navigation/tab return.
457
- setControlsTrayOpen(true);
458
471
  },
459
472
  url: compositionUrl,
460
473
  compositions: component.compositions,
@@ -466,6 +479,72 @@ function Compositions({
466
479
  showListView: true
467
480
  }) : /*#__PURE__*/_react().default.createElement("div", null)))))));
468
481
  }
482
+ function LiveControlsTray({
483
+ trayRef,
484
+ collapsed,
485
+ height,
486
+ ready,
487
+ defs,
488
+ values,
489
+ onChange,
490
+ onResizeStripMouseDown,
491
+ onToggleExpanded
492
+ }) {
493
+ // height = null → let CSS size the tray to its content (with the max-height
494
+ // clamp doing the upper bound); height = number → user has drag-resized,
495
+ // pin to that.
496
+ const trayStyle = collapsed || height === null ? undefined : {
497
+ height
498
+ };
499
+ return /*#__PURE__*/_react().default.createElement("div", {
500
+ ref: trayRef,
501
+ className: (0, _classnames().default)(_compositionsModule().default.controlsTray, collapsed && _compositionsModule().default.controlsTrayCollapsed),
502
+ style: trayStyle
503
+ }, !collapsed && /*#__PURE__*/_react().default.createElement("div", {
504
+ className: _compositionsModule().default.trayResizeStrip,
505
+ onMouseDown: onResizeStripMouseDown,
506
+ role: "separator",
507
+ "aria-orientation": "horizontal",
508
+ "aria-label": "Resize live controls",
509
+ title: "Drag to resize"
510
+ }, /*#__PURE__*/_react().default.createElement("div", {
511
+ className: _compositionsModule().default.trayDragBar
512
+ })), /*#__PURE__*/_react().default.createElement("div", {
513
+ className: _compositionsModule().default.trayHeaderInner,
514
+ onClick: onToggleExpanded,
515
+ role: "button",
516
+ tabIndex: 0,
517
+ onKeyDown: e => {
518
+ if (e.key === 'Enter' || e.key === ' ') {
519
+ e.preventDefault();
520
+ onToggleExpanded();
521
+ }
522
+ },
523
+ title: collapsed ? 'Click to expand' : 'Click to collapse'
524
+ }, /*#__PURE__*/_react().default.createElement("div", {
525
+ className: _compositionsModule().default.trayTitleRow
526
+ }, /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
527
+ of: "settings",
528
+ className: _compositionsModule().default.trayIcon
529
+ }), /*#__PURE__*/_react().default.createElement("span", {
530
+ className: _compositionsModule().default.trayTitle
531
+ }, "Live Controls"), ready && defs.length > 0 && /*#__PURE__*/_react().default.createElement("span", {
532
+ className: _compositionsModule().default.trayBadge
533
+ }, defs.length)), /*#__PURE__*/_react().default.createElement("span", {
534
+ className: (0, _classnames().default)(_compositionsModule().default.trayCollapseIcon, collapsed && _compositionsModule().default.trayCollapseIconCollapsed),
535
+ "aria-hidden": true
536
+ }, /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
537
+ of: "right-rounded-corners"
538
+ }))), !collapsed && /*#__PURE__*/_react().default.createElement("div", {
539
+ className: _compositionsModule().default.trayBody
540
+ }, ready ? /*#__PURE__*/_react().default.createElement(_liveControlPanel().LiveControls, {
541
+ defs: defs,
542
+ values: values,
543
+ onChange: onChange
544
+ }) : /*#__PURE__*/_react().default.createElement("div", {
545
+ className: _compositionsModule().default.trayEmpty
546
+ }, "No live controls available for this composition")));
547
+ }
469
548
  function CompositionContent(_ref) {
470
549
  let {
471
550
  component,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","_interopRequireWildcard","require","_reactRouterDom","_lodash","_interopRequireDefault","_queryString","_documenterTheme","_baseUiSurfacesSplitPane","_baseUiSurfacesSplitPane2","_component","_documenterUi","_panels","_docsUiQueries","_uiFoundationUiButtons","_designUi","_previewUi","_uiFoundationUiHooks","_compositionsUi","_compositionsUiHooks","_mdxUi","_designUi2","_documenterUi2","_designUi3","_baseReactNavigation","_designUiInput","_designUiSurfaces","_designUi4","_evangelistElements","_compositionsUi2","_compositionsModule","_ui","_compositionsPanel","_liveControlPanel","_useDefaultControlsSchemaResponder","_excluded","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","_objectWithoutProperties","_objectWithoutPropertiesLoose","getOwnPropertySymbols","indexOf","propertyIsEnumerable","ownKeys","keys","filter","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","Link","BaseLink","Compositions","menuBarWidgets","emptyState","usePreviewSandboxSlot","enableLiveControls","component","useContext","ComponentContext","componentIdStr","id","toString","searchParams","useSearchParams","params","useParams","versionFromQueryParams","navigate","useNavigate","location","useLocation","currentCompositionName","currentComposition","compositions","find","composition","identifier","toLowerCase","head","sandboxValue","setSandboxValue","useState","selectedRef","useRef","current","useDefaultControlsSchemaResponder","properties","useDocs","previewSandboxHooks","values","isMobile","useIsMobile","showSidebar","isSidebarOpen","setSidebarOpenness","sidebarOpenness","Layout","row","left","compositionUrl","toPreviewUrl","isScaling","preview","includesEnvTemplates","includesEnvTemplate","useNameParam","compositionIdentifierParam","currentCompositionFullUrl","compositionParams","setCompositionParams","fullscreen","livecontrols","queryParams","useMemo","queryString","stringify","controlsTrayOpen","setControlsTrayOpen","isDraggingTray","setIsDraggingTray","trayRef","trayHeightRef","ready","defs","onChange","useLiveControls","onTrayDragStart","useCallback","preventDefault","startY","clientY","startHeight","document","body","style","cursor","userSelect","onMove","ev","next","Math","max","min","maxHeight","onUp","removeEventListener","addEventListener","useEffect","currentCompositionHasControls","showControlsTray","createElement","CompositionContextProvider","setQueryParams","SplitPane","layout","size","className","styles","compositionsPage","Pane","CompositionsMenuBar","menuBar","Tooltip","content","placement","external","href","toolbarButton","OptionButton","icon","toolbarButtonActive","onClick","Icon","of","SandboxPermissionsAggregator","hooks","onSandboxChange","previewArea","dragOverlay","CompositionContent","compositionPanel","selected","sandbox","ref","controlsTray","trayDragHandle","onMouseDown","trayDragBar","trayHeader","trayTitleRow","trayIcon","trayTitle","trayBadge","trayClose","trayBody","LiveControls","trayEmpty","HoverSplitter","splitter","Collapser","isOpen","stopPropagation","x","tooltipContent","collapser","right","ThemeContext","TabContainer","tabsContainer","TabList","tabs","Tab","TabPanel","tabContent","CompositionsPanel","onSelectComposition","selectedCompositionFromUrl","pathSegments","pathname","split","urlParams","URLSearchParams","newPath","join","url","active","PropTable","rows","showListView","_ref","componentCompositionProps","env","environment","EmptyStateTemplate","host","noCompositionsPage","H1","title","Separator","isPresentational","separator","AlertCard","level","MDXLayout","buildStatus","StatusMessageCard","buildStatusMessage","status","EmptyBox","linkText","link","ComponentComposition","compositionsIframe","viewport","forceHeight","fullContentHeight","pubsub"],"sources":["compositions.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport React, { useContext, useEffect, useState, useMemo, useRef, useCallback } from 'react';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport head from 'lodash.head';\nimport queryString from 'query-string';\nimport { ThemeContext } from '@teambit/documenter.theme.theme-context';\nimport { SplitPane, Pane, Layout } from '@teambit/base-ui.surfaces.split-pane.split-pane';\nimport { HoverSplitter } from '@teambit/base-ui.surfaces.split-pane.hover-splitter';\nimport type { ComponentModel } from '@teambit/component';\nimport { ComponentContext } from '@teambit/component';\nimport { PropTable } from '@teambit/documenter.ui.property-table';\nimport { Tab, TabContainer, TabList, TabPanel } from '@teambit/panels';\nimport { useDocs } from '@teambit/docs.ui.queries.get-docs';\nimport { Collapser } from '@teambit/ui-foundation.ui.buttons.collapser';\nimport { EmptyBox } from '@teambit/design.ui.empty-box';\nimport { SandboxPermissionsAggregator, toPreviewUrl } from '@teambit/preview.ui.component-preview';\nimport { useIsMobile } from '@teambit/ui-foundation.ui.hooks.use-is-mobile';\nimport { CompositionsMenuBar } from '@teambit/compositions.ui.compositions-menu-bar';\nimport { CompositionContextProvider } from '@teambit/compositions.ui.hooks.use-composition';\nimport { MDXLayout } from '@teambit/mdx.ui.mdx-layout';\nimport { Separator } from '@teambit/design.ui.separator';\nimport { H1 } from '@teambit/documenter.ui.heading';\nimport { AlertCard } from '@teambit/design.ui.alert-card';\nimport { Link as BaseLink, useNavigate, useLocation } from '@teambit/base-react.navigation.link';\nimport { OptionButton } from '@teambit/design.ui.input.option-button';\nimport { StatusMessageCard } from '@teambit/design.ui.surfaces.status-message-card';\nimport { Tooltip } from '@teambit/design.ui.tooltip';\nimport { Icon } from '@teambit/evangelist.elements.icon';\nimport { useLiveControls } from '@teambit/compositions.ui.composition-live-controls';\nimport type { EmptyStateSlot, CompositionsMenuSlot, UsePreviewSandboxSlot } from './compositions.ui.runtime';\nimport type { Composition } from './composition';\nimport styles from './compositions.module.scss';\nimport { ComponentComposition } from './ui';\nimport { CompositionsPanel } from './ui/compositions-panel/compositions-panel';\nimport { LiveControls } from './ui/compositions-panel/live-control-panel';\nimport type { ComponentCompositionProps } from './ui/composition-preview';\nimport { useDefaultControlsSchemaResponder } from './use-default-controls-schema-responder';\n\n// @todo - this will be fixed as part of the @teambit/base-react.navigation.link upgrade to latest\nconst Link = BaseLink as any;\n\nexport type MenuBarWidget = {\n location: 'start' | 'end';\n content: ReactNode;\n};\nexport type CompositionsProp = {\n menuBarWidgets?: CompositionsMenuSlot;\n emptyState?: EmptyStateSlot;\n usePreviewSandboxSlot?: UsePreviewSandboxSlot;\n enableLiveControls?: boolean;\n};\n\nexport function Compositions({\n menuBarWidgets,\n emptyState,\n usePreviewSandboxSlot,\n enableLiveControls = true,\n}: CompositionsProp) {\n const component = useContext(ComponentContext);\n const componentIdStr = component.id.toString();\n const [searchParams] = useSearchParams();\n const params = useParams();\n const versionFromQueryParams = searchParams.get('version');\n const navigate = useNavigate();\n const location = useLocation();\n const currentCompositionName = params['*'];\n const currentComposition =\n component.compositions.find((composition) => composition.identifier.toLowerCase() === currentCompositionName) ||\n head(component.compositions);\n const [sandboxValue, setSandboxValue] = useState('');\n const selectedRef = useRef(currentComposition);\n selectedRef.current = currentComposition;\n useDefaultControlsSchemaResponder(componentIdStr, enableLiveControls);\n\n const properties = useDocs(component.id);\n const previewSandboxHooks = usePreviewSandboxSlot?.values() ?? [];\n const isMobile = useIsMobile();\n const showSidebar = !isMobile && component.compositions.length > 0;\n const [isSidebarOpen, setSidebarOpenness] = useState(showSidebar);\n\n const sidebarOpenness = isSidebarOpen ? Layout.row : Layout.left;\n\n const compositionUrl = toPreviewUrl(component, 'compositions');\n const isScaling = component?.preview?.isScaling;\n const includesEnvTemplates = component?.preview?.includesEnvTemplate;\n const useNameParam = component?.preview?.useNameParam;\n const compositionIdentifierParam =\n useNameParam || (isScaling && includesEnvTemplates === false)\n ? `name=${currentComposition?.identifier}`\n : currentComposition?.identifier;\n\n const currentCompositionFullUrl = toPreviewUrl(component, 'compositions', compositionIdentifierParam);\n\n const [compositionParams, setCompositionParams] = useState<Record<string, any>>(() =>\n enableLiveControls ? { fullscreen: true, livecontrols: true } : { fullscreen: true }\n );\n\n const queryParams = useMemo(() => queryString.stringify(compositionParams), [compositionParams]);\n\n const [controlsTrayOpen, setControlsTrayOpen] = useState(false);\n const [isDraggingTray, setIsDraggingTray] = useState(false);\n const trayRef = useRef<HTMLDivElement>(null);\n const trayHeightRef = useRef(260);\n const { ready, defs, values, onChange } = useLiveControls();\n\n const onTrayDragStart = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n const startY = e.clientY;\n const startHeight = trayHeightRef.current;\n setIsDraggingTray(true);\n document.body.style.cursor = 'ns-resize';\n document.body.style.userSelect = 'none';\n const onMove = (ev: MouseEvent) => {\n const next = Math.max(120, Math.min(600, startHeight + (startY - ev.clientY)));\n trayHeightRef.current = next;\n if (trayRef.current) {\n trayRef.current.style.maxHeight = `${next}px`;\n }\n };\n const onUp = () => {\n setIsDraggingTray(false);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n }, []);\n\n // collapse sidebar when empty, reopen when not\n useEffect(() => setSidebarOpenness(showSidebar), [showSidebar]);\n useEffect(() => {\n if (enableLiveControls) {\n setCompositionParams((current) => {\n if (current.livecontrols === true) return current;\n return { ...current, livecontrols: true };\n });\n return;\n }\n\n setCompositionParams((current) => {\n if (!('livecontrols' in current)) return current;\n const next = { ...current };\n delete next.livecontrols;\n return next;\n });\n }, [enableLiveControls]);\n\n const currentCompositionHasControls = ready && defs.length > 0;\n const showControlsTray = currentCompositionHasControls && controlsTrayOpen;\n\n return (\n <CompositionContextProvider queryParams={compositionParams} setQueryParams={setCompositionParams}>\n <SplitPane layout={sidebarOpenness} size=\"80%\" className={styles.compositionsPage}>\n <Pane className={styles.left}>\n <CompositionsMenuBar menuBarWidgets={menuBarWidgets} className={styles.menuBar}>\n <Tooltip content={'Open in new tab'} placement=\"bottom\">\n <Link external href={currentCompositionFullUrl} className={styles.toolbarButton}>\n <OptionButton icon=\"open-tab\" />\n </Link>\n </Tooltip>\n {currentCompositionHasControls && (\n <Tooltip content={controlsTrayOpen ? 'Hide controls' : 'Show controls'} placement=\"bottom\">\n <button\n className={`${styles.toolbarButton} ${controlsTrayOpen ? styles.toolbarButtonActive : ''}`}\n onClick={() => setControlsTrayOpen((o) => !o)}\n >\n <Icon of=\"settings\" />\n </button>\n </Tooltip>\n )}\n </CompositionsMenuBar>\n <SandboxPermissionsAggregator\n hooks={previewSandboxHooks}\n onSandboxChange={setSandboxValue}\n component={component}\n />\n <div className={styles.previewArea}>\n {isDraggingTray && <div className={styles.dragOverlay} />}\n <CompositionContent\n className={styles.compositionPanel}\n emptyState={emptyState}\n component={component}\n selected={currentComposition}\n queryParams={queryParams}\n sandbox={sandboxValue}\n />\n {showControlsTray && (\n <div ref={trayRef} className={styles.controlsTray} style={{ maxHeight: trayHeightRef.current }}>\n <div className={styles.trayDragHandle} onMouseDown={onTrayDragStart}>\n <div className={styles.trayDragBar} />\n </div>\n <div className={styles.trayHeader}>\n <div className={styles.trayTitleRow}>\n <Icon of=\"settings\" className={styles.trayIcon} />\n <span className={styles.trayTitle}>Live Controls</span>\n {ready && defs.length > 0 && <span className={styles.trayBadge}>{defs.length}</span>}\n </div>\n <button className={styles.trayClose} onClick={() => setControlsTrayOpen(false)}>\n <Icon of=\"x\" />\n </button>\n </div>\n <div className={styles.trayBody}>\n {ready ? (\n <LiveControls defs={defs} values={values} onChange={onChange} />\n ) : (\n <div className={styles.trayEmpty}>No live controls available for this composition</div>\n )}\n </div>\n </div>\n )}\n </div>\n </Pane>\n <HoverSplitter className={styles.splitter}>\n <Collapser\n placement=\"left\"\n isOpen={isSidebarOpen}\n onMouseDown={(e) => e.stopPropagation()} // avoid split-pane drag\n onClick={() => setSidebarOpenness((x) => !x)}\n tooltipContent={`${isSidebarOpen ? 'Hide' : 'Show'} side compositions`}\n className={styles.collapser}\n />\n </HoverSplitter>\n <Pane className={styles.right}>\n <ThemeContext>\n <TabContainer className={styles.tabsContainer}>\n <TabList className={styles.tabs}>\n <Tab>compositions</Tab>\n <Tab>properties</Tab>\n </TabList>\n <TabPanel className={styles.tabContent}>\n <CompositionsPanel\n isScaling={isScaling}\n useNameParam={useNameParam}\n includesEnvTemplate={component.preview?.includesEnvTemplate}\n onSelectComposition={(composition) => {\n if (!currentComposition || !location) return;\n const selectedCompositionFromUrl = params['*'];\n\n const pathSegments = location.pathname.split('/').filter((x) => x);\n\n if (!selectedCompositionFromUrl) {\n pathSegments.push(composition.identifier.toLowerCase());\n } else {\n pathSegments[pathSegments.length - 1] = composition.identifier.toLowerCase();\n }\n\n const urlParams = new URLSearchParams(searchParams);\n if (versionFromQueryParams) {\n urlParams.set('version', versionFromQueryParams);\n }\n const newPath = pathSegments.join('/');\n navigate(`/${newPath}?${urlParams.toString()}`);\n // open the tray only on explicit user selection, so the\n // tray stays closed on navigation/tab return.\n setControlsTrayOpen(true);\n }}\n url={compositionUrl}\n compositions={component.compositions}\n active={currentComposition}\n />\n </TabPanel>\n <TabPanel className={styles.tabContent}>\n {properties && properties.length > 0 ? <PropTable rows={properties} showListView /> : <div />}\n </TabPanel>\n </TabContainer>\n </ThemeContext>\n </Pane>\n </SplitPane>\n </CompositionContextProvider>\n );\n}\n\nexport type CompositionContentProps = {\n component: ComponentModel;\n selected?: Composition;\n queryParams?: string | string[];\n emptyState?: EmptyStateSlot;\n} & ComponentCompositionProps;\n\nexport function CompositionContent({\n component,\n selected,\n queryParams,\n emptyState,\n sandbox,\n ...componentCompositionProps\n}: CompositionContentProps) {\n const env = component.environment?.id;\n const EmptyStateTemplate = emptyState?.get(env || ''); // || defaultTemplate;\n\n if (component.compositions.length === 0 && component.host === 'teambit.workspace/workspace' && EmptyStateTemplate) {\n return (\n <div className={styles.noCompositionsPage}>\n <div>\n <H1 className={styles.title}>Compositions</H1>\n <Separator isPresentational className={styles.separator} />\n <AlertCard\n level=\"info\"\n title=\"There are no\n compositions for this Component. Learn how to add compositions:\"\n >\n <MDXLayout>\n <EmptyStateTemplate />\n </MDXLayout>\n </AlertCard>\n </div>\n </div>\n );\n }\n\n if (component?.buildStatus === 'pending' && component?.host === 'teambit.scope/scope')\n return (\n <StatusMessageCard className={styles.buildStatusMessage} status=\"PROCESSING\" title=\"component preview pending\">\n this might take some time\n </StatusMessageCard>\n );\n if (component?.buildStatus === 'failed' && component?.host === 'teambit.scope/scope')\n return (\n <StatusMessageCard\n className={styles.buildStatusMessage}\n status=\"FAILURE\"\n title=\"failed to get component preview \"\n ></StatusMessageCard>\n );\n\n // TODO: get the docs domain from the community aspect and pass it here as a prop\n if (component.compositions.length === 0) {\n return (\n <EmptyBox\n title=\"There are no compositions for this component.\"\n linkText=\"Learn how to create compositions\"\n link={`https://bit.dev/reference/dev-services-overview/compositions/compositions-overview`}\n />\n );\n }\n\n return (\n <ComponentComposition\n className={styles.compositionsIframe}\n // TODO: Oded to add control for viewport.\n viewport={null}\n component={component}\n forceHeight=\"100%\"\n composition={selected}\n fullContentHeight\n pubsub={true}\n queryParams={queryParams}\n sandbox={sandbox}\n {...componentCompositionProps}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","data","_interopRequireWildcard","require","_reactRouterDom","_classnames","_interopRequireDefault","_lodash","_queryString","_documenterTheme","_baseUiSurfacesSplitPane","_baseUiSurfacesSplitPane2","_component","_documenterUi","_panels","_docsUiQueries","_uiFoundationUiButtons","_designUi","_previewUi","_uiFoundationUiHooks","_compositionsUi","_compositionsUiHooks","_mdxUi","_designUi2","_documenterUi2","_designUi3","_baseReactNavigation","_designUiInput","_designUiSurfaces","_designUi4","_evangelistElements","_compositionsUi2","_compositionsModule","_ui","_compositionsPanel","_liveControlPanel","_useDefaultControlsSchemaResponder","_excluded","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_objectWithoutProperties","_objectWithoutPropertiesLoose","getOwnPropertySymbols","length","indexOf","propertyIsEnumerable","_extends","assign","bind","arguments","apply","ownKeys","keys","filter","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","Link","BaseLink","Compositions","menuBarWidgets","emptyState","usePreviewSandboxSlot","usePreviewPropsSlot","enableLiveControls","component","useContext","ComponentContext","componentIdStr","id","toString","searchParams","useSearchParams","params","useParams","versionFromQueryParams","navigate","useNavigate","location","useLocation","currentCompositionName","currentComposition","compositions","find","composition","identifier","toLowerCase","head","sandboxValue","setSandboxValue","useState","selectedRef","useRef","current","useDefaultControlsSchemaResponder","properties","useDocs","previewSandboxHooks","values","previewPropsHooks","isMobile","useIsMobile","showSidebar","isSidebarOpen","setSidebarOpenness","sidebarOpenness","Layout","row","left","compositionUrl","toPreviewUrl","isScaling","preview","includesEnvTemplates","includesEnvTemplate","useNameParam","compositionIdentifierParam","currentCompositionFullUrl","compositionParams","setCompositionParams","fullscreen","livecontrols","queryParams","useMemo","queryString","stringify","collapsedCompositions","setCollapsedCompositions","Set","isDraggingTray","setIsDraggingTray","trayRef","trayHeight","setTrayHeight","ready","defs","onChange","useLiveControls","onResizeStripMouseDown","useCallback","button","preventDefault","startY","clientY","startHeight","offsetHeight","parentEl","parentElement","parentHeight","clientHeight","window","innerHeight","maxHeight","Math","max","document","body","style","cursor","userSelect","pendingHeight","rafScheduled","applyHeight","height","onMove","ev","delta","min","requestAnimationFrame","onUp","removeEventListener","addEventListener","useEffect","next","currentCompositionHasControls","currentCompositionIdentifier","isTrayCollapsedForCurrent","showControlsTray","isTrayCollapsed","toggleTrayCollapsed","prev","delete","add","createElement","CompositionContextProvider","setQueryParams","SplitPane","layout","size","className","styles","compositionsPage","Pane","CompositionsMenuBar","menuBar","Tooltip","content","placement","external","href","toolbarButton","OptionButton","icon","SandboxPermissionsAggregator","hooks","onSandboxChange","previewArea","dragOverlay","PreviewPropsAggregator","previewAttrs","CompositionContent","compositionPanel","selected","sandbox","LiveControlsTray","collapsed","onToggleExpanded","HoverSplitter","splitter","Collapser","isOpen","onMouseDown","stopPropagation","onClick","x","tooltipContent","collapser","right","ThemeContext","TabContainer","tabsContainer","TabList","tabs","Tab","TabPanel","tabContent","CompositionsPanel","hasLiveControls","liveControlsActive","onToggleLiveControls","onSelectComposition","selectedCompositionFromUrl","pathSegments","pathname","split","urlParams","URLSearchParams","newPath","join","url","active","PropTable","rows","showListView","trayStyle","undefined","ref","classNames","controlsTray","controlsTrayCollapsed","trayResizeStrip","role","title","trayDragBar","trayHeaderInner","tabIndex","onKeyDown","key","trayTitleRow","Icon","of","trayIcon","trayTitle","trayBadge","trayCollapseIcon","trayCollapseIconCollapsed","trayBody","LiveControls","trayEmpty","_ref","componentCompositionProps","env","environment","EmptyStateTemplate","host","noCompositionsPage","H1","Separator","isPresentational","separator","AlertCard","level","MDXLayout","buildStatus","StatusMessageCard","buildStatusMessage","status","EmptyBox","linkText","link","ComponentComposition","compositionsIframe","viewport","forceHeight","fullContentHeight","pubsub"],"sources":["compositions.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport React, { useContext, useEffect, useState, useMemo, useRef, useCallback } from 'react';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport classNames from 'classnames';\nimport head from 'lodash.head';\nimport queryString from 'query-string';\nimport { ThemeContext } from '@teambit/documenter.theme.theme-context';\nimport { SplitPane, Pane, Layout } from '@teambit/base-ui.surfaces.split-pane.split-pane';\nimport { HoverSplitter } from '@teambit/base-ui.surfaces.split-pane.hover-splitter';\nimport type { ComponentModel } from '@teambit/component';\nimport { ComponentContext } from '@teambit/component';\nimport { PropTable } from '@teambit/documenter.ui.property-table';\nimport { Tab, TabContainer, TabList, TabPanel } from '@teambit/panels';\nimport { useDocs } from '@teambit/docs.ui.queries.get-docs';\nimport { Collapser } from '@teambit/ui-foundation.ui.buttons.collapser';\nimport { EmptyBox } from '@teambit/design.ui.empty-box';\nimport {\n PreviewPropsAggregator,\n SandboxPermissionsAggregator,\n toPreviewUrl,\n} from '@teambit/preview.ui.component-preview';\nimport { useIsMobile } from '@teambit/ui-foundation.ui.hooks.use-is-mobile';\nimport { CompositionsMenuBar } from '@teambit/compositions.ui.compositions-menu-bar';\nimport { CompositionContextProvider } from '@teambit/compositions.ui.hooks.use-composition';\nimport { MDXLayout } from '@teambit/mdx.ui.mdx-layout';\nimport { Separator } from '@teambit/design.ui.separator';\nimport { H1 } from '@teambit/documenter.ui.heading';\nimport { AlertCard } from '@teambit/design.ui.alert-card';\nimport { Link as BaseLink, useNavigate, useLocation } from '@teambit/base-react.navigation.link';\nimport { OptionButton } from '@teambit/design.ui.input.option-button';\nimport { StatusMessageCard } from '@teambit/design.ui.surfaces.status-message-card';\nimport { Tooltip } from '@teambit/design.ui.tooltip';\nimport { Icon } from '@teambit/evangelist.elements.icon';\nimport type { UseLiveControlsResult } from '@teambit/compositions.ui.composition-live-controls';\nimport { useLiveControls } from '@teambit/compositions.ui.composition-live-controls';\nimport type {\n EmptyStateSlot,\n CompositionsMenuSlot,\n UsePreviewSandboxSlot,\n UsePreviewPropsSlot,\n} from './compositions.ui.runtime';\nimport type { Composition } from './composition';\nimport styles from './compositions.module.scss';\nimport { ComponentComposition } from './ui';\nimport { CompositionsPanel } from './ui/compositions-panel/compositions-panel';\nimport { LiveControls } from './ui/compositions-panel/live-control-panel';\nimport type { ComponentCompositionProps } from './ui/composition-preview';\nimport { useDefaultControlsSchemaResponder } from './use-default-controls-schema-responder';\n\n// @todo - this will be fixed as part of the @teambit/base-react.navigation.link upgrade to latest\nconst Link = BaseLink as any;\n\nexport type MenuBarWidget = {\n location: 'start' | 'end';\n content: ReactNode;\n};\nexport type CompositionsProp = {\n menuBarWidgets?: CompositionsMenuSlot;\n emptyState?: EmptyStateSlot;\n usePreviewSandboxSlot?: UsePreviewSandboxSlot;\n /**\n * per-component resolvers for iframe attributes on the composition preview (`allow`,\n * `referrerPolicy`, ...). Each resolver gets the current `ComponentModel`; results merge\n * with later registrations winning. Default `allow` (`clipboard-write`) lives on\n * `ComponentPreview` and applies when no resolver overrides it.\n */\n usePreviewPropsSlot?: UsePreviewPropsSlot;\n enableLiveControls?: boolean;\n};\n\nexport function Compositions({\n menuBarWidgets,\n emptyState,\n usePreviewSandboxSlot,\n usePreviewPropsSlot,\n enableLiveControls = true,\n}: CompositionsProp) {\n const component = useContext(ComponentContext);\n const componentIdStr = component.id.toString();\n const [searchParams] = useSearchParams();\n const params = useParams();\n const versionFromQueryParams = searchParams.get('version');\n const navigate = useNavigate();\n const location = useLocation();\n const currentCompositionName = params['*'];\n const currentComposition =\n component.compositions.find((composition) => composition.identifier.toLowerCase() === currentCompositionName) ||\n head(component.compositions);\n const [sandboxValue, setSandboxValue] = useState('');\n const selectedRef = useRef(currentComposition);\n selectedRef.current = currentComposition;\n useDefaultControlsSchemaResponder(componentIdStr, enableLiveControls);\n\n const properties = useDocs(component.id);\n const previewSandboxHooks = usePreviewSandboxSlot?.values() ?? [];\n const previewPropsHooks = usePreviewPropsSlot?.values() ?? [];\n const isMobile = useIsMobile();\n const showSidebar = !isMobile && component.compositions.length > 0;\n const [isSidebarOpen, setSidebarOpenness] = useState(showSidebar);\n\n const sidebarOpenness = isSidebarOpen ? Layout.row : Layout.left;\n\n const compositionUrl = toPreviewUrl(component, 'compositions');\n const isScaling = component?.preview?.isScaling;\n const includesEnvTemplates = component?.preview?.includesEnvTemplate;\n const useNameParam = component?.preview?.useNameParam;\n const compositionIdentifierParam =\n useNameParam || (isScaling && includesEnvTemplates === false)\n ? `name=${currentComposition?.identifier}`\n : currentComposition?.identifier;\n\n const currentCompositionFullUrl = toPreviewUrl(component, 'compositions', compositionIdentifierParam);\n\n const [compositionParams, setCompositionParams] = useState<Record<string, any>>(() =>\n enableLiveControls ? { fullscreen: true, livecontrols: true } : { fullscreen: true }\n );\n\n const queryParams = useMemo(() => queryString.stringify(compositionParams), [compositionParams]);\n\n // Tracks compositions the user has explicitly collapsed. Anything not in\n // this set defaults to expanded, which gives us \"auto-open on load\" as a\n // pure derivation rather than an effect.\n const [collapsedCompositions, setCollapsedCompositions] = useState<Set<string>>(() => new Set());\n const [isDraggingTray, setIsDraggingTray] = useState(false);\n const trayRef = useRef<HTMLDivElement | null>(null);\n // `null` = auto-size to content (default). Becomes a number once the user\n // drag-resizes — only then do we pin a fixed height.\n const [trayHeight, setTrayHeight] = useState<number | null>(null);\n const { ready, defs, values, onChange } = useLiveControls();\n\n const onResizeStripMouseDown = useCallback((e: React.MouseEvent) => {\n if (e.button !== 0) return;\n e.preventDefault();\n const startY = e.clientY;\n // Seed the drag from the tray's current rendered height — handles the\n // initial auto-sized case (where `trayHeight` is still null).\n const startHeight = trayRef.current?.offsetHeight ?? 0;\n const parentEl = trayRef.current?.parentElement;\n const parentHeight = parentEl?.clientHeight ?? window.innerHeight;\n const maxHeight = Math.max(120, parentHeight - 80);\n setIsDraggingTray(true);\n document.body.style.cursor = 'ns-resize';\n document.body.style.userSelect = 'none';\n // Mutate the tray's inline height directly and rAF-throttle, so dragging\n // doesn't re-render the whole compositions tree (including the iframe)\n // on every mousemove. State is committed once on mouseup.\n let pendingHeight = startHeight;\n let rafScheduled = false;\n const applyHeight = () => {\n rafScheduled = false;\n if (trayRef.current) trayRef.current.style.height = `${pendingHeight}px`;\n };\n const onMove = (ev: MouseEvent) => {\n const delta = startY - ev.clientY;\n pendingHeight = Math.max(120, Math.min(maxHeight, startHeight + delta));\n if (!rafScheduled) {\n rafScheduled = true;\n requestAnimationFrame(applyHeight);\n }\n };\n const onUp = () => {\n setIsDraggingTray(false);\n setTrayHeight(pendingHeight);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n }, []);\n\n // collapse sidebar when empty, reopen when not\n useEffect(() => setSidebarOpenness(showSidebar), [showSidebar]);\n useEffect(() => {\n if (enableLiveControls) {\n setCompositionParams((current) => {\n if (current.livecontrols === true) return current;\n return { ...current, livecontrols: true };\n });\n return;\n }\n\n setCompositionParams((current) => {\n if (!('livecontrols' in current)) return current;\n const next = { ...current };\n delete next.livecontrols;\n return next;\n });\n }, [enableLiveControls]);\n\n const currentCompositionHasControls = ready && defs.length > 0;\n const currentCompositionIdentifier = currentComposition?.identifier;\n const isTrayCollapsedForCurrent =\n !!currentCompositionIdentifier && collapsedCompositions.has(currentCompositionIdentifier);\n const showControlsTray = currentCompositionHasControls;\n const isTrayCollapsed = showControlsTray && isTrayCollapsedForCurrent;\n\n const toggleTrayCollapsed = useCallback(() => {\n if (!currentCompositionIdentifier) return;\n setCollapsedCompositions((prev) => {\n const next = new Set(prev);\n if (next.has(currentCompositionIdentifier)) next.delete(currentCompositionIdentifier);\n else next.add(currentCompositionIdentifier);\n return next;\n });\n }, [currentCompositionIdentifier]);\n\n return (\n <CompositionContextProvider queryParams={compositionParams} setQueryParams={setCompositionParams}>\n <SplitPane layout={sidebarOpenness} size=\"80%\" className={styles.compositionsPage}>\n <Pane className={styles.left}>\n <CompositionsMenuBar menuBarWidgets={menuBarWidgets} className={styles.menuBar}>\n <Tooltip content={'Open in new tab'} placement=\"bottom\">\n <Link external href={currentCompositionFullUrl} className={styles.toolbarButton}>\n <OptionButton icon=\"open-tab\" />\n </Link>\n </Tooltip>\n </CompositionsMenuBar>\n <SandboxPermissionsAggregator\n hooks={previewSandboxHooks}\n onSandboxChange={setSandboxValue}\n component={component}\n />\n <div className={styles.previewArea}>\n {isDraggingTray && <div className={styles.dragOverlay} />}\n <PreviewPropsAggregator hooks={previewPropsHooks} component={component}>\n {(previewAttrs) => (\n <CompositionContent\n {...previewAttrs}\n className={styles.compositionPanel}\n emptyState={emptyState}\n component={component}\n selected={currentComposition}\n queryParams={queryParams}\n sandbox={sandboxValue}\n />\n )}\n </PreviewPropsAggregator>\n {showControlsTray && (\n <LiveControlsTray\n trayRef={trayRef}\n collapsed={isTrayCollapsed}\n height={trayHeight}\n ready={ready}\n defs={defs}\n values={values}\n onChange={onChange}\n onResizeStripMouseDown={onResizeStripMouseDown}\n onToggleExpanded={toggleTrayCollapsed}\n />\n )}\n </div>\n </Pane>\n <HoverSplitter className={styles.splitter}>\n <Collapser\n placement=\"left\"\n isOpen={isSidebarOpen}\n onMouseDown={(e) => e.stopPropagation()} // avoid split-pane drag\n onClick={() => setSidebarOpenness((x) => !x)}\n tooltipContent={`${isSidebarOpen ? 'Hide' : 'Show'} side compositions`}\n className={styles.collapser}\n />\n </HoverSplitter>\n <Pane className={styles.right}>\n <ThemeContext>\n <TabContainer className={styles.tabsContainer}>\n <TabList className={styles.tabs}>\n <Tab>compositions</Tab>\n <Tab>properties</Tab>\n </TabList>\n <TabPanel className={styles.tabContent}>\n <CompositionsPanel\n isScaling={isScaling}\n useNameParam={useNameParam}\n includesEnvTemplate={component.preview?.includesEnvTemplate}\n hasLiveControls={currentCompositionHasControls}\n liveControlsActive={currentCompositionHasControls && !isTrayCollapsedForCurrent}\n onToggleLiveControls={toggleTrayCollapsed}\n onSelectComposition={(composition) => {\n if (!currentComposition || !location) return;\n const selectedCompositionFromUrl = params['*'];\n\n const pathSegments = location.pathname.split('/').filter((x) => x);\n\n if (!selectedCompositionFromUrl) {\n pathSegments.push(composition.identifier.toLowerCase());\n } else {\n pathSegments[pathSegments.length - 1] = composition.identifier.toLowerCase();\n }\n\n const urlParams = new URLSearchParams(searchParams);\n if (versionFromQueryParams) {\n urlParams.set('version', versionFromQueryParams);\n }\n const newPath = pathSegments.join('/');\n navigate(`/${newPath}?${urlParams.toString()}`);\n }}\n url={compositionUrl}\n compositions={component.compositions}\n active={currentComposition}\n />\n </TabPanel>\n <TabPanel className={styles.tabContent}>\n {properties && properties.length > 0 ? <PropTable rows={properties} showListView /> : <div />}\n </TabPanel>\n </TabContainer>\n </ThemeContext>\n </Pane>\n </SplitPane>\n </CompositionContextProvider>\n );\n}\n\ntype LiveControlsTrayProps = {\n trayRef: React.RefObject<HTMLDivElement | null>;\n collapsed: boolean;\n height: number | null;\n ready: boolean;\n defs: UseLiveControlsResult['defs'];\n values: UseLiveControlsResult['values'];\n onChange: UseLiveControlsResult['onChange'];\n onResizeStripMouseDown: (e: React.MouseEvent) => void;\n onToggleExpanded: () => void;\n};\n\nfunction LiveControlsTray({\n trayRef,\n collapsed,\n height,\n ready,\n defs,\n values,\n onChange,\n onResizeStripMouseDown,\n onToggleExpanded,\n}: LiveControlsTrayProps) {\n // height = null → let CSS size the tray to its content (with the max-height\n // clamp doing the upper bound); height = number → user has drag-resized,\n // pin to that.\n const trayStyle = collapsed || height === null ? undefined : { height };\n return (\n <div\n ref={trayRef}\n className={classNames(styles.controlsTray, collapsed && styles.controlsTrayCollapsed)}\n style={trayStyle}\n >\n {!collapsed && (\n <div\n className={styles.trayResizeStrip}\n onMouseDown={onResizeStripMouseDown}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n aria-label=\"Resize live controls\"\n title=\"Drag to resize\"\n >\n <div className={styles.trayDragBar} />\n </div>\n )}\n <div\n className={styles.trayHeaderInner}\n onClick={onToggleExpanded}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onToggleExpanded();\n }\n }}\n title={collapsed ? 'Click to expand' : 'Click to collapse'}\n >\n <div className={styles.trayTitleRow}>\n <Icon of=\"settings\" className={styles.trayIcon} />\n <span className={styles.trayTitle}>Live Controls</span>\n {ready && defs.length > 0 && <span className={styles.trayBadge}>{defs.length}</span>}\n </div>\n <span\n className={classNames(styles.trayCollapseIcon, collapsed && styles.trayCollapseIconCollapsed)}\n aria-hidden\n >\n <Icon of=\"right-rounded-corners\" />\n </span>\n </div>\n {!collapsed && (\n <div className={styles.trayBody}>\n {ready ? (\n <LiveControls defs={defs} values={values} onChange={onChange} />\n ) : (\n <div className={styles.trayEmpty}>No live controls available for this composition</div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport type CompositionContentProps = {\n component: ComponentModel;\n selected?: Composition;\n queryParams?: string | string[];\n emptyState?: EmptyStateSlot;\n} & ComponentCompositionProps;\n\nexport function CompositionContent({\n component,\n selected,\n queryParams,\n emptyState,\n sandbox,\n ...componentCompositionProps\n}: CompositionContentProps) {\n const env = component.environment?.id;\n const EmptyStateTemplate = emptyState?.get(env || ''); // || defaultTemplate;\n\n if (component.compositions.length === 0 && component.host === 'teambit.workspace/workspace' && EmptyStateTemplate) {\n return (\n <div className={styles.noCompositionsPage}>\n <div>\n <H1 className={styles.title}>Compositions</H1>\n <Separator isPresentational className={styles.separator} />\n <AlertCard\n level=\"info\"\n title=\"There are no\n compositions for this Component. Learn how to add compositions:\"\n >\n <MDXLayout>\n <EmptyStateTemplate />\n </MDXLayout>\n </AlertCard>\n </div>\n </div>\n );\n }\n\n if (component?.buildStatus === 'pending' && component?.host === 'teambit.scope/scope')\n return (\n <StatusMessageCard className={styles.buildStatusMessage} status=\"PROCESSING\" title=\"component preview pending\">\n this might take some time\n </StatusMessageCard>\n );\n if (component?.buildStatus === 'failed' && component?.host === 'teambit.scope/scope')\n return (\n <StatusMessageCard\n className={styles.buildStatusMessage}\n status=\"FAILURE\"\n title=\"failed to get component preview \"\n ></StatusMessageCard>\n );\n\n // TODO: get the docs domain from the community aspect and pass it here as a prop\n if (component.compositions.length === 0) {\n return (\n <EmptyBox\n title=\"There are no compositions for this component.\"\n linkText=\"Learn how to create compositions\"\n link={`https://bit.dev/reference/dev-services-overview/compositions/compositions-overview`}\n />\n );\n }\n\n return (\n <ComponentComposition\n className={styles.compositionsIframe}\n // TODO: Oded to add control for viewport.\n viewport={null}\n component={component}\n forceHeight=\"100%\"\n composition={selected}\n fullContentHeight\n pubsub={true}\n queryParams={queryParams}\n sandbox={sandbox}\n {...componentCompositionProps}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}