@teambit/compositions 1.0.994 → 1.0.995

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,8 @@ 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() ?? [];
275
+ const [previewAttrs, setPreviewAttrs] = (0, _react().useState)({});
266
276
  const isMobile = (0, _uiFoundationUiHooks().useIsMobile)();
267
277
  const showSidebar = !isMobile && component.compositions.length > 0;
268
278
  const [isSidebarOpen, setSidebarOpenness] = (0, _react().useState)(showSidebar);
@@ -280,32 +290,55 @@ function Compositions({
280
290
  fullscreen: true
281
291
  });
282
292
  const queryParams = (0, _react().useMemo)(() => _queryString().default.stringify(compositionParams), [compositionParams]);
283
- const [controlsTrayOpen, setControlsTrayOpen] = (0, _react().useState)(false);
293
+
294
+ // Tracks compositions the user has explicitly collapsed. Anything not in
295
+ // this set defaults to expanded, which gives us "auto-open on load" as a
296
+ // pure derivation rather than an effect.
297
+ const [collapsedCompositions, setCollapsedCompositions] = (0, _react().useState)(() => new Set());
284
298
  const [isDraggingTray, setIsDraggingTray] = (0, _react().useState)(false);
285
299
  const trayRef = (0, _react().useRef)(null);
286
- const trayHeightRef = (0, _react().useRef)(260);
300
+ // `null` = auto-size to content (default). Becomes a number once the user
301
+ // drag-resizes — only then do we pin a fixed height.
302
+ const [trayHeight, setTrayHeight] = (0, _react().useState)(null);
287
303
  const {
288
304
  ready,
289
305
  defs,
290
306
  values,
291
307
  onChange
292
308
  } = (0, _compositionsUi2().useLiveControls)();
293
- const onTrayDragStart = (0, _react().useCallback)(e => {
309
+ const onResizeStripMouseDown = (0, _react().useCallback)(e => {
310
+ if (e.button !== 0) return;
294
311
  e.preventDefault();
295
312
  const startY = e.clientY;
296
- const startHeight = trayHeightRef.current;
313
+ // Seed the drag from the tray's current rendered height — handles the
314
+ // initial auto-sized case (where `trayHeight` is still null).
315
+ const startHeight = trayRef.current?.offsetHeight ?? 0;
316
+ const parentEl = trayRef.current?.parentElement;
317
+ const parentHeight = parentEl?.clientHeight ?? window.innerHeight;
318
+ const maxHeight = Math.max(120, parentHeight - 80);
297
319
  setIsDraggingTray(true);
298
320
  document.body.style.cursor = 'ns-resize';
299
321
  document.body.style.userSelect = 'none';
322
+ // Mutate the tray's inline height directly and rAF-throttle, so dragging
323
+ // doesn't re-render the whole compositions tree (including the iframe)
324
+ // on every mousemove. State is committed once on mouseup.
325
+ let pendingHeight = startHeight;
326
+ let rafScheduled = false;
327
+ const applyHeight = () => {
328
+ rafScheduled = false;
329
+ if (trayRef.current) trayRef.current.style.height = `${pendingHeight}px`;
330
+ };
300
331
  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`;
332
+ const delta = startY - ev.clientY;
333
+ pendingHeight = Math.max(120, Math.min(maxHeight, startHeight + delta));
334
+ if (!rafScheduled) {
335
+ rafScheduled = true;
336
+ requestAnimationFrame(applyHeight);
305
337
  }
306
338
  };
307
339
  const onUp = () => {
308
340
  setIsDraggingTray(false);
341
+ setTrayHeight(pendingHeight);
309
342
  document.body.style.cursor = '';
310
343
  document.body.style.userSelect = '';
311
344
  document.removeEventListener('mousemove', onMove);
@@ -335,7 +368,18 @@ function Compositions({
335
368
  });
336
369
  }, [enableLiveControls]);
337
370
  const currentCompositionHasControls = ready && defs.length > 0;
338
- const showControlsTray = currentCompositionHasControls && controlsTrayOpen;
371
+ const currentCompositionIdentifier = currentComposition?.identifier;
372
+ const isTrayCollapsedForCurrent = !!currentCompositionIdentifier && collapsedCompositions.has(currentCompositionIdentifier);
373
+ const showControlsTray = currentCompositionHasControls;
374
+ const isTrayCollapsed = showControlsTray && isTrayCollapsedForCurrent;
375
+ const toggleTrayCollapsed = (0, _react().useCallback)(() => {
376
+ if (!currentCompositionIdentifier) return;
377
+ setCollapsedCompositions(prev => {
378
+ const next = new Set(prev);
379
+ if (next.has(currentCompositionIdentifier)) next.delete(currentCompositionIdentifier);else next.add(currentCompositionIdentifier);
380
+ return next;
381
+ });
382
+ }, [currentCompositionIdentifier]);
339
383
  return /*#__PURE__*/_react().default.createElement(_compositionsUiHooks().CompositionContextProvider, {
340
384
  queryParams: compositionParams,
341
385
  setQueryParams: setCompositionParams
@@ -357,65 +401,36 @@ function Compositions({
357
401
  className: _compositionsModule().default.toolbarButton
358
402
  }, /*#__PURE__*/_react().default.createElement(_designUiInput().OptionButton, {
359
403
  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
404
  })))), /*#__PURE__*/_react().default.createElement(_previewUi().SandboxPermissionsAggregator, {
369
405
  hooks: previewSandboxHooks,
370
406
  onSandboxChange: setSandboxValue,
371
407
  component: component
408
+ }), /*#__PURE__*/_react().default.createElement(_previewUi().PreviewPropsAggregator, {
409
+ hooks: previewPropsHooks,
410
+ onPreviewPropsChange: setPreviewAttrs,
411
+ component: component
372
412
  }), /*#__PURE__*/_react().default.createElement("div", {
373
413
  className: _compositionsModule().default.previewArea
374
414
  }, isDraggingTray && /*#__PURE__*/_react().default.createElement("div", {
375
415
  className: _compositionsModule().default.dragOverlay
376
- }), /*#__PURE__*/_react().default.createElement(CompositionContent, {
416
+ }), /*#__PURE__*/_react().default.createElement(CompositionContent, _extends({}, previewAttrs, {
377
417
  className: _compositionsModule().default.compositionPanel,
378
418
  emptyState: emptyState,
379
419
  component: component,
380
420
  selected: currentComposition,
381
421
  queryParams: queryParams,
382
422
  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, {
423
+ })), showControlsTray && /*#__PURE__*/_react().default.createElement(LiveControlsTray, {
424
+ trayRef: trayRef,
425
+ collapsed: isTrayCollapsed,
426
+ height: trayHeight,
427
+ ready: ready,
413
428
  defs: defs,
414
429
  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, {
430
+ onChange: onChange,
431
+ onResizeStripMouseDown: onResizeStripMouseDown,
432
+ onToggleExpanded: toggleTrayCollapsed
433
+ }))), /*#__PURE__*/_react().default.createElement(_baseUiSurfacesSplitPane2().HoverSplitter, {
419
434
  className: _compositionsModule().default.splitter
420
435
  }, /*#__PURE__*/_react().default.createElement(_uiFoundationUiButtons().Collapser, {
421
436
  placement: "left",
@@ -437,6 +452,9 @@ function Compositions({
437
452
  isScaling: isScaling,
438
453
  useNameParam: useNameParam,
439
454
  includesEnvTemplate: component.preview?.includesEnvTemplate,
455
+ hasLiveControls: currentCompositionHasControls,
456
+ liveControlsActive: currentCompositionHasControls && !isTrayCollapsedForCurrent,
457
+ onToggleLiveControls: toggleTrayCollapsed,
440
458
  onSelectComposition: composition => {
441
459
  if (!currentComposition || !location) return;
442
460
  const selectedCompositionFromUrl = params['*'];
@@ -452,9 +470,6 @@ function Compositions({
452
470
  }
453
471
  const newPath = pathSegments.join('/');
454
472
  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
473
  },
459
474
  url: compositionUrl,
460
475
  compositions: component.compositions,
@@ -466,6 +481,72 @@ function Compositions({
466
481
  showListView: true
467
482
  }) : /*#__PURE__*/_react().default.createElement("div", null)))))));
468
483
  }
484
+ function LiveControlsTray({
485
+ trayRef,
486
+ collapsed,
487
+ height,
488
+ ready,
489
+ defs,
490
+ values,
491
+ onChange,
492
+ onResizeStripMouseDown,
493
+ onToggleExpanded
494
+ }) {
495
+ // height = null → let CSS size the tray to its content (with the max-height
496
+ // clamp doing the upper bound); height = number → user has drag-resized,
497
+ // pin to that.
498
+ const trayStyle = collapsed || height === null ? undefined : {
499
+ height
500
+ };
501
+ return /*#__PURE__*/_react().default.createElement("div", {
502
+ ref: trayRef,
503
+ className: (0, _classnames().default)(_compositionsModule().default.controlsTray, collapsed && _compositionsModule().default.controlsTrayCollapsed),
504
+ style: trayStyle
505
+ }, !collapsed && /*#__PURE__*/_react().default.createElement("div", {
506
+ className: _compositionsModule().default.trayResizeStrip,
507
+ onMouseDown: onResizeStripMouseDown,
508
+ role: "separator",
509
+ "aria-orientation": "horizontal",
510
+ "aria-label": "Resize live controls",
511
+ title: "Drag to resize"
512
+ }, /*#__PURE__*/_react().default.createElement("div", {
513
+ className: _compositionsModule().default.trayDragBar
514
+ })), /*#__PURE__*/_react().default.createElement("div", {
515
+ className: _compositionsModule().default.trayHeaderInner,
516
+ onClick: onToggleExpanded,
517
+ role: "button",
518
+ tabIndex: 0,
519
+ onKeyDown: e => {
520
+ if (e.key === 'Enter' || e.key === ' ') {
521
+ e.preventDefault();
522
+ onToggleExpanded();
523
+ }
524
+ },
525
+ title: collapsed ? 'Click to expand' : 'Click to collapse'
526
+ }, /*#__PURE__*/_react().default.createElement("div", {
527
+ className: _compositionsModule().default.trayTitleRow
528
+ }, /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
529
+ of: "settings",
530
+ className: _compositionsModule().default.trayIcon
531
+ }), /*#__PURE__*/_react().default.createElement("span", {
532
+ className: _compositionsModule().default.trayTitle
533
+ }, "Live Controls"), ready && defs.length > 0 && /*#__PURE__*/_react().default.createElement("span", {
534
+ className: _compositionsModule().default.trayBadge
535
+ }, defs.length)), /*#__PURE__*/_react().default.createElement("span", {
536
+ className: (0, _classnames().default)(_compositionsModule().default.trayCollapseIcon, collapsed && _compositionsModule().default.trayCollapseIconCollapsed),
537
+ "aria-hidden": true
538
+ }, /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
539
+ of: "right-rounded-corners"
540
+ }))), !collapsed && /*#__PURE__*/_react().default.createElement("div", {
541
+ className: _compositionsModule().default.trayBody
542
+ }, ready ? /*#__PURE__*/_react().default.createElement(_liveControlPanel().LiveControls, {
543
+ defs: defs,
544
+ values: values,
545
+ onChange: onChange
546
+ }) : /*#__PURE__*/_react().default.createElement("div", {
547
+ className: _compositionsModule().default.trayEmpty
548
+ }, "No live controls available for this composition")));
549
+ }
469
550
  function CompositionContent(_ref) {
470
551
  let {
471
552
  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":";;;;;;;AACA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,uBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,gBAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,eAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,QAAA;EAAA,MAAAJ,IAAA,GAAAK,sBAAA,CAAAH,OAAA;EAAAE,OAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,aAAA;EAAA,MAAAN,IAAA,GAAAK,sBAAA,CAAAH,OAAA;EAAAI,YAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,iBAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,gBAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,yBAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,wBAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,0BAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,yBAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAU,WAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,UAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,cAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,aAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAY,QAAA;EAAA,MAAAZ,IAAA,GAAAE,OAAA;EAAAU,OAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,eAAA;EAAA,MAAAb,IAAA,GAAAE,OAAA;EAAAW,cAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,uBAAA;EAAA,MAAAd,IAAA,GAAAE,OAAA;EAAAY,sBAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAe,UAAA;EAAA,MAAAf,IAAA,GAAAE,OAAA;EAAAa,SAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAgB,WAAA;EAAA,MAAAhB,IAAA,GAAAE,OAAA;EAAAc,UAAA,YAAAA,CAAA;IAAA,OAAAhB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiB,qBAAA;EAAA,MAAAjB,IAAA,GAAAE,OAAA;EAAAe,oBAAA,YAAAA,CAAA;IAAA,OAAAjB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAkB,gBAAA;EAAA,MAAAlB,IAAA,GAAAE,OAAA;EAAAgB,eAAA,YAAAA,CAAA;IAAA,OAAAlB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAmB,qBAAA;EAAA,MAAAnB,IAAA,GAAAE,OAAA;EAAAiB,oBAAA,YAAAA,CAAA;IAAA,OAAAnB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAoB,OAAA;EAAA,MAAApB,IAAA,GAAAE,OAAA;EAAAkB,MAAA,YAAAA,CAAA;IAAA,OAAApB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAqB,WAAA;EAAA,MAAArB,IAAA,GAAAE,OAAA;EAAAmB,UAAA,YAAAA,CAAA;IAAA,OAAArB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAsB,eAAA;EAAA,MAAAtB,IAAA,GAAAE,OAAA;EAAAoB,cAAA,YAAAA,CAAA;IAAA,OAAAtB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAuB,WAAA;EAAA,MAAAvB,IAAA,GAAAE,OAAA;EAAAqB,UAAA,YAAAA,CAAA;IAAA,OAAAvB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAwB,qBAAA;EAAA,MAAAxB,IAAA,GAAAE,OAAA;EAAAsB,oBAAA,YAAAA,CAAA;IAAA,OAAAxB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAyB,eAAA;EAAA,MAAAzB,IAAA,GAAAE,OAAA;EAAAuB,cAAA,YAAAA,CAAA;IAAA,OAAAzB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA0B,kBAAA;EAAA,MAAA1B,IAAA,GAAAE,OAAA;EAAAwB,iBAAA,YAAAA,CAAA;IAAA,OAAA1B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA2B,WAAA;EAAA,MAAA3B,IAAA,GAAAE,OAAA;EAAAyB,UAAA,YAAAA,CAAA;IAAA,OAAA3B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA4B,oBAAA;EAAA,MAAA5B,IAAA,GAAAE,OAAA;EAAA0B,mBAAA,YAAAA,CAAA;IAAA,OAAA5B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA6B,iBAAA;EAAA,MAAA7B,IAAA,GAAAE,OAAA;EAAA2B,gBAAA,YAAAA,CAAA;IAAA,OAAA7B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAA8B,oBAAA;EAAA,MAAA9B,IAAA,GAAAK,sBAAA,CAAAH,OAAA;EAAA4B,mBAAA,YAAAA,CAAA;IAAA,OAAA9B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA+B,IAAA;EAAA,MAAA/B,IAAA,GAAAE,OAAA;EAAA6B,GAAA,YAAAA,CAAA;IAAA,OAAA/B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAgC,mBAAA;EAAA,MAAAhC,IAAA,GAAAE,OAAA;EAAA8B,kBAAA,YAAAA,CAAA;IAAA,OAAAhC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiC,kBAAA;EAAA,MAAAjC,IAAA,GAAAE,OAAA;EAAA+B,iBAAA,YAAAA,CAAA;IAAA,OAAAjC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAkC,mCAAA;EAAA,MAAAlC,IAAA,GAAAE,OAAA;EAAAgC,kCAAA,YAAAA,CAAA;IAAA,OAAAlC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA4F,MAAAmC,SAAA;AAAA,SAAA9B,uBAAA+B,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAnC,wBAAAmC,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAvC,uBAAA,YAAAA,CAAAmC,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAAA,SAAAgB,SAAA,WAAAA,QAAA,GAAAH,MAAA,CAAAI,MAAA,GAAAJ,MAAA,CAAAI,MAAA,CAAAC,IAAA,eAAAf,CAAA,aAAAN,CAAA,MAAAA,CAAA,GAAAsB,SAAA,CAAAC,MAAA,EAAAvB,CAAA,UAAAG,CAAA,GAAAmB,SAAA,CAAAtB,CAAA,YAAAK,CAAA,IAAAF,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAZ,CAAA,EAAAE,CAAA,MAAAC,CAAA,CAAAD,CAAA,IAAAF,CAAA,CAAAE,CAAA,aAAAC,CAAA,KAAAa,QAAA,CAAAK,KAAA,OAAAF,SAAA;AAAA,SAAAG,yBAAAzB,CAAA,EAAAG,CAAA,gBAAAH,CAAA,iBAAAO,CAAA,EAAAF,CAAA,EAAAG,CAAA,GAAAkB,6BAAA,CAAA1B,CAAA,EAAAG,CAAA,OAAAa,MAAA,CAAAW,qBAAA,QAAArB,CAAA,GAAAU,MAAA,CAAAW,qBAAA,CAAA3B,CAAA,QAAAK,CAAA,MAAAA,CAAA,GAAAC,CAAA,CAAAiB,MAAA,EAAAlB,CAAA,IAAAE,CAAA,GAAAD,CAAA,CAAAD,CAAA,UAAAF,CAAA,CAAAyB,OAAA,CAAArB,CAAA,QAAAsB,oBAAA,CAAAd,IAAA,CAAAf,CAAA,EAAAO,CAAA,MAAAC,CAAA,CAAAD,CAAA,IAAAP,CAAA,CAAAO,CAAA,aAAAC,CAAA;AAAA,SAAAkB,8BAAArB,CAAA,EAAAL,CAAA,gBAAAK,CAAA,iBAAAF,CAAA,gBAAAG,CAAA,IAAAD,CAAA,SAAAS,cAAA,CAAAC,IAAA,CAAAV,CAAA,EAAAC,CAAA,gBAAAN,CAAA,CAAA4B,OAAA,CAAAtB,CAAA,aAAAH,CAAA,CAAAG,CAAA,IAAAD,CAAA,CAAAC,CAAA,YAAAH,CAAA;AAAA,SAAA2B,QAAA9B,CAAA,EAAAK,CAAA,QAAAF,CAAA,GAAAa,MAAA,CAAAe,IAAA,CAAA/B,CAAA,OAAAgB,MAAA,CAAAW,qBAAA,QAAApB,CAAA,GAAAS,MAAA,CAAAW,qBAAA,CAAA3B,CAAA,GAAAK,CAAA,KAAAE,CAAA,GAAAA,CAAA,CAAAyB,MAAA,WAAA3B,CAAA,WAAAW,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAK,CAAA,EAAA4B,UAAA,OAAA9B,CAAA,CAAA+B,IAAA,CAAAV,KAAA,CAAArB,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAgC,cAAAnC,CAAA,aAAAK,CAAA,MAAAA,CAAA,GAAAiB,SAAA,CAAAC,MAAA,EAAAlB,CAAA,UAAAF,CAAA,WAAAmB,SAAA,CAAAjB,CAAA,IAAAiB,SAAA,CAAAjB,CAAA,QAAAA,CAAA,OAAAyB,OAAA,CAAAd,MAAA,CAAAb,CAAA,OAAAiC,OAAA,WAAA/B,CAAA,IAAAgC,eAAA,CAAArC,CAAA,EAAAK,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAAW,MAAA,CAAAsB,yBAAA,GAAAtB,MAAA,CAAAuB,gBAAA,CAAAvC,CAAA,EAAAgB,MAAA,CAAAsB,yBAAA,CAAAnC,CAAA,KAAA2B,OAAA,CAAAd,MAAA,CAAAb,CAAA,GAAAiC,OAAA,WAAA/B,CAAA,IAAAW,MAAA,CAAAC,cAAA,CAAAjB,CAAA,EAAAK,CAAA,EAAAW,MAAA,CAAAE,wBAAA,CAAAf,CAAA,EAAAE,CAAA,iBAAAL,CAAA;AAAA,SAAAqC,gBAAArC,CAAA,EAAAK,CAAA,EAAAF,CAAA,YAAAE,CAAA,GAAAmC,cAAA,CAAAnC,CAAA,MAAAL,CAAA,GAAAgB,MAAA,CAAAC,cAAA,CAAAjB,CAAA,EAAAK,CAAA,IAAAoC,KAAA,EAAAtC,CAAA,EAAA8B,UAAA,MAAAS,YAAA,MAAAC,QAAA,UAAA3C,CAAA,CAAAK,CAAA,IAAAF,CAAA,EAAAH,CAAA;AAAA,SAAAwC,eAAArC,CAAA,QAAAK,CAAA,GAAAoC,YAAA,CAAAzC,CAAA,uCAAAK,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAoC,aAAAzC,CAAA,EAAAE,CAAA,2BAAAF,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAH,CAAA,GAAAG,CAAA,CAAA0C,MAAA,CAAAC,WAAA,kBAAA9C,CAAA,QAAAQ,CAAA,GAAAR,CAAA,CAAAe,IAAA,CAAAZ,CAAA,EAAAE,CAAA,uCAAAG,CAAA,SAAAA,CAAA,YAAAuC,SAAA,yEAAA1C,CAAA,GAAA2C,MAAA,GAAAC,MAAA,EAAA9C,CAAA;AAE5F;AACA,MAAM+C,IAAI,GAAGC,2BAAe;AAarB,SAASC,YAAYA,CAAC;EAC3BC,cAAc;EACdC,UAAU;EACVC,qBAAqB;EACrBC,kBAAkB,GAAG;AACL,CAAC,EAAE;EACnB,MAAMC,SAAS,GAAG,IAAAC,mBAAU,EAACC,6BAAgB,CAAC;EAC9C,MAAMC,cAAc,GAAGH,SAAS,CAACI,EAAE,CAACC,QAAQ,CAAC,CAAC;EAC9C,MAAM,CAACC,YAAY,CAAC,GAAG,IAAAC,iCAAe,EAAC,CAAC;EACxC,MAAMC,MAAM,GAAG,IAAAC,2BAAS,EAAC,CAAC;EAC1B,MAAMC,sBAAsB,GAAGJ,YAAY,CAACnD,GAAG,CAAC,SAAS,CAAC;EAC1D,MAAMwD,QAAQ,GAAG,IAAAC,kCAAW,EAAC,CAAC;EAC9B,MAAMC,QAAQ,GAAG,IAAAC,kCAAW,EAAC,CAAC;EAC9B,MAAMC,sBAAsB,GAAGP,MAAM,CAAC,GAAG,CAAC;EAC1C,MAAMQ,kBAAkB,GACtBhB,SAAS,CAACiB,YAAY,CAACC,IAAI,CAAEC,WAAW,IAAKA,WAAW,CAACC,UAAU,CAACC,WAAW,CAAC,CAAC,KAAKN,sBAAsB,CAAC,IAC7G,IAAAO,iBAAI,EAACtB,SAAS,CAACiB,YAAY,CAAC;EAC9B,MAAM,CAACM,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAC,iBAAQ,EAAC,EAAE,CAAC;EACpD,MAAMC,WAAW,GAAG,IAAAC,eAAM,EAACX,kBAAkB,CAAC;EAC9CU,WAAW,CAACE,OAAO,GAAGZ,kBAAkB;EACxC,IAAAa,sEAAiC,EAAC1B,cAAc,EAAEJ,kBAAkB,CAAC;EAErE,MAAM+B,UAAU,GAAG,IAAAC,wBAAO,EAAC/B,SAAS,CAACI,EAAE,CAAC;EACxC,MAAM4B,mBAAmB,GAAGlC,qBAAqB,EAAEmC,MAAM,CAAC,CAAC,IAAI,EAAE;EACjE,MAAMC,QAAQ,GAAG,IAAAC,kCAAW,EAAC,CAAC;EAC9B,MAAMC,WAAW,GAAG,CAACF,QAAQ,IAAIlC,SAAS,CAACiB,YAAY,CAACnD,MAAM,GAAG,CAAC;EAClE,MAAM,CAACuE,aAAa,EAAEC,kBAAkB,CAAC,GAAG,IAAAb,iBAAQ,EAACW,WAAW,CAAC;EAEjE,MAAMG,eAAe,GAAGF,aAAa,GAAGG,iCAAM,CAACC,GAAG,GAAGD,iCAAM,CAACE,IAAI;EAEhE,MAAMC,cAAc,GAAG,IAAAC,yBAAY,EAAC5C,SAAS,EAAE,cAAc,CAAC;EAC9D,MAAM6C,SAAS,GAAG7C,SAAS,EAAE8C,OAAO,EAAED,SAAS;EAC/C,MAAME,oBAAoB,GAAG/C,SAAS,EAAE8C,OAAO,EAAEE,mBAAmB;EACpE,MAAMC,YAAY,GAAGjD,SAAS,EAAE8C,OAAO,EAAEG,YAAY;EACrD,MAAMC,0BAA0B,GAC9BD,YAAY,IAAKJ,SAAS,IAAIE,oBAAoB,KAAK,KAAM,GACzD,QAAQ/B,kBAAkB,EAAEI,UAAU,EAAE,GACxCJ,kBAAkB,EAAEI,UAAU;EAEpC,MAAM+B,yBAAyB,GAAG,IAAAP,yBAAY,EAAC5C,SAAS,EAAE,cAAc,EAAEkD,0BAA0B,CAAC;EAErG,MAAM,CAACE,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG,IAAA5B,iBAAQ,EAAsB,MAC9E1B,kBAAkB,GAAG;IAAEuD,UAAU,EAAE,IAAI;IAAEC,YAAY,EAAE;EAAK,CAAC,GAAG;IAAED,UAAU,EAAE;EAAK,CACrF,CAAC;EAED,MAAME,WAAW,GAAG,IAAAC,gBAAO,EAAC,MAAMC,sBAAW,CAACC,SAAS,CAACP,iBAAiB,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAEhG,MAAM,CAACQ,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG,IAAApC,iBAAQ,EAAC,KAAK,CAAC;EAC/D,MAAM,CAACqC,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAtC,iBAAQ,EAAC,KAAK,CAAC;EAC3D,MAAMuC,OAAO,GAAG,IAAArC,eAAM,EAAiB,IAAI,CAAC;EAC5C,MAAMsC,aAAa,GAAG,IAAAtC,eAAM,EAAC,GAAG,CAAC;EACjC,MAAM;IAAEuC,KAAK;IAAEC,IAAI;IAAElC,MAAM;IAAEmC;EAAS,CAAC,GAAG,IAAAC,kCAAe,EAAC,CAAC;EAE3D,MAAMC,eAAe,GAAG,IAAAC,oBAAW,EAAEhI,CAAmB,IAAK;IAC3DA,CAAC,CAACiI,cAAc,CAAC,CAAC;IAClB,MAAMC,MAAM,GAAGlI,CAAC,CAACmI,OAAO;IACxB,MAAMC,WAAW,GAAGV,aAAa,CAACrC,OAAO;IACzCmC,iBAAiB,CAAC,IAAI,CAAC;IACvBa,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,MAAM,GAAG,WAAW;IACxCH,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACE,UAAU,GAAG,MAAM;IACvC,MAAMC,MAAM,GAAIC,EAAc,IAAK;MACjC,MAAMC,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAG,EAAED,IAAI,CAACE,GAAG,CAAC,GAAG,EAAEX,WAAW,IAAIF,MAAM,GAAGS,EAAE,CAACR,OAAO,CAAC,CAAC,CAAC;MAC9ET,aAAa,CAACrC,OAAO,GAAGuD,IAAI;MAC5B,IAAInB,OAAO,CAACpC,OAAO,EAAE;QACnBoC,OAAO,CAACpC,OAAO,CAACkD,KAAK,CAACS,SAAS,GAAG,GAAGJ,IAAI,IAAI;MAC/C;IACF,CAAC;IACD,MAAMK,IAAI,GAAGA,CAAA,KAAM;MACjBzB,iBAAiB,CAAC,KAAK,CAAC;MACxBa,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,MAAM,GAAG,EAAE;MAC/BH,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACE,UAAU,GAAG,EAAE;MACnCJ,QAAQ,CAACa,mBAAmB,CAAC,WAAW,EAAER,MAAM,CAAC;MACjDL,QAAQ,CAACa,mBAAmB,CAAC,SAAS,EAAED,IAAI,CAAC;IAC/C,CAAC;IACDZ,QAAQ,CAACc,gBAAgB,CAAC,WAAW,EAAET,MAAM,CAAC;IAC9CL,QAAQ,CAACc,gBAAgB,CAAC,SAAS,EAAEF,IAAI,CAAC;EAC5C,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,IAAAG,kBAAS,EAAC,MAAMrD,kBAAkB,CAACF,WAAW,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAC/D,IAAAuD,kBAAS,EAAC,MAAM;IACd,IAAI5F,kBAAkB,EAAE;MACtBsD,oBAAoB,CAAEzB,OAAO,IAAK;QAChC,IAAIA,OAAO,CAAC2B,YAAY,KAAK,IAAI,EAAE,OAAO3B,OAAO;QACjD,OAAAlD,aAAA,CAAAA,aAAA,KAAYkD,OAAO;UAAE2B,YAAY,EAAE;QAAI;MACzC,CAAC,CAAC;MACF;IACF;IAEAF,oBAAoB,CAAEzB,OAAO,IAAK;MAChC,IAAI,EAAE,cAAc,IAAIA,OAAO,CAAC,EAAE,OAAOA,OAAO;MAChD,MAAMuD,IAAI,GAAAzG,aAAA,KAAQkD,OAAO,CAAE;MAC3B,OAAOuD,IAAI,CAAC5B,YAAY;MACxB,OAAO4B,IAAI;IACb,CAAC,CAAC;EACJ,CAAC,EAAE,CAACpF,kBAAkB,CAAC,CAAC;EAExB,MAAM6F,6BAA6B,GAAG1B,KAAK,IAAIC,IAAI,CAACrG,MAAM,GAAG,CAAC;EAC9D,MAAM+H,gBAAgB,GAAGD,6BAA6B,IAAIhC,gBAAgB;EAE1E,oBACE1J,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACxK,oBAAA,GAAAyK,0BAA0B;IAACvC,WAAW,EAAEJ,iBAAkB;IAAC4C,cAAc,EAAE3C;EAAqB,gBAC/FnJ,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACnL,wBAAA,GAAAsL,SAAS;IAACC,MAAM,EAAE3D,eAAgB;IAAC4D,IAAI,EAAC,KAAK;IAACC,SAAS,EAAEC,6BAAM,CAACC;EAAiB,gBAChFpM,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACnL,wBAAA,GAAA4L,IAAI;IAACH,SAAS,EAAEC,6BAAM,CAAC3D;EAAK,gBAC3BxI,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACzK,eAAA,GAAAmL,mBAAmB;IAAC5G,cAAc,EAAEA,cAAe;IAACwG,SAAS,EAAEC,6BAAM,CAACI;EAAQ,gBAC7EvM,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAChK,UAAA,GAAA4K,OAAO;IAACC,OAAO,EAAE,iBAAkB;IAACC,SAAS,EAAC;EAAQ,gBACrD1M,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACrG,IAAI;IAACoH,QAAQ;IAACC,IAAI,EAAE3D,yBAA0B;IAACiD,SAAS,EAAEC,6BAAM,CAACU;EAAc,gBAC9E7M,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAClK,cAAA,GAAAoL,YAAY;IAACC,IAAI,EAAC;EAAU,CAAE,CAC3B,CACC,CAAC,EACTrB,6BAA6B,iBAC5B1L,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAChK,UAAA,GAAA4K,OAAO;IAACC,OAAO,EAAE/C,gBAAgB,GAAG,eAAe,GAAG,eAAgB;IAACgD,SAAS,EAAC;EAAQ,gBACxF1M,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IACEM,SAAS,EAAE,GAAGC,6BAAM,CAACU,aAAa,IAAInD,gBAAgB,GAAGyC,6BAAM,CAACa,mBAAmB,GAAG,EAAE,EAAG;IAC3FC,OAAO,EAAEA,CAAA,KAAMtD,mBAAmB,CAAE/G,CAAC,IAAK,CAACA,CAAC;EAAE,gBAE9C5C,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC/J,mBAAA,GAAAqL,IAAI;IAACC,EAAE,EAAC;EAAU,CAAE,CACf,CACD,CAEQ,CAAC,eACtBnN,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC3K,UAAA,GAAAmM,4BAA4B;IAC3BC,KAAK,EAAEvF,mBAAoB;IAC3BwF,eAAe,EAAEhG,eAAgB;IACjCxB,SAAS,EAAEA;EAAU,CACtB,CAAC,eACF9F,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAKM,SAAS,EAAEC,6BAAM,CAACoB;EAAY,GAChC3D,cAAc,iBAAI5J,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAKM,SAAS,EAAEC,6BAAM,CAACqB;EAAY,CAAE,CAAC,eACzDxN,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC6B,kBAAkB;IACjBvB,SAAS,EAAEC,6BAAM,CAACuB,gBAAiB;IACnC/H,UAAU,EAAEA,UAAW;IACvBG,SAAS,EAAEA,SAAU;IACrB6H,QAAQ,EAAE7G,kBAAmB;IAC7BwC,WAAW,EAAEA,WAAY;IACzBsE,OAAO,EAAEvG;EAAa,CACvB,CAAC,EACDsE,gBAAgB,iBACf3L,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAKiC,GAAG,EAAE/D,OAAQ;IAACoC,SAAS,EAAEC,6BAAM,CAAC2B,YAAa;IAAClD,KAAK,EAAE;MAAES,SAAS,EAAEtB,aAAa,CAACrC;IAAQ;EAAE,gBAC7F1H,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAKM,SAAS,EAAEC,6BAAM,CAAC4B,cAAe;IAACC,WAAW,EAAE5D;EAAgB,gBAClEpK,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAKM,SAAS,EAAEC,6BAAM,CAAC8B;EAAY,CAAE,CAClC,CAAC,eACNjO,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAKM,SAAS,EAAEC,6BAAM,CAAC+B;EAAW,gBAChClO,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAKM,SAAS,EAAEC,6BAAM,CAACgC;EAAa,gBAClCnO,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC/J,mBAAA,GAAAqL,IAAI;IAACC,EAAE,EAAC,UAAU;IAACjB,SAAS,EAAEC,6BAAM,CAACiC;EAAS,CAAE,CAAC,eAClDpO,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAMM,SAAS,EAAEC,6BAAM,CAACkC;EAAU,GAAC,eAAmB,CAAC,EACtDrE,KAAK,IAAIC,IAAI,CAACrG,MAAM,GAAG,CAAC,iBAAI5D,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAMM,SAAS,EAAEC,6BAAM,CAACmC;EAAU,GAAErE,IAAI,CAACrG,MAAa,CAChF,CAAC,eACN5D,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAQM,SAAS,EAAEC,6BAAM,CAACoC,SAAU;IAACtB,OAAO,EAAEA,CAAA,KAAMtD,mBAAmB,CAAC,KAAK;EAAE,gBAC7E3J,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC/J,mBAAA,GAAAqL,IAAI;IAACC,EAAE,EAAC;EAAG,CAAE,CACR,CACL,CAAC,eACNnN,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAKM,SAAS,EAAEC,6BAAM,CAACqC;EAAS,GAC7BxE,KAAK,gBACJhK,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC1J,iBAAA,GAAAuM,YAAY;IAACxE,IAAI,EAAEA,IAAK;IAAClC,MAAM,EAAEA,MAAO;IAACmC,QAAQ,EAAEA;EAAS,CAAE,CAAC,gBAEhElK,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;IAAKM,SAAS,EAAEC,6BAAM,CAACuC;EAAU,GAAC,iDAAoD,CAErF,CACF,CAEJ,CACD,CAAC,eACP1O,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAClL,yBAAA,GAAAiO,aAAa;IAACzC,SAAS,EAAEC,6BAAM,CAACyC;EAAS,gBACxC5O,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC7K,sBAAA,GAAA8N,SAAS;IACRnC,SAAS,EAAC,MAAM;IAChBoC,MAAM,EAAE3G,aAAc;IACtB6F,WAAW,EAAG3L,CAAC,IAAKA,CAAC,CAAC0M,eAAe,CAAC,CAAE,CAAC;IAAA;IACzC9B,OAAO,EAAEA,CAAA,KAAM7E,kBAAkB,CAAE4G,CAAC,IAAK,CAACA,CAAC,CAAE;IAC7CC,cAAc,EAAE,GAAG9G,aAAa,GAAG,MAAM,GAAG,MAAM,oBAAqB;IACvE+D,SAAS,EAAEC,6BAAM,CAAC+C;EAAU,CAC7B,CACY,CAAC,eAChBlP,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACnL,wBAAA,GAAA4L,IAAI;IAACH,SAAS,EAAEC,6BAAM,CAACgD;EAAM,gBAC5BnP,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACpL,gBAAA,GAAA4O,YAAY,qBACXpP,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC/K,OAAA,GAAAwO,YAAY;IAACnD,SAAS,EAAEC,6BAAM,CAACmD;EAAc,gBAC5CtP,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC/K,OAAA,GAAA0O,OAAO;IAACrD,SAAS,EAAEC,6BAAM,CAACqD;EAAK,gBAC9BxP,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC/K,OAAA,GAAA4O,GAAG,QAAC,cAAiB,CAAC,eACvBzP,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC/K,OAAA,GAAA4O,GAAG,QAAC,YAAe,CACb,CAAC,eACVzP,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC/K,OAAA,GAAA6O,QAAQ;IAACxD,SAAS,EAAEC,6BAAM,CAACwD;EAAW,gBACrC3P,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC3J,kBAAA,GAAA2N,iBAAiB;IAChBjH,SAAS,EAAEA,SAAU;IACrBI,YAAY,EAAEA,YAAa;IAC3BD,mBAAmB,EAAEhD,SAAS,CAAC8C,OAAO,EAAEE,mBAAoB;IAC5D+G,mBAAmB,EAAG5I,WAAW,IAAK;MACpC,IAAI,CAACH,kBAAkB,IAAI,CAACH,QAAQ,EAAE;MACtC,MAAMmJ,0BAA0B,GAAGxJ,MAAM,CAAC,GAAG,CAAC;MAE9C,MAAMyJ,YAAY,GAAGpJ,QAAQ,CAACqJ,QAAQ,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC5L,MAAM,CAAE2K,CAAC,IAAKA,CAAC,CAAC;MAElE,IAAI,CAACc,0BAA0B,EAAE;QAC/BC,YAAY,CAACxL,IAAI,CAAC0C,WAAW,CAACC,UAAU,CAACC,WAAW,CAAC,CAAC,CAAC;MACzD,CAAC,MAAM;QACL4I,YAAY,CAACA,YAAY,CAACnM,MAAM,GAAG,CAAC,CAAC,GAAGqD,WAAW,CAACC,UAAU,CAACC,WAAW,CAAC,CAAC;MAC9E;MAEA,MAAM+I,SAAS,GAAG,IAAIC,eAAe,CAAC/J,YAAY,CAAC;MACnD,IAAII,sBAAsB,EAAE;QAC1B0J,SAAS,CAAChN,GAAG,CAAC,SAAS,EAAEsD,sBAAsB,CAAC;MAClD;MACA,MAAM4J,OAAO,GAAGL,YAAY,CAACM,IAAI,CAAC,GAAG,CAAC;MACtC5J,QAAQ,CAAC,IAAI2J,OAAO,IAAIF,SAAS,CAAC/J,QAAQ,CAAC,CAAC,EAAE,CAAC;MAC/C;MACA;MACAwD,mBAAmB,CAAC,IAAI,CAAC;IAC3B,CAAE;IACF2G,GAAG,EAAE7H,cAAe;IACpB1B,YAAY,EAAEjB,SAAS,CAACiB,YAAa;IACrCwJ,MAAM,EAAEzJ;EAAmB,CAC5B,CACO,CAAC,eACX9G,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC/K,OAAA,GAAA6O,QAAQ;IAACxD,SAAS,EAAEC,6BAAM,CAACwD;EAAW,GACpC/H,UAAU,IAAIA,UAAU,CAAChE,MAAM,GAAG,CAAC,gBAAG5D,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAChL,aAAA,GAAA4P,SAAS;IAACC,IAAI,EAAE7I,UAAW;IAAC8I,YAAY;EAAA,CAAE,CAAC,gBAAG1Q,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,YAAM,CACpF,CACE,CACF,CACV,CACG,CACe,CAAC;AAEjC;AASO,SAAS6B,kBAAkBA,CAAAkD,IAAA,EAON;EAAA,IAPO;MACjC7K,SAAS;MACT6H,QAAQ;MACRrE,WAAW;MACX3D,UAAU;MACViI;IAEuB,CAAC,GAAA+C,IAAA;IADrBC,yBAAyB,GAAA9M,wBAAA,CAAA6M,IAAA,EAAAvO,SAAA;EAE5B,MAAMyO,GAAG,GAAG/K,SAAS,CAACgL,WAAW,EAAE5K,EAAE;EACrC,MAAM6K,kBAAkB,GAAGpL,UAAU,EAAE1C,GAAG,CAAC4N,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;;EAEvD,IAAI/K,SAAS,CAACiB,YAAY,CAACnD,MAAM,KAAK,CAAC,IAAIkC,SAAS,CAACkL,IAAI,KAAK,6BAA6B,IAAID,kBAAkB,EAAE;IACjH,oBACE/Q,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA;MAAKM,SAAS,EAAEC,6BAAM,CAAC8E;IAAmB,gBACxCjR,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,2BACE5L,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACrK,cAAA,GAAA2P,EAAE;MAAChF,SAAS,EAAEC,6BAAM,CAACgF;IAAM,GAAC,cAAgB,CAAC,eAC9CnR,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACtK,UAAA,GAAA8P,SAAS;MAACC,gBAAgB;MAACnF,SAAS,EAAEC,6BAAM,CAACmF;IAAU,CAAE,CAAC,eAC3DtR,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACpK,UAAA,GAAA+P,SAAS;MACRC,KAAK,EAAC,MAAM;MACZL,KAAK,EAAC;IAC4D,gBAElEnR,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACvK,MAAA,GAAAoQ,SAAS,qBACRzR,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACmF,kBAAkB,MAAE,CACZ,CACF,CACR,CACF,CAAC;EAEV;EAEA,IAAIjL,SAAS,EAAE4L,WAAW,KAAK,SAAS,IAAI5L,SAAS,EAAEkL,IAAI,KAAK,qBAAqB,EACnF,oBACEhR,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACjK,iBAAA,GAAAgQ,iBAAiB;IAACzF,SAAS,EAAEC,6BAAM,CAACyF,kBAAmB;IAACC,MAAM,EAAC,YAAY;IAACV,KAAK,EAAC;EAA2B,GAAC,2BAE5F,CAAC;EAExB,IAAIrL,SAAS,EAAE4L,WAAW,KAAK,QAAQ,IAAI5L,SAAS,EAAEkL,IAAI,KAAK,qBAAqB,EAClF,oBACEhR,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAACjK,iBAAA,GAAAgQ,iBAAiB;IAChBzF,SAAS,EAAEC,6BAAM,CAACyF,kBAAmB;IACrCC,MAAM,EAAC,SAAS;IAChBV,KAAK,EAAC;EAAkC,CACtB,CAAC;;EAGzB;EACA,IAAIrL,SAAS,CAACiB,YAAY,CAACnD,MAAM,KAAK,CAAC,EAAE;IACvC,oBACE5D,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC5K,SAAA,GAAA8Q,QAAQ;MACPX,KAAK,EAAC,+CAA+C;MACrDY,QAAQ,EAAC,kCAAkC;MAC3CC,IAAI,EAAE;IAAqF,CAC5F,CAAC;EAEN;EAEA,oBACEhS,MAAA,GAAAuC,OAAA,CAAAqJ,aAAA,CAAC5J,GAAA,GAAAiQ,oBAAoB,EAAAzO,QAAA;IACnB0I,SAAS,EAAEC,6BAAM,CAAC+F;IAClB;IAAA;IACAC,QAAQ,EAAE,IAAK;IACfrM,SAAS,EAAEA,SAAU;IACrBsM,WAAW,EAAC,MAAM;IAClBnL,WAAW,EAAE0G,QAAS;IACtB0E,iBAAiB;IACjBC,MAAM,EAAE,IAAK;IACbhJ,WAAW,EAAEA,WAAY;IACzBsE,OAAO,EAAEA;EAAQ,GACbgD,yBAAyB,CAC9B,CAAC;AAEN","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","previewAttrs","setPreviewAttrs","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","PreviewPropsAggregator","onPreviewPropsChange","previewArea","dragOverlay","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 type { PreviewIframeAttrs } from '@teambit/preview.ui.component-preview';\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 [previewAttrs, setPreviewAttrs] = useState<PreviewIframeAttrs>({});\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 <PreviewPropsAggregator\n hooks={previewPropsHooks}\n onPreviewPropsChange={setPreviewAttrs}\n component={component}\n />\n <div className={styles.previewArea}>\n {isDraggingTray && <div className={styles.dragOverlay} />}\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 {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":[]}