@pantheon-systems/puck-css 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/agent/components/AgentActionButton.js +0 -13
- package/dist/agent/components/AgentActionButton.js.map +1 -1
- package/dist/agent/components/AgentActionModal.js +0 -13
- package/dist/agent/components/AgentActionModal.js.map +1 -1
- package/dist/agent/components/AgentStatusPanel.js +0 -10
- package/dist/agent/components/AgentStatusPanel.js.map +1 -1
- package/dist/agent/components/index.js +0 -5
- package/dist/agent/components/index.js.map +1 -1
- package/dist/agent/useAgentEdit.js +0 -12
- package/dist/agent/useAgentEdit.js.map +1 -1
- package/dist/agent/useAgentTrigger.js +0 -29
- package/dist/agent/useAgentTrigger.js.map +1 -1
- package/dist/auth/P1AuthProvider.d.ts +9 -2
- package/dist/auth/P1AuthProvider.d.ts.map +1 -1
- package/dist/auth/P1AuthProvider.js +21 -44
- package/dist/auth/P1AuthProvider.js.map +1 -1
- package/dist/auth/P1LoginPage.js +0 -18
- package/dist/auth/P1LoginPage.js.map +1 -1
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -9
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/logout.d.ts +23 -0
- package/dist/auth/logout.d.ts.map +1 -0
- package/dist/auth/logout.js +14 -0
- package/dist/auth/logout.js.map +1 -0
- package/dist/auth/storage-keys.d.ts +5 -0
- package/dist/auth/storage-keys.d.ts.map +1 -0
- package/dist/auth/storage-keys.js +3 -0
- package/dist/auth/storage-keys.js.map +1 -0
- package/dist/collaboration/components/AgentActivityBanner.js +0 -15
- package/dist/collaboration/components/AgentActivityBanner.js.map +1 -1
- package/dist/collaboration/components/CollaboratorAvatars.js +0 -17
- package/dist/collaboration/components/CollaboratorAvatars.js.map +1 -1
- package/dist/collaboration/components/FocusRegionHighlight.js +0 -9
- package/dist/collaboration/components/FocusRegionHighlight.js.map +1 -1
- package/dist/collaboration/components/PresenceIndicator.js +0 -9
- package/dist/collaboration/components/PresenceIndicator.js.map +1 -1
- package/dist/collaboration/useBranchPresence.js +0 -36
- package/dist/collaboration/useBranchPresence.js.map +1 -1
- package/dist/collaboration/useFocusRegionReporting.js +0 -75
- package/dist/collaboration/useFocusRegionReporting.js.map +1 -1
- package/dist/collaboration/usePresence.js +0 -37
- package/dist/collaboration/usePresence.js.map +1 -1
- package/dist/collaboration/useSitePresence.js +0 -36
- package/dist/collaboration/useSitePresence.js.map +1 -1
- package/dist/collaboration/utils/avatarColor.js +0 -3
- package/dist/collaboration/utils/avatarColor.js.map +1 -1
- package/dist/collaboration/utils/focusHighlightConfig.js +0 -61
- package/dist/collaboration/utils/focusHighlightConfig.js.map +1 -1
- package/dist/collaboration/utils/focusRegionMap.js +1 -80
- package/dist/collaboration/utils/focusRegionMap.js.map +1 -1
- package/dist/collaboration/utils/initials.js +0 -14
- package/dist/collaboration/utils/initials.js.map +1 -1
- package/dist/collaboration/utils/presenceIdentity.js +0 -26
- package/dist/collaboration/utils/presenceIdentity.js.map +1 -1
- package/dist/core/FocusHighlightContext.js +0 -31
- package/dist/core/FocusHighlightContext.js.map +1 -1
- package/dist/core/NotificationContext.js +2 -67
- package/dist/core/NotificationContext.js.map +1 -1
- package/dist/core/P1PuckContext.js +0 -31
- package/dist/core/P1PuckContext.js.map +1 -1
- package/dist/core/PresenceContext.js +0 -18
- package/dist/core/PresenceContext.js.map +1 -1
- package/dist/core/config.js +0 -11
- package/dist/core/config.js.map +1 -1
- package/dist/core/featureConfig.js +0 -32
- package/dist/core/featureConfig.js.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.js +0 -3
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/debounce.js +0 -18
- package/dist/core/utils/debounce.js.map +1 -1
- package/dist/core/utils/requestError.js +0 -5
- package/dist/core/utils/requestError.js.map +1 -1
- package/dist/core/utils/retry.js +0 -31
- package/dist/core/utils/retry.js.map +1 -1
- package/dist/core/utils/throttle.js +0 -24
- package/dist/core/utils/throttle.js.map +1 -1
- package/dist/data/cross-reference-resolve.js +0 -6
- package/dist/data/cross-reference-resolve.js.map +1 -1
- package/dist/data/cross-reference.js +0 -15
- package/dist/data/cross-reference.js.map +1 -1
- package/dist/data/css-queries/css-query-registry.d.ts +2 -2
- package/dist/data/css-queries/css-query-registry.js +1 -1
- package/dist/data/css-queries/css-query-registry.js.map +1 -1
- package/dist/data/dal/index.js +0 -21
- package/dist/data/dal/index.js.map +1 -1
- package/dist/data/dal/init.js +0 -40
- package/dist/data/dal/init.js.map +1 -1
- package/dist/data/dal/p1-store.d.ts.map +1 -1
- package/dist/data/dal/p1-store.js +11 -41
- package/dist/data/dal/p1-store.js.map +1 -1
- package/dist/data/data-list-block/create-data-list-block.js +0 -7
- package/dist/data/data-list-block/create-data-list-block.js.map +1 -1
- package/dist/data/data-list-block/utils.js +0 -1
- package/dist/data/data-list-block/utils.js.map +1 -1
- package/dist/data/fields/pds-field-helpers.js +1 -4
- package/dist/data/fields/pds-field-helpers.js.map +1 -1
- package/dist/data/fields/visible-when.js +0 -5
- package/dist/data/fields/visible-when.js.map +1 -1
- package/dist/data/fields.js +0 -12
- package/dist/data/fields.js.map +1 -1
- package/dist/data/get-page.js +0 -1
- package/dist/data/get-page.js.map +1 -1
- package/dist/data/page-editor-meta.js +0 -7
- package/dist/data/page-editor-meta.js.map +1 -1
- package/dist/data/page-store.js +0 -32
- package/dist/data/page-store.js.map +1 -1
- package/dist/data/page-structure.js +0 -3
- package/dist/data/page-structure.js.map +1 -1
- package/dist/data/paths.js +0 -16
- package/dist/data/paths.js.map +1 -1
- package/dist/data/remote-datasources/fetch-http-json.js +0 -5
- package/dist/data/remote-datasources/fetch-http-json.js.map +1 -1
- package/dist/data/remote-datasources/loader.js +0 -21
- package/dist/data/remote-datasources/loader.js.map +1 -1
- package/dist/data/remote-datasources/remote-datasource-registry.js +0 -4
- package/dist/data/remote-datasources/remote-datasource-registry.js.map +1 -1
- package/dist/data/resolve-data-templates.js +0 -24
- package/dist/data/resolve-data-templates.js.map +1 -1
- package/dist/data/route-templates.js +0 -29
- package/dist/data/route-templates.js.map +1 -1
- package/dist/data/semantic-ops.js +0 -11
- package/dist/data/semantic-ops.js.map +1 -1
- package/dist/data/styles.js +0 -2
- package/dist/data/styles.js.map +1 -1
- package/dist/data/template-autocomplete.js +0 -8
- package/dist/data/template-autocomplete.js.map +1 -1
- package/dist/data/utils.d.ts +2 -0
- package/dist/data/utils.d.ts.map +1 -1
- package/dist/data/utils.js +3 -1
- package/dist/data/utils.js.map +1 -1
- package/dist/editor/P1App.d.ts.map +1 -1
- package/dist/editor/P1App.js +6 -45
- package/dist/editor/P1App.js.map +1 -1
- package/dist/editor/P1PuckProvider.d.ts +1 -1
- package/dist/editor/P1PuckProvider.js +39 -556
- package/dist/editor/P1PuckProvider.js.map +1 -1
- package/dist/editor/aiPanelStore.js +0 -7
- package/dist/editor/aiPanelStore.js.map +1 -1
- package/dist/editor/components/BranchSelector.js +0 -21
- package/dist/editor/components/BranchSelector.js.map +1 -1
- package/dist/editor/components/CollapsibleSectionHeader.js +1 -4
- package/dist/editor/components/CollapsibleSectionHeader.js.map +1 -1
- package/dist/editor/components/DraggableRow.js +0 -1
- package/dist/editor/components/DraggableRow.js.map +1 -1
- package/dist/editor/components/EditorReloadOverlay.d.ts +16 -0
- package/dist/editor/components/EditorReloadOverlay.d.ts.map +1 -0
- package/dist/editor/components/EditorReloadOverlay.js +13 -0
- package/dist/editor/components/EditorReloadOverlay.js.map +1 -0
- package/dist/editor/components/NotificationContainer.js +0 -20
- package/dist/editor/components/NotificationContainer.js.map +1 -1
- package/dist/editor/components/OutlinePanel.js +1 -12
- package/dist/editor/components/OutlinePanel.js.map +1 -1
- package/dist/editor/components/P1InspectorFields.d.ts.map +1 -1
- package/dist/editor/components/P1InspectorFields.js +12 -14
- package/dist/editor/components/P1InspectorFields.js.map +1 -1
- package/dist/editor/components/P1TemplateFields.js +6 -12
- package/dist/editor/components/P1TemplateFields.js.map +1 -1
- package/dist/editor/components/PanelHeader.d.ts.map +1 -1
- package/dist/editor/components/PanelHeader.js +3 -2
- package/dist/editor/components/PanelHeader.js.map +1 -1
- package/dist/editor/components/PublishButton.js +0 -21
- package/dist/editor/components/PublishButton.js.map +1 -1
- package/dist/editor/components/PuckDataCapture.js +0 -14
- package/dist/editor/components/PuckDataCapture.js.map +1 -1
- package/dist/editor/components/PuckDataSynchronizer.js +0 -67
- package/dist/editor/components/PuckDataSynchronizer.js.map +1 -1
- package/dist/editor/components/PuckSelectionTracker.js +0 -62
- package/dist/editor/components/PuckSelectionTracker.js.map +1 -1
- package/dist/editor/components/SaveIndicator.js +0 -41
- package/dist/editor/components/SaveIndicator.js.map +1 -1
- package/dist/editor/components/Toast.js +1 -32
- package/dist/editor/components/Toast.js.map +1 -1
- package/dist/editor/components/VersionBannerOverride.js +2 -14
- package/dist/editor/components/VersionBannerOverride.js.map +1 -1
- package/dist/editor/components/collapsibleSectionContext.js +0 -10
- package/dist/editor/components/collapsibleSectionContext.js.map +1 -1
- package/dist/editor/components/componentIconName.js +0 -23
- package/dist/editor/components/componentIconName.js.map +1 -1
- package/dist/editor/components/connectable.js +0 -5
- package/dist/editor/components/connectable.js.map +1 -1
- package/dist/editor/components/merge-preview/MergePreviewRenderer.js +2 -74
- package/dist/editor/components/merge-preview/MergePreviewRenderer.js.map +1 -1
- package/dist/editor/components/merge-preview/ScaledContent.js +0 -6
- package/dist/editor/components/merge-preview/ScaledContent.js.map +1 -1
- package/dist/editor/components/merge-preview/index.js +0 -5
- package/dist/editor/components/merge-preview/index.js.map +1 -1
- package/dist/editor/components/outlineTree.js +0 -31
- package/dist/editor/components/outlineTree.js.map +1 -1
- package/dist/editor/components/useDragReorder.js +0 -1
- package/dist/editor/components/useDragReorder.js.map +1 -1
- package/dist/editor/defaultPlugins.d.ts +1 -1
- package/dist/editor/defaultPlugins.js +1 -1
- package/dist/editor/logout-store.d.ts +13 -0
- package/dist/editor/logout-store.d.ts.map +1 -0
- package/dist/editor/logout-store.js +23 -0
- package/dist/editor/logout-store.js.map +1 -0
- package/dist/editor/plugin/P1Plugin.d.ts +6 -3
- package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
- package/dist/editor/plugin/P1Plugin.js +20 -170
- package/dist/editor/plugin/P1Plugin.js.map +1 -1
- package/dist/editor/plugin/context-sync-key.js +0 -19
- package/dist/editor/plugin/context-sync-key.js.map +1 -1
- package/dist/editor/plugin/createP1Overrides.js +1 -49
- package/dist/editor/plugin/createP1Overrides.js.map +1 -1
- package/dist/editor/plugin/document-sync-plugin.js +0 -50
- package/dist/editor/plugin/document-sync-plugin.js.map +1 -1
- package/dist/editor/plugin/fieldGuidance.js +0 -5
- package/dist/editor/plugin/fieldGuidance.js.map +1 -1
- package/dist/editor/plugin/index.js +0 -6
- package/dist/editor/plugin/index.js.map +1 -1
- package/dist/editor/plugin/selectHeaderCollaborators.js +0 -8
- package/dist/editor/plugin/selectHeaderCollaborators.js.map +1 -1
- package/dist/editor/presets.js +2 -2
- package/dist/editor/thumbnails/LiveThumbnail.js +1 -49
- package/dist/editor/thumbnails/LiveThumbnail.js.map +1 -1
- package/dist/editor/thumbnails/ThumbnailCard.js +0 -25
- package/dist/editor/thumbnails/ThumbnailCard.js.map +1 -1
- package/dist/editor/thumbnails/buildLiveThumbnailDrawer.js +0 -21
- package/dist/editor/thumbnails/buildLiveThumbnailDrawer.js.map +1 -1
- package/dist/editor/thumbnails/humanizeComponentName.js +0 -17
- package/dist/editor/thumbnails/humanizeComponentName.js.map +1 -1
- package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.js +0 -11
- package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.js.map +1 -1
- package/dist/editor/thumbnails/thumbnailCache.js +0 -38
- package/dist/editor/thumbnails/thumbnailCache.js.map +1 -1
- package/dist/editor/useAutoSave.js +0 -32
- package/dist/editor/useAutoSave.js.map +1 -1
- package/dist/editor/useBranches.js +0 -30
- package/dist/editor/useBranches.js.map +1 -1
- package/dist/editor/useComponentRegistry.d.ts +1 -1
- package/dist/editor/useComponentRegistry.js +0 -28
- package/dist/editor/useComponentRegistry.js.map +1 -1
- package/dist/editor/useDocuments.js +0 -51
- package/dist/editor/useDocuments.js.map +1 -1
- package/dist/editor/useMergePreview.js +8 -12
- package/dist/editor/useMergePreview.js.map +1 -1
- package/dist/editor/useP1Editor.d.ts +27 -7
- package/dist/editor/useP1Editor.d.ts.map +1 -1
- package/dist/editor/useP1Editor.js +106 -239
- package/dist/editor/useP1Editor.js.map +1 -1
- package/dist/editor/useP1Overrides.js +15 -50
- package/dist/editor/useP1Overrides.js.map +1 -1
- package/dist/editor/useP1Plugin.d.ts +7 -3
- package/dist/editor/useP1Plugin.d.ts.map +1 -1
- package/dist/editor/useP1Plugin.js +28 -56
- package/dist/editor/useP1Plugin.js.map +1 -1
- package/dist/editor/useRealtime.d.ts +15 -3
- package/dist/editor/useRealtime.d.ts.map +1 -1
- package/dist/editor/useRealtime.js +12 -91
- package/dist/editor/useRealtime.js.map +1 -1
- package/dist/editor/useResponsivePanels.js +2 -35
- package/dist/editor/useResponsivePanels.js.map +1 -1
- package/dist/editor/useSidebarScrollPreservation.js +0 -14
- package/dist/editor/useSidebarScrollPreservation.js.map +1 -1
- package/dist/editor/utils/buildThumbnailOverride.js +0 -9
- package/dist/editor/utils/buildThumbnailOverride.js.map +1 -1
- package/dist/editor/utils/componentRegistry.d.ts +6 -11
- package/dist/editor/utils/componentRegistry.d.ts.map +1 -1
- package/dist/editor/utils/componentRegistry.js +1 -71
- package/dist/editor/utils/componentRegistry.js.map +1 -1
- package/dist/editor/utils/createStablePluginArray.js +0 -27
- package/dist/editor/utils/createStablePluginArray.js.map +1 -1
- package/dist/editor/utils/path.js +0 -6
- package/dist/editor/utils/path.js.map +1 -1
- package/dist/editor/utils/puckYjsBinding.d.ts +1 -1
- package/dist/editor/utils/puckYjsBinding.js +0 -99
- package/dist/editor/utils/puckYjsBinding.js.map +1 -1
- package/dist/editor/utils/restoreDocumentVersion.js +0 -12
- package/dist/editor/utils/restoreDocumentVersion.js.map +1 -1
- package/dist/editor/utils/sanitizeRichtextDefaults.js +0 -26
- package/dist/editor/utils/sanitizeRichtextDefaults.js.map +1 -1
- package/dist/editor/utils/snapshotToPuckData.js +0 -8
- package/dist/editor/utils/snapshotToPuckData.js.map +1 -1
- package/dist/editor/utils/syncComponentRegistry.d.ts +2 -2
- package/dist/editor/utils/syncComponentRegistry.js +1 -76
- package/dist/editor/utils/syncComponentRegistry.js.map +1 -1
- package/dist/editor/utils/syncComponentRegistryWriteOnly.d.ts +7 -7
- package/dist/editor/utils/syncComponentRegistryWriteOnly.js +0 -22
- package/dist/editor/utils/syncComponentRegistryWriteOnly.js.map +1 -1
- package/dist/editor/utils/templatePath.js +0 -5
- package/dist/editor/utils/templatePath.js.map +1 -1
- package/dist/features/content-type-templates/editor/useTemplatePermissions.js +0 -3
- package/dist/features/content-type-templates/editor/useTemplatePermissions.js.map +1 -1
- package/dist/features/content-type-templates/hooks/useTemplateList.js +0 -30
- package/dist/features/content-type-templates/hooks/useTemplateList.js.map +1 -1
- package/dist/features/content-type-templates/index.js +0 -8
- package/dist/features/content-type-templates/index.js.map +1 -1
- package/dist/features/content-type-templates/permissions/createPuckPermissions.js +1 -43
- package/dist/features/content-type-templates/permissions/createPuckPermissions.js.map +1 -1
- package/dist/features/content-type-templates/permissions/role-permissions.js +0 -29
- package/dist/features/content-type-templates/permissions/role-permissions.js.map +1 -1
- package/dist/features/content-type-templates/permissions/useContentRole.js +0 -24
- package/dist/features/content-type-templates/permissions/useContentRole.js.map +1 -1
- package/dist/features/content-type-templates/permissions/useResolveContentRole.d.ts +5 -5
- package/dist/features/content-type-templates/permissions/useResolveContentRole.js +2 -22
- package/dist/features/content-type-templates/permissions/useResolveContentRole.js.map +1 -1
- package/dist/features/content-type-templates/stores/index.js +0 -5
- package/dist/features/content-type-templates/stores/index.js.map +1 -1
- package/dist/features/content-type-templates/stores/template-store-api.js +0 -14
- package/dist/features/content-type-templates/stores/template-store-api.js.map +1 -1
- package/dist/features/content-type-templates/stores/template-store.d.ts +1 -1
- package/dist/features/content-type-templates/stores/template-store.js +0 -12
- package/dist/features/content-type-templates/stores/template-store.js.map +1 -1
- package/dist/features/content-type-templates/types.js +0 -5
- package/dist/features/content-type-templates/types.js.map +1 -1
- package/dist/features/content-type-templates/ui/ActionBarPinButton.js +12 -21
- package/dist/features/content-type-templates/ui/ActionBarPinButton.js.map +1 -1
- package/dist/features/content-type-templates/ui/TemplateDetailsPanel.js +0 -23
- package/dist/features/content-type-templates/ui/TemplateDetailsPanel.js.map +1 -1
- package/dist/features/content-type-templates/ui/TemplateSelector.js +0 -19
- package/dist/features/content-type-templates/ui/TemplateSelector.js.map +1 -1
- package/dist/features/content-type-templates/validation/structural-validation.js +0 -40
- package/dist/features/content-type-templates/validation/structural-validation.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -43
- package/dist/index.js.map +1 -1
- package/dist/merge/components/conflict-notifications/ConflictNotificationToast.js +0 -19
- package/dist/merge/components/conflict-notifications/ConflictNotificationToast.js.map +1 -1
- package/dist/merge/components/conflict-notifications/index.js +0 -5
- package/dist/merge/components/conflict-notifications/index.js.map +1 -1
- package/dist/merge/components/conflict-notifications/useConflictNotifications.js +0 -48
- package/dist/merge/components/conflict-notifications/useConflictNotifications.js.map +1 -1
- package/dist/merge/components/conflict-resolution/ComponentConflictGroup.js +0 -36
- package/dist/merge/components/conflict-resolution/ComponentConflictGroup.js.map +1 -1
- package/dist/merge/components/conflict-resolution/PuckFieldResolutionPanel.js +0 -40
- package/dist/merge/components/conflict-resolution/PuckFieldResolutionPanel.js.map +1 -1
- package/dist/merge/components/conflict-resolution/RenderedResolutionPreview.js +0 -21
- package/dist/merge/components/conflict-resolution/RenderedResolutionPreview.js.map +1 -1
- package/dist/merge/components/conflict-resolution/index.js +0 -5
- package/dist/merge/components/conflict-resolution/index.js.map +1 -1
- package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js +0 -44
- package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js.map +1 -1
- package/dist/merge/components/merge-resolution/ComponentClickOverlay.js +0 -24
- package/dist/merge/components/merge-resolution/ComponentClickOverlay.js.map +1 -1
- package/dist/merge/components/merge-resolution/DocumentResolutionDetail.d.ts.map +1 -1
- package/dist/merge/components/merge-resolution/DocumentResolutionDetail.js +6 -31
- package/dist/merge/components/merge-resolution/DocumentResolutionDetail.js.map +1 -1
- package/dist/merge/components/merge-resolution/index.js +0 -3
- package/dist/merge/components/merge-resolution/index.js.map +1 -1
- package/dist/merge/useMergeResolution.d.ts +1 -1
- package/dist/merge/useMergeResolution.d.ts.map +1 -1
- package/dist/merge/useMergeResolution.js +6 -75
- package/dist/merge/useMergeResolution.js.map +1 -1
- package/dist/merge/utils/namespacePuckData.d.ts.map +1 -1
- package/dist/merge/utils/namespacePuckData.js +8 -8
- package/dist/merge/utils/namespacePuckData.js.map +1 -1
- package/dist/merge/utils/puckFieldClassifier.js +0 -183
- package/dist/merge/utils/puckFieldClassifier.js.map +1 -1
- package/dist/p1/editor/connect/connect-preview-config.js +0 -5
- package/dist/p1/editor/connect/connect-preview-config.js.map +1 -1
- package/dist/p1/editor/connect/field-connect-plugin.js +0 -6
- package/dist/p1/editor/connect/field-connect-plugin.js.map +1 -1
- package/dist/p1/editor/editor-preview-resolve.js +0 -13
- package/dist/p1/editor/editor-preview-resolve.js.map +1 -1
- package/dist/p1/editor/hooks/api-hooks.js +0 -7
- package/dist/p1/editor/hooks/api-hooks.js.map +1 -1
- package/dist/p1/editor/hooks/useLiveEditorContext.js +0 -12
- package/dist/p1/editor/hooks/useLiveEditorContext.js.map +1 -1
- package/dist/p1/editor/hooks/useLiveRemoteDatasources.js +0 -22
- package/dist/p1/editor/hooks/useLiveRemoteDatasources.js.map +1 -1
- package/dist/p1/editor/hooks/useP1Plugins.js +0 -5
- package/dist/p1/editor/hooks/useP1Plugins.js.map +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js +0 -7
- package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js.map +1 -1
- package/dist/p1/editor/template-autocomplete-layer.js +0 -4
- package/dist/p1/editor/template-autocomplete-layer.js.map +1 -1
- package/dist/pds/components/AgentChip.js +0 -3
- package/dist/pds/components/AgentChip.js.map +1 -1
- package/dist/pds/components/CreatePageModal.js +1 -97
- package/dist/pds/components/CreatePageModal.js.map +1 -1
- package/dist/pds/components/LoadingMessage.d.ts.map +1 -1
- package/dist/pds/components/LoadingMessage.js +2 -1
- package/dist/pds/components/LoadingMessage.js.map +1 -1
- package/dist/pds/components/LoadingMessage.module.css +2 -21
- package/dist/pds/components/LoadingOverlay.d.ts +17 -0
- package/dist/pds/components/LoadingOverlay.d.ts.map +1 -0
- package/dist/pds/components/LoadingOverlay.js +7 -0
- package/dist/pds/components/LoadingOverlay.js.map +1 -0
- package/dist/pds/components/LoadingOverlay.module.css +28 -0
- package/dist/pds/components/P1EditorHeader.d.ts +9 -2
- package/dist/pds/components/P1EditorHeader.d.ts.map +1 -1
- package/dist/pds/components/P1EditorHeader.js +6 -26
- package/dist/pds/components/P1EditorHeader.js.map +1 -1
- package/dist/pds/components/P1EditorHeader.module.css +26 -0
- package/dist/pds/components/PageNavigator.js +0 -16
- package/dist/pds/components/PageNavigator.js.map +1 -1
- package/dist/pds/components/PresenceStack.js +0 -9
- package/dist/pds/components/PresenceStack.js.map +1 -1
- package/dist/pds/components/PublishControl.js +0 -6
- package/dist/pds/components/PublishControl.js.map +1 -1
- package/dist/pds/components/WorkstreamSwitcher.js +1 -25
- package/dist/pds/components/WorkstreamSwitcher.js.map +1 -1
- package/dist/pds/index.d.ts +2 -0
- package/dist/pds/index.d.ts.map +1 -1
- package/dist/pds/index.js +1 -29
- package/dist/pds/index.js.map +1 -1
- package/dist/pds/theme/pds-core-content.js +0 -5
- package/dist/pds/theme/pds-core-content.js.map +1 -1
- package/dist/pds/utils/deriveDocState.js +0 -1
- package/dist/pds/utils/deriveDocState.js.map +1 -1
- package/dist/pds/utils/deriveLiveDocState.js +0 -13
- package/dist/pds/utils/deriveLiveDocState.js.map +1 -1
- package/dist/registry-sync.js +0 -4
- package/dist/registry-sync.js.map +1 -1
- package/dist/server.js +0 -7
- package/dist/server.js.map +1 -1
- package/dist/versioning/components/ReadOnlyFieldsGuard.js +0 -3
- package/dist/versioning/components/ReadOnlyFieldsGuard.js.map +1 -1
- package/dist/versioning/components/VersionBannerActions.js +0 -1
- package/dist/versioning/components/VersionBannerActions.js.map +1 -1
- package/dist/versioning/components/version-compare/BranchDiffHeader.js +0 -7
- package/dist/versioning/components/version-compare/BranchDiffHeader.js.map +1 -1
- package/dist/versioning/components/version-compare/BranchMergeCompare.js +0 -19
- package/dist/versioning/components/version-compare/BranchMergeCompare.js.map +1 -1
- package/dist/versioning/components/version-compare/ComponentNode.js +0 -8
- package/dist/versioning/components/version-compare/ComponentNode.js.map +1 -1
- package/dist/versioning/components/version-compare/ComponentTree.js +0 -10
- package/dist/versioning/components/version-compare/ComponentTree.js.map +1 -1
- package/dist/versioning/components/version-compare/DiffHeader.js +0 -3
- package/dist/versioning/components/version-compare/DiffHeader.js.map +1 -1
- package/dist/versioning/components/version-compare/DocumentDiffList.js +0 -14
- package/dist/versioning/components/version-compare/DocumentDiffList.js.map +1 -1
- package/dist/versioning/components/version-compare/PropDiffPanel.js +0 -7
- package/dist/versioning/components/version-compare/PropDiffPanel.js.map +1 -1
- package/dist/versioning/components/version-compare/PropDiffRow.js +0 -3
- package/dist/versioning/components/version-compare/PropDiffRow.js.map +1 -1
- package/dist/versioning/components/version-compare/PropValueDisplay.js +0 -22
- package/dist/versioning/components/version-compare/PropValueDisplay.js.map +1 -1
- package/dist/versioning/components/version-compare/VersionComparePage.js +0 -13
- package/dist/versioning/components/version-compare/VersionComparePage.js.map +1 -1
- package/dist/versioning/components/version-compare/VisualBranchCompare.js +0 -17
- package/dist/versioning/components/version-compare/VisualBranchCompare.js.map +1 -1
- package/dist/versioning/components/version-compare/VisualVersionCompare.js +0 -23
- package/dist/versioning/components/version-compare/VisualVersionCompare.js.map +1 -1
- package/dist/versioning/components/version-compare/index.js +0 -5
- package/dist/versioning/components/version-compare/index.js.map +1 -1
- package/dist/versioning/components/version-history/AgentCheckpointBadge.js +0 -14
- package/dist/versioning/components/version-history/AgentCheckpointBadge.js.map +1 -1
- package/dist/versioning/components/version-history/VersionItem.js +0 -7
- package/dist/versioning/components/version-history/VersionItem.js.map +1 -1
- package/dist/versioning/components/version-history/index.js +0 -5
- package/dist/versioning/components/version-history/index.js.map +1 -1
- package/dist/versioning/useCheckpoints.js +0 -28
- package/dist/versioning/useCheckpoints.js.map +1 -1
- package/dist/versioning/useVersions.js +0 -31
- package/dist/versioning/useVersions.js.map +1 -1
- package/dist/versioning/utils/branchDiff.js +0 -93
- package/dist/versioning/utils/branchDiff.js.map +1 -1
- package/dist/versioning/utils/diff.js +0 -79
- package/dist/versioning/utils/diff.js.map +1 -1
- package/dist/versioning/utils/formatVersionDate.js +0 -12
- package/dist/versioning/utils/formatVersionDate.js.map +1 -1
- package/dist/versioning/utils/highlightConfig.js +0 -42
- package/dist/versioning/utils/highlightConfig.js.map +1 -1
- package/dist/versioning/utils/versionKind.js +0 -10
- package/dist/versioning/utils/versionKind.js.map +1 -1
- package/package.json +7 -7
- package/src/pds/theme/PuckEditorTheme.css +5 -5
- package/src/styles.css +1 -1
- package/src/pds/theme/PuckEditorTheme.test.ts +0 -195
- package/src/pds/theme/pds-core-content.ts +0 -8
|
@@ -1,49 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* usePresence Hook
|
|
3
|
-
*
|
|
4
|
-
* Provides document-level presence information with polling.
|
|
5
|
-
*/
|
|
6
1
|
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
7
2
|
import { usePresenceContext } from '../core/PresenceContext.js';
|
|
8
|
-
/**
|
|
9
|
-
* Hook for consuming document-level presence data.
|
|
10
|
-
*
|
|
11
|
-
* @param options - Configuration options
|
|
12
|
-
* @returns Presence state and operations
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```tsx
|
|
16
|
-
* function CollaboratorList() {
|
|
17
|
-
* const { actors, hasActiveAgents } = usePresence();
|
|
18
|
-
*
|
|
19
|
-
* return (
|
|
20
|
-
* <div>
|
|
21
|
-
* {hasActiveAgents && <span>Agents are working...</span>}
|
|
22
|
-
* {actors.map(actor => (
|
|
23
|
-
* <Avatar key={actor.id} name={actor.name} />
|
|
24
|
-
* ))}
|
|
25
|
-
* </div>
|
|
26
|
-
* );
|
|
27
|
-
* }
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
3
|
export function usePresence(options = {}) {
|
|
31
4
|
const { pollingInterval = 10000, includeSelf = false } = options;
|
|
32
5
|
const { client, siteId, branchId, userId } = usePresenceContext();
|
|
33
6
|
const [actors, setActors] = useState([]);
|
|
34
7
|
const [isLoading, setIsLoading] = useState(true);
|
|
35
8
|
const [error, setError] = useState(null);
|
|
36
|
-
// Track mounted state to avoid state updates after unmount
|
|
37
9
|
const mountedRef = useRef(true);
|
|
38
|
-
// Ref for fetchPresence to avoid restarting polling interval
|
|
39
10
|
const fetchPresenceRef = useRef(async () => { });
|
|
40
|
-
// Fetch presence data
|
|
41
11
|
const fetchPresence = useCallback(async () => {
|
|
42
12
|
try {
|
|
43
13
|
const branchPresence = await client.presence.getBranchPresence(siteId, branchId);
|
|
44
14
|
if (!mountedRef.current)
|
|
45
15
|
return;
|
|
46
|
-
// Filter actors - optionally exclude self
|
|
47
16
|
let filteredActors = branchPresence.actors;
|
|
48
17
|
if (!includeSelf) {
|
|
49
18
|
filteredActors = filteredActors.filter((actor) => actor.actorId !== userId);
|
|
@@ -62,20 +31,15 @@ export function usePresence(options = {}) {
|
|
|
62
31
|
}
|
|
63
32
|
}
|
|
64
33
|
}, [client, siteId, branchId, userId, includeSelf]);
|
|
65
|
-
// Keep ref in sync with callback
|
|
66
34
|
useEffect(() => {
|
|
67
35
|
fetchPresenceRef.current = fetchPresence;
|
|
68
36
|
}, [fetchPresence]);
|
|
69
|
-
// Manual refresh function
|
|
70
37
|
const refresh = useCallback(async () => {
|
|
71
38
|
await fetchPresence();
|
|
72
39
|
}, [fetchPresence]);
|
|
73
|
-
// Initial fetch and polling
|
|
74
40
|
useEffect(() => {
|
|
75
41
|
mountedRef.current = true;
|
|
76
|
-
// Initial fetch
|
|
77
42
|
void fetchPresenceRef.current();
|
|
78
|
-
// Set up polling - use ref to avoid restarting interval when callback changes
|
|
79
43
|
const intervalId = setInterval(() => {
|
|
80
44
|
void fetchPresenceRef.current();
|
|
81
45
|
}, pollingInterval);
|
|
@@ -84,7 +48,6 @@ export function usePresence(options = {}) {
|
|
|
84
48
|
clearInterval(intervalId);
|
|
85
49
|
};
|
|
86
50
|
}, [pollingInterval]);
|
|
87
|
-
// Derived values
|
|
88
51
|
const editingActors = actors.filter((actor) => actor.state === 'editing');
|
|
89
52
|
const humans = actors.filter((actor) => actor.role === 'human');
|
|
90
53
|
const agents = actors.filter((actor) => actor.role === 'agent');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePresence.js","sourceRoot":"","sources":["../../src/collaboration/usePresence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePresence.js","sourceRoot":"","sources":["../../src/collaboration/usePresence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,43 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useSitePresence Hook
|
|
3
|
-
*
|
|
4
|
-
* Provides site-level presence aggregation with polling.
|
|
5
|
-
*/
|
|
6
1
|
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
7
2
|
import { usePresenceContext } from '../core/PresenceContext.js';
|
|
8
|
-
/**
|
|
9
|
-
* Hook for consuming site-level presence data.
|
|
10
|
-
*
|
|
11
|
-
* @param options - Configuration options
|
|
12
|
-
* @returns Site presence state and operations
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```tsx
|
|
16
|
-
* function SiteCollaborators() {
|
|
17
|
-
* const { presence, activeBranches, totalActors } = useSitePresence();
|
|
18
|
-
*
|
|
19
|
-
* return (
|
|
20
|
-
* <div>
|
|
21
|
-
* <span>{totalActors} collaborators on this site</span>
|
|
22
|
-
* {activeBranches.map(branch => (
|
|
23
|
-
* <BranchBadge key={branch.branchId} name={branch.branchName} />
|
|
24
|
-
* ))}
|
|
25
|
-
* </div>
|
|
26
|
-
* );
|
|
27
|
-
* }
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
3
|
export function useSitePresence(options = {}) {
|
|
31
4
|
const { pollingInterval = 10000 } = options;
|
|
32
5
|
const { client, siteId } = usePresenceContext();
|
|
33
6
|
const [presence, setPresence] = useState(null);
|
|
34
7
|
const [isLoading, setIsLoading] = useState(true);
|
|
35
8
|
const [error, setError] = useState(null);
|
|
36
|
-
// Track mounted state to avoid state updates after unmount
|
|
37
9
|
const mountedRef = useRef(true);
|
|
38
|
-
// Ref for fetchPresence to avoid restarting polling interval
|
|
39
10
|
const fetchPresenceRef = useRef(async () => { });
|
|
40
|
-
// Fetch presence data
|
|
41
11
|
const fetchPresence = useCallback(async () => {
|
|
42
12
|
try {
|
|
43
13
|
const sitePresence = await client.presence.getSitePresence(siteId);
|
|
@@ -57,20 +27,15 @@ export function useSitePresence(options = {}) {
|
|
|
57
27
|
}
|
|
58
28
|
}
|
|
59
29
|
}, [client, siteId]);
|
|
60
|
-
// Keep ref in sync with callback
|
|
61
30
|
useEffect(() => {
|
|
62
31
|
fetchPresenceRef.current = fetchPresence;
|
|
63
32
|
}, [fetchPresence]);
|
|
64
|
-
// Manual refresh function
|
|
65
33
|
const refresh = useCallback(async () => {
|
|
66
34
|
await fetchPresence();
|
|
67
35
|
}, [fetchPresence]);
|
|
68
|
-
// Initial fetch and polling
|
|
69
36
|
useEffect(() => {
|
|
70
37
|
mountedRef.current = true;
|
|
71
|
-
// Initial fetch
|
|
72
38
|
void fetchPresenceRef.current();
|
|
73
|
-
// Set up polling - use ref to avoid restarting interval when callback changes
|
|
74
39
|
const intervalId = setInterval(() => {
|
|
75
40
|
void fetchPresenceRef.current();
|
|
76
41
|
}, pollingInterval);
|
|
@@ -79,7 +44,6 @@ export function useSitePresence(options = {}) {
|
|
|
79
44
|
clearInterval(intervalId);
|
|
80
45
|
};
|
|
81
46
|
}, [pollingInterval]);
|
|
82
|
-
// Derived values
|
|
83
47
|
const activeBranches = presence?.branches ?? [];
|
|
84
48
|
const totalActors = presence?.summary.totalActors ?? 0;
|
|
85
49
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSitePresence.js","sourceRoot":"","sources":["../../src/collaboration/useSitePresence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSitePresence.js","sourceRoot":"","sources":["../../src/collaboration/useSitePresence.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAkDhE,MAAM,UAAU,eAAe,CAC7B,UAAkC,EAAE;IAEpC,MAAM,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAC5C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAEhD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAsB,IAAI,CAAC,CAAC;IACpE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAGvD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAGhC,MAAM,gBAAgB,GAAG,MAAM,CAAsB,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;IAGrE,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC3C,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAEnE,IAAI,CAAC,UAAU,CAAC,OAAO;gBAAE,OAAO;YAEhC,WAAW,CAAC,YAAY,CAAC,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,CAAC,OAAO;gBAAE,OAAO;YAChC,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvB,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAGrB,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,OAAO,GAAG,aAAa,CAAC;IAC3C,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAGpB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACrC,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAGpB,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAG1B,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAGhC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YAClC,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC,EAAE,eAAe,CAAC,CAAC;QAEpB,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;YAC3B,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAGtB,MAAM,cAAc,GAAG,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,QAAQ,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;IAEvD,OAAO;QACL,QAAQ;QACR,cAAc;QACd,WAAW;QACX,SAAS;QACT,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatarColor.js","sourceRoot":"","sources":["../../../src/collaboration/utils/avatarColor.ts"],"names":[],"mappings":"AAAA,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"avatarColor.js","sourceRoot":"","sources":["../../../src/collaboration/utils/avatarColor.ts"],"names":[],"mappings":"AAAA,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC;AAKD,MAAM,UAAU,cAAc,CAAC,EAA6B;IAC1D,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;IACvC,OAAO,OAAO,GAAG,aAAa,CAAC;AACjC,CAAC"}
|
|
@@ -1,28 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Focus Highlight Config Utility
|
|
3
|
-
*
|
|
4
|
-
* Creates a Puck config wrapper that adds visual focus highlighting
|
|
5
|
-
* to show which components other actors are viewing or editing.
|
|
6
|
-
*
|
|
7
|
-
* IMPORTANT: This utility supports two modes:
|
|
8
|
-
* 1. Context-based (preferred): Create config once, use FocusHighlightProvider to update highlights
|
|
9
|
-
* 2. Direct focusMap (legacy): Pass focusMap directly, config recreated on each change
|
|
10
|
-
*
|
|
11
|
-
* The context-based approach prevents Puck re-renders when focus regions change.
|
|
12
|
-
*/
|
|
13
1
|
import React from 'react';
|
|
14
2
|
import { FocusHighlightContext } from '../../core/FocusHighlightContext.js';
|
|
15
|
-
/**
|
|
16
|
-
* Component wrapper that renders focus highlight from context.
|
|
17
|
-
* This allows the highlight to change without recreating the config.
|
|
18
|
-
*/
|
|
19
3
|
function FocusHighlightWrapper({ id, children, staticFocus, }) {
|
|
20
|
-
// Try context first (for dynamic updates without config recreation)
|
|
21
4
|
const context = React.useContext(FocusHighlightContext);
|
|
22
5
|
const focus = context?.focusMap.get(id) ?? staticFocus;
|
|
23
|
-
// Always render a stable wrapper div AND badge to avoid DOM insertions/removals
|
|
24
|
-
// that can trigger browser scroll-into-view behavior.
|
|
25
|
-
// When not focused, the wrapper has no visual effect and badge is hidden via CSS.
|
|
26
6
|
const className = focus
|
|
27
7
|
? (focus.isEditing
|
|
28
8
|
? 'focus-region-highlight focus-region-highlight--editing'
|
|
@@ -34,57 +14,16 @@ function FocusHighlightWrapper({ id, children, staticFocus, }) {
|
|
|
34
14
|
'data-actor-id': focus?.actorId,
|
|
35
15
|
}, children, React.createElement('div', { className: 'focus-region-highlight__badge' }, focus ? focus.actorName.charAt(0).toUpperCase() : ''));
|
|
36
16
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Creates a Puck config with focus highlight wrappers.
|
|
39
|
-
*
|
|
40
|
-
* When used with FocusHighlightProvider (context mode), the config only needs
|
|
41
|
-
* to be created once - highlights update via context without config recreation.
|
|
42
|
-
*
|
|
43
|
-
* When used without FocusHighlightProvider (legacy mode), pass focusMap directly
|
|
44
|
-
* but this will cause config recreation on every focusMap change.
|
|
45
|
-
*
|
|
46
|
-
* @param config - The original Puck config
|
|
47
|
-
* @param focusMap - Optional static focusMap for legacy mode (prefer using context instead)
|
|
48
|
-
* @returns A new config with wrapped render functions that add focus highlighting
|
|
49
|
-
*
|
|
50
|
-
* @example Context mode (preferred - no flicker):
|
|
51
|
-
* ```tsx
|
|
52
|
-
* // Create config once with no focusMap
|
|
53
|
-
* const highlightedConfig = useMemo(
|
|
54
|
-
* () => createFocusHighlightConfig(baseConfig),
|
|
55
|
-
* [baseConfig]
|
|
56
|
-
* );
|
|
57
|
-
*
|
|
58
|
-
* // Wrap Puck with provider that can update without config recreation
|
|
59
|
-
* <FocusHighlightProvider focusMap={focusMap}>
|
|
60
|
-
* <Puck config={highlightedConfig} data={data} />
|
|
61
|
-
* </FocusHighlightProvider>
|
|
62
|
-
* ```
|
|
63
|
-
*
|
|
64
|
-
* @example Legacy mode (may cause flicker):
|
|
65
|
-
* ```tsx
|
|
66
|
-
* const focusMap = createFocusRegionMap(puckData, otherActors);
|
|
67
|
-
* const highlightedConfig = createFocusHighlightConfig(baseConfig, focusMap);
|
|
68
|
-
*
|
|
69
|
-
* <Puck config={highlightedConfig} data={data} />
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
17
|
export function createFocusHighlightConfig(config, focusMap) {
|
|
73
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
74
18
|
const wrappedComponents = {};
|
|
75
19
|
const components = config.components;
|
|
76
20
|
for (const [componentName, componentConfig] of Object.entries(components)) {
|
|
77
|
-
// Cast render to the function type we need
|
|
78
21
|
const originalRender = componentConfig.render;
|
|
79
22
|
wrappedComponents[componentName] = {
|
|
80
23
|
...componentConfig,
|
|
81
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
82
24
|
render: (props) => {
|
|
83
25
|
const id = props.id;
|
|
84
26
|
const renderedContent = originalRender(props);
|
|
85
|
-
// Use wrapper component for context-based focus detection
|
|
86
|
-
// Pass static focus for legacy mode fallback
|
|
87
|
-
// eslint-disable-next-line react/no-children-prop
|
|
88
27
|
return React.createElement(FocusHighlightWrapper, {
|
|
89
28
|
id,
|
|
90
29
|
staticFocus: focusMap?.get(id),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focusHighlightConfig.js","sourceRoot":"","sources":["../../../src/collaboration/utils/focusHighlightConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"focusHighlightConfig.js","sourceRoot":"","sources":["../../../src/collaboration/utils/focusHighlightConfig.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAa5E,SAAS,qBAAqB,CAAC,EAC7B,EAAE,EACF,QAAQ,EACR,WAAW,GAKZ;IAEC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC;IAKvD,MAAM,SAAS,GAAG,KAAK;QACrB,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS;YACd,CAAC,CAAC,wDAAwD;YAC1D,CAAC,CAAC,wBAAwB,CAAC;QAC/B,CAAC,CAAC,yDAAyD,CAAC;IAE9D,OAAO,KAAK,CAAC,aAAa,CACxB,KAAK,EACL;QACE,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,EAAyB,CAAC,CAAC,CAAC,SAAS;QAClF,eAAe,EAAE,KAAK,EAAE,OAAO;KAChC,EACD,QAAQ,EACR,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,SAAS,EAAE,+BAA+B,EAAE,EAC9C,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CACrD,CACF,CAAC;AACJ,CAAC;AAqCD,MAAM,UAAU,0BAA0B,CACxC,MAAkB,EAClB,QAAsC;IAGtC,MAAM,iBAAiB,GAAwB,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAiD,CAAC;IAE5E,KAAK,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAE1E,MAAM,cAAc,GAAG,eAAe,CAAC,MAGnB,CAAC;QAErB,iBAAiB,CAAC,aAAa,CAAC,GAAG;YACjC,GAAG,eAAe;YAElB,MAAM,EAAE,CAAC,KAAU,EAAE,EAAE;gBACrB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAY,CAAC;gBAC9B,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBAK9C,OAAO,KAAK,CAAC,aAAa,CACxB,qBAAqB,EACrB;oBACE,EAAE;oBACF,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;oBAC9B,QAAQ,EAAE,eAAe;iBAC1B,CACF,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -1,50 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Focus Region Map Utilities
|
|
3
|
-
*
|
|
4
|
-
* Utilities for mapping focus region paths to component IDs
|
|
5
|
-
* and creating focus highlight information from actor presence data.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Convert a focus region path to a component ID.
|
|
9
|
-
*
|
|
10
|
-
* Supported path formats:
|
|
11
|
-
* - "/content/N" - Content array at index N
|
|
12
|
-
* - "/zones/ZoneName/N" - Zone array at index N
|
|
13
|
-
*
|
|
14
|
-
* @param data - Puck data containing content and zones
|
|
15
|
-
* @param path - Focus region path (e.g., "/content/0" or "/zones/Header:left/1")
|
|
16
|
-
* @returns Component ID if found, null otherwise
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```typescript
|
|
20
|
-
* const id = pathToComponentId(puckData, '/content/0');
|
|
21
|
-
* // Returns the ID of the first component in content array
|
|
22
|
-
*
|
|
23
|
-
* const zoneId = pathToComponentId(puckData, '/zones/Header:left/0');
|
|
24
|
-
* // Returns the ID of the first component in Header:left zone
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
1
|
export function pathToComponentId(data, path) {
|
|
28
2
|
if (!path || path.length === 0) {
|
|
29
3
|
return null;
|
|
30
4
|
}
|
|
31
|
-
// Parse content paths: /content/N
|
|
32
5
|
const contentMatch = path.match(/^\/content\/(\d+)$/);
|
|
33
6
|
if (contentMatch && contentMatch[1] !== undefined) {
|
|
34
7
|
const index = parseInt(contentMatch[1], 10);
|
|
35
8
|
const component = data.content[index];
|
|
36
9
|
return component?.props?.id ?? null;
|
|
37
10
|
}
|
|
38
|
-
// Parse Puck's root zone path: /root/default-zone/N
|
|
39
|
-
// Puck uses "root:default-zone" internally for the main content area
|
|
40
11
|
const rootZoneMatch = path.match(/^\/root\/default-zone\/(\d+)$/);
|
|
41
12
|
if (rootZoneMatch && rootZoneMatch[1] !== undefined) {
|
|
42
13
|
const index = parseInt(rootZoneMatch[1], 10);
|
|
43
14
|
const component = data.content[index];
|
|
44
15
|
return component?.props?.id ?? null;
|
|
45
16
|
}
|
|
46
|
-
// Parse zone paths: /zones/ZoneName/N
|
|
47
|
-
// Zone names can contain colons (e.g., "Header:left")
|
|
48
17
|
const zoneMatch = path.match(/^\/zones\/(.+)\/(\d+)$/);
|
|
49
18
|
if (zoneMatch && zoneMatch[1] !== undefined && zoneMatch[2] !== undefined) {
|
|
50
19
|
const zoneName = zoneMatch[1];
|
|
@@ -59,30 +28,8 @@ export function pathToComponentId(data, path) {
|
|
|
59
28
|
const component = zone[index];
|
|
60
29
|
return component?.props?.id ?? null;
|
|
61
30
|
}
|
|
62
|
-
// Unknown path format
|
|
63
31
|
return null;
|
|
64
32
|
}
|
|
65
|
-
/**
|
|
66
|
-
* Create a map of component IDs to focus highlight information.
|
|
67
|
-
*
|
|
68
|
-
* Processes actor presence data to determine which components are being
|
|
69
|
-
* focused on by which actors, including their display info and state.
|
|
70
|
-
*
|
|
71
|
-
* @param data - Puck data containing content and zones
|
|
72
|
-
* @param actors - Array of actor presence information
|
|
73
|
-
* @returns Map from component ID to focus highlight info
|
|
74
|
-
*
|
|
75
|
-
* @example
|
|
76
|
-
* ```typescript
|
|
77
|
-
* const focusMap = createFocusRegionMap(puckData, otherActors);
|
|
78
|
-
*
|
|
79
|
-
* // Check if a component is focused
|
|
80
|
-
* const highlight = focusMap.get('hero-component-1');
|
|
81
|
-
* if (highlight) {
|
|
82
|
-
* console.log(`${highlight.actorName} is ${highlight.isEditing ? 'editing' : 'viewing'}`);
|
|
83
|
-
* }
|
|
84
|
-
* ```
|
|
85
|
-
*/
|
|
86
33
|
export function createFocusRegionMap(data, actors) {
|
|
87
34
|
const map = new Map();
|
|
88
35
|
for (const actor of actors) {
|
|
@@ -90,10 +37,8 @@ export function createFocusRegionMap(data, actors) {
|
|
|
90
37
|
for (const path of focusRegions) {
|
|
91
38
|
const componentId = pathToComponentId(data, path);
|
|
92
39
|
if (componentId === null) {
|
|
93
|
-
// Skip invalid paths
|
|
94
40
|
continue;
|
|
95
41
|
}
|
|
96
|
-
// Create highlight info for this component
|
|
97
42
|
const highlight = {
|
|
98
43
|
actorId: actor.actorId,
|
|
99
44
|
actorName: actor.name,
|
|
@@ -105,41 +50,17 @@ export function createFocusRegionMap(data, actors) {
|
|
|
105
50
|
}
|
|
106
51
|
return map;
|
|
107
52
|
}
|
|
108
|
-
/**
|
|
109
|
-
* Generate a consistent color from an actor ID.
|
|
110
|
-
*
|
|
111
|
-
* Uses the djb2 hash algorithm to generate a hex color that:
|
|
112
|
-
* - Is deterministic (same ID always produces same color)
|
|
113
|
-
* - Matches the avatar color algorithm in CollaboratorAvatars.tsx
|
|
114
|
-
* - Has consistent saturation (65%) and lightness (45%) for readability
|
|
115
|
-
*
|
|
116
|
-
* @param actorId - Actor identifier
|
|
117
|
-
* @returns Hex color string (e.g., "#6366f1")
|
|
118
|
-
*
|
|
119
|
-
* @example
|
|
120
|
-
* ```typescript
|
|
121
|
-
* const color = generateActorColor('user-alice');
|
|
122
|
-
* // Returns a consistent hex color for this actor
|
|
123
|
-
* ```
|
|
124
|
-
*/
|
|
125
53
|
export function generateActorColor(actorId) {
|
|
126
|
-
// djb2 hash algorithm - must match CollaboratorAvatars.tsx for consistent colors
|
|
127
54
|
let hash = 5381;
|
|
128
55
|
for (let i = 0; i < actorId.length; i++) {
|
|
129
56
|
hash = (hash * 33) ^ actorId.charCodeAt(i);
|
|
130
57
|
}
|
|
131
|
-
hash = hash >>> 0;
|
|
132
|
-
// Use hash to generate HSL color with fixed saturation/lightness
|
|
133
|
-
// Must match CollaboratorAvatars.tsx: hsl(hue, 65%, 45%)
|
|
58
|
+
hash = hash >>> 0;
|
|
134
59
|
const hue = hash % 360;
|
|
135
60
|
const saturation = 65;
|
|
136
61
|
const lightness = 45;
|
|
137
|
-
// Convert HSL to hex
|
|
138
62
|
return hslToHex(hue, saturation, lightness);
|
|
139
63
|
}
|
|
140
|
-
/**
|
|
141
|
-
* Convert HSL color to hex string.
|
|
142
|
-
*/
|
|
143
64
|
function hslToHex(h, s, l) {
|
|
144
65
|
const sNorm = s / 100;
|
|
145
66
|
const lNorm = l / 100;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focusRegionMap.js","sourceRoot":"","sources":["../../../src/collaboration/utils/focusRegionMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"focusRegionMap.js","sourceRoot":"","sources":["../../../src/collaboration/utils/focusRegionMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Derives up to two uppercase initials from a display name, using the first and
|
|
3
|
-
* last word ("Ana Maria Reyes" → "AR") to match the editor prototype's
|
|
4
|
-
* collaborator avatars.
|
|
5
|
-
*
|
|
6
|
-
* Returns '' when the name has no usable characters, which callers treat as
|
|
7
|
-
* "render the icon fallback instead" rather than drawing an empty circle.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* A word can only contribute an initial if it starts with a letter or an emoji.
|
|
11
|
-
* Filtering per word rather than validating the finished pair matters: testing the
|
|
12
|
-
* concatenation let one bad word discard the other's initial too, so "Alice Smith
|
|
13
|
-
* (Contractor)" produced "A(" and fell all the way back to the generic icon.
|
|
14
|
-
*/
|
|
15
1
|
const STARTS_WITH_LABEL_CHAR = /^[\p{L}\p{Extended_Pictographic}]/u;
|
|
16
2
|
export function getInitials(name) {
|
|
17
3
|
const words = (name ?? '')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initials.js","sourceRoot":"","sources":["../../../src/collaboration/utils/initials.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initials.js","sourceRoot":"","sources":["../../../src/collaboration/utils/initials.ts"],"names":[],"mappings":"AAcA,MAAM,sBAAsB,GAAG,oCAAoC,CAAC;AAEpE,MAAM,UAAU,WAAW,CAAC,IAA+B;IACzD,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;SACvB,IAAI,EAAE;SACN,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,MAAM,IAAI,GACR,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/E,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -1,29 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Identity key for presence rosters.
|
|
3
|
-
*
|
|
4
|
-
* Lives here rather than beside selectHeaderCollaborators so P1PuckProvider can
|
|
5
|
-
* import it without depending on the editor plugin.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Identity key for the provider memo that publishes presence on the context.
|
|
9
|
-
*
|
|
10
|
-
* The context exposes `presence` through a getter so a focus-region broadcast
|
|
11
|
-
* doesn't recreate it, which means consumers only observe new presence when that
|
|
12
|
-
* memo's deps change. Actor *count* is not enough to detect a change:
|
|
13
|
-
*
|
|
14
|
-
* - a leave and a join in the same WS frame keeps the count identical, so the
|
|
15
|
-
* header would keep rendering whoever left;
|
|
16
|
-
* - `userNameResolver` filling in display names asynchronously rewrites `name`
|
|
17
|
-
* and `avatar` without touching the count.
|
|
18
|
-
*
|
|
19
|
-
* Used for both rosters, so it covers the union of what each one renders:
|
|
20
|
-
*
|
|
21
|
-
* - human avatars (PresenceStack) use actorId, name, avatar and state — state
|
|
22
|
-
* drives the live dot, and a transition changes neither count nor ids;
|
|
23
|
-
* - agent chips (P1EditorSubheader, mapped in P1Plugin) use actorId, name,
|
|
24
|
-
* intent, requestedById and requestedByName.
|
|
25
|
-
*
|
|
26
|
-
*/
|
|
27
1
|
export function presenceIdentityKey(actors) {
|
|
28
2
|
if (!actors || actors.length === 0)
|
|
29
3
|
return '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presenceIdentity.js","sourceRoot":"","sources":["../../../src/collaboration/utils/presenceIdentity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"presenceIdentity.js","sourceRoot":"","sources":["../../../src/collaboration/utils/presenceIdentity.ts"],"names":[],"mappings":"AA6BA,MAAM,UAAU,mBAAmB,CAAC,MAA0C;IAC5E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9C,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT;QACE,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,IAAI,EAAE;QACd,CAAC,CAAC,MAAM,IAAI,EAAE;QACd,CAAC,CAAC,aAAa,IAAI,EAAE;QACrB,CAAC,CAAC,eAAe,IAAI,EAAE;KACxB,CAAC,IAAI,CAAC,QAAQ,CAAC,CACjB;SACA,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpB,CAAC"}
|
|
@@ -1,44 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* FocusHighlightContext
|
|
4
|
-
*
|
|
5
|
-
* Provides focus highlight state to components without requiring config recreation.
|
|
6
|
-
* This context allows the focusMap to change without recreating Puck config,
|
|
7
|
-
* which prevents flickering during collaborative editing.
|
|
8
|
-
*/
|
|
9
2
|
import { createContext, useContext, useMemo } from 'react';
|
|
10
|
-
/**
|
|
11
|
-
* Context for providing focus highlight state to wrapped components.
|
|
12
|
-
*/
|
|
13
3
|
export const FocusHighlightContext = createContext(null);
|
|
14
|
-
/**
|
|
15
|
-
* Provider for focus highlight context.
|
|
16
|
-
* Wrap your Puck editor with this to enable focus highlighting without config recreation.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```tsx
|
|
20
|
-
* const focusMap = createFocusRegionMap(data, otherActors);
|
|
21
|
-
*
|
|
22
|
-
* <FocusHighlightProvider focusMap={focusMap}>
|
|
23
|
-
* <Puck config={stableConfig} data={data} />
|
|
24
|
-
* </FocusHighlightProvider>
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
4
|
export function FocusHighlightProvider({ focusMap, children, }) {
|
|
28
5
|
const value = useMemo(() => ({ focusMap }), [focusMap]);
|
|
29
6
|
return (_jsx(FocusHighlightContext.Provider, { value: value, children: children }));
|
|
30
7
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Hook to access focus highlight context.
|
|
33
|
-
* Returns null if not within a FocusHighlightProvider.
|
|
34
|
-
*/
|
|
35
8
|
export function useFocusHighlight() {
|
|
36
9
|
return useContext(FocusHighlightContext);
|
|
37
10
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Hook to get focus highlight for a specific component ID.
|
|
40
|
-
* Returns undefined if the component has no focus highlight.
|
|
41
|
-
*/
|
|
42
11
|
export function useFocusHighlightForComponent(id) {
|
|
43
12
|
const context = useFocusHighlight();
|
|
44
13
|
return context?.focusMap.get(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusHighlightContext.js","sourceRoot":"","sources":["../../src/core/FocusHighlightContext.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"FocusHighlightContext.js","sourceRoot":"","sources":["../../src/core/FocusHighlightContext.tsx"],"names":[],"mappings":";AAQA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAclE,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAoC,IAAI,CAAC,CAAC;AAyB5F,MAAM,UAAU,sBAAsB,CAAC,EACrC,QAAQ,EACR,QAAQ,GACoB;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExD,OAAO,CACL,KAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACzC,QAAQ,GACsB,CAClC,CAAC;AACJ,CAAC;AAMD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAC3C,CAAC;AAMD,MAAM,UAAU,6BAA6B,CAAC,EAAU;IACtD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,OAAO,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC"}
|