Š-06: Ţĥé ṽîšüàļ éđîţöŕ đàţà ḿöđéļ
Šüḿḿàŕý
Ţĥé ṽîšüàļ éđîţöŕ îš à ŕéñđéŕ-àñđ-îñšþéçţ šüŕƒàçé öṽéŕ ţĥé çöñţéñţ ḿöđéļ
(Ƒ-02), šĥîþþéđ àš à ķîţ îñ
@neokapi/ui-primitives üñđéŕ ţĥé ./preview šüƃþàţĥ. À đöçüḿéñţ'š Part
šţŕéàḿ îš þŕöĵéçţéđ îñ Ĝö ţö à ĥîéŕàŕçĥîçàļ, ĴŠÖÑ-šéŕîàļîžàƃļé ContentTree
(core/editor), ţĥéñ ñöŕḿàļîžéđ öñ ţĥé ŢýþéŠçŕîþţ šîđé ţö à RenderDoc
ŵĥöšé kind đŕîṽéš à ƒöŕḿàţ-šĥàþéđ ŕéñđéŕéŕ. Îñļîñé ŕüñš àŕé šţýļéđ ţĥŕöüĝĥ ţĥé
ṽöçàƃüļàŕý; šţàñđ-öƒƒ öṽéŕļàýš ŕéñđéŕ àš îñļîñé ḿàŕķš ŵĥöšé àççéñţ îš à
ƒüñçţîöñ öƒ ţĥé öṽéŕļàý ţýþé àñđ ţĥé šþàñ'š öŵñ þŕöþéŕţîéš. Éṽéŕý þŕöĵéçţîöñ
öƒ à ŕüñ šéǫüéñçé ţö ţéẋţ îš đéçļàŕéđ þéŕ ŕüñ ķîñđ, šö à þļàçéĥöļđéŕ öŕ à þļüŕàļ
çàñ ñéṽéŕ ṽàñîšĥ ƒŕöḿ à ṽîéŵ. Éđîţîñĝ îš đéļîƃéŕàţéļý ķéþţ öüţ öƒ ţĥé ķîţ: ţĥé
çàñöñîçàļ ŵàý ţö çöḿḿîţ à ţŕàñšļàţîöñ îš ţĥé ḿöđéļ'š öŵñ SetTargetRuns, àñđ
ţĥé ƃýţé-ƒàîţĥƒüļ ŕöüñđ-ţŕîþ îš à þŕöþéŕţý öƒ ŕéàđéŕ + šķéļéţöñ + ŵŕîţéŕ,
îñđéþéñđéñţ öƒ ŵĥö éđîţéđ.
Ţĥé ţöþ ŕöŵ þŕöĵéçţš ḿöđéļ ţö þîẋéļš; ţĥé ƃöţţöḿ ŕöŵ çöḿḿîţš àñ éđîţ àñđ ŕéçöñšţŕüçţš ƒàîţĥƒüļ öüţþüţ.
Çöñţéẋţ
Ţĥé çöñţéñţ ḿöđéļ, ţĥé ƒöŕḿàţ šýšţéḿ àñđ îţš ƃýţé-ƒàîţĥƒüļ šķéļéţöñ, ţĥé ţööļ šýšţéḿ, àñđ ţĥé îñţéŕçĥàñĝé þàçķàĝé ƒàḿîļý éàçĥ ĥàṽé ţĥéîŕ öŵñ đéçîšîöñ ŕéçöŕđ. Ţĥé éđîţöŕ šþàñš ţŵö öƒ ţĥéḿ àñđ ƃéļöñĝš ţö ñéîţĥéŕ, ƒöŕ ţŵö ŕéàšöñš.
Îţ šþàñš Ĝö àñđ ŢýþéŠçŕîþţ. Ţĥé ḿöđéļ îš þŕöĵéçţéđ ţö à ContentTree îñ
core/editor, ţĥéñ ñöŕḿàļîžéđ àñđ ŕéñđéŕéđ îñ packages/ui. Ţĥé ĥàñđ-öƒƒ, ţĥé
ContentTree àñđ îţš ŢýþéŠçŕîþţ ḿîŕŕöŕ, îš ţĥé šéàḿ ŵĥéŕé ţĥé ţŵö ĥàļṽéš ḿééţ,
àñđ à šéàḿ ñöƃöđý ŵŕöţé đöŵñ îš à šéàḿ ţĥàţ đŕîƒţš.
Ţĥé ƃàçķ þàţĥ îš ţĥé ļéàšţ öƃṽîöüš þàŕţ. Ţĥé ƒŕàḿéŵöŕķ šüþþļîéš à ţàŕĝéţ-éđîţ þŕîḿîţîṽé àñđ à ƒàîţĥƒüļ ŕöüñđ-ţŕîþ, ƃüţ šĥîþš ñö þŕöđüçţîöñ ţŕàñšļàţîöñ-éđîţîñĝ àþþļîçàţîöñ. Šö ţĥé çöñţŕàçţ ŵöŕţĥ þîññîñĝ đöŵñ îš ḿöđéļ → éđîţ → ŵŕîţé, ñöţ àñý þàŕţîçüļàŕ îñţéŕƒàçé'š çöḿḿîţ ƒļöŵ.
Đéçîšîöñ
Ţĥé éđîţöŕ ŕéñđéŕš ţĥé çöñţéñţ ḿöđéļ
Ţĥé ƃŕîđĝé ƃéţŵééñ ţĥé éñĝîñé àñđ àñý þŕéṽîéŵ šüŕƒàçé îš ţĥé ContentTree
(core/editor/anatomy.go): à ĥîéŕàŕçĥîçàļ, ĴŠÖÑ-šéŕîàļîžàƃļé ṽîéŵ öƒ à
đöçüḿéñţ'š Part šţŕéàḿ. BuildContentTree ŵàļķš ţĥé šţŕéàḿ ŵîţĥ à çöñţàîñéŕ
šţàçķ, àţţàçĥîñĝ éàçĥ þàŕţ ţö ţĥé îññéŕḿöšţ öþéñ çöñţàîñéŕ àñđ þŕöđüçîñĝ ñöđéš öƒ
ķîñđ layer, group, block, data, öŕ media.
À ƃļöçķ ñöđé þŕéšéŕṽéš ŵĥàţ ţĥé ḿöđéļ ĥöļđš: ţĥé ŕüñ šéǫüéñçéš ƒöŕ šöüŕçé àñđ éàçĥ ţàŕĝéţ, þéŕ-ţàŕĝéţ ḿéţàđàţà, ţĥé šţàñđ-öƒƒ öṽéŕļàý ṽîéŵš çàŕŕýîñĝ ţĥé ţéẋţ éàçĥ šþàñ çöṽéŕš, àñđ šéĝḿéñţ šþàñš đéŕîṽéđ ƃý ŕüñ-îñđéẋ ŕàñĝé ƒŕöḿ ţĥé šéĝḿéñţàţîöñ öṽéŕļàý (Ḿ-02).
ContentTree îš đîšţîñçţ ƒŕöḿ ţĥé éđîţöŕ'š öţĥéŕ þŕöĵéçţîöñ, BlockIndex,
ŵĥîçĥ ƒļàţţéñš à ƃļöçķ'š šöüŕçé ţö þļàîñ šţŕîñĝš ƒöŕ ŕéçöñšţŕüçţîöñ. Ţĥé þŕéṽîéŵ
ķîţ çöñšüḿéš ţĥé ŕüñ-þŕéšéŕṽîñĝ ContentTree, šö ţĥé éđîţöŕ ŕéñđéŕš éẋàçţļý ŵĥàţ
ţĥé ḿöđéļ ĥöļđš (îñļîñé þļàçéĥöļđéŕš, þàîŕéđ çöđéš, þļüŕàļš) ŕàţĥéŕ ţĥàñ à
ļöššý šţŕîñĝ ṽîéŵ.
Ŕéñđéŕ þàţĥ
À Þàŕţ šţŕéàḿ ƃéçöḿéš à ĥîéŕàŕçĥîçàļ ţŕéé, ñöŕḿàļîžéđ ţö à ƒöŕḿàţ-šĥàþéđ đöçüḿéñţ ŵĥöšé ķîñđ šéļéçţš ţĥé ŕéñđéŕéŕ.
treeToRenderDoc ñöŕḿàļîžéš à ContentTree îñţö à RenderDoc ţĥŕöüĝĥ à
đàţà-đŕîṽéñ STRUCTURE_RULES ţàƃļé. Îţ çöļļéçţš ţàŕĝéţ ļöçàļéš àçŕöšš àļļ
ƃļöçķš, ţĥéñ ţŕîéš ļàýéŕ-šĥàþé đéţéçţöŕš îñ đéçļàŕàţîöñ öŕđéŕ, ƒîŕšţ ḿàţçĥ
ŵîññîñĝ (þŕéšéñţàţîöñ šļîđéš, šþŕéàđšĥééţ ŵöŕķšĥééţš, à ŵöŕđ-þŕöçéššîñĝ đöçüḿéñţ
ƃöđý, à þàĝéđ ļàýéŕ þàţţéŕñ), ƒàļļîñĝ ƃàçķ ţö à ƒöŕḿàţ-ƒàḿîļý çļàššîƒîçàţîöñ àñđ
ƒîñàļļý ţö à ĝéñéŕîç šéçţîöñ éẋţŕàçţîöñ. Ţĥé ŕéšüļţ çàŕŕîéš à kind öƒ slides,
sheet, doc, pages, list, öŕ sections, àñđ éṽéŕý ƃļöçķ þŕöĵéçţš ţö à
ŕéñđéŕ ļîñé çàŕŕýîñĝ îţš îđ, ţéẋţ, îñļîñé çöđéš, þéŕ-ļöçàļé ţàŕĝéţš, ŕöļé,
öṽéŕļàýš, àñđ àññöţàţîöñš.
FormatPreview đîšþàţçĥéš öñ ţĥàţ ķîñđ ţö à ķîñđ-šþéçîƒîç ŕéñđéŕéŕ. Ļéàƒ
ţéẋţ ĝöéš ţĥŕöüĝĥ à šĥàŕéđ çöḿþöñéñţ ţĥàţ àþþļîéš ţĥé àçţîṽé ţŕàñšîţîöñ, ŕéšöļṽéš
öṽéŕļàý ḿàŕķš, àñđ, ŵĥéñ à before đöçüḿéñţ îš šüþþļîéđ, ŵöŕđ-ļéṽéļ đ
ĥîĝĥļîĝĥţîñĝ.
DocumentViewer çöḿþöšéš ţĥé ƒüļļ šüŕƒàçé: à ĥéàđéŕ çàŕŕýîñĝ ţĥé ƒîļéñàḿé, à
ƒîļé-ţýþé ƃàđĝé, ţĥé ƃýţé šîžé, àñđ à đöŵñļöàđ ƃüţţöñ; à šöüŕçé-ţö-ţàŕĝéţ ţöĝĝļé
šĥöŵñ öñļý ŵĥéñ ţàŕĝéţ ļöçàļéš éẋîšţ; àñđ à ţàƃ šţŕîþ. Þŕéṽîéŵ, Ƃļöçķš,
àñđ Šţàţš àŕé àļŵàýš þŕéšéñţ. Šţŕüçţüŕé àþþéàŕš ŵĥéñ ţĥé ţŕéé çàŕŕîéš
šţŕüçţüŕàļ ŕöļéš, Ļàýöüţ ŵĥéñ îţ çàŕŕîéš þàĝé ĝéöḿéţŕý
(É-08), Ḿéđîà ŵĥéñ îţ çàŕŕîéš à
ţéḿþöŕàļ öŕ ŕàšţéŕ ḿéđîà ļàýéŕ (Ḿ-03),
àñđ Ŕàŵ ŵĥéñ ţĥé ĥöšţ àçţüàļļý ĥöļđš ţĥé ƃýţéš. À ĥöšţ çàñ àþþéñđ îţš öŵñ
ţàƃš; ţĥé ļàƃ üšéš ţĥéḿ ƒöŕ öüţþüţ-ƒöŕḿàţ þîļļš. Đöŵñļöàđîñĝ îš ţĥé šîñĝļé
ĥéàđéŕ ƃüţţöñ ŕàţĥéŕ ţĥàñ à đüþļîçàţé ţàƃ, ƃéçàüšé öñ ţĥé đéšķţöþ ţĥé ļöçàļ ƒîļé
îš àļŕéàđý ţĥé šöüŕçé öƒ ţŕüţĥ.
Þŕöĵéçţîöñ îš đéçļàŕéđ þéŕ ŕüñ ķîñđ
Ţüŕñîñĝ à ŕüñ šéǫüéñçé îñţö ţéẋţ îš ţĥé šţéþ éṽéŕý šüŕƒàçé þéŕƒöŕḿš àñđ ţĥé öñé éàšîéšţ ţö ĝéţ ŵŕöñĝ. Ţĥé ļöššý ƒöŕḿ îš à ļööþ ţĥàţ ķééþš ţéẋţ ŕüñš àñđ šķîþš ţĥé ŕéšţ, ŵĥîçĥ ŕéàđš àš "çöñçàţéñàţé ţĥé ţéẋţ" àñđ ƃéĥàṽéš àš "đéļéţé éṽéŕý þļàçéĥöļđéŕ, þàîŕéđ çöđé àñđ þļüŕàļ". Ñöţĥîñĝ ƒàîļš; ţĥé çöñţéñţ îš ĝöñé.
Šö à þŕöĵéçţîöñ îš đéçļàŕéđ, ñéṽéŕ ļööþéđ. À RunSpec
(packages/kapi-format/src/run-projection.ts) àñšŵéŕš ƒöŕ éṽéŕý ķîñđ îñ
RUN_KINDS, àñđ îţš ţýþé îš à ḿàþþéđ ţýþé öṽéŕ ţĥàţ ļîšţ, šö à šþéç ţĥàţ öḿîţš
à ķîñđ đöéš ñöţ çöḿþîļé. Éàçĥ ķîñđ îš ŕéñđéŕéđ, éẋþàñđéđ, đŕöþþéđ ŵîţĥ à šţàţéđ
ŕéàšöñ, öŕ đéçļàŕéđ üñšüþþöŕţéđ àñđ ŕéþöŕţéđ, îñ ŵĥîçĥ çàšé ţĥé šþéç'š ŕéǫüîŕéđ
fallback îš đŕàŵñ îñ îţš þļàçé. À ķîñđ àđđéđ ţö ţĥé ḿöđéļ ƃŕéàķš éṽéŕý
þŕöĵéçţîöñ üñţîļ éàçĥ ĥàš šàîđ ŵĥàţ îţ đöéš ŵîţĥ îţ.
scripts/check-run-projection.sh ķééþš à ĥàñđ-ŵŕîţţéñ ļööþ ƒŕöḿ ŕéţüŕñîñĝ; îţ
ŕüñš îñ make lint àñđ îñ ÇÎ.
Ţĥé ķîţ'š ŕéñđéŕ ļîñé ţĥéŕéƒöŕé çàŕŕîéš à ƃļöçķ'š îñļîñé çöđéš ƃéšîđé îţš ţéẋţ,
šö à þļàçéĥöļđéŕ îš đŕàŵñ àš ţĥé šàḿé çĥîþ ŵĥéŕéṽéŕ îţ àþþéàŕš, àñđ à þļüŕàļ
ƃļöçķ ŕéàđš îţš other ƃŕàñçĥ ƃéĥîñđ à çĥîþ ţĥàţ šàýš šö ŕàţĥéŕ ţĥàñ ŕéñđéŕîñĝ
àš àñ éḿþţý ļîñé. Ţĥé çĥîþ ñàḿéš ţĥé ṽàŕîàƃļé à þļàçéĥöļđéŕ šţàñđš ƒöŕ, ƃéçàüšé
ţĥé ĴŠẊ ṽöçàƃüļàŕý îš öñé ţĥé đéƒàüļţ ŕéĝîšţŕý ļöàđš.
Ŕüñ, ṽöçàƃüļàŕý, ŕéñđéŕîñĝ
Îñļîñé ŕüñš àŕé šţýļéđ ţĥŕöüĝĥ ţĥé ṽöçàƃüļàŕý ŕéĝîšţŕý. Ţĥé ṽöçàƃüļàŕý þàçķš
àŕé çàñöñîçàļ àš à Ĝö éḿƃéđ îñ core/model/vocabularies; packages/ui/src/vocabularies
çàŕŕîéš à ƃýţé-îđéñţîçàļ ḿîŕŕöŕ, àñđ scripts/check-vocab-packs.mjs ĥöļđš ţĥé
ţŵö éǫüàļ îñ make lint. Ŕéšöļṽîñĝ à ŕüñ'š ţýþé ýîéļđš đîšþļàý îñƒöŕḿàţîöñ: à
çàţéĝöŕý, à ļàƃéļ, ĤŢḾĻ àñđ đîšþļàý ţéḿþļàţéš, à çĥîþ ļàƃéļ, à çöļöüŕ, àñ
éǫüîṽàļéñçé ţéẋţ, àñđ éđîţîñĝ çöñšţŕàîñţš. Àñ üñķñöŵñ ţýþé îš ñöţ àñ éŕŕöŕ:
ţĥé ŕéĝîšţŕý šýñţĥéšîžéš àñ éñţŕý ƒŕöḿ à đéƒàüļţ ƒàļļƃàçķ, îñţéŕþöļàţîñĝ ţĥé
ţýþé ñàḿé îñţö ţĥé ţéḿþļàţéš, đéŕîṽîñĝ à šĥöŕţ çĥîþ ļàƃéļ, àñđ ĝîṽîñĝ îţ à
ñéüţŕàļ àççéñţ àñđ þéŕḿîššîṽé çöñšţŕàîñţš. Ţĥé éđîţöŕ üšéš ţĥöšé ƒîéļđš ƒöŕ
šţýļéđ çĥîþš, ţööļţîþš, àñđ ţĥé đéļéţàƃļé, çļöñéàƃļé, àñđ ŕéöŕđéŕàƃļé
àƒƒöŕđàñçéš.
Ţĥîš ḿîŕŕöŕš ţĥé ḿöđéļ çöñţŕàçţ éẋàçţļý: ţĥé ṽöçàƃüļàŕý îš đéšçŕîþţîṽé. Îţ đŕîṽéš đîšþļàý àñđ éđîţîñĝ àƒƒöŕđàñçéš àñđ îš ñéṽéŕ çöñšüļţéđ ƃý ŵŕîţéŕš, ŵĥîçĥ ŕéþļàý éàçĥ ŕüñ'š öŵñ đàţà ṽéŕƃàţîḿ (Ƒ-02).
Öṽéŕļàýš ƃéçöḿé ḿàŕķš, ķéýéđ öñ ţýþé àñđ šþàñ
Šţàñđ-öƒƒ öṽéŕļàýš ƃéçöḿé çöļöüŕ-çöđéđ, ţööļţîþþéđ ḿàŕķš. Ţĥŕéé ƒüñçţîöñš đö ţĥé ŵöŕķ, àñđ éàçĥ éḿƃöđîéš à đéçîšîöñ.
Ţĥé àççéñţ ķéý îš ţĥé 郃éçţîṽé çàţéĝöŕý. À ṽöîçé-ṽöçàƃüļàŕý ṽîöļàţîöñ ŕîđéš
öñ ţĥé ĝéñéŕîç qa öṽéŕļàý ţýþé, šö àñ àççéñţ çĥöšéñ öñ ţýþé àļöñé ŵöüļđ þàîñţ
îţ àš àñ öŕđîñàŕý ƒîñđîñĝ. Ţĥé ŕéšöļṽéŕ ţĥéŕéƒöŕé ŕéàđš ţĥé šþàñ'š öŵñ
çàţéĝöŕý: à qa šþàñ çàţéĝöŕîšéđ àš ṽöîçé ṽöçàƃüļàŕý ŕéšöļṽéš ţö ţĥé ṽöîçé
àççéñţ, àñđ éṽéŕýţĥîñĝ éļšé ŕéšöļṽéš öñ îţš ţýþé. Ţĥé šţýļé ţàƃļé ĝîṽéš
ţéŕḿîñöļöĝý à ṽîöļéţ "Ṽöçàƃüļàŕý" àççéñţ, ṽöîçé à þîñķ "Ṽöîçé", öţĥéŕ ƒîñđîñĝš àñ
àḿƃéŕ, éñţîţîéš à šķý ƃļüé, šéĝḿéñţàţîöñ àñđ àļîĝñḿéñţ ţĥéîŕ öŵñ ḿüţéđ àççéñţš,
àñđ ŕéđàçţîöñ àñ éñţŕý ŵĥöšé ļàƃéļ àñđ ţööļţîþ àŕé üšéđ ŵĥîļé ţĥé ŕéñđéŕéŕ þàîñţš
à çéñšöŕ ƃàŕ îñšţéàđ öƒ à ƃàçķĝŕöüñđ. Üñķñöŵñ ķéýš ƒàļļ ƃàçķ ţö à ñéüţŕàļ
"Àññöţàţîöñ" àççéñţ ŵîţĥ à ţîţļé-çàšéđ ļàƃéļ, šö à ñéŵ öṽéŕļàý ţýþé ŕéñđéŕš
šéñšîƃļý ƃéƒöŕé àñýöñé ţéàçĥéš ţĥé ţàƃļé àƃöüţ îţ.
Šþàñš àŕé ļöçàţéđ ƃý ţĥéîŕ ţéẋţ. Öṽéŕļàýš àñçĥöŕ ţö ŕüñ-îñđéẋ ŕàñĝéš, ƃüţ ţĥé ŕéñđéŕéŕ ŵöŕķš öṽéŕ ţĥé çöñçàţéñàţéđ ļîţéŕàļ ţéẋţ, šö ḿàţçĥîñĝ ƃý ţĥé éñĝîñé-éẋţŕàçţéđ šþàñ ţéẋţ îš ŕöƃüšţ àçŕöšš ţĥàţ þŕöĵéçţîöñ. À þéŕ-öṽéŕļàý šéàŕçĥ çüŕšöŕ àđṽàñçéš þàšţ éàçĥ ḿàţçĥ, šö ŕéþéàţéđ îđéñţîçàļ šþàñ ţéẋţš ŵîţĥîñ öñé öṽéŕļàý ḿàþ ţö šüççéššîṽé öççüŕŕéñçéš ŕàţĥéŕ ţĥàñ àļļ ţö ţĥé ƒîŕšţ. Šþàñš ŵĥöšé ţéẋţ çàññöţ ƃé ļöçàţéđ (à šþàñ çöṽéŕîñĝ öñļý îñļîñé ḿàŕķüþ, ƒöŕ îñšţàñçé) àŕé đŕöþþéđ ŕàţĥéŕ ţĥàñ ḿîšþöšîţîöñéđ. Öñé öṽéŕļàý ţýþé îš éẋçļüđéđ öüţŕîĝĥţ: à çöñţéñţ-ḿéḿöŕý ļéṽéŕàĝé ḿàŕķéŕ îš à ļîñé-ļéṽéļ ƒàçţ, ñöţ à šþàñ ĥîĝĥļîĝĥţ, àñđ ţĥé ŕéñđéŕéŕ šţýļéš ţĥé ŵĥöļé ļîñé ƒŕöḿ îţ.
Öṽéŕļàþš ƒļàţţéñ îññéŕḿöšţ-ŵîñš. Ƒöŕ éàçĥ çĥàŕàçţéŕ þöšîţîöñ ţĥé ñàŕŕöŵéšţ çöṽéŕîñĝ šþàñ öŵñš îţ, àñđ çöñţîĝüöüš þöšîţîöñš üñđéŕ ţĥé šàḿé öŵñéŕ éḿîţ öñé ñöñ-öṽéŕļàþþîñĝ šéĝḿéñţ, šö à ţéŕḿ îñšîđé àñ éñţîţý šţîļļ šĥöŵš àš ţĥé ţéŕḿ.
BlockInspector îš ţĥé šţŕüçţüŕàļ çöüñţéŕþàŕţ ţö ţĥé šţýļéđ þŕéṽîéŵ: à
çöļļàþšîƃļé þéŕ-ƃļöçķ ṽîéŵ ŕéñđéŕîñĝ ţĥé šöüŕçé ŕüñ šéǫüéñçé, éàçĥ ṽàŕîàñţ'š ŕöŵ
(ṽàŕîàñţ ķéý, šţàţüš, šçöŕé, öŕîĝîñ), éàçĥ öṽéŕļàý'š ŕöŵš (ţýþé, šîđé, ļàýéŕ, àñđ
þéŕ-šþàñ îđ, ŕüñ ŕàñĝé, ţéẋţ, àñđ þŕöþéŕţîéš), àññöţàţîöñ ŕöŵš, ţĥé þŕöþéŕţîéš
ĝŕîđ, àñđ ƒļàĝ ƃàđĝéš.
Ţĥé ķîţ ŕéñđéŕš àñđ îñšþéçţš; îţ đöéš ñöţ çöḿḿîţ
@neokapi/ui-primitives îš ţĥé šîñĝļé šöüŕçé öƒ ţŕüţĥ ƒöŕ ţĥé ķîţ, éẋþöŕţéđ
üñđéŕ ./preview: ţĥé ṽîéŵéŕ àñđ ƒöŕḿàţ þŕéṽîéŵ, ţĥé ƒîļé ƃŕöŵšéŕ, ţĥé ƃļöçķ
îñšþéçţöŕ, ţĥé šţŕüçţüŕé, ļàýöüţ, àñđ çöñţéñţ-ţŕéé ṽîéŵš, ŕüñ šéǫüéñçéš àñđ çöđé
ṽîéŵš, ţĥé ḿüļţîḿöđàļ ṽîéŵéŕš ƒöŕ ţîḿéđ ḿéđîà àñđ ŕàšţéŕ öṽéŕļàýš, àñđ ţĥé
šüþþöŕţîñĝ üţîļîţîéš (ţĥé ŕéñđéŕ-đöç ñöŕḿàļîžéŕ, ţĥé öṽéŕļàý šţýļé àñđ šþàñ
ŕéšöļṽéŕš, ŕüñ-ŕàñĝé ḿàþþîñĝ, ŕöļé šţýļîñĝ, ĝéöḿéţŕý ƒļàţţéñîñĝ, àñđ ţĥé
ṽöçàƃüļàŕý ŕéĝîšţŕý).
| Çöñšüḿéŕ | Ĥöŵ îţ üšéš ţĥé ķîţ |
|---|---|
| Kapi Đéšķţöþ | ƒîļé îñšþéçţîöñ îñšîđé à þŕöĵéçţ ţàƃ (Š-02) |
| Kapi Ļàƃ | ŵŕàþš ţĥé ṽîéŵéŕ ţö îñšþéçţ éñĝîñé öüţþüţ; ţĥé éẋþļöŕéŕš üšé ţĥé ţŕéé àñđ ƃŕöŵšéŕ ṽîéŵš |
| Ţĥé þļàýĝŕöüñđ àñđ đöçš šîţé | ţĥé šàḿé ṽîéŵéŕ öṽéŕ ŴÀŠḾ-þŕöđüçéđ öüţþüţ |
Ţĥé ƃöüñđàŕý îš đéļîƃéŕàţé. Ţĥé ƒŕàḿéŵöŕķ šĥîþš ñö þŕöđüçţîöñ ţŕàñšļàţîöñ-éđîţîñĝ šüŕƒàçé, àñđ àñ àþþļîçàţîöñ ţĥàţ ñééđš öñé ƃüîļđš îţš çöḿḿîţ šüŕƒàçé öñ ţĥé ḿöđéļ'š öŵñ þŕîḿîţîṽé àñđ îţš öŵñ þéŕšîšţéñçé. Ķééþîñĝ ţĥé ķîţ ƒŕéé öƒ àñ éđîţîñĝ àñđ çöḿḿîţ đéþéñđéñçý îš éẋàçţļý ŵĥàţ ļéţš éṽéŕý öñé öƒ ţĥöšé çöñšüḿéŕš šĥàŕé îţ àš đéþéñđéñçý-ļîĝĥţ ÜÎ.
Éđîţ þàţĥ àñđ ŕöüñđ-ţŕîþ
Ţĥé éđîţöŕ-šîđé BlockIndex çàŕŕîéš à ƒļàţţéñéđ, šţŕîñĝ-ṽàļüéđ ṽîéŵ; îţš
UpdateTarget ḿéţĥöđ ḿüţàţéš ţĥàţ îñ-ḿéḿöŕý þŕöĵéçţîöñ àñđ îš à ţéšţ ĥéļþéŕ,
ñöţ à çöḿḿîţ þàţĥ.
Ţĥé çàñöñîçàļ ŵàý ţö çöḿḿîţ à ţàŕĝéţ éđîţ îš öñ ţĥé çöñţéñţ ḿöđéļ îţšéļƒ:
model.Block.SetTargetRuns(locale, runs) šéţš ţĥé ṽàŕîàñţ'š ŕüñš îñ þļàçé, ŵîţĥ
ţĥé þļàîñ-ţéẋţ šîƃļîñĝš SetTargetText àñđ SetText ƒöŕ ţĥé šţŕîñĝ þàţĥ
(É-03). Ĥöŵ à ĥöšţ ţŕàñšþöŕţš àñ éđîţ ţö ţĥé
ḿöđéļ àñđ þéŕšîšţš ţĥé ŕéšüļţ (ţĥé þŕöĵéçţ ƃļöçķ šţöŕé, îñţéŕçĥàñĝé ƒîļéš, à
đàţàƃàšé) îš ţĥé ĥöšţ'š çöñçéŕñ.
Ţĥé ŕöüñđ-ţŕîþ ŕéþļàýš ţĥé šöüŕçé ţĥŕöüĝĥ îţš ŕéàđéŕ, îñĵéçţš ţĥé çöḿḿîţţéđ ţàŕĝéţš, àñđ ŕéçöñšţŕüçţš ƃýţé-ƒàîţĥƒüļ öüţþüţ ţĥŕöüĝĥ ţĥé šķéļéţöñ. Þéŕšîšţéñçé îš ţĥé ĥöšţ'š çöñçéŕñ.
Ţĥé ŕöüñđ-ţŕîþ îš à ƒŕàḿéŵöŕķ ḿéçĥàñîšḿ îñđéþéñđéñţ öƒ ŵĥö éđîţéđ: ţĥé šöüŕçé îš
ŕéþļàýéđ ţĥŕöüĝĥ îţš ŕéàđéŕ, ţĥé çöḿḿîţţéđ ţàŕĝéţš àŕé îñĵéçţéđ îñţö ţĥé éḿîţţéđ
ƃļöçķ þàŕţš, àñđ ţĥé ŵŕîţéŕ ŕéçöñšţŕüçţš ţĥé đöçüḿéñţ ƃý þàîŕîñĝ ţĥé ŕéàđéŕ'š
šķéļéţöñ éḿîţţéŕ ŵîţĥ ţĥé ŵŕîţéŕ'š šķéļéţöñ çöñšüḿéŕ, îñţéŕļéàṽîñĝ ļîţéŕàļ
šķéļéţöñ ƒŕàĝḿéñţš ŵîţĥ ţĥé ţàŕĝéţ ŕüñš ŕàţĥéŕ ţĥàñ ŕé-šéŕîàļîžîñĝ à þàŕšé ţŕéé
(É-02). Ţĥé éǫüîṽàļéñţ ƃîļîñĝüàļ ŕöüñđ-ţŕîþ
ƒöŕ à ţŕàñšļàţöŕ ĥàñđ-öƒƒ îš ţĥé éẋţŕàçţ àñđ ḿéŕĝé ŵöŕķƒļöŵ
(Ḿ-01); ţĥé éǫüîṽàļéñţ ƒöŕ àñ
àššîšţàñţ-þŕöþöšéđ éđîţ îš kapi apply (Š-03).
Ŵĥàţ þéŕšîšţš, ŵĥàţ îš ŕéçöñšţŕüçţéđ
Ŵîţĥîñ ţĥé çöñţéñţ ḿöđéļ àñđ îţš îñţéŕçĥàñĝé ƒàḿîļý (Ḿ-06):
- Ţàŕĝéţš àŕé ƒîŕšţ-çļàšš ŕéçöŕđš: ŕüñš þļüš šţàţüš, öŕîĝîñ, àñđ šçöŕé.
- Àññöţàţîöñš àŕé ţĥé ƃļöçķ-šçöþéđ ţýþéđ çàŕŕîéŕ; ţĥé ƃļöçķ ƒîļé çàŕŕîéš ƃļöçķš, ţàŕĝéţš, àñđ þŕöþéŕţîéš, àñđ ţĥé ĴŠÖÑ-Ļîñéš šîđéçàŕ çàŕŕîéš àññöţàţîöñ öṽéŕļàýš ŵîţĥ ţĥéîŕ àñçĥöŕ ķîñđš.
- Ţĥé šķéļéţöñ îš ţĥé ƃîñàŕý šķéļéţöñ šţöŕé (É-02).
Öṽéŕļàýš àŕé ŕéçöñšţŕüçţéđ öñ đéḿàñđ ŕàţĥéŕ ţĥàñ šéŕîàļîžéđ àš þöšîţîöñàļ šţŕüçţüŕé: šéĝḿéñţàţîöñ îš ŕéçöḿþüţéđ ƒŕöḿ ţĥé ŕüñš, àñđ ţéŕḿ, éñţîţý, àñđ çĥéçķ öṽéŕļàýš àŕé ŕé-àţţàçĥéđ ƃý ţĥé ţööļš ţĥàţ þŕöđüçé ţĥéḿ ŵîţĥîñ à šéššîöñ. Ƃéçàüšé öṽéŕļàý šþàñš àñçĥöŕ ţö ŕüñ ŕàñĝéš, à šöüŕçé ŕéŵŕîţé šĥîƒţš öŕ đŕöþš ţĥéḿ ţĥŕöüĝĥ ţĥé ƒŕàḿéŵöŕķ'š öṽéŕļàý ŕéḿàþþîñĝ; ţàŕĝéţš àñđ àññöţàţîöñš àŕé üñàƒƒéçţéđ.
Çöñšéǫüéñçéš
- Ţĥé éđîţöŕ ĥàš öñé đöçüḿéñţéđ çöñţŕàçţ šĥàŕéđ ƃý éṽéŕý çöñšüḿéŕ, šö à ñéŵ ŕéñđéŕ ķîñđ, öṽéŕļàý àççéñţ, öŕ îñšþéçţöŕ ŕöŵ îš à çöñţàîñéđ çĥàñĝé àĝàîñšţ à ķñöŵñ šéàḿ.
- Ŕéñđéŕîñĝ îš à þüŕé þŕöĵéçţîöñ öƒ ţĥé çöñţéñţ ḿöđéļ: ţĥé éđîţöŕ çàññöţ đîṽéŕĝé ƒŕöḿ ŵĥàţ ţĥé éñĝîñé ĥöļđš, ƃéçàüšé îţ çöñšüḿéš ţĥé ŕüñ-þŕéšéŕṽîñĝ ţŕéé ŕàţĥéŕ ţĥàñ à šéþàŕàţé ḿöđéļ.
- À þŕöĵéçţîöñ ţĥàţ ƒöŕĝéţš à ŕüñ ķîñđ ƒàîļš ţö çöḿþîļé, àñđ à ĥàñđ-ŵŕîţţéñ ļööþ ƒàîļš ļîñţ, šö çöñţéñţ çàññöţ šîļéñţļý đîšàþþéàŕ ƒŕöḿ à ṽîéŵ.
- Ŕéšöļṽîñĝ ţĥé àççéñţ ƒŕöḿ ţýþé àñđ šþàñ ķééþš öñé öṽéŕļàý ţýþé àƃļé ţö çàŕŕý šéṽéŕàļ ķîñđš öƒ ƒîñđîñĝ ŵîţĥöüţ ţĥé ŕéñđéŕéŕ ƒļàţţéñîñĝ ţĥéḿ îñţö öñé çöļöüŕ.
- Ļöçàţîñĝ šþàñš ƃý ţéẋţ ŕàţĥéŕ ţĥàñ ƃý ŕàñĝé ḿàķéš ţĥé ḿàŕķš ŕöƃüšţ àçŕöšš ţĥé ŕüñ-ţö-ţéẋţ þŕöĵéçţîöñ, àţ ţĥé þŕîçé öƒ šîļéñţļý đŕöþþîñĝ à šþàñ ŵĥöšé ţéẋţ đöéš ñöţ àþþéàŕ, ŵĥîçĥ îš ţĥé ŕîĝĥţ ţŕàđé ŵĥéñ ţĥé àļţéŕñàţîṽé îš à ḿàŕķ öñ ţĥé ŵŕöñĝ ŵöŕđš.
- Éđîţîñĝ àñđ çöḿḿîţţîñĝ šţàý öüţšîđé ţĥé ķîţ àñđ öüţšîđé ţĥé ƒŕàḿéŵöŕķ, ŵĥîçĥ îš ŵĥàţ ķééþš ţĥé ķîţ đéþéñđéñçý-ļîĝĥţ àñđ šĥàŕéàƃļé.
- Ƒàîţĥƒüļ ŕöüñđ-ţŕîþ îš à þŕöþéŕţý öƒ ŕéàđéŕ, šķéļéţöñ, àñđ ŵŕîţéŕ, ñöţ öƒ àñý éđîţöŕ: šéţţîñĝ à ţàŕĝéţ ŕüñ šéǫüéñçé àñđ ŕéþļàýîñĝ ţĥé šöüŕçé îš ŵĥàţ ŕéçöñšţŕüçţš ţĥé đöçüḿéñţ.
- Öṽéŕļàýš àŕé éþĥéḿéŕàļ îñ ţĥé ļîṽé þŕéṽîéŵ: à đüŕàƃļé îñţéŕþŕéţàţîöñ ḿüšţ ƃé šţöŕéđ àš àñ àññöţàţîöñ, öŕ ŕé-đéŕîṽéđ ƃý ŕé-ŕüññîñĝ ţĥé ţööļ ţĥàţ þŕöđüçéđ îţ.
BlockIndex.UpdateTargetîš à ţéšţ ĥéļþéŕ. Ŕéļýîñĝ öñ îţ àš à çöḿḿîţ þàţĥ ŵöüļđ ƃé à ḿîšţàķé;SetTargetRunsîš ţĥé çàñöñîçàļ öþéŕàţîöñ.
Öþéñ ǫüéšţîöñš
- Öṽéŕļàý þéŕšîšţéñçé. Ţĥé ƒŕàḿéŵöŕķ ĥàš ñö þéŕšîšţéñçé ļàýéŕ ƒöŕ þöšîţîöñàļ öṽéŕļàýš; ţĥé ĴŠÖÑ-Ļîñéš šîđéçàŕ îš đéƒîñéđ ƃüţ ñöţ ýéţ ŕéàđ öŕ ŵŕîţţéñ ƃý ţĥé þŕéṽîéŵ ķîţ. Ŵĥéţĥéŕ ţéŕḿ, éñţîţý, àñđ çĥéçķ öṽéŕļàýš šĥöüļđ þéŕšîšţ ŕàţĥéŕ ţĥàñ àļŵàýš ƃé ŕé-đéŕîṽéđ îš üñšéţţļéđ.
BlockIndexļîƒéçýçļé öñ éđîţ. Ŵĥéţĥéŕ à ƒŕöñţéñđ ĥöļđš îţš öŵñ îñđéẋ àñđ šéñđš đéļţà éđîţš, öŕ ŕé-đéŕîṽéš îţ àƒţéŕ éàçĥ çöḿḿîţ, îš ñöţ þîññéđ đöŵñ.- Đîšþļàý-ĥîñţ àñđ çöñţéñţ-ŕéƒéŕéñçé šçöþé. Ŵĥéţĥéŕ ţĥéšé àŕé þöþüļàţéđ ƃý éṽéŕý ŕéàđéŕ àñđ þéŕšîšţéđ ƃý à ĝîṽéñ ĥöšţ šţöŕé îš ƒöŕḿàţ- àñđ àþþļîçàţîöñ-đéþéñđéñţ.
- Šéĝḿéñţ šþàñ îđš àçŕöšš éđîţš. Ŵĥéţĥéŕ öṽéŕļàý šþàñ îđš šţàý šţàƃļé ŵĥéñ šöüŕçé ţéẋţ çĥàñĝéš, öŕ šĥîƒţ ŵîţĥ ŕéƃàšîñĝ.
Ŕéļàţéđ
- Ƒ-02: Ţĥé çöñţéñţ ḿöđéļ: þàŕţš, ƃļöçķš, ŕüñš, öṽéŕļàýš, àññöţàţîöñš, ţàŕĝéţš, àñđ ţĥé þŕöĵéçţîöñš ţĥé éđîţöŕ ŕéñđéŕš
- É-02: Ţĥé ƒöŕḿàţ šýšţéḿ: ŕéàđéŕš, ŵŕîţéŕš, àñđ ţĥé šķéļéţöñ ţĥàţ ḿàķéš ţĥé ŕöüñđ-ţŕîþ ƃýţé-ƒàîţĥƒüļ
- É-03: Ţĥé ţööļ šýšţéḿ: çàþàƃîļîţý-ţýþéđ îḿḿüţàƃîļîţý, ţĥé ţàŕĝéţ-éđîţ þŕîḿîţîṽéš, àñđ öṽéŕļàý ŕéƃàšîñĝ
- É-08: Đöçüḿéñţ šţŕüçţüŕé ţîéŕš: ţĥé ŕöļéš àñđ ĝéöḿéţŕý ţĥé Šţŕüçţüŕé àñđ Ļàýöüţ ţàƃš ŕéàđ
- Ç-01: Ţĥé þŕöĵéçţ ḿöđéļ: ţĥé ƃļöçķ šţöŕé à ĥöšţ þéŕšîšţš éđîţš ţĥŕöüĝĥ
- Ḿ-01: Ƃîļîñĝüàļ îñţéŕöþ: ţĥé éẋţŕàçţ àñđ ḿéŕĝé ŕöüñđ-ţŕîþ
- Ḿ-03: Ḿüļţîḿöđàļ çöñţéñţ: ţĥé ḿéđîà ļàýéŕ ţĥé ḿüļţîḿöđàļ ṽîéŵéŕš ŕéñđéŕ
- Ḿ-06: Çöñţéñţ þàçķàĝéš: ţĥé ƃļöçķ ƒîļéš àñđ ţĥé àññöţàţîöñ šîđéçàŕ
- Š-02: Kapi Đéšķţöþ: ţĥé àþþļîçàţîöñ ţĥàţ ĥöšţš ţĥé ķîţ