рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдЕрдкрдиреЗ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдЯреВрд▓рдЯрд┐рдкреНрд╕ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рддрдВрддреНрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рдерд╛ред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдореИрдВрдиреЗ рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╢реБрджреНрдз рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд┐рдд рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХреА, рдЬрд┐рд╕реЗ рдХреЛрдгреАрдп рдирд┐рд░реНрджреЗрд╢рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдЗрд╕ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪреВрдВрдХрд┐ рдореИрдВ popper.js рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ tippy.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдорд┐рд▓реА
рдЙрд╕реА рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рдереАред Tippy.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╕рдореВрд╣ рд╣реИред рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдЖрдк рдЯреВрд▓рдЯрд┐рдкреНрд╕ (рдЯреВрд▓рдЯрд┐рдк рддрддреНрд╡), рдФрд░ рдХрдИ рдЕрдиреНрдп рддрддреНрд╡ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рддрддреНрд╡реЛрдВ рдХреЛ рдереАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рд╡реЗ рддреЗрдЬ, рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рд╛рдордЧреНрд░реА рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХрдИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВредрдореИрдВрдиреЗ tippy.js рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рдирд┐рд░реНрджреЗрд╢рди рдмрдирд╛рдХрд░ рд╢реБрд░реБрдЖрдд рдХреА:@Directive({ selector: '[tooltip]' })
export class TooltipDirective {
private instance: Instance;
private _content: string;
get content() {
return this._content;
}
@Input('tooltip') set content(content: string) {
this._content = content;
if (this.instance) this.instance.setContent(content);
}
constructor(private host: ElementRef<Element>, private zone: NgZone) {}
ngAfterViewInit() {
this.zone.runOutsideAngular(() => {
this.instance = tippy(this.host.nativeElement, {
content: this.content,
});
});
}
рдПрдХ рдЯреВрд▓рдЯрд┐рдк рдПрдХ рдлрд╝рдВрдХреНрд╢рди tippy
рдФрд░ рдкрд╛рд╕рд┐рдВрдЧ рддрддреНрд╡реЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ host
рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ content
ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо tippy
рдХреЛрдгреАрдп рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдмрд╛рд╣рд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ tippy
рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдЪрдХреНрд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдЗрди рд╣реИрдВ редрдЕрдм рд╣рдо рдЯреВрд▓рдЯрд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ 700 рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕реВрдЪреА рдореЗрдВ рдХрд░реЗрдВрдЧреЗ:@Component({
selector: 'my-app',
template: `
<ul>
<li *ngFor="let item of data" [tooltip]="item.label">
{{ item.label }}
</li>
</ul>
`
})
export class AppComponent {
data = Array.from({ length: 700 }, (_, i) => ({
id: i,
label: `Value ${i}`,
}));
}
рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдПрдХ рдЯреВрд▓рдЯрд┐рдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 700 рдкреНрд░рддрд┐рдпрд╛рдВ рдмрдирд╛рдИ рдЧрдИрдВ tippy
ред рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП, tippy.js рдЯреВрд▓ рдиреЗ 4 рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдордиреЗ 2800 рд╢реНрд░реЛрддрд╛рдУрдВ (700 * 4) рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛редрдЕрдкрдиреЗ рд▓рд┐рдП рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк getEventListeners
рдХреНрд░реЛрдо рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рджреГрд╢реНрдп getEventListeners(element)
рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХреГрдд рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд┐рдЯрд░реНрди рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИредрд╕рднреА рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢рдпрджрд┐ рдЖрдк рдЗрд╕ рдлреЙрд░реНрдо рдореЗрдВ рдХреЛрдб рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореЗрдореЛрд░реА рдЦрдкрдд рдФрд░ рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд╕рдордп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдкреЗрдЬ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИред рдЖрдЗрдП рд╣рдо рдЗрд╕рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдореБрдЭреЗtippy
рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗрд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдирд╣реАрдВ, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИредрдЬрдм рддрдХ рдЖрдЗрдЯрдо рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рди рджреЗ, рд╣рдо рдЯреВрд▓рдЯрд┐рдк рд╕рдорд░реНрдерди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рджреЗрд░реА рдХреЗрд▓рд┐рдП рдПрдкреАрдЖрдИIntersectionObserver
рдХрд╛рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдПрдкреАрдЖрдИ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВIntersectionObserver
, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ ред рджреЗрдЦреЗ рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рд░реИрдкрд░ рдХреЗрд▓рд┐рдП рдмрдирд╛рдПрдВIntersectionObserver
:const hasSupport = 'IntersectionObserver' in window;
export function inView(
element: Element,
options: IntersectionObserverInit = {
root: null,
threshold: 0.5,
}
) {
return new Observable((subscriber) => {
if (!hasSupport) {
subscriber.next(true);
subscriber.complete();
}
const observer = new IntersectionObserver(([entry]) => {
subscriber.next(entry.isIntersecting);
}, options);
observer.observe(element);
return () => observer.disconnect();
});
}
рд╣рдордиреЗ рдПрдХ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░реЛрдВ рдХреЛ рдЙрд╕ рдкрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рддрддреНрд╡ рдЗрдВрдЯрд░рд╕реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣рд╛рдВ рд╣рдо IntersectionObserver
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ ред рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ IntersectionObserver
, рддреЛ рд╣рдо рдмрд╕ рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ true
рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВред IE рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рджреБрдЦ рдХреЗ рд▓рд┐рдП рджреЛрд╖реА рдард╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЕрдм inView
рд╣рдо рджреЗрдЦреЗ рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЯреВрд▓рдЯрд┐рдк рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:@Directive({ selector: '[tooltip]' })
export class TooltipDirective {
...
ngAfterViewInit() {
inView(this.host.nativeElement).subscribe((inView) => {
if (inView && !this.instance) {
this.zone.runOutsideAngular(() => {
this.instance = tippy(this.host.nativeElement, {
content: this.content,
});
});
} else if (this.instance) {
this.instance.destroy();
this.instance = null;
}
});
}
}
рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБредрдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛рдУрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ ред рдЕрдм рд╣рдо рдХреЗрд╡рд▓ рджреГрд╢реНрдп рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЯреВрд▓рдЯрд┐рдкреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВредрдЖрдЗрдП рдирдП рд╕рдорд╛рдзрд╛рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрддреНрддрд░ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВредрд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ? рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдгреАрдп рд╕рд╛рдордЧреНрд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛редрдШрдЯрдирд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреЛрдгреАрдп рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИредрд╕рд╛рд░рд╛рдВрд╢
рдпрд╣рд╛рдВ рд╣рдордиреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЖрд╡реЗрджрди рдХреЛ рдХреИрд╕реЗ рд╕реНрдердЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдХрдо рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЯреВрд▓рдЯрд┐рдк рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдорд╛рди рддрдХрдиреАрдХ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рдкрд╛рдПрдВрдЧреЗредрдФрд░ рдЖрдк рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЯреВрд▓рдЯрд┐рдк рд╕реЗ рд▓реИрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?рд╣рдо рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдЬрд╛рд░реА рд░рдЦ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдПрдХ рдирдпрд╛ рдЖрдИрдлреЛрди рдЬреАрдд рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рд╕рдордп рд╣реИ, рдФрд░ рд╕рд╛рдордпрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдкрд░ рд╕рдмрд╕реЗ рд╕рдЯреАрдХ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
