@agent-native/core-corpus 0.207.1 → 0.207.2-nightly-20261013011333
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/corpus/README.md +1 -1
- package/corpus/templates/analytics/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/assets/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/brain/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/calendar/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/chat/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/clips/.agents/skills/screen-memory/SKILL.md +4 -2
- package/corpus/templates/clips/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/clips/actions/request-recording-context.ts +15 -13
- package/corpus/templates/clips/changelog/2026-10-12-earlier-screen-time-survives-slow-startup.md +6 -0
- package/corpus/templates/content/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/crm/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +10 -4
- package/corpus/templates/design/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +10 -0
- package/corpus/templates/design/.generated/bridge/motion-preview.generated.ts +1214 -9
- package/corpus/templates/design/AGENTS.md +2 -1
- package/corpus/templates/design/DESIGN-STUDIO-PLAN.md +4 -3
- package/corpus/templates/design/actions/_motion-local-source.ts +209 -0
- package/corpus/templates/design/actions/apply-component-prop-edit.ts +9 -0
- package/corpus/templates/design/actions/apply-motion-edit.ts +1074 -121
- package/corpus/templates/design/actions/connect-localhost.ts +26 -3
- package/corpus/templates/design/actions/continue-motion-localhost-relay.ts +159 -0
- package/corpus/templates/design/actions/create-component.ts +9 -0
- package/corpus/templates/design/actions/get-motion-timeline.ts +960 -41
- package/corpus/templates/design/actions/list-design-extensions.ts +10 -9
- package/corpus/templates/design/actions/list-local-files.ts +5 -3
- package/corpus/templates/design/actions/motion-localhost-relay.ts +601 -0
- package/corpus/templates/design/actions/open-visual-edit.ts +34 -182
- package/corpus/templates/design/actions/read-local-file.ts +180 -11
- package/corpus/templates/design/actions/remove-motion-timeline.ts +364 -28
- package/corpus/templates/design/actions/run-design-extension-action.ts +3 -3
- package/corpus/templates/design/actions/view-screen.ts +1 -1
- package/corpus/templates/design/actions/visual-edit-browser-request.ts +150 -6
- package/corpus/templates/design/actions/write-local-file.ts +49 -4
- package/corpus/templates/design/app/OpenVisualEditWebMcp.tsx +31 -210
- package/corpus/templates/design/app/components/design/AnimationStyleBrowser.tsx +563 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +358 -4
- package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +2 -2
- package/corpus/templates/design/app/components/design/EditPanel.tsx +360 -48
- package/corpus/templates/design/app/components/design/LocalhostWriteConsentDialog.tsx +3 -1
- package/corpus/templates/design/app/components/design/MotionAudioTracks.tsx +534 -0
- package/corpus/templates/design/app/components/design/MotionDock.tsx +3083 -713
- package/corpus/templates/design/app/components/design/MotionNativeStyleEditor.tsx +2565 -0
- package/corpus/templates/design/app/components/design/MotionTextAnimationEditor.tsx +446 -0
- package/corpus/templates/design/app/components/design/bridge/motion-preview.bridge.ts +1670 -18
- package/corpus/templates/design/app/components/design/design-canvas/motion-path-edit.ts +233 -0
- package/corpus/templates/design/app/components/design/design-canvas/motion-types.ts +27 -1
- package/corpus/templates/design/app/components/design/edit-panel/inspector-grid.tsx +4 -0
- package/corpus/templates/design/app/components/design/edit-panel/layout-properties.tsx +28 -0
- package/corpus/templates/design/app/components/design/edit-panel/motion-inspector-properties.tsx +549 -0
- package/corpus/templates/design/app/components/design/edit-panel/panel-primitives.tsx +4 -0
- package/corpus/templates/design/app/components/design/edit-panel/position-layout-properties.tsx +393 -205
- package/corpus/templates/design/app/components/design/editor/DesignWorkspaceRail.tsx +35 -0
- package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +84 -1
- package/corpus/templates/design/app/components/design/inspector/MotionKeyframeDiamond.tsx +10 -0
- package/corpus/templates/design/app/hooks/use-navigation-state.ts +30 -5
- package/corpus/templates/design/app/i18n/en-US.ts +217 -2
- package/corpus/templates/design/app/lib/design-media-upload.ts +25 -8
- package/corpus/templates/design/app/localhost-bridge-proxy.ts +302 -48
- package/corpus/templates/design/app/pages/Index.tsx +51 -3
- package/corpus/templates/design/app/pages/design-editor/commands/apply-design-editor-command.ts +2 -0
- package/corpus/templates/design/app/pages/design-editor/commands/toggle-motion-keyframe.ts +24 -7
- package/corpus/templates/design/app/pages/design-editor/design-editor-view.tsx +443 -5
- package/corpus/templates/design/app/pages/design-editor/domains/use-editor-content-and-components.ts +404 -31
- package/corpus/templates/design/app/pages/design-editor/domains/use-editor-files-and-saving.ts +46 -18
- package/corpus/templates/design/app/pages/design-editor/domains/use-editor-history.ts +4 -1
- package/corpus/templates/design/app/pages/design-editor/domains/use-editor-live-edits-and-presence.ts +161 -12
- package/corpus/templates/design/app/pages/design-editor/domains/use-editor-screen-rendering.tsx +29 -0
- package/corpus/templates/design/app/pages/design-editor/domains/use-editor-source-and-sync.ts +17 -8
- package/corpus/templates/design/app/pages/design-editor/domains/use-editor-tools-and-vectors.ts +18 -0
- package/corpus/templates/design/app/pages/design-editor/effects/motion-autosave.ts +280 -64
- package/corpus/templates/design/app/pages/design-editor/effects/publish-agent-selection-context.ts +28 -5
- package/corpus/templates/design/app/pages/design-editor/left-sidebar-width.ts +1 -1
- package/corpus/templates/design/app/pages/design-editor/localhost-consent-request.ts +14 -0
- package/corpus/templates/design/app/pages/design-editor/motion-animation-style.ts +30 -0
- package/corpus/templates/design/app/pages/design-editor/motion-layer-visibility.ts +24 -0
- package/corpus/templates/design/app/pages/design-editor/motion-state.ts +416 -13
- package/corpus/templates/design/app/pages/design-editor/view/left-sidebar.tsx +16 -0
- package/corpus/templates/design/app/pages/design-editor/view/mobile-inspector-sheet.tsx +20 -4
- package/corpus/templates/design/app/pages/design-editor/view/motion-dock-panel.tsx +152 -6
- package/corpus/templates/design/app/pages/design-editor/view/single-screen-canvas.tsx +15 -0
- package/corpus/templates/design/changelog/2026-10-11-design-animations-can-be-edited-in-a-source-backed-timeline-.md +6 -0
- package/corpus/templates/design/changelog/2026-10-11-motion-controls-are-read-only-for-react-components-with-cond.md +6 -0
- package/corpus/templates/design/changelog/2026-10-12-add-code-backed-motion-controls-for-text-stagger-and-svg-pat.md +6 -0
- package/corpus/templates/design/changelog/2026-10-12-design-shows-generic-prompt-suggestions-when-personalized-su.md +6 -0
- package/corpus/templates/design/changelog/2026-10-12-new-motion-timelines-start-at-2-seconds-by-default.md +6 -0
- package/corpus/templates/design/changelog/2026-10-12-svg-paths-can-be-animated-with-native-path-trim-controls.md +6 -0
- package/corpus/templates/design/e2e/helpers.ts +128 -25
- package/corpus/templates/design/package.json +1 -1
- package/corpus/templates/design/server/db/schema.ts +24 -0
- package/corpus/templates/design/server/plugins/db.ts +36 -0
- package/corpus/templates/design/shared/code-layer.ts +12 -0
- package/corpus/templates/design/shared/design-source-capabilities.ts +3 -1
- package/corpus/templates/design/shared/motion-animation-presets.ts +51 -0
- package/corpus/templates/design/shared/motion-animation-styles.ts +293 -0
- package/corpus/templates/design/shared/motion-code.ts +850 -0
- package/corpus/templates/design/shared/motion-compiler.ts +425 -12
- package/corpus/templates/design/shared/motion-easing.ts +179 -0
- package/corpus/templates/design/shared/motion-html-source.ts +911 -0
- package/corpus/templates/design/shared/motion-native-style-runtime.ts +1036 -0
- package/corpus/templates/design/shared/motion-native-style.ts +536 -0
- package/corpus/templates/design/shared/motion-path-trim-source.ts +671 -0
- package/corpus/templates/design/shared/motion-presets.ts +124 -0
- package/corpus/templates/design/shared/motion-react-source.ts +1608 -0
- package/corpus/templates/design/shared/motion-text-code.ts +1066 -0
- package/corpus/templates/design/shared/motion-timeline.ts +301 -10
- package/corpus/templates/design/shared/motion-typescript-runtime.ts +29 -0
- package/corpus/templates/design/shared/visual-edit-bridge-relay.ts +45 -1
- package/corpus/templates/dispatch/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/factory/.agents/skills/review-latest-feedback/SKILL.md +35 -36
- package/corpus/templates/forms/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/mail/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/plan/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/plan/app/components/editor/PlanBlockNode.tsx +1 -1
- package/corpus/templates/plan/app/components/editor/PlanDocumentEditor.tsx +173 -159
- package/corpus/templates/plan/app/components/editor/usePlanUndoStack.ts +49 -53
- package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +3 -22
- package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +12 -123
- package/corpus/templates/plan/app/components/plan/plan-block-structure.ts +206 -0
- package/corpus/templates/plan/app/lib/plan-local-bridge.ts +29 -23
- package/corpus/templates/plan/app/lib/plan-native-anchors.ts +2 -9
- package/corpus/templates/plan/changelog/2026-10-12-invalid-structured-blocks-no-longer-crash-the-plan-editor.md +6 -0
- package/corpus/templates/slides/.deploy-tmp/agent-native-provided-plugins.mjs +10 -0
- package/corpus/templates/slides/scripts/edit-fidelity/authoring-fuzz.ts +288 -29
- package/corpus/templates/slides/scripts/edit-fidelity/run.ts +5 -2
- package/package.json +1 -1
package/corpus/README.md
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// AUTO-GENERATED by @agent-native/core deploy build
|
|
2
|
+
import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
|
|
3
|
+
|
|
4
|
+
const pluginStems = ["agent-chat","analytics-alert-jobs","analytics-rollup-backfill-jobs","auth","collab","config","core-routes","creative-context","dashboard-report-jobs","db","feature-flags","labs","onboarding","otel","session-replay-retention-jobs","transactional-emails","uptime-monitor-jobs"];
|
|
5
|
+
|
|
6
|
+
export default function markBuildDiscoveredPlugins(nitroApp) {
|
|
7
|
+
for (const stem of pluginStems) {
|
|
8
|
+
markDefaultPluginProvided(nitroApp, stem);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// AUTO-GENERATED by @agent-native/core deploy build
|
|
2
|
+
import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
|
|
3
|
+
|
|
4
|
+
const pluginStems = ["agent-chat","auth","creative-context","db","labs","onboarding","otel"];
|
|
5
|
+
|
|
6
|
+
export default function markBuildDiscoveredPlugins(nitroApp) {
|
|
7
|
+
for (const stem of pluginStems) {
|
|
8
|
+
markDefaultPluginProvided(nitroApp, stem);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// AUTO-GENERATED by @agent-native/core deploy build
|
|
2
|
+
import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
|
|
3
|
+
|
|
4
|
+
const pluginStems = ["agent-chat","auth","brain-jobs","core-routes","db","otel"];
|
|
5
|
+
|
|
6
|
+
export default function markBuildDiscoveredPlugins(nitroApp) {
|
|
7
|
+
for (const stem of pluginStems) {
|
|
8
|
+
markDefaultPluginProvided(nitroApp, stem);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// AUTO-GENERATED by @agent-native/core deploy build
|
|
2
|
+
import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
|
|
3
|
+
|
|
4
|
+
const pluginStems = ["agent-chat","auth","core-routes","db","event-rules","oauth-refresh","otel","transactional-emails"];
|
|
5
|
+
|
|
6
|
+
export default function markBuildDiscoveredPlugins(nitroApp) {
|
|
7
|
+
for (const stem of pluginStems) {
|
|
8
|
+
markDefaultPluginProvided(nitroApp, stem);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// AUTO-GENERATED by @agent-native/core deploy build
|
|
2
|
+
import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
|
|
3
|
+
|
|
4
|
+
const pluginStems = ["agent-chat","auth","otel"];
|
|
5
|
+
|
|
6
|
+
export default function markBuildDiscoveredPlugins(nitroApp) {
|
|
7
|
+
for (const stem of pluginStems) {
|
|
8
|
+
markDefaultPluginProvided(nitroApp, stem);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -65,8 +65,10 @@ It is private with its clip. Requesting it makes the clip private, and it is
|
|
|
65
65
|
refused while the clip still has direct shares. While an item is active, sharing
|
|
66
66
|
the clip is refused: making it public or visible to the organization, or
|
|
67
67
|
granting access, fails until the item is removed. Never describe it as
|
|
68
|
-
shareable. The request's `endedAt`
|
|
69
|
-
|
|
68
|
+
shareable. The request's `endedAt` may be up to 10 minutes after the Clip row
|
|
69
|
+
is created because native setup and the countdown happen after row creation. It
|
|
70
|
+
may be up to 120 seconds before row creation for client clock skew. Timestamps
|
|
71
|
+
outside those bounds fail with `recording_context_invalid_window`.
|
|
70
72
|
|
|
71
73
|
The footage is a separate private recording, uploaded from this device through
|
|
72
74
|
the Rewind handoff. Its source app name is `Clips Rewind`; the footage check
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// AUTO-GENERATED by @agent-native/core deploy build
|
|
2
|
+
import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
|
|
3
|
+
|
|
4
|
+
const pluginStems = ["agent-chat","auth","calendar-jobs","config","core-routes","db","feature-flags","labs","onboarding","onboarding-calendar","otel","transactional-email-catalog"];
|
|
5
|
+
|
|
6
|
+
export default function markBuildDiscoveredPlugins(nitroApp) {
|
|
7
|
+
for (const stem of pluginStems) {
|
|
8
|
+
markDefaultPluginProvided(nitroApp, stem);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -20,9 +20,9 @@ import makeRecordingPrivateForRewind, {
|
|
|
20
20
|
} from "./make-recording-private-for-rewind.js";
|
|
21
21
|
import { trashRecordingContextFootage } from "./remove-recording-context.js";
|
|
22
22
|
|
|
23
|
-
// The Clip row is created
|
|
24
|
-
|
|
25
|
-
const
|
|
23
|
+
// The Clip row is created before native setup and the recording countdown.
|
|
24
|
+
const MAX_STARTUP_DELAY_MS = 10 * 60 * 1000;
|
|
25
|
+
const CLIENT_CLOCK_SKEW_TOLERANCE_MS = 120 * 1000;
|
|
26
26
|
|
|
27
27
|
export default defineAction({
|
|
28
28
|
description:
|
|
@@ -38,7 +38,7 @@ export default defineAction({
|
|
|
38
38
|
.string()
|
|
39
39
|
.datetime({ offset: true })
|
|
40
40
|
.describe(
|
|
41
|
-
"When
|
|
41
|
+
"When capture started, as an ISO timestamp. May be up to 10 minutes after the Clip row is created for native setup, or 120 seconds before it for client clock skew.",
|
|
42
42
|
),
|
|
43
43
|
deviceId: z
|
|
44
44
|
.string()
|
|
@@ -65,17 +65,19 @@ export default defineAction({
|
|
|
65
65
|
statusCode: 404,
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
const startOffsetMs = Date.parse(endedAt) - Date.parse(recording.createdAt);
|
|
69
69
|
if (
|
|
70
|
-
!(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
)
|
|
70
|
+
!Number.isFinite(startOffsetMs) ||
|
|
71
|
+
startOffsetMs < -CLIENT_CLOCK_SKEW_TOLERANCE_MS ||
|
|
72
|
+
startOffsetMs > MAX_STARTUP_DELAY_MS
|
|
74
73
|
) {
|
|
75
|
-
fail(
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
fail(
|
|
75
|
+
"The requested screen history must end between 2 minutes before and 10 minutes after this Clip was created.",
|
|
76
|
+
{
|
|
77
|
+
errorCode: "recording_context_invalid_window",
|
|
78
|
+
statusCode: 400,
|
|
79
|
+
},
|
|
80
|
+
);
|
|
79
81
|
}
|
|
80
82
|
if (isPrivateClip(recording.visibility)) {
|
|
81
83
|
await assertNoDirectRecordingShares(recordingId);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// AUTO-GENERATED by @agent-native/core deploy build
|
|
2
|
+
import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
|
|
3
|
+
|
|
4
|
+
const pluginStems = ["agent-chat","auth","collab","core-routes","creative-context","db","feature-flags","labs","onboarding","otel","suggested-edits","transactional-emails"];
|
|
5
|
+
|
|
6
|
+
export default function markBuildDiscoveredPlugins(nitroApp) {
|
|
7
|
+
for (const stem of pluginStems) {
|
|
8
|
+
markDefaultPluginProvided(nitroApp, stem);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// AUTO-GENERATED by @agent-native/core deploy build
|
|
2
|
+
import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
|
|
3
|
+
|
|
4
|
+
const pluginStems = ["agent-chat","auth","core-routes","db","otel"];
|
|
5
|
+
|
|
6
|
+
export default function markBuildDiscoveredPlugins(nitroApp) {
|
|
7
|
+
for (const stem of pluginStems) {
|
|
8
|
+
markDefaultPluginProvided(nitroApp, stem);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -1047,10 +1047,16 @@ for elements entering, `ease-in` for elements leaving. Animate only
|
|
|
1047
1047
|
`transform` and `opacity` for performance; avoid animating `width`/`height`/
|
|
1048
1048
|
`top`/`left`. Every non-essential animation must respect
|
|
1049
1049
|
`prefers-reduced-motion` (see the mandatory `<style>` block below). For
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
with `
|
|
1053
|
-
|
|
1050
|
+
motion edits, keep a versioned keyframe timeline as the editable source
|
|
1051
|
+
model, then compile it back into the design code. Inspect the selected screen
|
|
1052
|
+
with `get-motion-timeline` before writing. Inline HTML/Alpine uses its `fileId`
|
|
1053
|
+
as `sourceRef`; a localhost React/TSX screen uses the same selected screen as
|
|
1054
|
+
`sourceRef` plus the live module path, connection id, and version hash in
|
|
1055
|
+
`localSource`. Write through `apply-motion-edit` so edits stay parseable and
|
|
1056
|
+
round-trip between timeline and CSS/JSX. The inline output is standard CSS
|
|
1057
|
+
`@keyframes`; the React adapter updates verified JSX/source spans and emits the
|
|
1058
|
+
same managed CSS contract. Do not keep the only copy of animation state in a
|
|
1059
|
+
GSAP runtime timeline or a one-way export.
|
|
1054
1060
|
|
|
1055
1061
|
## Imagery
|
|
1056
1062
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// AUTO-GENERATED by @agent-native/core deploy build
|
|
2
|
+
import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
|
|
3
|
+
|
|
4
|
+
const pluginStems = ["agent-chat","assets-mcp","auth","builder-host-embed-headers","collab","config","core-routes","creative-context","db","e2e-attachment-storage","feature-flags","journey-canvas-stage-cleanup","labs","local-import-asset-upload","otel","review"];
|
|
5
|
+
|
|
6
|
+
export default function markBuildDiscoveredPlugins(nitroApp) {
|
|
7
|
+
for (const stem of pluginStems) {
|
|
8
|
+
markDefaultPluginProvided(nitroApp, stem);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -3734,6 +3734,16 @@ export const editorChromeBridgeScript: string = `"use strict";
|
|
|
3734
3734
|
var svgRoot = outermostSvgAncestor(hit);
|
|
3735
3735
|
if (svgRoot) return pastedSvgShapeForHit(hit, svgRoot) || svgRoot;
|
|
3736
3736
|
var target = unwrapTextOverlay(hit);
|
|
3737
|
+
if (typeof target.matches === "function" && target.matches("span[data-agent-native-motion-text-unit]")) {
|
|
3738
|
+
var sourceTextTarget = target.parentElement;
|
|
3739
|
+
while (sourceTextTarget && !isDocumentRootElement(sourceTextTarget)) {
|
|
3740
|
+
if (sourceTextTarget.hasAttribute("data-agent-native-node-id") && !sourceTextTarget.hasAttribute("data-agent-native-motion-text-unit")) {
|
|
3741
|
+
target = sourceTextTarget;
|
|
3742
|
+
break;
|
|
3743
|
+
}
|
|
3744
|
+
sourceTextTarget = sourceTextTarget.parentElement;
|
|
3745
|
+
}
|
|
3746
|
+
}
|
|
3737
3747
|
var textPrimitive = nativeTextPrimitiveForHit(target);
|
|
3738
3748
|
if (textPrimitive) target = textPrimitive;
|
|
3739
3749
|
if (!descendIntoGroup) {
|