diff --git a/main.css b/main.css index ee63583..551d9e8 100644 --- a/main.css +++ b/main.css @@ -1,8 +1,16 @@ /* styles.css */ +.modal { + max-width: 90vw; + max-height: 90vh; + display: flex; + flex-direction: column; + min-width: 400px; + transition: width 0.3s ease, height 0.3s ease; +} .image-share-modal { - max-width: none; - max-height: none; - transition: width 0.3s ease; + max-width: 2000px; + max-height: 2000px; + transition: width 0.3s ease, height 0.3s ease; } .image-share-modal .resizable-container { position: relative; @@ -51,7 +59,7 @@ display: flex; justify-content: center; align-items: flex-start; - padding: 2px; + padding: 8px; background: var(--background-secondary); border-radius: 8px; min-height: 200px; @@ -59,6 +67,9 @@ width: 100%; overflow: auto; max-height: 70vh; + overflow-x: auto; + overflow-y: auto; + -webkit-overflow-scrolling: touch; } .image-share-modal h2 { margin: 0; @@ -69,9 +80,9 @@ text-align: center; } .image-share-modal .download-button { - position: fixed; - right: 30%; - bottom: 40%; + position: absolute; + right: 20px; + top: 20px; background: var(--interactive-accent); border: none; border-radius: 50%; @@ -104,6 +115,9 @@ image-rendering: crisp-edges; transform: translateZ(0); backface-visibility: hidden; + min-width: auto; + min-height: auto; + object-fit: contain; } .image-share-modal .template-selector { display: flex; @@ -220,4 +234,4 @@ width: 50px; text-align: center; } -/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3R5bGVzLmNzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLypcclxuXHJcblRoaXMgQ1NTIGZpbGUgd2lsbCBiZSBpbmNsdWRlZCB3aXRoIHlvdXIgcGx1Z2luLCBhbmRcclxuYXZhaWxhYmxlIGluIHRoZSBhcHAgd2hlbiB5b3VyIHBsdWdpbiBpcyBlbmFibGVkLlxyXG5cclxuSWYgeW91ciBwbHVnaW4gZG9lcyBub3QgbmVlZCBDU1MsIGRlbGV0ZSB0aGlzIGZpbGUuXHJcblxyXG4qL1xyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIHtcclxuICAgIG1heC13aWR0aDogbm9uZTtcclxuICAgIG1heC1oZWlnaHQ6IG5vbmU7XHJcbiAgICAvKiBcdTc5RkJcdTk2NjRcdTU2RkFcdTVCOUFcdTVCQkRcdTVFQTZcdUZGMENcdTRFRTVcdTRGQkZcdTkwMUFcdThGQzdKYXZhU2NyaXB0XHU1MkE4XHU2MDAxXHU4QkJFXHU3RjZFICovXHJcbiAgICAvKiB3aWR0aDogMTAwMHB4OyAqL1xyXG4gICAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlO1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLnJlc2l6YWJsZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kLXByaW1hcnkpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcclxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLnJlc2l6ZS1oYW5kbGUge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICB3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcclxuICAgIGN1cnNvcjogc2UtcmVzaXplO1xyXG4gICAgYmFja2dyb3VuZDogdmFyKC0taW50ZXJhY3RpdmUtYWNjZW50KTtcclxuICAgIGNsaXAtcGF0aDogcG9seWdvbigxMDAlIDAsIDEwMCUgMTAwJSwgMCAxMDAlKTtcclxuICAgIG9wYWNpdHk6IDAuNjtcclxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLnJlc2l6ZS1oYW5kbGU6aG92ZXIge1xyXG4gICAgb3BhY2l0eTogMTtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC5oZWFkZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgZ2FwOiAxNnB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC5pbWFnZS1wcmV2aWV3LWNvbnRhaW5lciB7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHBhZGRpbmc6IDVweCA1cHg7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgZ2FwOiAxNnB4O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjtcclxuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XHJcbn1cclxuXHJcbi5pbWFnZS1zaGFyZS1tb2RhbCAuY2FudmFzLWNvbnRhaW5lciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICAgIHBhZGRpbmc6IDJweDtcclxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNjBweDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICBtYXgtaGVpZ2h0OiA3MHZoO1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgaDIge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgY29sb3I6IHZhcigtLXRleHQtbm9ybWFsKTtcclxuICAgIGZvbnQtc2l6ZTogMS4yZW07XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgcGFkZGluZzogNHB4IDA7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5pbWFnZS1zaGFyZS1tb2RhbCAuZG93bmxvYWQtYnV0dG9uIHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHJpZ2h0OiAzMCU7XHJcbiAgICBib3R0b206IDQwJTtcclxuICAgIGJhY2tncm91bmQ6IHZhcigtLWludGVyYWN0aXZlLWFjY2VudCk7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICB3aWR0aDogNDhweDtcclxuICAgIGhlaWdodDogNDhweDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4gICAgcGFkZGluZzogMTJweDtcclxuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XHJcbiAgICB6LWluZGV4OiAxMDA7XHJcbn1cclxuXHJcbi5pbWFnZS1zaGFyZS1tb2RhbCAuZG93bmxvYWQtYnV0dG9uOmhvdmVyIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcclxuICAgIGJveC1zaGFkb3c6IDAgNnB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLmRvd25sb2FkLWJ1dHRvbiBzdmcge1xyXG4gICAgd2lkdGg6IDI0cHg7XHJcbiAgICBoZWlnaHQ6IDI0cHg7XHJcbn1cclxuXHJcbi5pbWFnZS1zaGFyZS1tb2RhbCBjYW52YXMge1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgYm94LXNoYWRvdzogMCAycHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7XHJcbiAgICBpbWFnZS1yZW5kZXJpbmc6IGNyaXNwLWVkZ2VzO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xyXG4gICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLnRlbXBsYXRlLXNlbGVjdG9yIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGdhcDogOHB4O1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLnRlbXBsYXRlLWJ1dHRvbiB7XHJcbiAgICBwYWRkaW5nOiA4cHggMTZweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWludGVyYWN0aXZlLWFjY2VudCk7XHJcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIGNvbG9yOiB2YXIoLS1pbnRlcmFjdGl2ZS1hY2NlbnQpO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbi5pbWFnZS1zaGFyZS1tb2RhbCAudGVtcGxhdGUtYnV0dG9uOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQ6IHZhcigtLWludGVyYWN0aXZlLWFjY2VudCk7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1vbi1hY2NlbnQpO1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLnRlbXBsYXRlLWJ1dHRvbi5hY3RpdmUge1xyXG4gICAgYmFja2dyb3VuZDogdmFyKC0taW50ZXJhY3RpdmUtYWNjZW50KTtcclxuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XHJcbn1cclxuXHJcbi5pbWFnZS1wcmV2aWV3LWNvbnRhaW5lciAubWFya2Rvd24tcHJldmlldy12aWV3IHtcclxuICAgIHBhZGRpbmc6IDI0cHg7XHJcbn1cclxuXHJcbi50ZXh0LXByZXZpZXctbW9kYWwgLnRleHQtcHJldmlldy1jb250YWluZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbi50ZXh0LXByZXZpZXctbW9kYWwgLnByZXZpZXctY29udGFpbmVyIHtcclxuICAgIGZsZXg6IDE7XHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcclxufVxyXG5cclxuLnRleHQtcHJldmlldy1tb2RhbCAuYnV0dG9uLWNvbnRhaW5lciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nOiA4cHggMDtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1iYWNrZ3JvdW5kLW1vZGlmaWVyLWJvcmRlcik7XHJcbn1cclxuXHJcbi50ZXh0LXByZXZpZXctbW9kYWwgLmJ1dHRvbi1jb250YWluZXIgYnV0dG9uIHtcclxuICAgIHBhZGRpbmc6IDhweCAxNnB4O1xyXG59XHJcblxyXG4uZWxlZ2FudC1kb3dubG9hZC1idXR0b24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAxMHB4O1xyXG4gICAgcmlnaHQ6IDEwcHg7XHJcbiAgICB3aWR0aDogNDBweDtcclxuICAgIGhlaWdodDogNDBweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcclxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcclxuICAgIHotaW5kZXg6IDEwO1xyXG59XHJcblxyXG4uZWxlZ2FudC1kb3dubG9hZC1idXR0b246aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcclxuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcclxufVxyXG5cclxuLmVsZWdhbnQtZG93bmxvYWQtYnV0dG9uIHN2ZyB7XHJcbiAgICBjb2xvcjogIzQyODVmNDsgIC8qIFx1NEY3Rlx1NzUyOFx1OEMzN1x1NkI0Q1x1ODRERFx1NjIxNlx1NTE3Nlx1NEVENlx1OTAwMlx1NTQwOFx1NEY2MFx1NUU5NFx1NzUyOFx1NzY4NFx1OTg5Q1x1ODI3MiAqL1xyXG59XHJcblxyXG4uZWxlZ2FudC1kb3dubG9hZC1idXR0b24uY2xpY2tlZCB7XHJcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlOGU4O1xyXG59XHJcblxyXG4vKiBcdTU3MjhcdTY2OTdcdTgyNzJcdTZBMjFcdTVGMEZcdTRFMEJcdTc2ODRcdTY4MzdcdTVGMEZcdThDMDNcdTY1NzQgKi9cclxuLnRoZW1lLWRhcmsgLmVsZWdhbnQtZG93bmxvYWQtYnV0dG9uIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTAsIDUwLCA1MCwgMC45KTtcclxufVxyXG5cclxuLnRoZW1lLWRhcmsgLmVsZWdhbnQtZG93bmxvYWQtYnV0dG9uOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNjAsIDYwLCA2MCwgMC45KTtcclxufVxyXG5cclxuLnRoZW1lLWRhcmsgLmVsZWdhbnQtZG93bmxvYWQtYnV0dG9uIHN2ZyB7XHJcbiAgICBjb2xvcjogIzhhYjRmODsgIC8qIFx1NjY5N1x1ODI3Mlx1NkEyMVx1NUYwRlx1NEUwQlx1NzY4NFx1ODRERFx1ODI3MiAqL1xyXG59XHJcblxyXG4vKiBcdTZERkJcdTUyQTBcdTdGMjlcdTY1M0VcdTYzQTdcdTUyMzZcdTY4MzdcdTVGMEYgKi9cclxuLmltYWdlLXNoYXJlLW1vZGFsIC56b29tLWNvbnRyb2xzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBnYXA6IDEwcHg7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLnpvb20tYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICB3aWR0aDogMzJweDtcclxuICAgIGhlaWdodDogMzJweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWludGVyYWN0aXZlLWFjY2VudCk7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIGNvbG9yOiB2YXIoLS1pbnRlcmFjdGl2ZS1hY2NlbnQpO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC56b29tLWJ1dHRvbjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pbnRlcmFjdGl2ZS1hY2NlbnQpO1xyXG4gICAgY29sb3I6IHZhcigtLXRleHQtb24tYWNjZW50KTtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC56b29tLXRleHQge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW5vcm1hbCk7XHJcbiAgICB3aWR0aDogNTBweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxufVxyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBU0E7QUFDSTtBQUNBO0FBR0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQUE7QUFJSjtBQUNJO0FBQUE7QUFHSjtBQUNJO0FBQUE7QUFHSjtBQUNJO0FBQUE7QUFJSjtBQUNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K */ +/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3R5bGVzLmNzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLypcclxuXHJcblRoaXMgQ1NTIGZpbGUgd2lsbCBiZSBpbmNsdWRlZCB3aXRoIHlvdXIgcGx1Z2luLCBhbmRcclxuYXZhaWxhYmxlIGluIHRoZSBhcHAgd2hlbiB5b3VyIHBsdWdpbiBpcyBlbmFibGVkLlxyXG5cclxuSWYgeW91ciBwbHVnaW4gZG9lcyBub3QgbmVlZCBDU1MsIGRlbGV0ZSB0aGlzIGZpbGUuXHJcblxyXG4qL1xyXG4ubW9kYWwge1xyXG4gICAgLyogXHU3OUZCXHU5NjY0XHU1NkZBXHU1QjlBXHU1QkJEXHU5QUQ4ICovXHJcbiAgICAvKiB3aWR0aDogMTUwMHB4OyAqL1xyXG4gICAgLyogaGVpZ2h0OiAzMDBweDsgKi9cclxuICAgIG1heC13aWR0aDogOTB2dzsgICAgICAvKiBcdTk2NTBcdTUyMzZcdTY3MDBcdTU5MjdcdTVCQkRcdTVFQTZcdTRFM0FcdTg5QzZcdTdBOTdcdTVCQkRcdTVFQTZcdTc2ODQ5MCUgKi9cclxuICAgIG1heC1oZWlnaHQ6IDkwdmg7ICAgICAvKiBcdTk2NTBcdTUyMzZcdTY3MDBcdTU5MjdcdTlBRDhcdTVFQTZcdTRFM0FcdTg5QzZcdTdBOTdcdTlBRDhcdTVFQTZcdTc2ODQ5MCUgKi9cclxuICAgIGRpc3BsYXk6IGZsZXg7ICAgICAgICAvKiBcdTRGN0ZcdTc1MjhmbGV4XHU1RTAzXHU1QzQwXHU0RjdGXHU1MTg1XHU1QkI5XHU1QzQ1XHU0RTJEICovXHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgbWluLXdpZHRoOiA0MDBweDsgICAgIC8qIFx1OEJCRVx1N0Y2RVx1NjcwMFx1NUMwRlx1NUJCRFx1NUVBNiAqL1xyXG4gICAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlLCBoZWlnaHQgMC4zcyBlYXNlOyAgLyogXHU1RTczXHU2RUQxXHU4RkM3XHU2RTIxXHU2NTQ4XHU2NzlDICovXHJcbn1cclxuXHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwge1xyXG4gICAgbWF4LXdpZHRoOiAyMDAwcHg7XHJcbiAgICBtYXgtaGVpZ2h0OiAyMDAwcHg7XHJcbiAgICAvKiBcdTc5RkJcdTk2NjRcdTU2RkFcdTVCOUFcdTVCQkRcdTVFQTZcdUZGMENcdTRFRTVcdTRGQkZcdTkwMUFcdThGQzdKYXZhU2NyaXB0XHU1MkE4XHU2MDAxXHU4QkJFXHU3RjZFICovXHJcbiAgICAvKiB3aWR0aDogMTAwMHB4OyAqL1xyXG4gICAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlLCBoZWlnaHQgMC4zcyBlYXNlO1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLnJlc2l6YWJsZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kLXByaW1hcnkpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcclxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLnJlc2l6ZS1oYW5kbGUge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICB3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcclxuICAgIGN1cnNvcjogc2UtcmVzaXplO1xyXG4gICAgYmFja2dyb3VuZDogdmFyKC0taW50ZXJhY3RpdmUtYWNjZW50KTtcclxuICAgIGNsaXAtcGF0aDogcG9seWdvbigxMDAlIDAsIDEwMCUgMTAwJSwgMCAxMDAlKTtcclxuICAgIG9wYWNpdHk6IDAuNjtcclxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLnJlc2l6ZS1oYW5kbGU6aG92ZXIge1xyXG4gICAgb3BhY2l0eTogMTtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC5oZWFkZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgZ2FwOiAxNnB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC5pbWFnZS1wcmV2aWV3LWNvbnRhaW5lciB7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHBhZGRpbmc6IDVweCA1cHg7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgZ2FwOiAxNnB4O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjtcclxuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XHJcbn1cclxuXHJcbi5pbWFnZS1zaGFyZS1tb2RhbCAuY2FudmFzLWNvbnRhaW5lciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICAgIHBhZGRpbmc6IDhweDtcclxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNjBweDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICBtYXgtaGVpZ2h0OiA3MHZoO1xyXG4gICAgb3ZlcmZsb3cteDogYXV0bztcclxuICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XHJcbn1cclxuXHJcbi5pbWFnZS1zaGFyZS1tb2RhbCBoMiB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1ub3JtYWwpO1xyXG4gICAgZm9udC1zaXplOiAxLjJlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBwYWRkaW5nOiA0cHggMDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC5kb3dubG9hZC1idXR0b24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlOyAgLyogXHU0RjdGXHU3NTI4YWJzb2x1dGVcdTgwMENcdTRFMERcdTY2MkZmaXhlZCAqL1xyXG4gICAgcmlnaHQ6IDIwcHg7ICAgICAgICAgLyogXHU4REREXHU1M0YzXHU4RkI5MjBweCAqL1xyXG4gICAgdG9wOiAyMHB4OyAgICAgICAgICAgLyogXHU4REREXHU0RTBBXHU4RkI5MjBweCAqL1xyXG4gICAgYmFja2dyb3VuZDogdmFyKC0taW50ZXJhY3RpdmUtYWNjZW50KTtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgIHdpZHRoOiA0OHB4O1xyXG4gICAgaGVpZ2h0OiA0OHB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XHJcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbiAgICBwYWRkaW5nOiAxMnB4O1xyXG4gICAgY29sb3I6IHZhcigtLXRleHQtb24tYWNjZW50KTtcclxuICAgIHotaW5kZXg6IDEwMDtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC5kb3dubG9hZC1idXR0b246aG92ZXIge1xyXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xyXG4gICAgYm94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbn1cclxuXHJcbi5pbWFnZS1zaGFyZS1tb2RhbCAuZG93bmxvYWQtYnV0dG9uIHN2ZyB7XHJcbiAgICB3aWR0aDogMjRweDtcclxuICAgIGhlaWdodDogMjRweDtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIGNhbnZhcyB7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICAgIGltYWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdDtcclxuICAgIGltYWdlLXJlbmRlcmluZzogY3Jpc3AtZWRnZXM7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XHJcbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgICBtaW4td2lkdGg6IGF1dG87XHJcbiAgICBtaW4taGVpZ2h0OiBhdXRvO1xyXG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC50ZW1wbGF0ZS1zZWxlY3RvciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBnYXA6IDhweDtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC50ZW1wbGF0ZS1idXR0b24ge1xyXG4gICAgcGFkZGluZzogOHB4IDE2cHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pbnRlcmFjdGl2ZS1hY2NlbnQpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBjb2xvcjogdmFyKC0taW50ZXJhY3RpdmUtYWNjZW50KTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICBmb250LXdlaWdodDogNTAwO1xyXG59XHJcblxyXG4uaW1hZ2Utc2hhcmUtbW9kYWwgLnRlbXBsYXRlLWJ1dHRvbjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pbnRlcmFjdGl2ZS1hY2NlbnQpO1xyXG4gICAgY29sb3I6IHZhcigtLXRleHQtb24tYWNjZW50KTtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC50ZW1wbGF0ZS1idXR0b24uYWN0aXZlIHtcclxuICAgIGJhY2tncm91bmQ6IHZhcigtLWludGVyYWN0aXZlLWFjY2VudCk7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1vbi1hY2NlbnQpO1xyXG59XHJcblxyXG4uaW1hZ2UtcHJldmlldy1jb250YWluZXIgLm1hcmtkb3duLXByZXZpZXctdmlldyB7XHJcbiAgICBwYWRkaW5nOiAyNHB4O1xyXG59XHJcblxyXG4udGV4dC1wcmV2aWV3LW1vZGFsIC50ZXh0LXByZXZpZXctY29udGFpbmVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4udGV4dC1wcmV2aWV3LW1vZGFsIC5wcmV2aWV3LWNvbnRhaW5lciB7XHJcbiAgICBmbGV4OiAxO1xyXG4gICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XHJcbn1cclxuXHJcbi50ZXh0LXByZXZpZXctbW9kYWwgLmJ1dHRvbi1jb250YWluZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgcGFkZGluZzogOHB4IDA7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYmFja2dyb3VuZC1tb2RpZmllci1ib3JkZXIpO1xyXG59XHJcblxyXG4udGV4dC1wcmV2aWV3LW1vZGFsIC5idXR0b24tY29udGFpbmVyIGJ1dHRvbiB7XHJcbiAgICBwYWRkaW5nOiA4cHggMTZweDtcclxufVxyXG5cclxuLmVsZWdhbnQtZG93bmxvYWQtYnV0dG9uIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMTBweDtcclxuICAgIHJpZ2h0OiAxMHB4O1xyXG4gICAgd2lkdGg6IDQwcHg7XHJcbiAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XHJcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XHJcbiAgICB6LWluZGV4OiAxMDtcclxufVxyXG5cclxuLmVsZWdhbnQtZG93bmxvYWQtYnV0dG9uOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XHJcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XHJcbn1cclxuXHJcbi5lbGVnYW50LWRvd25sb2FkLWJ1dHRvbiBzdmcge1xyXG4gICAgY29sb3I6ICM0Mjg1ZjQ7ICAvKiBcdTRGN0ZcdTc1MjhcdThDMzdcdTZCNENcdTg0RERcdTYyMTZcdTUxNzZcdTRFRDZcdTkwMDJcdTU0MDhcdTRGNjBcdTVFOTRcdTc1MjhcdTc2ODRcdTk4OUNcdTgyNzIgKi9cclxufVxyXG5cclxuLmVsZWdhbnQtZG93bmxvYWQtYnV0dG9uLmNsaWNrZWQge1xyXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U4ZThlODtcclxufVxyXG5cclxuLyogXHU1NzI4XHU2Njk3XHU4MjcyXHU2QTIxXHU1RjBGXHU0RTBCXHU3Njg0XHU2ODM3XHU1RjBGXHU4QzAzXHU2NTc0ICovXHJcbi50aGVtZS1kYXJrIC5lbGVnYW50LWRvd25sb2FkLWJ1dHRvbiB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDUwLCA1MCwgNTAsIDAuOSk7XHJcbn1cclxuXHJcbi50aGVtZS1kYXJrIC5lbGVnYW50LWRvd25sb2FkLWJ1dHRvbjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDYwLCA2MCwgNjAsIDAuOSk7XHJcbn1cclxuXHJcbi50aGVtZS1kYXJrIC5lbGVnYW50LWRvd25sb2FkLWJ1dHRvbiBzdmcge1xyXG4gICAgY29sb3I6ICM4YWI0Zjg7ICAvKiBcdTY2OTdcdTgyNzJcdTZBMjFcdTVGMEZcdTRFMEJcdTc2ODRcdTg0RERcdTgyNzIgKi9cclxufVxyXG5cclxuLyogXHU2REZCXHU1MkEwXHU3RjI5XHU2NTNFXHU2M0E3XHU1MjM2XHU2ODM3XHU1RjBGICovXHJcbi5pbWFnZS1zaGFyZS1tb2RhbCAuem9vbS1jb250cm9scyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZ2FwOiAxMHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxufVxyXG5cclxuLmltYWdlLXNoYXJlLW1vZGFsIC56b29tLWJ1dHRvbiB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgd2lkdGg6IDMycHg7XHJcbiAgICBoZWlnaHQ6IDMycHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pbnRlcmFjdGl2ZS1hY2NlbnQpO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBjb2xvcjogdmFyKC0taW50ZXJhY3RpdmUtYWNjZW50KTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XHJcbn1cclxuXHJcbi5pbWFnZS1zaGFyZS1tb2RhbCAuem9vbS1idXR0b246aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZDogdmFyKC0taW50ZXJhY3RpdmUtYWNjZW50KTtcclxuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XHJcbn1cclxuXHJcbi5pbWFnZS1zaGFyZS1tb2RhbCAuem9vbS10ZXh0IHtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1ub3JtYWwpO1xyXG4gICAgd2lkdGg6IDUwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBO0FBSUk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJSjtBQUNJO0FBQ0E7QUFHQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFBQTtBQUlKO0FBQ0k7QUFBQTtBQUdKO0FBQ0k7QUFBQTtBQUdKO0FBQ0k7QUFBQTtBQUlKO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0o7QUFDSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHSjtBQUNJO0FBQ0E7QUFBQTtBQUdKO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo= */ diff --git a/main.ts b/main.ts index f7c1110..3e709a2 100644 --- a/main.ts +++ b/main.ts @@ -28,6 +28,10 @@ class ImageGenerator { tempDiv.style.padding = '24px'; tempDiv.style.boxSizing = 'border-box'; tempDiv.style.wordBreak = 'break-word'; + // 添加文本换行处理,确保内容不会溢出 + tempDiv.style.overflowWrap = 'break-word'; + tempDiv.style.wordWrap = 'break-word'; + tempDiv.style.hyphens = 'auto'; // tempDiv.style.fontSize = '15px'; // tempDiv.style.lineHeight = '1.5'; // tempDiv.style.whiteSpace = 'pre-wrap'; @@ -287,7 +291,7 @@ class ImageGenerator { width: this.currentTemplate.width, height: finalHeight, backgroundColor: this.currentTemplate.id === 'dark' ? '#2d3436' : '#e8ecf9', - scale: 3, // 增加到3提高清晰度 + scale: window.devicePixelRatio * 2, // 根据设备像素比自动调整清晰度 windowWidth: this.currentTemplate.width, windowHeight: finalHeight, logging: false, // 减少日志输出 @@ -367,10 +371,39 @@ class TextPreviewModal extends Modal { contentEl.empty(); contentEl.addClass('image-share-modal'); - // 根据当前模板宽度设置弹出框宽度,加上一些边距 - const modalPadding = 48; // 左右各24px的内边距 - const initialWidth = this.imageGenerator.getCurrentTemplate().width + modalPadding; - contentEl.style.width = `${initialWidth}px`; + // 获取屏幕大小 + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + + // 创建一个调整模态框大小的函数 + const adjustModalSize = (width: number, height: number, padding = 80) => { + // 计算内容尺寸(加上内边距) + const contentWidth = width + padding; + const contentHeight = height + padding + 150; // 额外添加150px用于控件和标题 + + // 应用适当的限制 + const maxWidth = Math.min(windowWidth * 0.6, 2000); // 最大宽度为窗口的90%或2000px + const maxHeight = Math.min(windowHeight * 0.9, 2000); // 最大高度为窗口的90%或2000px + + // 确保尺寸在合理范围内 + const finalWidth = Math.min(Math.max(contentWidth, 500), maxWidth); + const finalHeight = Math.min(Math.max(contentHeight, 400), maxHeight); + + // 应用到模态框和父模态框 + const modalElement = contentEl.parentElement as HTMLElement; + if (modalElement && modalElement.classList.contains('modal')) { + modalElement.style.width = `${finalWidth}px`; + modalElement.style.height = `${finalHeight}px`; + } + + // 也应用到当前元素以保持一致性 + contentEl.style.width = `${finalWidth}px`; + }; + + // 计算合适的初始模态框大小 + const currentTemplate = this.imageGenerator.getCurrentTemplate(); + // 初始设置 - 将在渲染完成后更新 + adjustModalSize(currentTemplate.width, 600); const resizableContainer = contentEl.createDiv({ cls: 'resizable-container' }); @@ -399,12 +432,26 @@ class TextPreviewModal extends Modal { templateButton.addClass('active'); await this.imageGenerator.setTemplate(template.id); canvasContainer.empty(); - canvasContainer.appendChild(this.imageGenerator.getCanvas()); + const newCanvas = this.imageGenerator.getCanvas(); + canvasContainer.appendChild(newCanvas); - // 当模板变更时更新弹出框宽度 - const modalPadding = 48; // 与初始化时相同的边距 - const newWidth = this.imageGenerator.getCurrentTemplate().width + modalPadding; - contentEl.style.width = `${newWidth}px`; + // 当模板变更时更新弹出框尺寸 + adjustModalSize(newCanvas.width, newCanvas.height); + + // 重新计算并应用适当的缩放比例 + const newCanvasWidth = newCanvas.width; + const newContainerWidth = canvasContainer.clientWidth - 16; // 减去内边距 + + if (newCanvasWidth > newContainerWidth) { + // 计算新的缩放比例 + zoomLevel = Math.floor((newContainerWidth / newCanvasWidth * 100) / 10) * 10; + zoomLevel = Math.max(50, zoomLevel); + updateZoom(zoomLevel); + } else { + // 如果画布适合容器,重置为100% + zoomLevel = 100; + updateZoom(zoomLevel); + } }; if (template.id === 'default') { templateButton.addClass('active'); @@ -432,34 +479,53 @@ class TextPreviewModal extends Modal { zoomInBtn.innerHTML = ''; // 缩放逻辑 + // 创建一个缩放更新函数 + const updateZoom = (level: number) => { + const canvas = canvasContainer.querySelector('canvas'); + if (canvas) { + canvas.style.width = `${level}%`; + zoomText.textContent = `${level}%`; + } + }; + + // 等待初始画布渲染完成 + await this.imageGenerator.updateCanvas(); + const canvas = this.imageGenerator.getCanvas(); + canvasContainer.appendChild(canvas); + + // 更新模态框大小以适应画布 + adjustModalSize(canvas.width, canvas.height); + + // 自动计算初始缩放比例 let zoomLevel = 100; + const canvasWidth = canvas.width; + const containerWidth = canvasContainer.clientWidth - 16; // 减去内边距 + + // 如果画布宽度大于容器宽度,则自动适应 + if (canvasWidth > containerWidth) { + // 计算适合的缩放比例,乘以100转为百分比,再向下取整到最接近的10 + zoomLevel = Math.floor((containerWidth / canvasWidth * 100) / 10) * 10; + // 确保缩放比例不低于50% + zoomLevel = Math.max(50, zoomLevel); + + // 应用初始缩放 + updateZoom(zoomLevel); + } zoomOutBtn.addEventListener('click', () => { if (zoomLevel > 50) { zoomLevel -= 10; - updateZoom(); + updateZoom(zoomLevel); } }); zoomInBtn.addEventListener('click', () => { if (zoomLevel < 200) { zoomLevel += 10; - updateZoom(); + updateZoom(zoomLevel); } }); - const updateZoom = () => { - const canvas = canvasContainer.querySelector('canvas'); - if (canvas) { - canvas.style.width = `${zoomLevel}%`; - zoomText.textContent = `${zoomLevel}%`; - } - }; - - // 等待初始画布渲染完成 - await this.imageGenerator.updateCanvas(); - canvasContainer.appendChild(this.imageGenerator.getCanvas()); - // 创建一个容器来包裹所有内容 // const contentContainer = this.contentEl.createDiv({ // cls: 'text-preview-container' @@ -524,13 +590,13 @@ const SHARE_TEMPLATES: ShareTemplate[] = [ { id: 'default', name: '默认模板', - width: 400, + width: 800, render: async () => {} }, { id: 'dark', name: '深色模板', - width: 400, + width: 800, render: async () => {} } ]; diff --git a/styles.css b/styles.css index 9b4dd58..64c6637 100644 --- a/styles.css +++ b/styles.css @@ -6,13 +6,25 @@ available in the app when your plugin is enabled. If your plugin does not need CSS, delete this file. */ +.modal { + /* 移除固定宽高 */ + /* width: 1500px; */ + /* height: 300px; */ + max-width: 90vw; /* 限制最大宽度为视窗宽度的90% */ + max-height: 90vh; /* 限制最大高度为视窗高度的90% */ + display: flex; /* 使用flex布局使内容居中 */ + flex-direction: column; + min-width: 400px; /* 设置最小宽度 */ + transition: width 0.3s ease, height 0.3s ease; /* 平滑过渡效果 */ +} + .image-share-modal { - max-width: none; - max-height: none; + max-width: 2000px; + max-height: 2000px; /* 移除固定宽度,以便通过JavaScript动态设置 */ /* width: 1000px; */ - transition: width 0.3s ease; + transition: width 0.3s ease, height 0.3s ease; } .image-share-modal .resizable-container { @@ -67,7 +79,7 @@ If your plugin does not need CSS, delete this file. display: flex; justify-content: center; align-items: flex-start; - padding: 2px; + padding: 8px; background: var(--background-secondary); border-radius: 8px; min-height: 200px; @@ -75,6 +87,9 @@ If your plugin does not need CSS, delete this file. width: 100%; overflow: auto; max-height: 70vh; + overflow-x: auto; + overflow-y: auto; + -webkit-overflow-scrolling: touch; } .image-share-modal h2 { @@ -87,9 +102,9 @@ If your plugin does not need CSS, delete this file. } .image-share-modal .download-button { - position: fixed; - right: 30%; - bottom: 40%; + position: absolute; /* 使用absolute而不是fixed */ + right: 20px; /* 距右边20px */ + top: 20px; /* 距上边20px */ background: var(--interactive-accent); border: none; border-radius: 50%; @@ -125,6 +140,9 @@ If your plugin does not need CSS, delete this file. image-rendering: crisp-edges; transform: translateZ(0); backface-visibility: hidden; + min-width: auto; + min-height: auto; + object-fit: contain; } .image-share-modal .template-selector {