@dxos/plugin-stack 0.7.4 → 0.7.5-main.937ce75

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.
Files changed (43) hide show
  1. package/dist/lib/browser/StackMain-HSYQ5B3Y.mjs +295 -0
  2. package/dist/lib/browser/StackMain-HSYQ5B3Y.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +28 -163
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/node/StackMain-AWN5MFZK.cjs +309 -0
  7. package/dist/lib/node/StackMain-AWN5MFZK.cjs.map +7 -0
  8. package/dist/lib/node/index.cjs +28 -161
  9. package/dist/lib/node/index.cjs.map +4 -4
  10. package/dist/lib/node/meta.json +1 -1
  11. package/dist/lib/node-esm/StackMain-EFCZCMIJ.mjs +296 -0
  12. package/dist/lib/node-esm/StackMain-EFCZCMIJ.mjs.map +7 -0
  13. package/dist/lib/node-esm/index.mjs +28 -163
  14. package/dist/lib/node-esm/index.mjs.map +4 -4
  15. package/dist/lib/node-esm/meta.json +1 -1
  16. package/dist/types/src/StackPlugin.d.ts.map +1 -1
  17. package/dist/types/src/components/StackMain.d.ts.map +1 -1
  18. package/dist/types/src/components/StackSection.d.ts.map +1 -1
  19. package/dist/types/src/components/index.d.ts +0 -1
  20. package/dist/types/src/components/index.d.ts.map +1 -1
  21. package/dist/types/src/types/stack.d.ts +6 -12
  22. package/dist/types/src/types/stack.d.ts.map +1 -1
  23. package/dist/types/src/types/types.d.ts +4 -16
  24. package/dist/types/src/types/types.d.ts.map +1 -1
  25. package/dist/types/tsconfig.tsbuildinfo +1 -0
  26. package/package.json +23 -23
  27. package/src/StackPlugin.tsx +26 -47
  28. package/src/components/StackMain.tsx +60 -69
  29. package/src/components/StackSection.tsx +2 -4
  30. package/src/components/index.ts +0 -1
  31. package/src/types/types.ts +3 -19
  32. package/dist/lib/browser/StackMain-4D4J4IRK.mjs +0 -391
  33. package/dist/lib/browser/StackMain-4D4J4IRK.mjs.map +0 -7
  34. package/dist/lib/node/StackMain-V7C55NCF.cjs +0 -403
  35. package/dist/lib/node/StackMain-V7C55NCF.cjs.map +0 -7
  36. package/dist/lib/node-esm/StackMain-5I43UWGF.mjs +0 -392
  37. package/dist/lib/node-esm/StackMain-5I43UWGF.mjs.map +0 -7
  38. package/dist/types/src/components/AddSection.d.ts +0 -6
  39. package/dist/types/src/components/AddSection.d.ts.map +0 -1
  40. package/dist/types/src/components/AddSectionDialog.d.ts +0 -14
  41. package/dist/types/src/components/AddSectionDialog.d.ts.map +0 -1
  42. package/src/components/AddSection.tsx +0 -102
  43. package/src/components/AddSectionDialog.tsx +0 -128
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/StackMain.tsx", "../../../src/components/AddSection.tsx", "../../../src/components/StackContext.tsx", "../../../src/components/StackSection.tsx", "../../../src/components/CaretDownUp.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plus } from '@phosphor-icons/react';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport {\n LayoutAction,\n NavigationAction,\n parseMetadataResolverPlugin,\n useIntentDispatcher,\n useResolvePlugin,\n} from '@dxos/app-framework';\nimport { create, getType, fullyQualifiedId } from '@dxos/client/echo';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { type CollectionType } from '@dxos/plugin-space/types';\nimport { Button, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { AttentionProvider } from '@dxos/react-ui-attention';\nimport { Stack } from '@dxos/react-ui-stack';\nimport { nonNullable } from '@dxos/util';\n\nimport { AddSection } from './AddSection';\nimport { StackContext } from './StackContext';\nimport { StackSection } from './StackSection';\nimport { STACK_PLUGIN } from '../meta';\nimport {\n StackViewType,\n type CollapsedSections,\n type StackSectionMetadata,\n type StackSectionView,\n type StackSectionItem,\n type AddSectionPosition,\n} from '../types';\n\ntype StackMainProps = {\n id: string;\n collection: CollectionType;\n};\n\nconst StackMain = ({ id, collection }: StackMainProps) => {\n const dispatch = useIntentDispatcher();\n const { graph } = useGraph();\n const { t } = useTranslation(STACK_PLUGIN);\n const metadataPlugin = useResolvePlugin(parseMetadataResolverPlugin);\n const defaultStack = useMemo(() => create(StackViewType, { sections: {} }), [collection]);\n const stack = (collection.views[StackViewType.typename] as StackViewType) ?? defaultStack;\n const [collapsedSections, setCollapsedSections] = useState<CollapsedSections>({});\n\n useEffect(() => {\n if (!collection.views[StackViewType.typename]) {\n collection.views[StackViewType.typename] = stack;\n }\n }, [collection, stack]);\n\n const items =\n collection.objects\n // TODO(wittjosiah): Should the database handle this differently?\n // TODO(wittjosiah): Render placeholders for missing objects so they can be removed from the stack?\n .filter(nonNullable)\n .map((object) => {\n const metadata = metadataPlugin?.provides.metadata.resolver(\n getType(object)?.objectId ?? 'never',\n ) as StackSectionMetadata;\n const view = {\n ...stack.sections[object.id],\n collapsed: collapsedSections[fullyQualifiedId(object)],\n title:\n (object as any)?.title ?? toLocalizedString(graph.findNode(fullyQualifiedId(object))?.properties.label, t),\n } as StackSectionView;\n return { id: fullyQualifiedId(object), object, metadata, view } satisfies StackSectionItem;\n }) ?? [];\n\n const handleDelete = async (id: string) => {\n const index = collection.objects.filter(nonNullable).findIndex((section) => fullyQualifiedId(section) === id);\n if (index >= 0) {\n await dispatch({\n action: SpaceAction.REMOVE_OBJECTS,\n data: { objects: [collection.objects[index]], collection },\n });\n\n // TODO(wittjosiah): The section should also be removed, but needs to be restored if the action is undone.\n // delete stack.sections[Path.last(path)];\n }\n };\n\n const handleAdd = (id: string, position: AddSectionPosition) => {\n void dispatch?.({\n action: LayoutAction.SET_LAYOUT,\n data: {\n element: 'dialog',\n component: `${STACK_PLUGIN}/AddSectionDialog`,\n subject: { path: id, position, collection },\n },\n });\n };\n\n const handleNavigate = async (id: string) => {\n await dispatch([\n {\n action: NavigationAction.OPEN,\n data: { activeParts: { main: [id] } },\n },\n {\n action: LayoutAction.SCROLL_INTO_VIEW,\n data: { id },\n },\n ]);\n };\n\n const handleCollapse = (id: string, collapsed: boolean) => {\n setCollapsedSections((prev) => ({ ...prev, [id]: collapsed }));\n };\n\n return (\n <AttentionProvider id={id}>\n <StackContext.Provider\n value={{\n onCollapse: handleCollapse,\n onNavigate: handleNavigate,\n onDelete: handleDelete,\n onAdd: handleAdd,\n }}\n >\n <Stack orientation='vertical' size='intrinsic' separators={false} id={id} data-testid='main.stack'>\n {items.map((item) => (\n <StackSection key={item.id} {...item} />\n ))}\n </Stack>\n\n {items.length === 0 ? (\n <AddSection collection={collection} />\n ) : (\n <div role='none' className='flex mlb-2 pli-2 justify-center'>\n <Button\n data-testid='stack.createSection'\n classNames='gap-2'\n onClick={() =>\n dispatch?.({\n action: LayoutAction.SET_LAYOUT,\n data: {\n element: 'dialog',\n component: 'dxos.org/plugin/stack/AddSectionDialog',\n subject: { position: 'afterAll', collection },\n },\n })\n }\n >\n <Plus />\n <span className='sr-only'>{t('add section label')}</span>\n </Button>\n </div>\n )}\n </StackContext.Provider>\n </AttentionProvider>\n );\n};\n\nexport default StackMain;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { type IconProps } from '@phosphor-icons/react';\nimport React, { type FC, type KeyboardEvent, type MouseEvent, useCallback } from 'react';\n\nimport { usePlugin, useIntentDispatcher } from '@dxos/app-framework';\nimport { type CollectionType } from '@dxos/plugin-space/types';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { STACK_PLUGIN } from '../meta';\nimport { StackViewType, type StackSectionCreator, type StackPluginProvides } from '../types';\n\nconst CreatorTile = ({\n Icon,\n label,\n testId,\n handleAdd,\n}: {\n Icon: FC<IconProps>;\n testId: string;\n label: string;\n handleAdd: () => void;\n}) => {\n const onClick = useCallback((_: MouseEvent<HTMLDivElement>) => handleAdd(), [handleAdd]);\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleAdd();\n }\n },\n [handleAdd],\n );\n\n return (\n <div\n role='button'\n aria-label={label}\n tabIndex={0}\n className={mx(\n 'flex items-center w-[10rem] h-16 overflow-hidden',\n 'border rounded-md border-separator shadow-sm hover:bg-hoverSurface cursor-pointer',\n )}\n onClick={onClick}\n onKeyDown={onKeyDown}\n data-testid={testId}\n >\n <div className='flex h-full w-12 items-center justify-center bg-scrim shrink-0 border-r border-separator'>\n <Icon weight='thin' className={getSize(6)} />\n </div>\n <div className='overflow-hidden items-center p-2 px-3'>\n <span className='capitalize'>{label}</span>\n </div>\n </div>\n );\n};\n\nexport const AddSection = ({ collection }: { collection: CollectionType }) => {\n const domAttributes = useArrowNavigationGroup({ axis: 'grid' });\n const dispatch = useIntentDispatcher();\n const { t } = useTranslation(STACK_PLUGIN);\n\n const stackPlugin = usePlugin<StackPluginProvides>(STACK_PLUGIN);\n const stackCreators = stackPlugin?.provides?.stack.creators ?? [];\n\n const handleAdd = useCallback(\n async (creator: StackSectionCreator) => {\n const { data: section } = (await dispatch(creator.intent)) ?? {};\n collection.objects = [section];\n const stack = collection.views[StackViewType.typename];\n if (stack) {\n stack.sections[section.id] = {};\n }\n },\n [collection, dispatch],\n );\n\n if (stackCreators.length === 0) {\n return null;\n }\n\n return (\n <div {...domAttributes} role='none' className='flex flex-wrap items-center p-8 gap-4'>\n {stackCreators.map((creator) => {\n const { id, type, icon, testId } = creator;\n return (\n <CreatorTile\n key={id}\n label={toLocalizedString(type, t)}\n testId={testId}\n Icon={icon}\n handleAdd={() => handleAdd(creator)}\n />\n );\n })}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { type AddSectionPosition } from '../types';\n\nexport type StackContextValue = {\n onCollapse: (id: string, collapsed: boolean) => void;\n onNavigate: (id: string) => Promise<void>;\n onDelete: (id: string) => Promise<void>;\n onAdd: (id: string, position: AddSectionPosition) => void;\n};\n\nexport const StackContext = createContext<StackContextValue>({\n onCollapse: () => {},\n onNavigate: async () => {},\n onDelete: async () => {},\n onAdd: () => {},\n});\n\nexport const useStack = () => useContext(StackContext);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport React, { useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { DropdownMenu, Icon, useTranslation, IconButton } from '@dxos/react-ui';\nimport { useAttendableAttributes } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx, getSize, textBlockWidth } from '@dxos/react-ui-theme';\n\nimport { CaretDownUp } from './CaretDownUp';\nimport { useStack } from './StackContext';\nimport { STACK_PLUGIN } from '../meta';\nimport { type StackSectionItem } from '../types';\n\nconst sectionActionDimensions = 'm-1 p-1 shrink-0 min-bs-0 is-[--rail-action] bs-min';\n\nexport const StackSection = ({\n id,\n view,\n object,\n metadata: { icon = 'ph--placeholder--regular' },\n}: StackSectionItem) => {\n const { t } = useTranslation(STACK_PLUGIN);\n const { onNavigate, onAdd, onCollapse, onDelete } = useStack();\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const attendableAttrs = useAttendableAttributes(id);\n\n return (\n <CollapsiblePrimitive.Root asChild open={!view.collapsed} onOpenChange={(nextOpen) => onCollapse?.(id, !nextOpen)}>\n <StackItem.Root item={{ id }} role='section' {...attendableAttrs} classNames='border-be border-separator'>\n <StackItem.Heading classNames='attention-surface border-ie !border-separator'>\n <span className='sr-only'>{view.title}</span>\n <div role='none' className='sticky -block-start-px bg-[--sticky-bg]'>\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: setOptionsMenuOpen,\n }}\n >\n <DropdownMenu.Trigger asChild>\n <StackItem.SigilButton>\n <Icon icon={icon} size={5} classNames='transition-opacity' />\n </StackItem.SigilButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content style={{ zIndex: 70 }}>\n <DropdownMenu.Viewport>\n {view.collapsed ? (\n <DropdownMenu.Item onClick={() => onNavigate(id)} data-testid='section.navigate-to'>\n <Icon icon='ph--arrow-square-out--regular' size={5} />\n <span className='mis-2 grow'>{t('navigate to section label')}</span>\n </DropdownMenu.Item>\n ) : (\n <CollapsiblePrimitive.Trigger asChild>\n <DropdownMenu.Item>\n <CaretDownUp className={getSize(5)} />\n <span className='mis-2 grow'>{t('collapse label')}</span>\n </DropdownMenu.Item>\n </CollapsiblePrimitive.Trigger>\n )}\n <DropdownMenu.Item onClick={() => onAdd(id, 'before')} data-testid='section.add-before'>\n <Icon icon='ph--arrow-line-up--regular' size={5} />\n <span className='mis-2 grow'>{t('add section before label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onAdd(id, 'after')} data-testid='section.add-after'>\n <Icon icon='ph--arrow-line-down--regular' size={5} />\n <span className='mis-2 grow'>{t('add section after label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onDelete(id)} data-testid='section.remove'>\n <Icon icon='ph--trash--regular' size={5} />\n <span className='mis-2 grow'>{t('remove section label')}</span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n {view.collapsed ? (\n <CollapsiblePrimitive.Trigger asChild>\n <IconButton\n iconOnly\n tooltipZIndex='70'\n variant='ghost'\n label={t('expand label')}\n icon='ph--caret-up-down--regular'\n classNames={sectionActionDimensions}\n />\n </CollapsiblePrimitive.Trigger>\n ) : (\n <IconButton\n iconOnly\n tooltipZIndex='70'\n variant='ghost'\n onClick={() => onNavigate(id)}\n label={t('navigate to section label')}\n icon='ph--arrow-square-out--regular'\n data-testid='section.navigate-to'\n classNames={sectionActionDimensions}\n />\n )}\n </div>\n </StackItem.Heading>\n <CollapsiblePrimitive.Content>\n <Surface role='section' data={{ object }} limit={1} placeholder={<></>} />\n </CollapsiblePrimitive.Content>\n {view.collapsed && (\n <StackItem.Content toolbar={false} classNames='attention-surface'>\n <h2 className={mx('flex items-center p-4 font-medium is-full', textBlockWidth)}>{view.title}</h2>\n </StackItem.Content>\n )}\n </StackItem.Root>\n </CollapsiblePrimitive.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ComponentPropsWithoutRef } from 'react';\n\nexport const CaretDownUp = ({ children, ...props }: ComponentPropsWithoutRef<'svg'>) => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' {...props}>\n <rect width='256' height='256' fill='none' />\n <polyline\n points='80 224 128 176 176 224'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n <polyline\n points='80 32 128 80 176 32'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n {children}\n </svg>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["Plus", "React", "useEffect", "useMemo", "useState", "LayoutAction", "NavigationAction", "parseMetadataResolverPlugin", "useIntentDispatcher", "useResolvePlugin", "create", "getType", "fullyQualifiedId", "useGraph", "SpaceAction", "Button", "toLocalizedString", "useTranslation", "AttentionProvider", "Stack", "nonNullable", "useArrowNavigationGroup", "React", "useCallback", "usePlugin", "useIntentDispatcher", "toLocalizedString", "useTranslation", "getSize", "mx", "CreatorTile", "Icon", "label", "testId", "handleAdd", "onClick", "useCallback", "_", "onKeyDown", "event", "key", "preventDefault", "div", "role", "aria-label", "tabIndex", "className", "mx", "data-testid", "weight", "getSize", "span", "AddSection", "collection", "domAttributes", "useArrowNavigationGroup", "axis", "dispatch", "useIntentDispatcher", "t", "useTranslation", "STACK_PLUGIN", "stackPlugin", "usePlugin", "stackCreators", "provides", "stack", "creators", "creator", "data", "section", "intent", "objects", "views", "StackViewType", "typename", "sections", "id", "length", "map", "type", "icon", "toLocalizedString", "createContext", "useContext", "StackContext", "createContext", "onCollapse", "onNavigate", "onDelete", "onAdd", "useStack", "useContext", "CollapsiblePrimitive", "React", "useState", "Surface", "DropdownMenu", "Icon", "useTranslation", "IconButton", "useAttendableAttributes", "StackItem", "mx", "getSize", "textBlockWidth", "React", "CaretDownUp", "children", "props", "React", "svg", "xmlns", "viewBox", "rect", "width", "height", "fill", "polyline", "points", "stroke", "strokeLinecap", "strokeLinejoin", "strokeWidth", "sectionActionDimensions", "StackSection", "id", "view", "object", "metadata", "icon", "t", "useTranslation", "STACK_PLUGIN", "onNavigate", "onAdd", "onCollapse", "onDelete", "useStack", "optionsMenuOpen", "setOptionsMenuOpen", "useState", "attendableAttrs", "useAttendableAttributes", "React", "Root", "asChild", "open", "collapsed", "onOpenChange", "nextOpen", "StackItem", "item", "role", "classNames", "Heading", "span", "className", "title", "div", "DropdownMenu", "Trigger", "SigilButton", "Icon", "size", "Portal", "Content", "style", "zIndex", "Viewport", "Item", "onClick", "data-testid", "CaretDownUp", "getSize", "Arrow", "IconButton", "iconOnly", "tooltipZIndex", "variant", "label", "Surface", "data", "limit", "placeholder", "toolbar", "h2", "mx", "textBlockWidth", "StackMain", "id", "collection", "dispatch", "useIntentDispatcher", "graph", "useGraph", "t", "useTranslation", "STACK_PLUGIN", "metadataPlugin", "useResolvePlugin", "parseMetadataResolverPlugin", "defaultStack", "useMemo", "create", "StackViewType", "sections", "stack", "views", "typename", "collapsedSections", "setCollapsedSections", "useState", "useEffect", "items", "objects", "filter", "nonNullable", "map", "object", "metadata", "provides", "resolver", "getType", "objectId", "view", "collapsed", "fullyQualifiedId", "title", "toLocalizedString", "findNode", "properties", "label", "handleDelete", "index", "findIndex", "section", "action", "SpaceAction", "REMOVE_OBJECTS", "data", "handleAdd", "position", "LayoutAction", "SET_LAYOUT", "element", "component", "subject", "path", "handleNavigate", "NavigationAction", "OPEN", "activeParts", "main", "SCROLL_INTO_VIEW", "handleCollapse", "prev", "React", "AttentionProvider", "StackContext", "Provider", "value", "onCollapse", "onNavigate", "onDelete", "onAdd", "Stack", "orientation", "size", "separators", "data-testid", "item", "StackSection", "key", "length", "AddSection", "div", "role", "className", "Button", "classNames", "onClick", "Plus", "span"]
7
- }
@@ -1,403 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var StackMain_V7C55NCF_exports = {};
30
- __export(StackMain_V7C55NCF_exports, {
31
- default: () => StackMain_default
32
- });
33
- module.exports = __toCommonJS(StackMain_V7C55NCF_exports);
34
- var import_chunk_PA5PRDM6 = require("./chunk-PA5PRDM6.cjs");
35
- var import_chunk_6IPBX635 = require("./chunk-6IPBX635.cjs");
36
- var import_react = require("@phosphor-icons/react");
37
- var import_react2 = __toESM(require("react"));
38
- var import_app_framework = require("@dxos/app-framework");
39
- var import_echo = require("@dxos/client/echo");
40
- var import_plugin_graph = require("@dxos/plugin-graph");
41
- var import_plugin_space = require("@dxos/plugin-space");
42
- var import_react_ui = require("@dxos/react-ui");
43
- var import_react_ui_attention = require("@dxos/react-ui-attention");
44
- var import_react_ui_stack = require("@dxos/react-ui-stack");
45
- var import_util = require("@dxos/util");
46
- var import_react_tabster = require("@fluentui/react-tabster");
47
- var import_react3 = __toESM(require("react"));
48
- var import_app_framework2 = require("@dxos/app-framework");
49
- var import_react_ui2 = require("@dxos/react-ui");
50
- var import_react_ui_theme = require("@dxos/react-ui-theme");
51
- var import_react4 = require("react");
52
- var CollapsiblePrimitive = __toESM(require("@radix-ui/react-collapsible"));
53
- var import_react5 = __toESM(require("react"));
54
- var import_app_framework3 = require("@dxos/app-framework");
55
- var import_react_ui3 = require("@dxos/react-ui");
56
- var import_react_ui_attention2 = require("@dxos/react-ui-attention");
57
- var import_react_ui_stack2 = require("@dxos/react-ui-stack");
58
- var import_react_ui_theme2 = require("@dxos/react-ui-theme");
59
- var import_react6 = __toESM(require("react"));
60
- var CreatorTile = ({ Icon: Icon2, label, testId, handleAdd }) => {
61
- const onClick = (0, import_react3.useCallback)((_) => handleAdd(), [
62
- handleAdd
63
- ]);
64
- const onKeyDown = (0, import_react3.useCallback)((event) => {
65
- if (event.key === "Enter" || event.key === " ") {
66
- event.preventDefault();
67
- handleAdd();
68
- }
69
- }, [
70
- handleAdd
71
- ]);
72
- return /* @__PURE__ */ import_react3.default.createElement("div", {
73
- role: "button",
74
- "aria-label": label,
75
- tabIndex: 0,
76
- className: (0, import_react_ui_theme.mx)("flex items-center w-[10rem] h-16 overflow-hidden", "border rounded-md border-separator shadow-sm hover:bg-hoverSurface cursor-pointer"),
77
- onClick,
78
- onKeyDown,
79
- "data-testid": testId
80
- }, /* @__PURE__ */ import_react3.default.createElement("div", {
81
- className: "flex h-full w-12 items-center justify-center bg-scrim shrink-0 border-r border-separator"
82
- }, /* @__PURE__ */ import_react3.default.createElement(Icon2, {
83
- weight: "thin",
84
- className: (0, import_react_ui_theme.getSize)(6)
85
- })), /* @__PURE__ */ import_react3.default.createElement("div", {
86
- className: "overflow-hidden items-center p-2 px-3"
87
- }, /* @__PURE__ */ import_react3.default.createElement("span", {
88
- className: "capitalize"
89
- }, label)));
90
- };
91
- var AddSection = ({ collection }) => {
92
- const domAttributes = (0, import_react_tabster.useArrowNavigationGroup)({
93
- axis: "grid"
94
- });
95
- const dispatch = (0, import_app_framework2.useIntentDispatcher)();
96
- const { t } = (0, import_react_ui2.useTranslation)(import_chunk_PA5PRDM6.STACK_PLUGIN);
97
- const stackPlugin = (0, import_app_framework2.usePlugin)(import_chunk_PA5PRDM6.STACK_PLUGIN);
98
- const stackCreators = stackPlugin?.provides?.stack.creators ?? [];
99
- const handleAdd = (0, import_react3.useCallback)(async (creator) => {
100
- const { data: section } = await dispatch(creator.intent) ?? {};
101
- collection.objects = [
102
- section
103
- ];
104
- const stack = collection.views[import_chunk_6IPBX635.StackViewType.typename];
105
- if (stack) {
106
- stack.sections[section.id] = {};
107
- }
108
- }, [
109
- collection,
110
- dispatch
111
- ]);
112
- if (stackCreators.length === 0) {
113
- return null;
114
- }
115
- return /* @__PURE__ */ import_react3.default.createElement("div", {
116
- ...domAttributes,
117
- role: "none",
118
- className: "flex flex-wrap items-center p-8 gap-4"
119
- }, stackCreators.map((creator) => {
120
- const { id, type, icon, testId } = creator;
121
- return /* @__PURE__ */ import_react3.default.createElement(CreatorTile, {
122
- key: id,
123
- label: (0, import_react_ui2.toLocalizedString)(type, t),
124
- testId,
125
- Icon: icon,
126
- handleAdd: () => handleAdd(creator)
127
- });
128
- }));
129
- };
130
- var StackContext = /* @__PURE__ */ (0, import_react4.createContext)({
131
- onCollapse: () => {
132
- },
133
- onNavigate: async () => {
134
- },
135
- onDelete: async () => {
136
- },
137
- onAdd: () => {
138
- }
139
- });
140
- var useStack = () => (0, import_react4.useContext)(StackContext);
141
- var CaretDownUp = ({ children, ...props }) => {
142
- return /* @__PURE__ */ import_react6.default.createElement("svg", {
143
- xmlns: "http://www.w3.org/2000/svg",
144
- viewBox: "0 0 256 256",
145
- ...props
146
- }, /* @__PURE__ */ import_react6.default.createElement("rect", {
147
- width: "256",
148
- height: "256",
149
- fill: "none"
150
- }), /* @__PURE__ */ import_react6.default.createElement("polyline", {
151
- points: "80 224 128 176 176 224",
152
- fill: "none",
153
- stroke: "currentColor",
154
- strokeLinecap: "round",
155
- strokeLinejoin: "round",
156
- strokeWidth: "16"
157
- }), /* @__PURE__ */ import_react6.default.createElement("polyline", {
158
- points: "80 32 128 80 176 32",
159
- fill: "none",
160
- stroke: "currentColor",
161
- strokeLinecap: "round",
162
- strokeLinejoin: "round",
163
- strokeWidth: "16"
164
- }), children);
165
- };
166
- var sectionActionDimensions = "m-1 p-1 shrink-0 min-bs-0 is-[--rail-action] bs-min";
167
- var StackSection = ({ id, view, object, metadata: { icon = "ph--placeholder--regular" } }) => {
168
- const { t } = (0, import_react_ui3.useTranslation)(import_chunk_PA5PRDM6.STACK_PLUGIN);
169
- const { onNavigate, onAdd, onCollapse, onDelete } = useStack();
170
- const [optionsMenuOpen, setOptionsMenuOpen] = (0, import_react5.useState)(false);
171
- const attendableAttrs = (0, import_react_ui_attention2.useAttendableAttributes)(id);
172
- return /* @__PURE__ */ import_react5.default.createElement(CollapsiblePrimitive.Root, {
173
- asChild: true,
174
- open: !view.collapsed,
175
- onOpenChange: (nextOpen) => onCollapse?.(id, !nextOpen)
176
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui_stack2.StackItem.Root, {
177
- item: {
178
- id
179
- },
180
- role: "section",
181
- ...attendableAttrs,
182
- classNames: "border-be border-separator"
183
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui_stack2.StackItem.Heading, {
184
- classNames: "attention-surface border-ie !border-separator"
185
- }, /* @__PURE__ */ import_react5.default.createElement("span", {
186
- className: "sr-only"
187
- }, view.title), /* @__PURE__ */ import_react5.default.createElement("div", {
188
- role: "none",
189
- className: "sticky -block-start-px bg-[--sticky-bg]"
190
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.DropdownMenu.Root, {
191
- open: optionsMenuOpen,
192
- onOpenChange: setOptionsMenuOpen
193
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.DropdownMenu.Trigger, {
194
- asChild: true
195
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui_stack2.StackItem.SigilButton, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Icon, {
196
- icon,
197
- size: 5,
198
- classNames: "transition-opacity"
199
- }))), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.DropdownMenu.Portal, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.DropdownMenu.Content, {
200
- style: {
201
- zIndex: 70
202
- }
203
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.DropdownMenu.Viewport, null, view.collapsed ? /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.DropdownMenu.Item, {
204
- onClick: () => onNavigate(id),
205
- "data-testid": "section.navigate-to"
206
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Icon, {
207
- icon: "ph--arrow-square-out--regular",
208
- size: 5
209
- }), /* @__PURE__ */ import_react5.default.createElement("span", {
210
- className: "mis-2 grow"
211
- }, t("navigate to section label"))) : /* @__PURE__ */ import_react5.default.createElement(CollapsiblePrimitive.Trigger, {
212
- asChild: true
213
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.DropdownMenu.Item, null, /* @__PURE__ */ import_react5.default.createElement(CaretDownUp, {
214
- className: (0, import_react_ui_theme2.getSize)(5)
215
- }), /* @__PURE__ */ import_react5.default.createElement("span", {
216
- className: "mis-2 grow"
217
- }, t("collapse label")))), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.DropdownMenu.Item, {
218
- onClick: () => onAdd(id, "before"),
219
- "data-testid": "section.add-before"
220
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Icon, {
221
- icon: "ph--arrow-line-up--regular",
222
- size: 5
223
- }), /* @__PURE__ */ import_react5.default.createElement("span", {
224
- className: "mis-2 grow"
225
- }, t("add section before label"))), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.DropdownMenu.Item, {
226
- onClick: () => onAdd(id, "after"),
227
- "data-testid": "section.add-after"
228
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Icon, {
229
- icon: "ph--arrow-line-down--regular",
230
- size: 5
231
- }), /* @__PURE__ */ import_react5.default.createElement("span", {
232
- className: "mis-2 grow"
233
- }, t("add section after label"))), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.DropdownMenu.Item, {
234
- onClick: () => onDelete(id),
235
- "data-testid": "section.remove"
236
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Icon, {
237
- icon: "ph--trash--regular",
238
- size: 5
239
- }), /* @__PURE__ */ import_react5.default.createElement("span", {
240
- className: "mis-2 grow"
241
- }, t("remove section label")))), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.DropdownMenu.Arrow, null)))), view.collapsed ? /* @__PURE__ */ import_react5.default.createElement(CollapsiblePrimitive.Trigger, {
242
- asChild: true
243
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.IconButton, {
244
- iconOnly: true,
245
- tooltipZIndex: "70",
246
- variant: "ghost",
247
- label: t("expand label"),
248
- icon: "ph--caret-up-down--regular",
249
- classNames: sectionActionDimensions
250
- })) : /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.IconButton, {
251
- iconOnly: true,
252
- tooltipZIndex: "70",
253
- variant: "ghost",
254
- onClick: () => onNavigate(id),
255
- label: t("navigate to section label"),
256
- icon: "ph--arrow-square-out--regular",
257
- "data-testid": "section.navigate-to",
258
- classNames: sectionActionDimensions
259
- }))), /* @__PURE__ */ import_react5.default.createElement(CollapsiblePrimitive.Content, null, /* @__PURE__ */ import_react5.default.createElement(import_app_framework3.Surface, {
260
- role: "section",
261
- data: {
262
- object
263
- },
264
- limit: 1,
265
- placeholder: /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null)
266
- })), view.collapsed && /* @__PURE__ */ import_react5.default.createElement(import_react_ui_stack2.StackItem.Content, {
267
- toolbar: false,
268
- classNames: "attention-surface"
269
- }, /* @__PURE__ */ import_react5.default.createElement("h2", {
270
- className: (0, import_react_ui_theme2.mx)("flex items-center p-4 font-medium is-full", import_react_ui_theme2.textBlockWidth)
271
- }, view.title))));
272
- };
273
- var StackMain = ({ id, collection }) => {
274
- const dispatch = (0, import_app_framework.useIntentDispatcher)();
275
- const { graph } = (0, import_plugin_graph.useGraph)();
276
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_PA5PRDM6.STACK_PLUGIN);
277
- const metadataPlugin = (0, import_app_framework.useResolvePlugin)(import_app_framework.parseMetadataResolverPlugin);
278
- const defaultStack = (0, import_react2.useMemo)(() => (0, import_echo.create)(import_chunk_6IPBX635.StackViewType, {
279
- sections: {}
280
- }), [
281
- collection
282
- ]);
283
- const stack = collection.views[import_chunk_6IPBX635.StackViewType.typename] ?? defaultStack;
284
- const [collapsedSections, setCollapsedSections] = (0, import_react2.useState)({});
285
- (0, import_react2.useEffect)(() => {
286
- if (!collection.views[import_chunk_6IPBX635.StackViewType.typename]) {
287
- collection.views[import_chunk_6IPBX635.StackViewType.typename] = stack;
288
- }
289
- }, [
290
- collection,
291
- stack
292
- ]);
293
- const items = collection.objects.filter(import_util.nonNullable).map((object) => {
294
- const metadata = metadataPlugin?.provides.metadata.resolver((0, import_echo.getType)(object)?.objectId ?? "never");
295
- const view = {
296
- ...stack.sections[object.id],
297
- collapsed: collapsedSections[(0, import_echo.fullyQualifiedId)(object)],
298
- title: object?.title ?? (0, import_react_ui.toLocalizedString)(graph.findNode((0, import_echo.fullyQualifiedId)(object))?.properties.label, t)
299
- };
300
- return {
301
- id: (0, import_echo.fullyQualifiedId)(object),
302
- object,
303
- metadata,
304
- view
305
- };
306
- }) ?? [];
307
- const handleDelete = async (id2) => {
308
- const index = collection.objects.filter(import_util.nonNullable).findIndex((section) => (0, import_echo.fullyQualifiedId)(section) === id2);
309
- if (index >= 0) {
310
- await dispatch({
311
- action: import_plugin_space.SpaceAction.REMOVE_OBJECTS,
312
- data: {
313
- objects: [
314
- collection.objects[index]
315
- ],
316
- collection
317
- }
318
- });
319
- }
320
- };
321
- const handleAdd = (id2, position) => {
322
- void dispatch?.({
323
- action: import_app_framework.LayoutAction.SET_LAYOUT,
324
- data: {
325
- element: "dialog",
326
- component: `${import_chunk_PA5PRDM6.STACK_PLUGIN}/AddSectionDialog`,
327
- subject: {
328
- path: id2,
329
- position,
330
- collection
331
- }
332
- }
333
- });
334
- };
335
- const handleNavigate = async (id2) => {
336
- await dispatch([
337
- {
338
- action: import_app_framework.NavigationAction.OPEN,
339
- data: {
340
- activeParts: {
341
- main: [
342
- id2
343
- ]
344
- }
345
- }
346
- },
347
- {
348
- action: import_app_framework.LayoutAction.SCROLL_INTO_VIEW,
349
- data: {
350
- id: id2
351
- }
352
- }
353
- ]);
354
- };
355
- const handleCollapse = (id2, collapsed) => {
356
- setCollapsedSections((prev) => ({
357
- ...prev,
358
- [id2]: collapsed
359
- }));
360
- };
361
- return /* @__PURE__ */ import_react2.default.createElement(import_react_ui_attention.AttentionProvider, {
362
- id
363
- }, /* @__PURE__ */ import_react2.default.createElement(StackContext.Provider, {
364
- value: {
365
- onCollapse: handleCollapse,
366
- onNavigate: handleNavigate,
367
- onDelete: handleDelete,
368
- onAdd: handleAdd
369
- }
370
- }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_stack.Stack, {
371
- orientation: "vertical",
372
- size: "intrinsic",
373
- separators: false,
374
- id,
375
- "data-testid": "main.stack"
376
- }, items.map((item) => /* @__PURE__ */ import_react2.default.createElement(StackSection, {
377
- key: item.id,
378
- ...item
379
- }))), items.length === 0 ? /* @__PURE__ */ import_react2.default.createElement(AddSection, {
380
- collection
381
- }) : /* @__PURE__ */ import_react2.default.createElement("div", {
382
- role: "none",
383
- className: "flex mlb-2 pli-2 justify-center"
384
- }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Button, {
385
- "data-testid": "stack.createSection",
386
- classNames: "gap-2",
387
- onClick: () => dispatch?.({
388
- action: import_app_framework.LayoutAction.SET_LAYOUT,
389
- data: {
390
- element: "dialog",
391
- component: "dxos.org/plugin/stack/AddSectionDialog",
392
- subject: {
393
- position: "afterAll",
394
- collection
395
- }
396
- }
397
- })
398
- }, /* @__PURE__ */ import_react2.default.createElement(import_react.Plus, null), /* @__PURE__ */ import_react2.default.createElement("span", {
399
- className: "sr-only"
400
- }, t("add section label"))))));
401
- };
402
- var StackMain_default = StackMain;
403
- //# sourceMappingURL=StackMain-V7C55NCF.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/StackMain.tsx", "../../../src/components/AddSection.tsx", "../../../src/components/StackContext.tsx", "../../../src/components/StackSection.tsx", "../../../src/components/CaretDownUp.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plus } from '@phosphor-icons/react';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport {\n LayoutAction,\n NavigationAction,\n parseMetadataResolverPlugin,\n useIntentDispatcher,\n useResolvePlugin,\n} from '@dxos/app-framework';\nimport { create, getType, fullyQualifiedId } from '@dxos/client/echo';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { type CollectionType } from '@dxos/plugin-space/types';\nimport { Button, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { AttentionProvider } from '@dxos/react-ui-attention';\nimport { Stack } from '@dxos/react-ui-stack';\nimport { nonNullable } from '@dxos/util';\n\nimport { AddSection } from './AddSection';\nimport { StackContext } from './StackContext';\nimport { StackSection } from './StackSection';\nimport { STACK_PLUGIN } from '../meta';\nimport {\n StackViewType,\n type CollapsedSections,\n type StackSectionMetadata,\n type StackSectionView,\n type StackSectionItem,\n type AddSectionPosition,\n} from '../types';\n\ntype StackMainProps = {\n id: string;\n collection: CollectionType;\n};\n\nconst StackMain = ({ id, collection }: StackMainProps) => {\n const dispatch = useIntentDispatcher();\n const { graph } = useGraph();\n const { t } = useTranslation(STACK_PLUGIN);\n const metadataPlugin = useResolvePlugin(parseMetadataResolverPlugin);\n const defaultStack = useMemo(() => create(StackViewType, { sections: {} }), [collection]);\n const stack = (collection.views[StackViewType.typename] as StackViewType) ?? defaultStack;\n const [collapsedSections, setCollapsedSections] = useState<CollapsedSections>({});\n\n useEffect(() => {\n if (!collection.views[StackViewType.typename]) {\n collection.views[StackViewType.typename] = stack;\n }\n }, [collection, stack]);\n\n const items =\n collection.objects\n // TODO(wittjosiah): Should the database handle this differently?\n // TODO(wittjosiah): Render placeholders for missing objects so they can be removed from the stack?\n .filter(nonNullable)\n .map((object) => {\n const metadata = metadataPlugin?.provides.metadata.resolver(\n getType(object)?.objectId ?? 'never',\n ) as StackSectionMetadata;\n const view = {\n ...stack.sections[object.id],\n collapsed: collapsedSections[fullyQualifiedId(object)],\n title:\n (object as any)?.title ?? toLocalizedString(graph.findNode(fullyQualifiedId(object))?.properties.label, t),\n } as StackSectionView;\n return { id: fullyQualifiedId(object), object, metadata, view } satisfies StackSectionItem;\n }) ?? [];\n\n const handleDelete = async (id: string) => {\n const index = collection.objects.filter(nonNullable).findIndex((section) => fullyQualifiedId(section) === id);\n if (index >= 0) {\n await dispatch({\n action: SpaceAction.REMOVE_OBJECTS,\n data: { objects: [collection.objects[index]], collection },\n });\n\n // TODO(wittjosiah): The section should also be removed, but needs to be restored if the action is undone.\n // delete stack.sections[Path.last(path)];\n }\n };\n\n const handleAdd = (id: string, position: AddSectionPosition) => {\n void dispatch?.({\n action: LayoutAction.SET_LAYOUT,\n data: {\n element: 'dialog',\n component: `${STACK_PLUGIN}/AddSectionDialog`,\n subject: { path: id, position, collection },\n },\n });\n };\n\n const handleNavigate = async (id: string) => {\n await dispatch([\n {\n action: NavigationAction.OPEN,\n data: { activeParts: { main: [id] } },\n },\n {\n action: LayoutAction.SCROLL_INTO_VIEW,\n data: { id },\n },\n ]);\n };\n\n const handleCollapse = (id: string, collapsed: boolean) => {\n setCollapsedSections((prev) => ({ ...prev, [id]: collapsed }));\n };\n\n return (\n <AttentionProvider id={id}>\n <StackContext.Provider\n value={{\n onCollapse: handleCollapse,\n onNavigate: handleNavigate,\n onDelete: handleDelete,\n onAdd: handleAdd,\n }}\n >\n <Stack orientation='vertical' size='intrinsic' separators={false} id={id} data-testid='main.stack'>\n {items.map((item) => (\n <StackSection key={item.id} {...item} />\n ))}\n </Stack>\n\n {items.length === 0 ? (\n <AddSection collection={collection} />\n ) : (\n <div role='none' className='flex mlb-2 pli-2 justify-center'>\n <Button\n data-testid='stack.createSection'\n classNames='gap-2'\n onClick={() =>\n dispatch?.({\n action: LayoutAction.SET_LAYOUT,\n data: {\n element: 'dialog',\n component: 'dxos.org/plugin/stack/AddSectionDialog',\n subject: { position: 'afterAll', collection },\n },\n })\n }\n >\n <Plus />\n <span className='sr-only'>{t('add section label')}</span>\n </Button>\n </div>\n )}\n </StackContext.Provider>\n </AttentionProvider>\n );\n};\n\nexport default StackMain;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { type IconProps } from '@phosphor-icons/react';\nimport React, { type FC, type KeyboardEvent, type MouseEvent, useCallback } from 'react';\n\nimport { usePlugin, useIntentDispatcher } from '@dxos/app-framework';\nimport { type CollectionType } from '@dxos/plugin-space/types';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { STACK_PLUGIN } from '../meta';\nimport { StackViewType, type StackSectionCreator, type StackPluginProvides } from '../types';\n\nconst CreatorTile = ({\n Icon,\n label,\n testId,\n handleAdd,\n}: {\n Icon: FC<IconProps>;\n testId: string;\n label: string;\n handleAdd: () => void;\n}) => {\n const onClick = useCallback((_: MouseEvent<HTMLDivElement>) => handleAdd(), [handleAdd]);\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleAdd();\n }\n },\n [handleAdd],\n );\n\n return (\n <div\n role='button'\n aria-label={label}\n tabIndex={0}\n className={mx(\n 'flex items-center w-[10rem] h-16 overflow-hidden',\n 'border rounded-md border-separator shadow-sm hover:bg-hoverSurface cursor-pointer',\n )}\n onClick={onClick}\n onKeyDown={onKeyDown}\n data-testid={testId}\n >\n <div className='flex h-full w-12 items-center justify-center bg-scrim shrink-0 border-r border-separator'>\n <Icon weight='thin' className={getSize(6)} />\n </div>\n <div className='overflow-hidden items-center p-2 px-3'>\n <span className='capitalize'>{label}</span>\n </div>\n </div>\n );\n};\n\nexport const AddSection = ({ collection }: { collection: CollectionType }) => {\n const domAttributes = useArrowNavigationGroup({ axis: 'grid' });\n const dispatch = useIntentDispatcher();\n const { t } = useTranslation(STACK_PLUGIN);\n\n const stackPlugin = usePlugin<StackPluginProvides>(STACK_PLUGIN);\n const stackCreators = stackPlugin?.provides?.stack.creators ?? [];\n\n const handleAdd = useCallback(\n async (creator: StackSectionCreator) => {\n const { data: section } = (await dispatch(creator.intent)) ?? {};\n collection.objects = [section];\n const stack = collection.views[StackViewType.typename];\n if (stack) {\n stack.sections[section.id] = {};\n }\n },\n [collection, dispatch],\n );\n\n if (stackCreators.length === 0) {\n return null;\n }\n\n return (\n <div {...domAttributes} role='none' className='flex flex-wrap items-center p-8 gap-4'>\n {stackCreators.map((creator) => {\n const { id, type, icon, testId } = creator;\n return (\n <CreatorTile\n key={id}\n label={toLocalizedString(type, t)}\n testId={testId}\n Icon={icon}\n handleAdd={() => handleAdd(creator)}\n />\n );\n })}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { type AddSectionPosition } from '../types';\n\nexport type StackContextValue = {\n onCollapse: (id: string, collapsed: boolean) => void;\n onNavigate: (id: string) => Promise<void>;\n onDelete: (id: string) => Promise<void>;\n onAdd: (id: string, position: AddSectionPosition) => void;\n};\n\nexport const StackContext = createContext<StackContextValue>({\n onCollapse: () => {},\n onNavigate: async () => {},\n onDelete: async () => {},\n onAdd: () => {},\n});\n\nexport const useStack = () => useContext(StackContext);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport React, { useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { DropdownMenu, Icon, useTranslation, IconButton } from '@dxos/react-ui';\nimport { useAttendableAttributes } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx, getSize, textBlockWidth } from '@dxos/react-ui-theme';\n\nimport { CaretDownUp } from './CaretDownUp';\nimport { useStack } from './StackContext';\nimport { STACK_PLUGIN } from '../meta';\nimport { type StackSectionItem } from '../types';\n\nconst sectionActionDimensions = 'm-1 p-1 shrink-0 min-bs-0 is-[--rail-action] bs-min';\n\nexport const StackSection = ({\n id,\n view,\n object,\n metadata: { icon = 'ph--placeholder--regular' },\n}: StackSectionItem) => {\n const { t } = useTranslation(STACK_PLUGIN);\n const { onNavigate, onAdd, onCollapse, onDelete } = useStack();\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const attendableAttrs = useAttendableAttributes(id);\n\n return (\n <CollapsiblePrimitive.Root asChild open={!view.collapsed} onOpenChange={(nextOpen) => onCollapse?.(id, !nextOpen)}>\n <StackItem.Root item={{ id }} role='section' {...attendableAttrs} classNames='border-be border-separator'>\n <StackItem.Heading classNames='attention-surface border-ie !border-separator'>\n <span className='sr-only'>{view.title}</span>\n <div role='none' className='sticky -block-start-px bg-[--sticky-bg]'>\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: setOptionsMenuOpen,\n }}\n >\n <DropdownMenu.Trigger asChild>\n <StackItem.SigilButton>\n <Icon icon={icon} size={5} classNames='transition-opacity' />\n </StackItem.SigilButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content style={{ zIndex: 70 }}>\n <DropdownMenu.Viewport>\n {view.collapsed ? (\n <DropdownMenu.Item onClick={() => onNavigate(id)} data-testid='section.navigate-to'>\n <Icon icon='ph--arrow-square-out--regular' size={5} />\n <span className='mis-2 grow'>{t('navigate to section label')}</span>\n </DropdownMenu.Item>\n ) : (\n <CollapsiblePrimitive.Trigger asChild>\n <DropdownMenu.Item>\n <CaretDownUp className={getSize(5)} />\n <span className='mis-2 grow'>{t('collapse label')}</span>\n </DropdownMenu.Item>\n </CollapsiblePrimitive.Trigger>\n )}\n <DropdownMenu.Item onClick={() => onAdd(id, 'before')} data-testid='section.add-before'>\n <Icon icon='ph--arrow-line-up--regular' size={5} />\n <span className='mis-2 grow'>{t('add section before label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onAdd(id, 'after')} data-testid='section.add-after'>\n <Icon icon='ph--arrow-line-down--regular' size={5} />\n <span className='mis-2 grow'>{t('add section after label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onDelete(id)} data-testid='section.remove'>\n <Icon icon='ph--trash--regular' size={5} />\n <span className='mis-2 grow'>{t('remove section label')}</span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n {view.collapsed ? (\n <CollapsiblePrimitive.Trigger asChild>\n <IconButton\n iconOnly\n tooltipZIndex='70'\n variant='ghost'\n label={t('expand label')}\n icon='ph--caret-up-down--regular'\n classNames={sectionActionDimensions}\n />\n </CollapsiblePrimitive.Trigger>\n ) : (\n <IconButton\n iconOnly\n tooltipZIndex='70'\n variant='ghost'\n onClick={() => onNavigate(id)}\n label={t('navigate to section label')}\n icon='ph--arrow-square-out--regular'\n data-testid='section.navigate-to'\n classNames={sectionActionDimensions}\n />\n )}\n </div>\n </StackItem.Heading>\n <CollapsiblePrimitive.Content>\n <Surface role='section' data={{ object }} limit={1} placeholder={<></>} />\n </CollapsiblePrimitive.Content>\n {view.collapsed && (\n <StackItem.Content toolbar={false} classNames='attention-surface'>\n <h2 className={mx('flex items-center p-4 font-medium is-full', textBlockWidth)}>{view.title}</h2>\n </StackItem.Content>\n )}\n </StackItem.Root>\n </CollapsiblePrimitive.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ComponentPropsWithoutRef } from 'react';\n\nexport const CaretDownUp = ({ children, ...props }: ComponentPropsWithoutRef<'svg'>) => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' {...props}>\n <rect width='256' height='256' fill='none' />\n <polyline\n points='80 224 128 176 176 224'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n <polyline\n points='80 32 128 80 176 32'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n {children}\n </svg>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_react", "import_app_framework", "import_react_ui", "import_react_ui_attention", "import_react_ui_stack", "import_react_ui_theme", "CreatorTile", "Icon", "label", "testId", "handleAdd", "onClick", "useCallback", "_", "onKeyDown", "event", "key", "preventDefault", "React", "div", "role", "aria-label", "tabIndex", "className", "mx", "data-testid", "weight", "getSize", "span", "AddSection", "collection", "domAttributes", "useArrowNavigationGroup", "axis", "dispatch", "useIntentDispatcher", "t", "useTranslation", "STACK_PLUGIN", "stackPlugin", "usePlugin", "stackCreators", "provides", "stack", "creators", "creator", "data", "section", "intent", "objects", "views", "StackViewType", "typename", "sections", "id", "length", "map", "type", "icon", "toLocalizedString", "StackContext", "createContext", "onCollapse", "onNavigate", "onDelete", "onAdd", "useStack", "useContext", "CaretDownUp", "children", "props", "svg", "xmlns", "viewBox", "rect", "width", "height", "fill", "polyline", "points", "stroke", "strokeLinecap", "strokeLinejoin", "strokeWidth", "sectionActionDimensions", "StackSection", "view", "object", "metadata", "optionsMenuOpen", "setOptionsMenuOpen", "useState", "attendableAttrs", "useAttendableAttributes", "Root", "asChild", "open", "collapsed", "onOpenChange", "nextOpen", "StackItem", "item", "classNames", "Heading", "title", "DropdownMenu", "Trigger", "SigilButton", "size", "Portal", "Content", "style", "zIndex", "Viewport", "Item", "Arrow", "IconButton", "iconOnly", "tooltipZIndex", "variant", "Surface", "limit", "placeholder", "toolbar", "h2", "textBlockWidth", "StackMain", "graph", "useGraph", "metadataPlugin", "useResolvePlugin", "parseMetadataResolverPlugin", "defaultStack", "useMemo", "create", "collapsedSections", "setCollapsedSections", "useEffect", "items", "filter", "nonNullable", "resolver", "getType", "objectId", "fullyQualifiedId", "findNode", "properties", "handleDelete", "index", "findIndex", "action", "SpaceAction", "REMOVE_OBJECTS", "position", "LayoutAction", "SET_LAYOUT", "element", "component", "subject", "path", "handleNavigate", "NavigationAction", "OPEN", "activeParts", "main", "SCROLL_INTO_VIEW", "handleCollapse", "prev", "AttentionProvider", "Provider", "value", "Stack", "orientation", "separators", "Button", "Plus"]
7
- }