Panzoom: рдкрд┐рдВрдЪ рдЬрд╝реВрдо рдЫрд╡рд┐ рдХреЛ рд╕реНрдХреНрд░реАрди рдХреЗрдВрджреНрд░ рд╕реЗ рджреВрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рд╕рд┐рддре░ 2020  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: timmywil/panzoom

рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдореЛрдмрд╛рдЗрд▓ (рдХрд┐рд╕реА рднреА рдЙрдкрдХрд░рдг) рдкрд░ рдореЗрд░реЗ рдкреИрдирдЬрд╝реВрдо рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЬрдм рдЬрд╝реВрдо рдЗрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЬрд╝реВрдо рдЗрди рдХрд░рддреЗ рд╕рдордп рдЫрд╡рд┐ рдХреЛ рдХреЛрдиреЗ рдореЗрдВ рджрд╛рдИрдВ рдУрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрд╝реВрдо рдЖрдЙрдЯ рдХрд░рддреЗ рд╕рдордп рдКрдкрд░ рдмрд╛рдИрдВ рдУрд░, рдЬрд╝реВрдо рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдпред рдХрднреА-рдХрднреА, рдРрдк рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдЫрд╡рд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╝реВрдо рдЖрдЙрдЯ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИред

рд╕реНрдХреНрд░реЙрд▓ рд╡реНрд╣реАрд▓ рдХреЗ рд╕рд╛рде рдЬрд╝реВрдо рдЗрди рдФрд░ рдЖрдЙрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рдЪреБрдЯрдХреА рдЬрд╝реВрдо рд╣реИ рдЬреЛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг

  • рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (рдЖрдЬ рд╕реНрдерд╛рдкрд┐рдд)
  • рд╡рд┐рд╡рд╛рд▓реНрдбреА рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдХреАрд╡реА рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдХреНрд░реЛрдо, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рд╕рднреА рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгред

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рдЬрд╝реВрдо рдХреА рдЧрдИ рдЫрд╡рд┐ рд╡рд╣реАрдВ рдХреЗрдВрджреНрд░рд┐рдд рд░рд╣рдиреА рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╝реВрдо рдЗрди/рдЖрдЙрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

рдЬрд╝реВрдо рдХреА рдЧрдИ рдЫрд╡рд┐ рдЪрд▓рддреА рд╣реИ, рдФрд░ рдЬрд╝реВрдо рдЖрдЙрдЯ рдХрд░рддреЗ рд╕рдордп рд╕реНрдХреНрд░реАрди рдкрд░ рдЫрд╡рд┐ рдХреЗ рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдХреЗрдВрджреНрд░ рдореЗрдВ рдЬрд╝реВрдо рдЖрдЙрдЯ рд╣реЛрддрд╛ рд╣реИ, рдКрдкрд░ рдмрд╛рдИрдВ рдУрд░ рдХреЗрдВрджреНрд░ рд╣реЛрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

panzoom.ts:426 . рдкрд░ рдореВрд╡ рдлрдВрдХреНрд╢рди рдмрджрд▓реЗрдВ

рдлрд╝рдВрдХреНрд╢рди рдЪрд╛рд▓ (рдШрдЯрдирд╛: рдкреЙрдЗрдВрдЯрд░рдПрд╡реЗрдВрдЯ) {
рдЕрдЧрд░ (
!рдЗрд╕рдкреИрдирд┐рдВрдЧ ||
рдУрд░рд┐рдЧрдПрдХреНрд╕ === рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд ||
рдореВрд▓ === рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд ||
startClientX === рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд ||
startClientY === рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд
) {
рд╡рд╛рдкрд╕реА
}
рдПрдбрдкреЙрдЗрдВрдЯрд░ (рдкреЙрдЗрдВрдЯрд░реНрд╕, рдЗрд╡реЗрдВрдЯ)
рдХреЙрдиреНрд╕реНрдЯ рдХрд░рдВрдЯ = getMiddle (рдкреЙрдЗрдВрдЯрд░реНрд╕)
рдЕрдЧрд░ (рдкреЙрдЗрдВрдЯрд░реНрд╕ред рд▓рдВрдмрд╛рдИ> 1) {
// рдкрд╣рд▓реЗ 2 рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
// рд╡рд░реНрддрдорд╛рди рдкреИрдорд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
// рдореЛрдмрд╛рдЗрд▓ рдореЗрдВ рдЬреВрдо рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд░реЛрдХреЗрдВ
рдЕрдЧрд░ (рд╕реНрдЯрд╛рд░реНрдЯрдбрд┐рд╕реНрдЯреЗрдВрд╕ === 0) {
рд╕реНрдЯрд╛рд░реНрдЯрдбрд┐рд╕реНрдЯреЗрдВрд╕ = рдЧреЗрдЯрдбрд┐рд╕реНрдЯреЗрдВрд╕ (рдкреЙрдЗрдВрдЯрд░реНрд╕);
}
const diff = getDistance (рдкреЙрдЗрдВрдЯрд░реНрд╕) - startDistance
const toScale = ConstrainsScale((diff * options.step) / 80 + startScale).scale
ZoomToPoint(toScale, current)
} рдЕрдиреНрдп {
// рдореЛрдмрд╛рдЗрд▓ рдЬреВрдо рдлреЛрдХрд▓ рдкреНрд╡рд╛рдЗрдВрдЯ рдПрд░рд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╢рд░реНрдд рдЬреЛрдбрд╝реА рдЧрдИ
рдХрдбрд╝рд╛рд╣реА(
рдУрд░рд┐рдЧрдПрдХреНрд╕ + (рдХрд░рдВрдЯ.рдХреНрд▓рд╛рдЗрдВрдЯрдПрдХреНрд╕ - рд╕реНрдЯрд╛рд░реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯрдПрдХреНрд╕) / рд╕реНрдХреЗрд▓,
рдореВрд▓ + (current.clientY - startClientY) / рд╕реНрдХреЗрд▓,
{
рдЪреЗрддрди: рдЕрд╕рддреНрдп
}
);
}
}

рд╕рднреА 19 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдбреЗрдореЛ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдЖрдкрдиреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд┐рдВрдЪ рдЬрд╝реВрдорд┐рдВрдЧ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдореЛрдмрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдорд╛рдЙрд╕ рдФрд░ рдЯрдЪ рд╕реНрдХреНрд░реАрди рджреЛрдиреЛрдВ рд╣реЛрддреЗ рд╣реИрдВ)ред рдпрд╣ рдЬрд╛рдирдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдореИрдВ рдЙрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реБрдП рдмрд┐рдирд╛ рдореИрдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдпрджрд┐ рдЖрдк рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдирдЬрд╝реВрдо рдореЗрдВ рдПрдХ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рдбреЗрдореЛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ), рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдФрд░ рдореИрдВ рдПрдХ рдкреИрдЪ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред

рд╣рд╛рдп рдорд┐рд╕реНрдЯрд░ рд╡рд┐рд▓рд┐рд╕рди;

рдЖрдкрдХреЗ рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдХреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рдореЛрдмрд╛рдЗрд▓ рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдиреЗ рдХрд╣рд╛ред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Redmi Note 8T рдФрд░ рдПрдХ Galaxy 8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╢рд╛рдпрдж рдЖрдк рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдбреЗрдореЛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ?
рдмрд╕ рдПрдХ рдирд╛рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВ (рдХреБрдЫ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдмрдЪреНрдЪреЛрдВ рдХрд╛ рдЦреЗрд▓ рд╣реИ) рдФрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
"Exploraci├│ lliure" рдмрдЯрди рдкрд░; рдЖрдкрдХреЛ Panzoomed . рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдЫрд╡рд┐ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ, рдореВрд╕рд╡реНрд╣реАрд▓ рдЬрд╝реВрдо рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд┐рдВрдЪ рдЬрд╝реВрдо (рдФрд░ .)
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ panzoom.zoomIn() рдФрд░ panzoom.zoomOut() рдмрдЯрди рднреА)
рдЫрд╡рд┐ред

http://bake250.isdeveloping.com/objectiuexplora/solsticidelspirineus/

рдореИрдВ рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрднрд╛рд░реА рд╣реВрдВ, рдФрд░ рдХреГрдкрдпрд╛ рдХрд┐рд╕реА рднреА рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред

рд╕рд╛рджрд░;

рдЬреЙрд░реНрдЬ рд╕рд╛рдВрдЪреЗрдЬрд╝ рдмреНрд▓реИрдВрдХреЛ

рдПрд▓ рд▓реВрдиред, 21 рд╕рд┐рддрдореНрдмрд░ред 2020 рдФрд░ рдкрд┐рдЫрд▓реЗ 19:45, рдЯрд┐рдореНрдореА рд╡рд┐рд▓рд┐рд╕рди (<
рд╕реВрдЪрдирд╛рдПрдВ@github.com>) рд╡рд┐рд╡рд░рдг:

рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдбреЗрдореЛ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА
рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ https://timmywil.com/panzoom/demo рдФрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛
рдкреБрдирд░реБрддреНрдкрд╛рджрдиред рдЖрдкрдиреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд┐рдВрдЪ рдЬрд╝реВрдорд┐рдВрдЧ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ
рдореЛрдмрд╛рдЗрд▓ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдорд╛рдЙрд╕ рдФрд░ рдЯрдЪ рд╕реНрдХреНрд░реАрди рджреЛрдиреЛрдВ рд╣реЛрддреЗ рд╣реИрдВ)ред рдпреЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╣ рдЬрд╛рдирдиреЗ рдореЗрдВ рдорджрджрдЧрд╛рд░ рд╣реЛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдореИрдВ рд╕рдВрднрд╡рддрдГ рд╣реЛ
рдЙрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдеред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реБрдП рдмрд┐рдирд╛ рдореИрдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЕрдЧрд░
рдЖрдк рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ Panzoom рдореЗрдВ рдПрдХ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рд╡рд╣ a
рдбреЗрдореЛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡рд┐рднрд┐рдиреНрди рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ), рдХреГрдкрдпрд╛
рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдФрд░ рдореИрдВ рдПрдХ рдкреИрдЪ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рд╕реВрддреНрд░ рдХреЛ рд▓рд┐рдЦрд╛ рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/timmywil/panzoom/issues/512#issuecomment-696267620 ,
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AOF4EAOK6YQVAHINOAQ3JZTSG6GMRANCNFSM4RUT4P7A
.

рдореБрдЭреЗ рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрдВрджреНрд░ рдмрд┐рдВрджреБ рдХреА рдареАрдХ рд╕реЗ рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдпрд╣ рд╕рдмрд╕реЗ рдиреАрдЪреЗ рд╣реИред

@jsblanco рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдБред Panzoom transform-origin: 50% 50% рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ, рдЬреЛ рдПрдиреАрдореЗрд╢рди рдХреЛ рдЫрд╡рд┐ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдмрдЬрд╛рдп рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХреЗ рдХреЗрдВрджреНрд░ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдо рд╣реЛрдЧрд╛ред рдпрд╣ рдЫрд╡рд┐ рдХреЛ рдмрд╣реБрдд рдиреАрдЪреЗ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП contain: outside рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдЫрд╡рд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ zoomToPoint рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗ рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп focal рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде zoom рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рдмрд┐рдВрджреБ рдвреВрдВрдврдХрд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЫрд╡рд┐ рдХрд╛ рдХреЗрдВрджреНрд░ рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ?

contain: outside рд╕реЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред

@rmatec рдХреНрдпрд╛ рдЖрдк contain: outside рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдореИрдВ рд╢рд╛рдорд┐рд▓ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрдВрджреНрд░ рдмрд┐рдВрджреБ рдиреАрдЪреЗ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд╣реИред рдкрд┐рдВрдЪрд┐рдВрдЧ рдЗрди рдпрд╛ рдЖрдЙрдЯ рдЙрд╕ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@rmatec рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЦреЗрд▓ рдореЗрдВ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдбреЗрдореЛ рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕реЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдореИрдВ Panzoom рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

const panzoomConfig = { minScale: 1, maxScale: 2, step: 0.5, duration: 200 };

рдпрд╣ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдЖрдкрдХрд╛ рдорд╛рдорд▓рд╛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк https://jsbin.com рдпрд╛ https://codepen.io рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдЯрд┐рдХрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣рд╛рдВ рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ https://jsbin.com/dibofogini/1/edit?html ,js,output рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд╛рдо рдЪрд▓ рдЬрд╛рдпреЗрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рджред

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдлреЛрдХрд▓ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЫрд╡рд┐ рдХреЗ рдкрд╛рд╕ рдШреВрдорддреА рд╣реИ
рдиреАрдЪреЗ рджрд╛рдИрдВ рдУрд░, рдФрд░ рдЖрдЧреЗ рдХреЛрдИ рдЬрд╝реВрдорд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА, рди рддреЛ рдЕрдВрджрд░ рдФрд░ рди рд╣реА рдмрд╛рд╣рд░ред
рд╢рд╛рдпрдж рдореИрдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ? рдХреНрдпрд╛ рдореБрдЭреЗ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП panzoom.zoomIn() рдФрд░ .zoomOut() рдХреЗрдВрджреНрд░ рдмрд┐рдВрджреБ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдмрд╕
рдЗрд╕реЗ рдкреИрдирдЬрд╝реВрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдШреЛрд╖рдгрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП?

рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдлреЛрдХрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ
рдмрд┐рдВрджреБред рдореИрдВрдиреЗ рдХрдЪреНрдЪреЗ рдирдВрдмрд░ рдбрд╛рд▓рдиреЗ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреАред

clientX: window.innerWidth /2,
clientY: window.innerHeight/2

clientX: document.documentElement.clientWidth/2,
clientY: document.documentElement.clientHeight/2

рд╣рдЯрд╛рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдмрд╛рд╣рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдХрд╛рд▓реА рдЫрд╡рд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред

рдЗрд▓рд╛рд╣рд╛рдмрд╛рдж, 22 рд╕рд┐рддрдореНрдмрд░ред 2020 рдФрд░ рдкрд┐рдЫрд▓реЗ 15:59, рдЯрд┐рдореНрдореА рд╡рд┐рд▓рд┐рд╕рди (<
рд╕реВрдЪрдирд╛рдПрдВ@github.com>) рд╡рд┐рд╡рд░рдг:

@jsblanco https://github.com/jsblanco рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБред Panzoom рдкрд░рд┐рд╡рд░реНрддрди-рдореВрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ:
50% 50%, рдЬреЛ рдПрдиреАрдореЗрд╢рди рдХреЛ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХреЗ рдХреЗрдВрджреНрд░ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдЫрд╡рд┐ рдХреЗ рдХреЗрдВрджреНрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдо рд╣реЛрдЧрд╛ред рдпрд╣
рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЫрд╡рд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ: рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рд╕реЗрдЯрд┐рдВрдЧ
рдмрд╣реБрдд рдиреАрдЪреЗ рдЬрд╛рдиреЗ рд╕реЗ рдЫрд╡рд┐ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
ZoomToPoint рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдлреЛрдХрд▓ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЬрд╝реВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдвреВрдБрдврдирд╛
рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рд╡рд╣ рдмрд┐рдВрджреБ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЫрд╡рд┐ рдХрд╛ рдХреЗрдВрджреНрд░ рд╣реИред рдХрд░рддрд╛ рд╣реИ
рдЙрд╕рдХрд╛ рдХреБрдЫ рдорддрд▓рдм рд╣реИ?

рдореИрдВ рд╢рд╛рдпрдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрдм рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ: рдмрд╛рд╣рд░
рд╕реЗрдЯ рд╣реИред

@rmatec https://github.com/rmatec рдХреНрдпрд╛ рдЖрдк рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рдмрд╛рд╣рд░?

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/timmywil/panzoom/issues/512#issuecomment-696740708 ,
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AOF4EANBQXE5TDJOZNTBN6LSHCUVXANCNFSM4RUT4P7A
.

@jsblanco рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЫрд╡рд┐ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЛ рдвреВрдВрдврд╛ рдЬрд╛рдП рдФрд░ рдкреИрдирдЬрд╝реВрдо рдкреИрд░реЗрдВрдЯ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рдЙрд╕рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдПред рдлрд┐рд░ рдЖрдк рдЗрд╕реЗ рдлреЛрдХрд▓ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдЬрд╝реВрдо рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рджреЗрдЦрдиреЗ рджреЛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЗрд╕рд╕реЗ zoomIn / zoomOut рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдпрд╣ рдкрд┐рдВрдЪ рдЬреВрдорд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред рдпрдХреАрдирди, рдпрд╣ рд╕рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЬрд╝реВрдо рдХрд░рдиреЗ рд╕реЗ contain: outside рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдЙрдЫрд╛рд▓ рдЖрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬрд╝реВрдо рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡рд╣рд╛рдВ рдлрд┐рдХреНрд╕ рд╣реИ, рдЕрдЧрд░ рдЫрд╡рд┐ рдХреЛ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рдареАрдХ рд╕реЗ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдЖрдкрдХрд╛ рдорд╛рдорд▓рд╛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк https://jsbin.com рдпрд╛ https://codepen.io рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдЯрд┐рдХрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣рд╛рдВ рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ https://jsbin.com/dibofogini/1/edit?html ,js,output рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП https://github.com/timmywil/panzoom/issues/513 рдмрдирд╛рдпрд╛ рд╣реИред JSBin рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдореИрдВ "рдПрдирд┐рдореЗрдЯ: рдЯреНрд░реВ" рдХреЛ рдЪрд╛рд▓реВ рдЫреЛрдбрд╝ рджреВрдВ рддреЛ рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред
рдпрд╣ рд╕рдорд╕реНрдпрд╛ "рдЪреЗрддрди: рдЕрд╕рддреНрдп" рдкрд░ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддреА - рдореИрдВрдиреЗ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ @timmywil рдХреЛ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рд╣реИ:

https://jsbin.com/pemoveyeri/1/edit?

(рдореИрдВрдиреЗ рд╡реНрд╣реАрд▓ рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЛ рд╕реАрдзреЗ рдЬрд╝реВрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ - рдпрджрд┐ рдЖрдк рдкрд░реНрдпрд╛рдкреНрдд рддреЗрдЬрд╝реА рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛрдЧреАред)

рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ #515 рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИрдВред

рдирдорд╕реНрддреЗ;

рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рдпреБрдХреНрдд = "рдмрд╛рд╣рд░" рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИ; рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрднреА рднреА рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрддрдиреА рддреАрд╡реНрд░рддрд╛ рд╕реЗ рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреИрдирдЬрд╝реВрдо рдбрд┐рд╡ рдФрд░ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рд╕рдбрд╝рдХ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддрд╛ рд╣реИ; рдХреНрдпрд╛ рд╡рд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рд╢реБрдХреНрд░рд┐рдпрд╛

@jsblanco рдлрд┐рдХреНрд╕ рд╡рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирдорд╕реНрддреЗ, рдореИрдВ рдХреЗрдВрджреНрд░ рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрд╣реАрд▓ рдЬрд╝реВрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдФрд░ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдореЗрд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдФрд░ рд╕рдорд╛рдзрд╛рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЯреНрд░реИрдХрдкреИрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдХрдмреБрдХ рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдлрд╝реЛрдХрд▓ рдкреЙрдЗрдВрдЯ рдЬрд╝реВрдорд┐рдВрдЧ рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП, рд╕рдлрд╛рд░реА, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЬрд╝реВрдо рдХрд░рддреЗ рд╕рдордп рдХреЗрдВрджреНрд░ рдКрдкрд░реА рдмрд╛рдИрдВ рдУрд░ рддреИрд░рддрд╛ рд╣реИред рдХреНрд░реЛрдо рдореЗрдВ рднреА рдореБрдЭреЗ рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЬрдм рд╡реЗрдм рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдЦреБрд▓рд╛ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдореЗрд░рд╛ рд╕рдВрджреЗрд╣ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдЗрд╡реЗрдВрдЯ рдмрд╣реБрдд рдмрд╛рд░ рдЯреНрд░рд┐рдЧрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдкреИрдирдЬрд╝реВрдо рдХреА рдПрд╕рд┐рдВрдХ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг рдЪреАрдЬреЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИрдВред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЬрд╝реВрдорд┐рдВрдЧ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ "рдХрд╛рдо" рд▓рдЧрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://jsbin.com/joliduwulo/1/edit?html ,js,outputред

рдЪреЗрддрд╛рд╡рдиреА рдпрд╣ рд╣реИ рдХрд┐ рдЬрд╝реВрдорд┐рдВрдЧ рдХрдо рдЪрд┐рдХрдиреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореИрдВ рдЗрд╕реЗ рд╣рд░ 20ms рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдПрдХ рдЬрд╝реВрдо рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдмрдбрд╝реЗ SVG рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рдерд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ, рддреЛ рдореБрдЭреЗ рдЙрд╕ рд╕реЗрдЯ рдХреЛ рд▓рдЧрднрдЧ 50ms рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рддрд╛рдХрд┐ рдлреЛрдХрд▓ рдкреЙрдЗрдВрдЯ рди рдЦреЛрдПред

@timmywil рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рд╡реИрд╕реЗ рднреА рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реВрдВред рдпрд╣ рдПрдХ рд╣реИрдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рдзрд╛рди рддрд▓рд╛рд╢рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рддреЛ рдореБрдЭреЗ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХреЗ рдмрдЬрд╛рдп рдкреИрдирдЬрд╝реВрдо рддрддреНрд╡ рдкрд░ рдХреЗрдиреНрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкрд░ +1

panzoom.ts:426 . рдкрд░ рдореВрд╡ рдлрдВрдХреНрд╢рди рдмрджрд▓реЗрдВ

рдлрд╝рдВрдХреНрд╢рди рдЪрд╛рд▓ (рдШрдЯрдирд╛: рдкреЙрдЗрдВрдЯрд░рдПрд╡реЗрдВрдЯ) {
рдЕрдЧрд░ (
!рдЗрд╕рдкреИрдирд┐рдВрдЧ ||
рдУрд░рд┐рдЧрдПрдХреНрд╕ === рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд ||
рдореВрд▓ === рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд ||
startClientX === рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд ||
startClientY === рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд
) {
рд╡рд╛рдкрд╕реА
}
рдПрдбрдкреЙрдЗрдВрдЯрд░ (рдкреЙрдЗрдВрдЯрд░реНрд╕, рдЗрд╡реЗрдВрдЯ)
рдХреЙрдиреНрд╕реНрдЯ рдХрд░рдВрдЯ = getMiddle (рдкреЙрдЗрдВрдЯрд░реНрд╕)
рдЕрдЧрд░ (рдкреЙрдЗрдВрдЯрд░реНрд╕ред рд▓рдВрдмрд╛рдИ> 1) {
// рдкрд╣рд▓реЗ 2 рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
// рд╡рд░реНрддрдорд╛рди рдкреИрдорд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
// рдореЛрдмрд╛рдЗрд▓ рдореЗрдВ рдЬреВрдо рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд░реЛрдХреЗрдВ
рдЕрдЧрд░ (рд╕реНрдЯрд╛рд░реНрдЯрдбрд┐рд╕реНрдЯреЗрдВрд╕ === 0) {
рд╕реНрдЯрд╛рд░реНрдЯрдбрд┐рд╕реНрдЯреЗрдВрд╕ = рдЧреЗрдЯрдбрд┐рд╕реНрдЯреЗрдВрд╕ (рдкреЙрдЗрдВрдЯрд░реНрд╕);
}
const diff = getDistance (рдкреЙрдЗрдВрдЯрд░реНрд╕) - startDistance
const toScale = ConstrainsScale((diff * options.step) / 80 + startScale).scale
ZoomToPoint(toScale, current)
} рдЕрдиреНрдп {
// рдореЛрдмрд╛рдЗрд▓ рдЬреВрдо рдлреЛрдХрд▓ рдкреНрд╡рд╛рдЗрдВрдЯ рдПрд░рд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╢рд░реНрдд рдЬреЛрдбрд╝реА рдЧрдИ
рдХрдбрд╝рд╛рд╣реА(
рдУрд░рд┐рдЧрдПрдХреНрд╕ + (рдХрд░рдВрдЯ.рдХреНрд▓рд╛рдЗрдВрдЯрдПрдХреНрд╕ - рд╕реНрдЯрд╛рд░реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯрдПрдХреНрд╕) / рд╕реНрдХреЗрд▓,
рдореВрд▓ + (current.clientY - startClientY) / рд╕реНрдХреЗрд▓,
{
рдЪреЗрддрди: рдЕрд╕рддреНрдп
}
);
}
}

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

kylegoines picture kylegoines  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nsshunt picture nsshunt  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

YuriGor picture YuriGor  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nich008 picture nich008  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adred picture adred  ┬╖  21рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ