Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions packages/frontend/src/pages/components/ExportDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -466,11 +466,11 @@ export default function ExportDialog({ isOpen, onClose }: ExportDialogProps) {
<Divider sx={{ my: 2 }} />
<Stack gap={2}>
<Typography variant="subtitle1" component="div">
レイアウト方式
配置方式
</Typography>
<Stack direction="row" gap={1}>
<FormControl>
<InputLabel>レイアウト方式</InputLabel>
<InputLabel>配置方式</InputLabel>
<Select
value={configurations.layoutMode}
onChange={(e) =>
Expand All @@ -479,7 +479,7 @@ export default function ExportDialog({ isOpen, onClose }: ExportDialogProps) {
layoutMode: e.target.value,
})
}
label="レイアウト方式"
label="配置方式"
>
<MenuItem value="linear">横並び表示</MenuItem>
<MenuItem value="structured">構造化表示</MenuItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ export default function SentenceStructureDiagramAnnotator(
</text>
),
)}
{/* 矢印 */}
{/* 修飾 */}
{props.sentenceStructureDiagramData.relations.map((relation) => (
<path
key={relation.relationId}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ export default function SentenceStructureEditor() {
}
}}
>
矢印
修飾
</Button>
<Divider orientation="vertical" flexItem />
<Button
Expand Down Expand Up @@ -345,7 +345,7 @@ export default function SentenceStructureEditor() {
}}
onMouseUp={(e) => e.stopPropagation()}
>
{(activeRange.kind === "sentence-element"
{(activeRange.kind === "core-sentence-element"
? sentenceElementRangeTypeToAllowedSentenceElementNameOptionsMap[
activeRange.type
]
Expand Down Expand Up @@ -378,7 +378,7 @@ export default function SentenceStructureEditor() {
}
}}
>
矢印
修飾
</Button>
<Divider orientation="vertical" flexItem />
<Button
Expand Down Expand Up @@ -407,7 +407,7 @@ export default function SentenceStructureEditor() {
);
})()}

{/* 矢印の作成のキャンセル */}
{/* 修飾の作成のキャンセル */}
{(interactionState.type === "relation-idle" ||
interactionState.type === "relation-selecting") &&
(() => {
Expand Down Expand Up @@ -443,7 +443,7 @@ export default function SentenceStructureEditor() {
);
})()}

{/* 矢印の削除 */}
{/* 修飾の削除 */}
{interactionState.type === "relation-selected" &&
(() => {
const activeRelation = findRelationById(
Expand Down Expand Up @@ -484,7 +484,7 @@ export default function SentenceStructureEditor() {
}}
color="error"
>
矢印を削除
修飾を削除
</Button>
</Paper>
);
Expand Down
4 changes: 2 additions & 2 deletions packages/sentence-structure-data/format.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ export const simplifiedSentenceStructureDataToSentenceStructureData = z.codec(
)!,
)
? {
kind: "sentence-element",
kind: "core-sentence-element",
type: simplifiedSentenceElementRangeTypeToSentenceElementRangeTypeMap.get(
range.type as any,
)!,
Expand Down Expand Up @@ -178,7 +178,7 @@ export const simplifiedSentenceStructureDataToSentenceStructureData = z.codec(
}
: {
type:
range.kind === "sentence-element"
range.kind === "core-sentence-element"
? sentenceElementRangeTypeToSimplifiedSentenceElementRangeTypeMap.get(
range.type,
)!
Expand Down
179 changes: 83 additions & 96 deletions packages/sentence-structure-data/operations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ export function createSentenceElementRange(
ranges: [
...sentenceStructureData.ranges,
{
kind: "sentence-element",
kind: "core-sentence-element",
type: input.type,
id: rangeId,
startWordIndex: input.startWordIndex,
Expand Down Expand Up @@ -248,53 +248,6 @@ export function createSentenceStructureRange(
throw newSentenceStructureData.error;
}

export function _createRelationRange(
sentenceStructureData: SentenceStructureData,
input: {
startWordIndex: number;
endWordIndex: number;
},
): Result<{
newSentenceStructureData: SentenceStructureData;
rangeId: string;
}> {
const rangeId = crypto.randomUUID();
const newSentenceStructureData = SentenceStructureDataSchema.safeParse({
...sentenceStructureData,
ranges: [
...sentenceStructureData.ranges,
{
kind: "relation",
type: "relation",
id: rangeId,
startWordIndex: input.startWordIndex,
endWordIndex: input.endWordIndex,
},
],
} satisfies SentenceStructureData);

if (newSentenceStructureData.success) {
return {
success: true,
data: {
newSentenceStructureData: newSentenceStructureData.data,
rangeId,
},
};
}
const errorMessage =
newSentenceStructureData.error.issues.find(
(issue) => issue.code === "custom",
)?.message ?? null;
if (errorMessage) {
return {
success: false,
message: errorMessage,
};
}
throw newSentenceStructureData.error;
}

export function findRangeById(
sentenceStructureData: SentenceStructureData,
input: { rangeId: string },
Expand Down Expand Up @@ -366,10 +319,10 @@ export function createRelation(
toRange: { startWordIndex: number; endWordIndex: number };
},
): Result<{ newSentenceStructureData: SentenceStructureData }> {
const fromRangeResult: Result<{
const fromRangeResult: {
newSentenceStructureData: SentenceStructureData;
rangeId: string;
}> = (() => {
} = (() => {
const existingFromRange = findRangeByStartAndEndWordIndex(
sentenceStructureData,
{
Expand All @@ -379,74 +332,99 @@ export function createRelation(
);
if (existingFromRange) {
return {
success: true,
data: {
newSentenceStructureData: sentenceStructureData,
rangeId: existingFromRange.id,
},
newSentenceStructureData: sentenceStructureData,
rangeId: existingFromRange.id,
};
}
return _createRelationRange(sentenceStructureData, {
startWordIndex: input.fromRange.startWordIndex,
endWordIndex: input.fromRange.endWordIndex,
});
})();
if (!fromRangeResult.success) {

const rangeId = crypto.randomUUID();
const newSentenceStructureData: SentenceStructureData = {
...sentenceStructureData,
ranges: [
...sentenceStructureData.ranges,
{
kind: "relation",
type: "relation",
id: rangeId,
startWordIndex: input.fromRange.startWordIndex,
endWordIndex: input.fromRange.endWordIndex,
},
],
};
return {
success: false,
message: fromRangeResult.message,
newSentenceStructureData,
rangeId,
};
}
})();

const toRangeResult: Result<{
const toRangeResult: {
newSentenceStructureData: SentenceStructureData;
rangeId: string;
}> = (() => {
} = (() => {
const existingToRange = findRangeByStartAndEndWordIndex(
fromRangeResult.data.newSentenceStructureData,
fromRangeResult.newSentenceStructureData,
{
startWordIndex: input.toRange.startWordIndex,
endWordIndex: input.toRange.endWordIndex,
},
);
if (existingToRange) {
return {
success: true,
data: {
newSentenceStructureData:
fromRangeResult.data.newSentenceStructureData,
rangeId: existingToRange.id,
},
newSentenceStructureData: fromRangeResult.newSentenceStructureData,
rangeId: existingToRange.id,
};
}
return _createRelationRange(fromRangeResult.data.newSentenceStructureData, {
startWordIndex: input.toRange.startWordIndex,
endWordIndex: input.toRange.endWordIndex,
});

const rangeId = crypto.randomUUID();
const newSentenceStructureData: SentenceStructureData = {
...fromRangeResult.newSentenceStructureData,
ranges: [
...fromRangeResult.newSentenceStructureData.ranges,
{
kind: "relation",
type: "relation",
id: rangeId,
startWordIndex: input.toRange.startWordIndex,
endWordIndex: input.toRange.endWordIndex,
},
],
};
return {
newSentenceStructureData,
rangeId,
};
})();
if (!toRangeResult.success) {

const newSentenceStructureData = SentenceStructureDataSchema.safeParse({
...toRangeResult.newSentenceStructureData,
relations: [
...toRangeResult.newSentenceStructureData.relations,
{
id: crypto.randomUUID(),
fromRangeId: fromRangeResult.rangeId,
toRangeId: toRangeResult.rangeId,
},
],
} satisfies SentenceStructureData);
if (newSentenceStructureData.success) {
return {
success: true,
data: {
newSentenceStructureData: newSentenceStructureData.data,
},
};
}
const errorMessage =
newSentenceStructureData.error.issues.find(
(issue) => issue.code === "custom",
)?.message ?? null;
if (errorMessage) {
return {
success: false,
message: toRangeResult.message,
message: errorMessage,
};
}

return {
success: true,
data: {
newSentenceStructureData: SentenceStructureDataSchema.parse({
...toRangeResult.data.newSentenceStructureData,
relations: [
...toRangeResult.data.newSentenceStructureData.relations,
{
id: crypto.randomUUID(),
fromRangeId: fromRangeResult.data.rangeId,
toRangeId: toRangeResult.data.rangeId,
},
],
} satisfies SentenceStructureData),
},
};
throw newSentenceStructureData.error;
}

export function findRelationById(
Expand All @@ -466,6 +444,15 @@ export function deleteRelation(
): SentenceStructureData {
return SentenceStructureDataSchema.parse({
...sentenceStructureData,
ranges: sentenceStructureData.ranges.filter(
(range) =>
range.kind !== "relation" ||
sentenceStructureData.relations.some(
(relation) =>
relation.fromRangeId !== range.id &&
relation.toRangeId !== range.id,
),
),
relations: sentenceStructureData.relations.filter(
(relation) => relation.id !== input.relationId,
),
Expand Down
4 changes: 2 additions & 2 deletions packages/sentence-structure-data/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ const RangeSchema = z.union([
(sentenceElementRangeTypeOption) =>
({
"core-sentence-element": z.object({
kind: z.literal("sentence-element"),
kind: z.literal("core-sentence-element"),
type: z.literal("core-sentence-element"),
id: z.uuid(),
startWordIndex: z.int().nonnegative(),
Expand Down Expand Up @@ -108,7 +108,7 @@ const RangeSchema = z.union([
})[sentenceStructureRangeTypeOption],
),
z.object({
kind: z.literal(relationRangeTypeOption),
kind: z.literal("relation"),
type: z.literal("relation"),
id: z.uuid(),
startWordIndex: z.int().nonnegative(),
Expand Down
2 changes: 1 addition & 1 deletion packages/sentence-structure-diagram-data/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export function convertSentenceStructureDataToSentenceStructureDiagramData(
]
: null,
position:
range.kind === "sentence-element"
range.kind === "core-sentence-element"
? resolvedConfigurations.sentenceElementPosition.determineSentenceElementRangeSentenceElementPosition(
rangePosition,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ function determineSentenceElementPosition(
};
case "bottom-left":
return {
x: rangePosition[0]!.start - 4,
x: rangePosition[0]!.start + 6,
y: rangePosition[0]!.bottom + 8,
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ export default function SentenceStructureDiagram(
</text>
),
)}
{/* 矢印 */}
{/* 修飾 */}
{sentenceStructureDiagramData.relations.map((relation) => (
<path
key={relation.relationId}
Expand Down
1 change: 1 addition & 0 deletions packages/sentence-structure-diagram-tree/constants.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export const lineHeight = 16;
export const lineSpacing = 48;
export const wordSpacing = 32;
export const indentSpacing = 32;
export const padding = 48;
Loading