@kne-components/components-core 0.1.13 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/asset-manifest.json +146 -146
- package/build/index.html +1 -1
- package/build/remoteEntry.js +1 -1
- package/build/remoteEntry.js.map +1 -1
- package/build/static/css/1151.afd8edff.chunk.css +2 -0
- package/build/static/css/{1151.ec1bbfc0.chunk.css.map → 1151.afd8edff.chunk.css.map} +1 -1
- package/build/static/css/1153.5df2226a.chunk.css +2 -0
- package/build/static/css/{1153.bd20b743.chunk.css.map → 1153.5df2226a.chunk.css.map} +1 -1
- package/build/static/css/1454.83e40ef7.chunk.css +2 -0
- package/build/static/css/{1454.c0a0991e.chunk.css.map → 1454.83e40ef7.chunk.css.map} +1 -1
- package/build/static/css/1554.424ed55d.chunk.css +2 -0
- package/build/static/css/{1554.a585edf1.chunk.css.map → 1554.424ed55d.chunk.css.map} +1 -1
- package/build/static/css/192.e7738624.chunk.css +2 -0
- package/build/static/css/{192.73637503.chunk.css.map → 192.e7738624.chunk.css.map} +1 -1
- package/build/static/css/1932.f022467b.chunk.css +2 -0
- package/build/static/css/{1932.0bf35bc9.chunk.css.map → 1932.f022467b.chunk.css.map} +1 -1
- package/build/static/css/{2503.48eb44fa.chunk.css → 2503.4204d383.chunk.css} +2 -2
- package/build/static/css/{2503.48eb44fa.chunk.css.map → 2503.4204d383.chunk.css.map} +1 -1
- package/build/static/css/{2517.5b666562.chunk.css → 2517.259d62a7.chunk.css} +2 -2
- package/build/static/css/{2517.5b666562.chunk.css.map → 2517.259d62a7.chunk.css.map} +1 -1
- package/build/static/css/2637.87819440.chunk.css +2 -0
- package/build/static/css/2637.87819440.chunk.css.map +1 -0
- package/build/static/css/2716.46fec554.chunk.css +2 -0
- package/build/static/css/{2716.6f49ddb5.chunk.css.map → 2716.46fec554.chunk.css.map} +1 -1
- package/build/static/css/{2730.e0efe797.chunk.css → 2730.6f2af18f.chunk.css} +2 -2
- package/build/static/css/{2730.e0efe797.chunk.css.map → 2730.6f2af18f.chunk.css.map} +1 -1
- package/build/static/css/2921.c7ef7d3a.chunk.css +2 -0
- package/build/static/css/2921.c7ef7d3a.chunk.css.map +1 -0
- package/build/static/css/3333.e451f29c.chunk.css +2 -0
- package/build/static/css/{3333.7d0ae50b.chunk.css.map → 3333.e451f29c.chunk.css.map} +1 -1
- package/build/static/css/{3843.ea9110c1.chunk.css → 3843.611095e5.chunk.css} +2 -2
- package/build/static/css/{3843.ea9110c1.chunk.css.map → 3843.611095e5.chunk.css.map} +1 -1
- package/build/static/css/4666.d40200d6.chunk.css +2 -0
- package/build/static/css/{4666.6b5dde12.chunk.css.map → 4666.d40200d6.chunk.css.map} +1 -1
- package/build/static/css/5196.aefd49f4.chunk.css +2 -0
- package/build/static/css/{5196.29f6749e.chunk.css.map → 5196.aefd49f4.chunk.css.map} +1 -1
- package/build/static/css/5362.92765283.chunk.css +2 -0
- package/build/static/css/{5362.db0ec87d.chunk.css.map → 5362.92765283.chunk.css.map} +1 -1
- package/build/static/css/5600.ab1d4eee.chunk.css +2 -0
- package/build/static/css/{5600.bc21bda7.chunk.css.map → 5600.ab1d4eee.chunk.css.map} +1 -1
- package/build/static/css/5673.7089f80f.chunk.css +2 -0
- package/build/static/css/{5673.79f68b31.chunk.css.map → 5673.7089f80f.chunk.css.map} +1 -1
- package/build/static/css/5941.1c0190d9.chunk.css +2 -0
- package/build/static/css/5941.1c0190d9.chunk.css.map +1 -0
- package/build/static/css/{5996.a2ddbe9b.chunk.css → 5996.d0868cd0.chunk.css} +2 -2
- package/build/static/css/{5996.a2ddbe9b.chunk.css.map → 5996.d0868cd0.chunk.css.map} +1 -1
- package/build/static/css/7227.66d245e3.chunk.css +2 -0
- package/build/static/css/{7227.c8f5f467.chunk.css.map → 7227.66d245e3.chunk.css.map} +1 -1
- package/build/static/css/8148.d602f232.chunk.css +2 -0
- package/build/static/css/8148.d602f232.chunk.css.map +1 -0
- package/build/static/css/{8725.baf97c0e.chunk.css → 8725.62429529.chunk.css} +2 -2
- package/build/static/css/{8725.baf97c0e.chunk.css.map → 8725.62429529.chunk.css.map} +1 -1
- package/build/static/css/9053.cec89ad2.chunk.css +2 -0
- package/build/static/css/{9053.6a1a6919.chunk.css.map → 9053.cec89ad2.chunk.css.map} +1 -1
- package/build/static/css/931.402bde58.chunk.css +2 -0
- package/build/static/css/{931.7a220088.chunk.css.map → 931.402bde58.chunk.css.map} +1 -1
- package/build/static/css/9689.27826790.chunk.css +2 -0
- package/build/static/css/{9689.7397d527.chunk.css.map → 9689.27826790.chunk.css.map} +1 -1
- package/build/static/css/9911.e76960cf.chunk.css +2 -0
- package/build/static/css/{9911.75d3b627.chunk.css.map → 9911.e76960cf.chunk.css.map} +1 -1
- package/build/static/js/1153.3ffe6820.chunk.js +3 -0
- package/build/static/js/{1153.0d52625e.chunk.js.map → 1153.3ffe6820.chunk.js.map} +1 -1
- package/build/static/js/{1454.c087b2eb.chunk.js → 1454.fa2e61ce.chunk.js} +3 -3
- package/build/static/js/{1454.c087b2eb.chunk.js.map → 1454.fa2e61ce.chunk.js.map} +1 -1
- package/build/static/js/1554.9103d1ed.chunk.js +3 -0
- package/build/static/js/{1554.2e647156.chunk.js.map → 1554.9103d1ed.chunk.js.map} +1 -1
- package/build/static/js/{1664.169d6c37.chunk.js → 1664.c2d4b079.chunk.js} +2 -2
- package/build/static/js/{1664.169d6c37.chunk.js.map → 1664.c2d4b079.chunk.js.map} +1 -1
- package/build/static/js/{192.db4b6754.chunk.js → 192.44c8bd78.chunk.js} +2 -2
- package/build/static/js/{192.db4b6754.chunk.js.map → 192.44c8bd78.chunk.js.map} +1 -1
- package/build/static/js/{1922.c52450c3.chunk.js → 1922.e69b6391.chunk.js} +2 -2
- package/build/static/js/1922.e69b6391.chunk.js.map +1 -0
- package/build/static/js/1932.da6a09a3.chunk.js +2 -0
- package/build/static/js/{1932.a0e955f3.chunk.js.map → 1932.da6a09a3.chunk.js.map} +1 -1
- package/build/static/js/2503.39ffc95c.chunk.js +2 -0
- package/build/static/js/{2503.e9de0bb4.chunk.js.map → 2503.39ffc95c.chunk.js.map} +1 -1
- package/build/static/js/2517.90539021.chunk.js +2 -0
- package/build/static/js/{2517.bfbef0e3.chunk.js.map → 2517.90539021.chunk.js.map} +1 -1
- package/build/static/js/{2637.4a57844b.chunk.js → 2637.80375073.chunk.js} +2 -2
- package/build/static/js/2637.80375073.chunk.js.map +1 -0
- package/build/static/js/2716.0ff4ed71.chunk.js +3 -0
- package/build/static/js/{2716.303242fa.chunk.js.map → 2716.0ff4ed71.chunk.js.map} +1 -1
- package/build/static/js/2730.e30ca887.chunk.js +2 -0
- package/build/static/js/{2730.40a28c60.chunk.js.map → 2730.e30ca887.chunk.js.map} +1 -1
- package/build/static/js/2921.3c63e4bf.chunk.js +2 -0
- package/build/static/js/2921.3c63e4bf.chunk.js.map +1 -0
- package/build/static/js/{2950.5e36a971.chunk.js → 2950.ba94676e.chunk.js} +2 -2
- package/build/static/js/{2950.5e36a971.chunk.js.map → 2950.ba94676e.chunk.js.map} +1 -1
- package/build/static/js/3245.e987bbef.chunk.js +3 -0
- package/build/static/js/{3245.3eeca0e4.chunk.js.LICENSE.txt → 3245.e987bbef.chunk.js.LICENSE.txt} +3 -3
- package/build/static/js/3245.e987bbef.chunk.js.map +1 -0
- package/build/static/js/{3333.40a6c257.chunk.js → 3333.db7e928a.chunk.js} +2 -2
- package/build/static/js/{3333.40a6c257.chunk.js.map → 3333.db7e928a.chunk.js.map} +1 -1
- package/build/static/js/3805.8b4f9a3a.chunk.js +2 -0
- package/build/static/js/3805.8b4f9a3a.chunk.js.map +1 -0
- package/build/static/js/{3843.a9b49a31.chunk.js → 3843.36ccc92a.chunk.js} +2 -2
- package/build/static/js/{3843.a9b49a31.chunk.js.map → 3843.36ccc92a.chunk.js.map} +1 -1
- package/build/static/js/4168.cb27218c.chunk.js +2 -0
- package/build/static/js/4168.cb27218c.chunk.js.map +1 -0
- package/build/static/js/4666.05463332.chunk.js +2 -0
- package/build/static/js/{4666.d14420a6.chunk.js.map → 4666.05463332.chunk.js.map} +1 -1
- package/build/static/js/5196.79f43391.chunk.js +2 -0
- package/build/static/js/{5196.a2cba1ec.chunk.js.map → 5196.79f43391.chunk.js.map} +1 -1
- package/build/static/js/5362.cff3d5e8.chunk.js +3 -0
- package/build/static/js/{5362.5fc27935.chunk.js.map → 5362.cff3d5e8.chunk.js.map} +1 -1
- package/build/static/js/5600.bec6c7cf.chunk.js +2 -0
- package/build/static/js/{5600.85ba4bf2.chunk.js.map → 5600.bec6c7cf.chunk.js.map} +1 -1
- package/build/static/js/{5673.1fab0476.chunk.js → 5673.bf4ca2d8.chunk.js} +2 -2
- package/build/static/js/{5673.1fab0476.chunk.js.map → 5673.bf4ca2d8.chunk.js.map} +1 -1
- package/build/static/js/5941.4931c1a5.chunk.js +2 -0
- package/build/static/js/5941.4931c1a5.chunk.js.map +1 -0
- package/build/static/js/{5996.71e827a6.chunk.js → 5996.f894206e.chunk.js} +2 -2
- package/build/static/js/{5996.71e827a6.chunk.js.map → 5996.f894206e.chunk.js.map} +1 -1
- package/build/static/js/6213.dd73c376.chunk.js +2 -0
- package/build/static/js/6213.dd73c376.chunk.js.map +1 -0
- package/build/static/js/6499.afdde7b5.chunk.js +2 -0
- package/build/static/js/6499.afdde7b5.chunk.js.map +1 -0
- package/build/static/js/6900.7c1ed7ed.chunk.js +2 -0
- package/build/static/js/6900.7c1ed7ed.chunk.js.map +1 -0
- package/build/static/js/{7227.4db45669.chunk.js → 7227.6ee897e5.chunk.js} +3 -3
- package/build/static/js/{7227.4db45669.chunk.js.map → 7227.6ee897e5.chunk.js.map} +1 -1
- package/build/static/js/7285.58da05db.chunk.js +2 -0
- package/build/static/js/7285.58da05db.chunk.js.map +1 -0
- package/build/static/js/7777.5f0afc1a.chunk.js +2 -0
- package/build/static/js/{7777.55b9c954.chunk.js.map → 7777.5f0afc1a.chunk.js.map} +1 -1
- package/build/static/js/{8016.ffba9f87.chunk.js → 8016.c5fbb5c2.chunk.js} +2 -2
- package/build/static/js/{8016.ffba9f87.chunk.js.map → 8016.c5fbb5c2.chunk.js.map} +1 -1
- package/build/static/js/{8111.97de8531.chunk.js → 8111.769b1db8.chunk.js} +2 -2
- package/build/static/js/{8111.97de8531.chunk.js.map → 8111.769b1db8.chunk.js.map} +1 -1
- package/build/static/js/8148.c8cb3414.chunk.js +3 -0
- package/build/static/js/8148.c8cb3414.chunk.js.map +1 -0
- package/build/static/js/{8151.e9794f31.chunk.js → 8151.05b581fa.chunk.js} +2 -2
- package/build/static/js/{8151.e9794f31.chunk.js.map → 8151.05b581fa.chunk.js.map} +1 -1
- package/build/static/js/8267.b4d00822.chunk.js +2 -0
- package/build/static/js/{8267.a19b2789.chunk.js.map → 8267.b4d00822.chunk.js.map} +1 -1
- package/build/static/js/8564.8f01b47a.chunk.js +2 -0
- package/build/static/js/8564.8f01b47a.chunk.js.map +1 -0
- package/build/static/js/{8725.8c209220.chunk.js → 8725.d7295a22.chunk.js} +2 -2
- package/build/static/js/{8725.8c209220.chunk.js.map → 8725.d7295a22.chunk.js.map} +1 -1
- package/build/static/js/{9053.94b035ac.chunk.js → 9053.5c8e2f20.chunk.js} +3 -3
- package/build/static/js/{9053.94b035ac.chunk.js.map → 9053.5c8e2f20.chunk.js.map} +1 -1
- package/build/static/js/{931.75a9d316.chunk.js → 931.04a5ad55.chunk.js} +2 -2
- package/build/static/js/{931.75a9d316.chunk.js.map → 931.04a5ad55.chunk.js.map} +1 -1
- package/build/static/js/9666.6ab09d66.chunk.js +2 -0
- package/build/static/js/9666.6ab09d66.chunk.js.map +1 -0
- package/build/static/js/{9911.7aee726d.chunk.js → 9911.5b68f0f3.chunk.js} +2 -2
- package/build/static/js/{9911.7aee726d.chunk.js.map → 9911.5b68f0f3.chunk.js.map} +1 -1
- package/build/static/js/main.e37e72f0.js +2 -0
- package/build/static/js/main.e37e72f0.js.map +1 -0
- package/package.json +1 -1
- package/build/static/css/1151.ec1bbfc0.chunk.css +0 -2
- package/build/static/css/1153.bd20b743.chunk.css +0 -2
- package/build/static/css/1454.c0a0991e.chunk.css +0 -2
- package/build/static/css/1554.a585edf1.chunk.css +0 -2
- package/build/static/css/192.73637503.chunk.css +0 -2
- package/build/static/css/1932.0bf35bc9.chunk.css +0 -2
- package/build/static/css/2637.ae1f2887.chunk.css +0 -2
- package/build/static/css/2637.ae1f2887.chunk.css.map +0 -1
- package/build/static/css/2716.6f49ddb5.chunk.css +0 -2
- package/build/static/css/2921.935ed0ce.chunk.css +0 -2
- package/build/static/css/2921.935ed0ce.chunk.css.map +0 -1
- package/build/static/css/3333.7d0ae50b.chunk.css +0 -2
- package/build/static/css/4666.6b5dde12.chunk.css +0 -2
- package/build/static/css/5196.29f6749e.chunk.css +0 -2
- package/build/static/css/5362.db0ec87d.chunk.css +0 -2
- package/build/static/css/5600.bc21bda7.chunk.css +0 -2
- package/build/static/css/5673.79f68b31.chunk.css +0 -2
- package/build/static/css/5941.6743598e.chunk.css +0 -2
- package/build/static/css/5941.6743598e.chunk.css.map +0 -1
- package/build/static/css/7227.c8f5f467.chunk.css +0 -2
- package/build/static/css/8148.7a78b9f0.chunk.css +0 -2
- package/build/static/css/8148.7a78b9f0.chunk.css.map +0 -1
- package/build/static/css/9053.6a1a6919.chunk.css +0 -2
- package/build/static/css/931.7a220088.chunk.css +0 -2
- package/build/static/css/9689.7397d527.chunk.css +0 -2
- package/build/static/css/9911.75d3b627.chunk.css +0 -2
- package/build/static/js/1153.0d52625e.chunk.js +0 -3
- package/build/static/js/1554.2e647156.chunk.js +0 -3
- package/build/static/js/1922.c52450c3.chunk.js.map +0 -1
- package/build/static/js/1932.a0e955f3.chunk.js +0 -2
- package/build/static/js/2503.e9de0bb4.chunk.js +0 -2
- package/build/static/js/2517.bfbef0e3.chunk.js +0 -2
- package/build/static/js/2637.4a57844b.chunk.js.map +0 -1
- package/build/static/js/2716.303242fa.chunk.js +0 -3
- package/build/static/js/2730.40a28c60.chunk.js +0 -2
- package/build/static/js/2921.a64b88fb.chunk.js +0 -2
- package/build/static/js/2921.a64b88fb.chunk.js.map +0 -1
- package/build/static/js/3245.3eeca0e4.chunk.js +0 -3
- package/build/static/js/3245.3eeca0e4.chunk.js.map +0 -1
- package/build/static/js/3805.6149ae4b.chunk.js +0 -2
- package/build/static/js/3805.6149ae4b.chunk.js.map +0 -1
- package/build/static/js/4168.bc1cc45c.chunk.js +0 -2
- package/build/static/js/4168.bc1cc45c.chunk.js.map +0 -1
- package/build/static/js/4666.d14420a6.chunk.js +0 -2
- package/build/static/js/5196.a2cba1ec.chunk.js +0 -2
- package/build/static/js/5362.5fc27935.chunk.js +0 -3
- package/build/static/js/5600.85ba4bf2.chunk.js +0 -2
- package/build/static/js/5941.178c2afc.chunk.js +0 -2
- package/build/static/js/5941.178c2afc.chunk.js.map +0 -1
- package/build/static/js/6213.8d51d652.chunk.js +0 -2
- package/build/static/js/6213.8d51d652.chunk.js.map +0 -1
- package/build/static/js/6499.3dcf0f88.chunk.js +0 -2
- package/build/static/js/6499.3dcf0f88.chunk.js.map +0 -1
- package/build/static/js/6900.67ca7456.chunk.js +0 -2
- package/build/static/js/6900.67ca7456.chunk.js.map +0 -1
- package/build/static/js/7285.e023f277.chunk.js +0 -2
- package/build/static/js/7285.e023f277.chunk.js.map +0 -1
- package/build/static/js/7777.55b9c954.chunk.js +0 -2
- package/build/static/js/8148.71868223.chunk.js +0 -3
- package/build/static/js/8148.71868223.chunk.js.map +0 -1
- package/build/static/js/8267.a19b2789.chunk.js +0 -2
- package/build/static/js/8564.c755faf3.chunk.js +0 -2
- package/build/static/js/8564.c755faf3.chunk.js.map +0 -1
- package/build/static/js/9666.7b24426a.chunk.js +0 -2
- package/build/static/js/9666.7b24426a.chunk.js.map +0 -1
- package/build/static/js/main.d3a20250.js +0 -2
- package/build/static/js/main.d3a20250.js.map +0 -1
- /package/build/static/js/{1153.0d52625e.chunk.js.LICENSE.txt → 1153.3ffe6820.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{1454.c087b2eb.chunk.js.LICENSE.txt → 1454.fa2e61ce.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{1554.2e647156.chunk.js.LICENSE.txt → 1554.9103d1ed.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{2716.303242fa.chunk.js.LICENSE.txt → 2716.0ff4ed71.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{5362.5fc27935.chunk.js.LICENSE.txt → 5362.cff3d5e8.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{7227.4db45669.chunk.js.LICENSE.txt → 7227.6ee897e5.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{8148.71868223.chunk.js.LICENSE.txt → 8148.c8cb3414.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{9053.94b035ac.chunk.js.LICENSE.txt → 9053.5c8e2f20.chunk.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/2950.5e36a971.chunk.js","mappings":"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","sources":["../node_modules/@fullcalendar/premium-common/index.js","../node_modules/@fullcalendar/scrollgrid/internal.js","../node_modules/@fullcalendar/scrollgrid/index.js"],"sourcesContent":["import { createPlugin } from '@fullcalendar/core/index.js';\nimport { config, isValidDate, addDays } from '@fullcalendar/core/internal.js';\nimport { createElement, Fragment } from '@fullcalendar/core/preact.js';\n\nconst UPGRADE_WINDOW = 365 + 7; // days. 1 week leeway, for tz shift reasons too\nconst INVALID_LICENSE_URL = 'https://fullcalendar.io/docs/schedulerLicenseKey#invalid';\nconst OUTDATED_LICENSE_URL = 'https://fullcalendar.io/docs/schedulerLicenseKey#outdated';\nconst PRESET_LICENSE_KEYS = [\n 'GPL-My-Project-Is-Open-Source',\n 'CC-Attribution-NonCommercial-NoDerivatives',\n];\nconst CSS = {\n position: 'absolute',\n zIndex: 99999,\n bottom: '1px',\n left: '1px',\n background: '#eee',\n borderColor: '#ddd',\n borderStyle: 'solid',\n borderWidth: '1px 1px 0 0',\n padding: '2px 4px',\n fontSize: '12px',\n borderTopRightRadius: '3px',\n};\nfunction buildLicenseWarning(context) {\n let key = context.options.schedulerLicenseKey;\n let currentUrl = typeof window !== 'undefined' ? window.location.href : '';\n if (!isImmuneUrl(currentUrl)) {\n let status = processLicenseKey(key, context.pluginHooks.premiumReleaseDate);\n if (status !== 'valid') {\n return (createElement(\"div\", { className: \"fc-license-message\", style: CSS }, (status === 'outdated') ? (createElement(Fragment, null,\n 'Your license key is too old to work with this version. ',\n createElement(\"a\", { href: OUTDATED_LICENSE_URL }, \"More Info\"))) : (createElement(Fragment, null,\n 'Your license key is invalid. ',\n createElement(\"a\", { href: INVALID_LICENSE_URL }, \"More Info\")))));\n }\n }\n return null;\n}\n/*\nThis decryption is not meant to be bulletproof. Just a way to remind about an upgrade.\n*/\nfunction processLicenseKey(key, premiumReleaseDate) {\n if (PRESET_LICENSE_KEYS.indexOf(key) !== -1) {\n return 'valid';\n }\n const parts = (key || '').match(/^(\\d+)-fcs-(\\d+)$/);\n if (parts && (parts[1].length === 10)) {\n const purchaseDate = new Date(parseInt(parts[2], 10) * 1000);\n const releaseDate = config.mockSchedulerReleaseDate || premiumReleaseDate;\n if (isValidDate(releaseDate)) { // token won't be replaced in dev mode\n const minPurchaseDate = addDays(releaseDate, -UPGRADE_WINDOW);\n if (minPurchaseDate < purchaseDate) {\n return 'valid';\n }\n return 'outdated';\n }\n }\n return 'invalid';\n}\nfunction isImmuneUrl(url) {\n return /\\w+:\\/\\/fullcalendar\\.io\\/|\\/examples\\/[\\w-]+\\.html$/.test(url);\n}\n\nconst OPTION_REFINERS = {\n schedulerLicenseKey: String,\n};\n\nvar index = createPlugin({\n name: '@fullcalendar/premium-common',\n premiumReleaseDate: '2023-11-29',\n optionRefiners: OPTION_REFINERS,\n viewContainerAppends: [buildLicenseWarning],\n});\n\nexport { index as default };\n","import { computeEdges, removeElement, findElements, translateRect, computeInnerRect, applyStyle, BaseComponent, setRef, getIsRtlScrollbarOnLeft, Scroller, isPropsEqual, Emitter, DelayedRunner, config, memoizeArraylike, renderMicroColGroup, RefMap, getScrollGridClassNames, getCanVGrowWithinCell, getSectionClassNames, getAllowYScrolling, getSectionHasLiquidHeight, renderChunkContent, memoizeHashlike, computeShrinkWidth, getScrollbarWidths, collectFromHash, mapHash, isArraysEqual, sanitizeShrinkWidth, hasShrinkWidth, compareObjs, isColPropsEqual } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement, Fragment } from '@fullcalendar/core/preact.js';\n\n// TODO: assume the el has no borders?\nfunction getScrollCanvasOrigin(scrollEl) {\n let rect = scrollEl.getBoundingClientRect();\n let edges = computeEdges(scrollEl); // TODO: pass in isRtl?\n return {\n left: rect.left + edges.borderLeft + edges.scrollbarLeft - getScrollFromLeftEdge(scrollEl),\n top: rect.top + edges.borderTop - scrollEl.scrollTop,\n };\n}\nfunction getScrollFromLeftEdge(el) {\n let scrollLeft = el.scrollLeft;\n let computedStyles = window.getComputedStyle(el); // TODO: pass in isRtl instead?\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'negative':\n scrollLeft *= -1; // convert to 'reverse'. fall through...\n case 'reverse': // scrollLeft is distance between scrollframe's right edge scrollcanvas's right edge\n scrollLeft = el.scrollWidth - scrollLeft - el.clientWidth;\n }\n }\n return scrollLeft;\n}\nfunction setScrollFromLeftEdge(el, scrollLeft) {\n let computedStyles = window.getComputedStyle(el); // TODO: pass in isRtl instead?\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'reverse':\n scrollLeft = el.scrollWidth - scrollLeft;\n break;\n case 'negative':\n scrollLeft = -(el.scrollWidth - scrollLeft);\n break;\n }\n }\n el.scrollLeft = scrollLeft;\n}\n// Horizontal Scroll System Detection\n// ----------------------------------------------------------------------------------------------\nlet _rtlScrollSystem;\nfunction getRtlScrollSystem() {\n return _rtlScrollSystem || (_rtlScrollSystem = detectRtlScrollSystem());\n}\nfunction detectRtlScrollSystem() {\n let el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '-1000px';\n el.style.width = '1px';\n el.style.height = '1px';\n el.style.overflow = 'scroll';\n el.style.direction = 'rtl';\n el.style.fontSize = '100px';\n el.innerHTML = 'A';\n document.body.appendChild(el);\n let system;\n if (el.scrollLeft > 0) {\n system = 'positive'; // scroll is a positive number from the left edge\n }\n else {\n el.scrollLeft = 1;\n if (el.scrollLeft > 0) {\n system = 'reverse'; // scroll is a positive number from the right edge\n }\n else {\n system = 'negative'; // scroll is a negative number from the right edge\n }\n }\n removeElement(el);\n return system;\n}\n\nconst STICKY_SELECTOR = '.fc-sticky';\n/*\nGoes beyond mere position:sticky, allows horizontal centering\n\nREQUIREMENT: fc-sticky elements, if the fc-sticky className is taken away, should NOT have relative or absolute positioning.\nThis is because we attach the coords with JS, and the VDOM might take away the fc-sticky class but doesn't know kill the positioning.\n\nTODO: don't query text-align:center. isn't compatible with flexbox centering. instead, check natural X coord within parent container\n*/\nclass StickyScrolling {\n constructor(scrollEl, isRtl) {\n this.scrollEl = scrollEl;\n this.isRtl = isRtl;\n this.updateSize = () => {\n let { scrollEl } = this;\n let els = findElements(scrollEl, STICKY_SELECTOR);\n let elGeoms = this.queryElGeoms(els);\n let viewportWidth = scrollEl.clientWidth;\n assignStickyPositions(els, elGeoms, viewportWidth);\n };\n }\n queryElGeoms(els) {\n let { scrollEl, isRtl } = this;\n let canvasOrigin = getScrollCanvasOrigin(scrollEl);\n let elGeoms = [];\n for (let el of els) {\n let parentBound = translateRect(computeInnerRect(el.parentNode, true, true), // weird way to call this!!!\n -canvasOrigin.left, -canvasOrigin.top);\n let elRect = el.getBoundingClientRect();\n let computedStyles = window.getComputedStyle(el);\n let textAlign = window.getComputedStyle(el.parentNode).textAlign; // ask the parent\n let naturalBound = null;\n if (textAlign === 'start') {\n textAlign = isRtl ? 'right' : 'left';\n }\n else if (textAlign === 'end') {\n textAlign = isRtl ? 'left' : 'right';\n }\n if (computedStyles.position !== 'sticky') {\n naturalBound = translateRect(elRect, -canvasOrigin.left - (parseFloat(computedStyles.left) || 0), // could be 'auto'\n -canvasOrigin.top - (parseFloat(computedStyles.top) || 0));\n }\n elGeoms.push({\n parentBound,\n naturalBound,\n elWidth: elRect.width,\n elHeight: elRect.height,\n textAlign,\n });\n }\n return elGeoms;\n }\n}\nfunction assignStickyPositions(els, elGeoms, viewportWidth) {\n els.forEach((el, i) => {\n let { textAlign, elWidth, parentBound } = elGeoms[i];\n let parentWidth = parentBound.right - parentBound.left;\n let left;\n if (textAlign === 'center' &&\n parentWidth > viewportWidth) {\n left = (viewportWidth - elWidth) / 2;\n }\n else { // if parent container can be completely in view, we don't need stickiness\n left = '';\n }\n applyStyle(el, {\n left,\n right: left,\n top: 0,\n });\n });\n}\n\nclass ClippedScroller extends BaseComponent {\n constructor() {\n super(...arguments);\n this.elRef = createRef();\n this.state = {\n xScrollbarWidth: 0,\n yScrollbarWidth: 0,\n };\n this.handleScroller = (scroller) => {\n this.scroller = scroller;\n setRef(this.props.scrollerRef, scroller);\n };\n this.handleSizing = () => {\n let { props } = this;\n if (props.overflowY === 'scroll-hidden') {\n this.setState({ yScrollbarWidth: this.scroller.getYScrollbarWidth() });\n }\n if (props.overflowX === 'scroll-hidden') {\n this.setState({ xScrollbarWidth: this.scroller.getXScrollbarWidth() });\n }\n };\n }\n render() {\n let { props, state, context } = this;\n let isScrollbarOnLeft = context.isRtl && getIsRtlScrollbarOnLeft();\n let overcomeLeft = 0;\n let overcomeRight = 0;\n let overcomeBottom = 0;\n let { overflowX, overflowY } = props;\n if (props.forPrint) {\n overflowX = 'visible';\n overflowY = 'visible';\n }\n if (overflowX === 'scroll-hidden') {\n overcomeBottom = state.xScrollbarWidth;\n }\n if (overflowY === 'scroll-hidden') {\n if (state.yScrollbarWidth != null) {\n if (isScrollbarOnLeft) {\n overcomeLeft = state.yScrollbarWidth;\n }\n else {\n overcomeRight = state.yScrollbarWidth;\n }\n }\n }\n return (createElement(\"div\", { ref: this.elRef, className: 'fc-scroller-harness' + (props.liquid ? ' fc-scroller-harness-liquid' : '') },\n createElement(Scroller, { ref: this.handleScroller, elRef: this.props.scrollerElRef, overflowX: overflowX === 'scroll-hidden' ? 'scroll' : overflowX, overflowY: overflowY === 'scroll-hidden' ? 'scroll' : overflowY, overcomeLeft: overcomeLeft, overcomeRight: overcomeRight, overcomeBottom: overcomeBottom, maxHeight: typeof props.maxHeight === 'number'\n ? (props.maxHeight + (overflowX === 'scroll-hidden' ? state.xScrollbarWidth : 0))\n : '', liquid: props.liquid, liquidIsAbsolute: true }, props.children)));\n }\n componentDidMount() {\n this.handleSizing();\n this.context.addResizeHandler(this.handleSizing);\n }\n getSnapshotBeforeUpdate(prevProps) {\n if (this.props.forPrint && !prevProps.forPrint) {\n return { simulateScrollLeft: this.scroller.el.scrollLeft };\n }\n return {};\n }\n componentDidUpdate(prevProps, prevState, snapshot) {\n const { props, scroller: { el: scrollerEl } } = this;\n if (!isPropsEqual(prevProps, props)) { // an external change?\n this.handleSizing();\n }\n if (snapshot.simulateScrollLeft !== undefined) {\n scrollerEl.style.left = -snapshot.simulateScrollLeft + 'px';\n }\n else if (!props.forPrint && prevProps.forPrint) {\n const restoredScrollLeft = -parseInt(scrollerEl.style.left);\n scrollerEl.style.left = '';\n scrollerEl.scrollLeft = restoredScrollLeft;\n }\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing);\n }\n needsXScrolling() {\n return this.scroller.needsXScrolling();\n }\n needsYScrolling() {\n return this.scroller.needsYScrolling();\n }\n}\n\nconst WHEEL_EVENT_NAMES = 'wheel mousewheel DomMouseScroll MozMousePixelScroll'.split(' ');\n/*\nALSO, with the ability to disable touch\n*/\nclass ScrollListener {\n constructor(el) {\n this.el = el;\n this.emitter = new Emitter();\n this.isScrolling = false;\n this.isTouching = false; // user currently has finger down?\n this.isRecentlyWheeled = false;\n this.isRecentlyScrolled = false;\n this.wheelWaiter = new DelayedRunner(this._handleWheelWaited.bind(this));\n this.scrollWaiter = new DelayedRunner(this._handleScrollWaited.bind(this));\n // Handlers\n // ----------------------------------------------------------------------------------------------\n this.handleScroll = () => {\n this.startScroll();\n this.emitter.trigger('scroll', this.isRecentlyWheeled, this.isTouching);\n this.isRecentlyScrolled = true;\n this.scrollWaiter.request(500);\n };\n // will fire *before* the scroll event is fired (might not cause a scroll)\n this.handleWheel = () => {\n this.isRecentlyWheeled = true;\n this.wheelWaiter.request(500);\n };\n // will fire *before* the scroll event is fired (might not cause a scroll)\n this.handleTouchStart = () => {\n this.isTouching = true;\n };\n this.handleTouchEnd = () => {\n this.isTouching = false;\n // if the user ended their touch, and the scroll area wasn't moving,\n // we consider this to be the end of the scroll.\n if (!this.isRecentlyScrolled) {\n this.endScroll(); // won't fire if already ended\n }\n };\n el.addEventListener('scroll', this.handleScroll);\n el.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n el.addEventListener('touchend', this.handleTouchEnd);\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.addEventListener(eventName, this.handleWheel);\n }\n }\n destroy() {\n let { el } = this;\n el.removeEventListener('scroll', this.handleScroll);\n el.removeEventListener('touchstart', this.handleTouchStart, { passive: true });\n el.removeEventListener('touchend', this.handleTouchEnd);\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.removeEventListener(eventName, this.handleWheel);\n }\n }\n // Start / Stop\n // ----------------------------------------------------------------------------------------------\n startScroll() {\n if (!this.isScrolling) {\n this.isScrolling = true;\n this.emitter.trigger('scrollStart', this.isRecentlyWheeled, this.isTouching);\n }\n }\n endScroll() {\n if (this.isScrolling) {\n this.emitter.trigger('scrollEnd');\n this.isScrolling = false;\n this.isRecentlyScrolled = true;\n this.isRecentlyWheeled = false;\n this.scrollWaiter.clear();\n this.wheelWaiter.clear();\n }\n }\n _handleScrollWaited() {\n this.isRecentlyScrolled = false;\n // only end the scroll if not currently touching.\n // if touching, the scrolling will end later, on touchend.\n if (!this.isTouching) {\n this.endScroll(); // won't fire if already ended\n }\n }\n _handleWheelWaited() {\n this.isRecentlyWheeled = false;\n }\n}\n\nclass ScrollSyncer {\n constructor(isVertical, scrollEls) {\n this.isVertical = isVertical;\n this.scrollEls = scrollEls;\n this.isPaused = false;\n this.scrollListeners = scrollEls.map((el) => this.bindScroller(el));\n }\n destroy() {\n for (let scrollListener of this.scrollListeners) {\n scrollListener.destroy();\n }\n }\n bindScroller(el) {\n let { scrollEls, isVertical } = this;\n let scrollListener = new ScrollListener(el);\n const onScroll = (isWheel, isTouch) => {\n if (!this.isPaused) {\n if (!this.masterEl || (this.masterEl !== el && (isWheel || isTouch))) {\n this.assignMaster(el);\n }\n if (this.masterEl === el) { // dealing with current\n for (let otherEl of scrollEls) {\n if (otherEl !== el) {\n if (isVertical) {\n otherEl.scrollTop = el.scrollTop;\n }\n else {\n otherEl.scrollLeft = el.scrollLeft;\n }\n }\n }\n }\n }\n };\n const onScrollEnd = () => {\n if (this.masterEl === el) {\n this.masterEl = null;\n }\n };\n scrollListener.emitter.on('scroll', onScroll);\n scrollListener.emitter.on('scrollEnd', onScrollEnd);\n return scrollListener;\n }\n assignMaster(el) {\n this.masterEl = el;\n for (let scrollListener of this.scrollListeners) {\n if (scrollListener.el !== el) {\n scrollListener.endScroll(); // to prevent residual scrolls from reclaiming master\n }\n }\n }\n /*\n will normalize the scrollLeft value\n */\n forceScrollLeft(scrollLeft) {\n this.isPaused = true;\n for (let listener of this.scrollListeners) {\n setScrollFromLeftEdge(listener.el, scrollLeft);\n }\n this.isPaused = false;\n }\n forceScrollTop(top) {\n this.isPaused = true;\n for (let listener of this.scrollListeners) {\n listener.el.scrollTop = top;\n }\n this.isPaused = false;\n }\n}\n\nconfig.SCROLLGRID_RESIZE_INTERVAL = 500;\n/*\nTODO: make <ScrollGridSection> subcomponent\nNOTE: doesn't support collapsibleWidth (which is sortof a hack anyway)\n*/\nclass ScrollGrid extends BaseComponent {\n constructor() {\n super(...arguments);\n this.compileColGroupStats = memoizeArraylike(compileColGroupStat, isColGroupStatsEqual);\n this.renderMicroColGroups = memoizeArraylike(renderMicroColGroup); // yucky to memoize VNodes, but much more efficient for consumers\n this.clippedScrollerRefs = new RefMap();\n // doesn't hold non-scrolling els used just for padding\n this.scrollerElRefs = new RefMap(this._handleScrollerEl.bind(this));\n this.chunkElRefs = new RefMap(this._handleChunkEl.bind(this));\n this.scrollSyncersBySection = {};\n this.scrollSyncersByColumn = {};\n // for row-height-syncing\n this.rowUnstableMap = new Map(); // no need to groom. always self-cancels\n this.rowInnerMaxHeightMap = new Map();\n this.anyRowHeightsChanged = false;\n this.recentSizingCnt = 0;\n this.state = {\n shrinkWidths: [],\n forceYScrollbars: false,\n forceXScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n sectionRowMaxHeights: [],\n };\n this.handleSizing = (isForcedResize, sectionRowMaxHeightsChanged) => {\n if (!this.allowSizing()) {\n return;\n }\n if (!sectionRowMaxHeightsChanged) { // something else changed, probably external\n this.anyRowHeightsChanged = true;\n }\n let otherState = {};\n // if reacting to self-change of sectionRowMaxHeightsChanged, or not stable, don't do anything\n if (isForcedResize || (!sectionRowMaxHeightsChanged && !this.rowUnstableMap.size)) {\n otherState.sectionRowMaxHeights = this.computeSectionRowMaxHeights();\n }\n this.setState(Object.assign(Object.assign({ shrinkWidths: this.computeShrinkWidths() }, this.computeScrollerDims()), otherState), () => {\n if (!this.rowUnstableMap.size) {\n this.updateStickyScrolling(); // needs to happen AFTER final positioning committed to DOM\n }\n });\n };\n this.handleRowHeightChange = (rowEl, isStable) => {\n let { rowUnstableMap, rowInnerMaxHeightMap } = this;\n if (!isStable) {\n rowUnstableMap.set(rowEl, true);\n }\n else {\n rowUnstableMap.delete(rowEl);\n let innerMaxHeight = getRowInnerMaxHeight(rowEl);\n if (!rowInnerMaxHeightMap.has(rowEl) || rowInnerMaxHeightMap.get(rowEl) !== innerMaxHeight) {\n rowInnerMaxHeightMap.set(rowEl, innerMaxHeight);\n this.anyRowHeightsChanged = true;\n }\n if (!rowUnstableMap.size && this.anyRowHeightsChanged) {\n this.anyRowHeightsChanged = false;\n this.setState({\n sectionRowMaxHeights: this.computeSectionRowMaxHeights(),\n });\n }\n }\n };\n }\n render() {\n let { props, state, context } = this;\n let { shrinkWidths } = state;\n let colGroupStats = this.compileColGroupStats(props.colGroups.map((colGroup) => [colGroup]));\n let microColGroupNodes = this.renderMicroColGroups(colGroupStats.map((stat, i) => [stat.cols, shrinkWidths[i]]));\n let classNames = getScrollGridClassNames(props.liquid, context);\n this.getDims();\n // TODO: make DRY\n let sectionConfigs = props.sections;\n let configCnt = sectionConfigs.length;\n let configI = 0;\n let currentConfig;\n let headSectionNodes = [];\n let bodySectionNodes = [];\n let footSectionNodes = [];\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, false));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));\n configI += 1;\n }\n const isBuggy = !getCanVGrowWithinCell(); // see NOTE in SimpleScrollGrid\n const roleAttrs = { role: 'rowgroup' };\n return createElement('table', {\n ref: props.elRef,\n role: 'grid',\n className: classNames.join(' '),\n }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes), Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes), Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes), isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes));\n }\n renderSection(sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights, isHeader) {\n if ('outerContent' in sectionConfig) {\n return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n }\n return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map((chunkConfig, i) => this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || [], isHeader))));\n }\n renderChunk(sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights, isHeader) {\n if ('outerContent' in chunkConfig) {\n return (createElement(Fragment, { key: chunkConfig.key }, chunkConfig.outerContent));\n }\n let { state } = this;\n let { scrollerClientWidths, scrollerClientHeights } = state;\n let [sectionCnt, chunksPerSection] = this.getDims();\n let index = sectionIndex * chunksPerSection + chunkIndex;\n let sideScrollIndex = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0;\n let isVScrollSide = chunkIndex === sideScrollIndex;\n let isLastSection = sectionIndex === sectionCnt - 1;\n let forceXScrollbars = isLastSection && state.forceXScrollbars; // NOOOO can result in `null`\n let forceYScrollbars = isVScrollSide && state.forceYScrollbars; // NOOOO can result in `null`\n let allowXScrolling = colGroupStat && colGroupStat.allowXScrolling; // rename?\n let allowYScrolling = getAllowYScrolling(this.props, sectionConfig); // rename? do in section func?\n let chunkVGrow = getSectionHasLiquidHeight(this.props, sectionConfig); // do in section func?\n let expandRows = sectionConfig.expandRows && chunkVGrow;\n let tableMinWidth = (colGroupStat && colGroupStat.totalColMinWidth) || '';\n let content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth,\n clientWidth: scrollerClientWidths[index] !== undefined ? scrollerClientWidths[index] : null,\n clientHeight: scrollerClientHeights[index] !== undefined ? scrollerClientHeights[index] : null,\n expandRows,\n syncRowHeights: Boolean(sectionConfig.syncRowHeights),\n rowSyncHeights: rowHeights,\n reportRowHeightChange: this.handleRowHeightChange,\n }, isHeader);\n let overflowX = forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :\n !allowXScrolling ? 'hidden' :\n (isLastSection ? 'auto' : 'scroll-hidden');\n let overflowY = forceYScrollbars ? (isVScrollSide ? 'scroll' : 'scroll-hidden') :\n !allowYScrolling ? 'hidden' :\n (isVScrollSide ? 'auto' : 'scroll-hidden');\n // it *could* be possible to reduce DOM wrappers by only doing a ClippedScroller when allowXScrolling or allowYScrolling,\n // but if these values were to change, the inner components would be unmounted/remounted because of the parent change.\n content = (createElement(ClippedScroller, { ref: this.clippedScrollerRefs.createRef(index), scrollerElRef: this.scrollerElRefs.createRef(index), overflowX: overflowX, overflowY: overflowY, forPrint: this.props.forPrint, liquid: chunkVGrow, maxHeight: sectionConfig.maxHeight }, content));\n return createElement(isHeader ? 'th' : 'td', {\n key: chunkConfig.key,\n ref: this.chunkElRefs.createRef(index),\n role: 'presentation',\n }, content);\n }\n componentDidMount() {\n this.getStickyScrolling = memoizeArraylike(initStickyScrolling);\n this.getScrollSyncersBySection = memoizeHashlike(initScrollSyncer.bind(this, true), null, destroyScrollSyncer);\n this.getScrollSyncersByColumn = memoizeHashlike(initScrollSyncer.bind(this, false), null, destroyScrollSyncer);\n this.updateScrollSyncers();\n this.handleSizing(false);\n this.context.addResizeHandler(this.handleSizing);\n }\n componentDidUpdate(prevProps, prevState) {\n this.updateScrollSyncers();\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing(false, prevState.sectionRowMaxHeights !== this.state.sectionRowMaxHeights);\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing);\n this.destroyScrollSyncers();\n }\n allowSizing() {\n let now = new Date();\n if (!this.lastSizingDate ||\n now.valueOf() > this.lastSizingDate.valueOf() + config.SCROLLGRID_RESIZE_INTERVAL) {\n this.lastSizingDate = now;\n this.recentSizingCnt = 0;\n return true;\n }\n return (this.recentSizingCnt += 1) <= 10;\n }\n computeShrinkWidths() {\n let colGroupStats = this.compileColGroupStats(this.props.colGroups.map((colGroup) => [colGroup]));\n let [sectionCnt, chunksPerSection] = this.getDims();\n let cnt = sectionCnt * chunksPerSection;\n let shrinkWidths = [];\n colGroupStats.forEach((colGroupStat, i) => {\n if (colGroupStat.hasShrinkCol) {\n let chunkEls = this.chunkElRefs.collect(i, cnt, chunksPerSection); // in one col\n shrinkWidths[i] = computeShrinkWidth(chunkEls);\n }\n });\n return shrinkWidths;\n }\n // has the side effect of grooming rowInnerMaxHeightMap\n // TODO: somehow short-circuit if there are no new height changes\n computeSectionRowMaxHeights() {\n let newHeightMap = new Map();\n let [sectionCnt, chunksPerSection] = this.getDims();\n let sectionRowMaxHeights = [];\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let sectionConfig = this.props.sections[sectionI];\n let assignableHeights = []; // chunk, row\n if (sectionConfig && sectionConfig.syncRowHeights) {\n let rowHeightsByChunk = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI;\n let rowHeights = [];\n let chunkEl = this.chunkElRefs.currentMap[index];\n if (chunkEl) {\n rowHeights = findElements(chunkEl, '.fc-scrollgrid-sync-table tr').map((rowEl) => {\n let max = getRowInnerMaxHeight(rowEl);\n newHeightMap.set(rowEl, max);\n return max;\n });\n }\n else {\n rowHeights = [];\n }\n rowHeightsByChunk.push(rowHeights);\n }\n let rowCnt = rowHeightsByChunk[0].length;\n let isEqualRowCnt = true;\n for (let chunkI = 1; chunkI < chunksPerSection; chunkI += 1) {\n let isOuterContent = sectionConfig.chunks[chunkI] && sectionConfig.chunks[chunkI].outerContent !== undefined; // can be null\n if (!isOuterContent && rowHeightsByChunk[chunkI].length !== rowCnt) { // skip outer content\n isEqualRowCnt = false;\n break;\n }\n }\n if (!isEqualRowCnt) {\n let chunkHeightSums = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n chunkHeightSums.push(sumNumbers(rowHeightsByChunk[chunkI]) + rowHeightsByChunk[chunkI].length);\n }\n let maxTotalSum = Math.max(...chunkHeightSums);\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let rowInChunkCnt = rowHeightsByChunk[chunkI].length;\n let rowInChunkTotalHeight = maxTotalSum - rowInChunkCnt; // subtract border\n // height of non-first row. we do this to avoid rounding, because it's unreliable within a table\n let rowInChunkHeightOthers = Math.floor(rowInChunkTotalHeight / rowInChunkCnt);\n // whatever is leftover goes to the first row\n let rowInChunkHeightFirst = rowInChunkTotalHeight - rowInChunkHeightOthers * (rowInChunkCnt - 1);\n let rowInChunkHeights = [];\n let row = 0;\n if (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightFirst);\n row += 1;\n }\n while (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightOthers);\n row += 1;\n }\n assignableHeights.push(rowInChunkHeights);\n }\n }\n else {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights.push([]);\n }\n for (let row = 0; row < rowCnt; row += 1) {\n let rowHeightsAcrossChunks = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let h = rowHeightsByChunk[chunkI][row];\n if (h != null) { // protect against outerContent\n rowHeightsAcrossChunks.push(h);\n }\n }\n let maxHeight = Math.max(...rowHeightsAcrossChunks);\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights[chunkI].push(maxHeight);\n }\n }\n }\n }\n sectionRowMaxHeights.push(assignableHeights);\n }\n this.rowInnerMaxHeightMap = newHeightMap;\n return sectionRowMaxHeights;\n }\n computeScrollerDims() {\n let scrollbarWidth = getScrollbarWidths();\n let [sectionCnt, chunksPerSection] = this.getDims();\n let sideScrollI = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0;\n let lastSectionI = sectionCnt - 1;\n let currentScrollers = this.clippedScrollerRefs.currentMap;\n let scrollerEls = this.scrollerElRefs.currentMap;\n let forceYScrollbars = false;\n let forceXScrollbars = false;\n let scrollerClientWidths = {};\n let scrollerClientHeights = {};\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) { // along edge\n let index = sectionI * chunksPerSection + sideScrollI;\n let scroller = currentScrollers[index];\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true;\n break;\n }\n }\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) { // along last row\n let index = lastSectionI * chunksPerSection + chunkI;\n let scroller = currentScrollers[index];\n if (scroller && scroller.needsXScrolling()) {\n forceXScrollbars = true;\n break;\n }\n }\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI;\n let scrollerEl = scrollerEls[index];\n if (scrollerEl) {\n // TODO: weird way to get this. need harness b/c doesn't include table borders\n let harnessEl = scrollerEl.parentNode;\n scrollerClientWidths[index] = Math.floor(harnessEl.getBoundingClientRect().width - ((chunkI === sideScrollI && forceYScrollbars)\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n scrollerClientHeights[index] = Math.floor(harnessEl.getBoundingClientRect().height - ((sectionI === lastSectionI && forceXScrollbars)\n ? scrollbarWidth.x // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n }\n }\n }\n return { forceYScrollbars, forceXScrollbars, scrollerClientWidths, scrollerClientHeights };\n }\n updateStickyScrolling() {\n let { isRtl } = this.context;\n let argsByKey = this.scrollerElRefs.getAll().map((scrollEl) => [scrollEl, isRtl]);\n this.getStickyScrolling(argsByKey)\n .forEach((stickyScrolling) => stickyScrolling.updateSize());\n }\n updateScrollSyncers() {\n let [sectionCnt, chunksPerSection] = this.getDims();\n let cnt = sectionCnt * chunksPerSection;\n let scrollElsBySection = {};\n let scrollElsByColumn = {};\n let scrollElMap = this.scrollerElRefs.currentMap;\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let startIndex = sectionI * chunksPerSection;\n let endIndex = startIndex + chunksPerSection;\n scrollElsBySection[sectionI] = collectFromHash(scrollElMap, startIndex, endIndex, 1); // use the filtered\n }\n for (let col = 0; col < chunksPerSection; col += 1) {\n scrollElsByColumn[col] = this.scrollerElRefs.collect(col, cnt, chunksPerSection); // DON'T use the filtered\n }\n this.scrollSyncersBySection = this.getScrollSyncersBySection(scrollElsBySection);\n this.scrollSyncersByColumn = this.getScrollSyncersByColumn(scrollElsByColumn);\n }\n destroyScrollSyncers() {\n mapHash(this.scrollSyncersBySection, destroyScrollSyncer);\n mapHash(this.scrollSyncersByColumn, destroyScrollSyncer);\n }\n getChunkConfigByIndex(index) {\n let chunksPerSection = this.getDims()[1];\n let sectionI = Math.floor(index / chunksPerSection);\n let chunkI = index % chunksPerSection;\n let sectionConfig = this.props.sections[sectionI];\n return sectionConfig && sectionConfig.chunks[chunkI];\n }\n forceScrollLeft(col, scrollLeft) {\n let scrollSyncer = this.scrollSyncersByColumn[col];\n if (scrollSyncer) {\n scrollSyncer.forceScrollLeft(scrollLeft);\n }\n }\n forceScrollTop(sectionI, scrollTop) {\n let scrollSyncer = this.scrollSyncersBySection[sectionI];\n if (scrollSyncer) {\n scrollSyncer.forceScrollTop(scrollTop);\n }\n }\n _handleChunkEl(chunkEl, key) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10));\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.elRef, chunkEl);\n }\n }\n _handleScrollerEl(scrollerEl, key) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10));\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.scrollerElRef, scrollerEl);\n }\n }\n getDims() {\n let sectionCnt = this.props.sections.length;\n let chunksPerSection = sectionCnt ? this.props.sections[0].chunks.length : 0;\n return [sectionCnt, chunksPerSection];\n }\n}\nScrollGrid.addStateEquality({\n shrinkWidths: isArraysEqual,\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n});\nfunction sumNumbers(numbers) {\n let sum = 0;\n for (let n of numbers) {\n sum += n;\n }\n return sum;\n}\nfunction getRowInnerMaxHeight(rowEl) {\n let innerHeights = findElements(rowEl, '.fc-scrollgrid-sync-inner').map(getElHeight);\n if (innerHeights.length) {\n return Math.max(...innerHeights);\n }\n return 0;\n}\nfunction getElHeight(el) {\n return el.offsetHeight; // better to deal with integers, for rounding, for PureComponent\n}\nfunction renderMacroColGroup(colGroupStats, shrinkWidths) {\n let children = colGroupStats.map((colGroupStat, i) => {\n let width = colGroupStat.width;\n if (width === 'shrink') {\n width = colGroupStat.totalColWidth + sanitizeShrinkWidth(shrinkWidths[i]) + 1; // +1 for border :(\n }\n return ( // eslint-disable-next-line react/jsx-key\n createElement(\"col\", { style: { width } }));\n });\n return createElement('colgroup', {}, ...children);\n}\nfunction compileColGroupStat(colGroupConfig) {\n let totalColWidth = sumColProp(colGroupConfig.cols, 'width'); // excludes \"shrink\"\n let totalColMinWidth = sumColProp(colGroupConfig.cols, 'minWidth');\n let hasShrinkCol = hasShrinkWidth(colGroupConfig.cols);\n let allowXScrolling = colGroupConfig.width !== 'shrink' && Boolean(totalColWidth || totalColMinWidth || hasShrinkCol);\n return {\n hasShrinkCol,\n totalColWidth,\n totalColMinWidth,\n allowXScrolling,\n cols: colGroupConfig.cols,\n width: colGroupConfig.width,\n };\n}\nfunction sumColProp(cols, propName) {\n let total = 0;\n for (let col of cols) {\n let val = col[propName];\n if (typeof val === 'number') {\n total += val * (col.span || 1);\n }\n }\n return total;\n}\nconst COL_GROUP_STAT_EQUALITY = {\n cols: isColPropsEqual,\n};\nfunction isColGroupStatsEqual(stat0, stat1) {\n return compareObjs(stat0, stat1, COL_GROUP_STAT_EQUALITY);\n}\n// for memoizers...\nfunction initScrollSyncer(isVertical, ...scrollEls) {\n return new ScrollSyncer(isVertical, scrollEls);\n}\nfunction destroyScrollSyncer(scrollSyncer) {\n scrollSyncer.destroy();\n}\nfunction initStickyScrolling(scrollEl, isRtl) {\n return new StickyScrolling(scrollEl, isRtl);\n}\n\nexport { ScrollGrid };\n","import { createPlugin } from '@fullcalendar/core/index.js';\nimport premiumCommonPlugin from '@fullcalendar/premium-common/index.js';\nimport { ScrollGrid } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\n\nvar index = createPlugin({\n name: '@fullcalendar/scrollgrid',\n premiumReleaseDate: '2023-11-29',\n deps: [premiumCommonPlugin],\n scrollGridImpl: ScrollGrid,\n});\n\nexport { index as default };\n"],"names":["UPGRADE_WINDOW","PRESET_LICENSE_KEYS","CSS","position","zIndex","bottom","left","background","borderColor","borderStyle","borderWidth","padding","fontSize","borderTopRightRadius","OPTION_REFINERS","schedulerLicenseKey","String","index","createPlugin","name","premiumReleaseDate","optionRefiners","viewContainerAppends","context","key","options","currentUrl","window","location","href","test","status","indexOf","parts","match","length","purchaseDate","Date","parseInt","releaseDate","config","mockSchedulerReleaseDate","isValidDate","addDays","processLicenseKey","pluginHooks","createElement","className","style","Fragment","getScrollFromLeftEdge","el","scrollLeft","getComputedStyle","direction","getRtlScrollSystem","scrollWidth","clientWidth","setScrollFromLeftEdge","_rtlScrollSystem","system","document","top","width","height","overflow","innerHTML","body","appendChild","removeElement","detectRtlScrollSystem","StickyScrolling","constructor","scrollEl","isRtl","this","updateSize","els","findElements","elGeoms","viewportWidth","forEach","i","textAlign","elWidth","parentBound","parentWidth","right","applyStyle","assignStickyPositions","queryElGeoms","canvasOrigin","rect","getBoundingClientRect","edges","computeEdges","borderLeft","scrollbarLeft","borderTop","scrollTop","getScrollCanvasOrigin","translateRect","computeInnerRect","parentNode","elRect","computedStyles","naturalBound","parseFloat","push","elHeight","ClippedScroller","BaseComponent","super","arguments","elRef","createRef","state","xScrollbarWidth","yScrollbarWidth","handleScroller","scroller","setRef","props","scrollerRef","handleSizing","overflowY","setState","getYScrollbarWidth","overflowX","getXScrollbarWidth","render","isScrollbarOnLeft","getIsRtlScrollbarOnLeft","overcomeLeft","overcomeRight","overcomeBottom","forPrint","ref","liquid","Scroller","scrollerElRef","maxHeight","liquidIsAbsolute","children","componentDidMount","addResizeHandler","getSnapshotBeforeUpdate","prevProps","simulateScrollLeft","componentDidUpdate","prevState","snapshot","scrollerEl","isPropsEqual","undefined","restoredScrollLeft","componentWillUnmount","removeResizeHandler","needsXScrolling","needsYScrolling","WHEEL_EVENT_NAMES","split","ScrollListener","emitter","Emitter","isScrolling","isTouching","isRecentlyWheeled","isRecentlyScrolled","wheelWaiter","DelayedRunner","_handleWheelWaited","bind","scrollWaiter","_handleScrollWaited","handleScroll","startScroll","trigger","request","handleWheel","handleTouchStart","handleTouchEnd","endScroll","addEventListener","passive","eventName","destroy","removeEventListener","clear","ScrollSyncer","isVertical","scrollEls","isPaused","scrollListeners","map","bindScroller","scrollListener","on","onScroll","isWheel","isTouch","masterEl","assignMaster","otherEl","onScrollEnd","forceScrollLeft","listener","forceScrollTop","SCROLLGRID_RESIZE_INTERVAL","ScrollGrid","compileColGroupStats","memoizeArraylike","compileColGroupStat","isColGroupStatsEqual","renderMicroColGroups","renderMicroColGroup","clippedScrollerRefs","RefMap","scrollerElRefs","_handleScrollerEl","chunkElRefs","_handleChunkEl","scrollSyncersBySection","scrollSyncersByColumn","rowUnstableMap","Map","rowInnerMaxHeightMap","anyRowHeightsChanged","recentSizingCnt","shrinkWidths","forceYScrollbars","forceXScrollbars","scrollerClientWidths","scrollerClientHeights","sectionRowMaxHeights","isForcedResize","sectionRowMaxHeightsChanged","allowSizing","otherState","size","computeSectionRowMaxHeights","Object","assign","computeShrinkWidths","computeScrollerDims","updateStickyScrolling","handleRowHeightChange","rowEl","isStable","delete","innerMaxHeight","getRowInnerMaxHeight","has","get","set","colGroupStats","colGroups","colGroup","microColGroupNodes","stat","cols","classNames","getScrollGridClassNames","getDims","currentConfig","sectionConfigs","sections","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","type","renderSection","isBuggy","getCanVGrowWithinCell","roleAttrs","role","join","colGroupStat","totalColWidth","sanitizeShrinkWidth","renderMacroColGroup","Boolean","sectionConfig","sectionIndex","isHeader","outerContent","getSectionClassNames","chunks","chunkConfig","renderChunk","microColGroupNode","chunkIndex","rowHeights","sectionCnt","chunksPerSection","isVScrollSide","isLastSection","allowXScrolling","allowYScrolling","getAllowYScrolling","chunkVGrow","getSectionHasLiquidHeight","expandRows","tableMinWidth","totalColMinWidth","content","renderChunkContent","tableColGroupNode","clientHeight","syncRowHeights","rowSyncHeights","reportRowHeightChange","getStickyScrolling","initStickyScrolling","getScrollSyncersBySection","memoizeHashlike","initScrollSyncer","destroyScrollSyncer","getScrollSyncersByColumn","updateScrollSyncers","destroyScrollSyncers","now","lastSizingDate","valueOf","cnt","hasShrinkCol","chunkEls","collect","computeShrinkWidth","newHeightMap","sectionI","assignableHeights","rowHeightsByChunk","chunkI","chunkEl","currentMap","max","rowCnt","isEqualRowCnt","row","rowHeightsAcrossChunks","h","Math","chunkHeightSums","sumNumbers","maxTotalSum","rowInChunkCnt","rowInChunkTotalHeight","rowInChunkHeightOthers","floor","rowInChunkHeightFirst","rowInChunkHeights","scrollbarWidth","getScrollbarWidths","sideScrollI","lastSectionI","currentScrollers","scrollerEls","harnessEl","y","x","argsByKey","getAll","stickyScrolling","scrollElsBySection","scrollElsByColumn","scrollElMap","startIndex","endIndex","collectFromHash","col","mapHash","getChunkConfigByIndex","scrollSyncer","numbers","sum","n","innerHeights","getElHeight","offsetHeight","colGroupConfig","sumColProp","hasShrinkWidth","propName","total","val","span","addStateEquality","isArraysEqual","COL_GROUP_STAT_EQUALITY","isColPropsEqual","stat0","stat1","compareObjs","_len","Array","_key","deps","premiumCommonPlugin","scrollGridImpl"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"static/js/2950.ba94676e.chunk.js","mappings":"sNAIA,MAAMA,EAAiB,IAGjBC,EAAsB,CACxB,gCACA,8CAEEC,EAAM,CACRC,SAAU,WACVC,OAAQ,MACRC,OAAQ,MACRC,KAAM,MACNC,WAAY,OACZC,YAAa,OACbC,YAAa,QACbC,YAAa,cACbC,QAAS,UACTC,SAAU,OACVC,qBAAsB,OA0C1B,MAAMC,EAAkB,CACpBC,oBAAqBC,QAGzB,IAAIC,GAAQC,EAAAA,EAAAA,cAAa,CACrBC,KAAM,+BACNC,mBAAoB,aACpBC,eAAgBP,EAChBQ,qBAAsB,CAhD1B,SAA6BC,GACzB,IAAIC,EAAMD,EAAQE,QAAQV,oBACtBW,EAA+B,qBAAXC,OAAyBA,OAAOC,SAASC,KAAO,GACxE,IAkCO,uDAAuDC,KAlC7CJ,GAAa,CAC1B,IAAIK,EAcZ,SAA2BP,EAAKJ,GAC5B,IAA0C,IAAtCnB,EAAoB+B,QAAQR,GAC5B,MAAO,QAEX,MAAMS,GAAST,GAAO,IAAIU,MAAM,qBAChC,GAAID,GAA8B,KAApBA,EAAM,GAAGE,OAAgB,CACnC,MAAMC,EAAe,IAAIC,KAA8B,IAAzBC,SAASL,EAAM,GAAI,KAC3CM,EAAcC,EAAAA,GAAOC,0BAA4BrB,EACvD,IAAIsB,EAAAA,EAAAA,IAAYH,GAAc,CAE1B,OADwBI,EAAAA,EAAAA,GAAQJ,GAAcvC,GACxBoC,EACX,QAEJ,UACX,CACJ,CACA,MAAO,SACX,CA/BqBQ,CAAkBpB,EAAKD,EAAQsB,YAAYzB,oBACxD,GAAe,UAAXW,EACA,OAAQe,EAAAA,EAAAA,GAAc,MAAO,CAAEC,UAAW,qBAAsBC,MAAO9C,GAAmB,aAAX6B,GAA0Be,EAAAA,EAAAA,GAAcG,EAAAA,GAAU,KAC7H,2DACAH,EAAAA,EAAAA,GAAc,IAAK,CAAEjB,KA1BR,6DA0BsC,eAAkBiB,EAAAA,EAAAA,GAAcG,EAAAA,GAAU,KAC7F,iCACAH,EAAAA,EAAAA,GAAc,IAAK,CAAEjB,KA7BT,4DA6BsC,cAE9D,CACA,OAAO,IACX,KC1BA,SAASqB,EAAsBC,GAC3B,IAAIC,EAAaD,EAAGC,WAEpB,GAAiC,QADZzB,OAAO0B,iBAAiBF,GAC1BG,UACf,OAAQC,KACJ,IAAK,WACDH,IAAe,EACnB,IAAK,UACDA,EAAaD,EAAGK,YAAcJ,EAAaD,EAAGM,YAG1D,OAAOL,CACX,CACA,SAASM,EAAsBP,EAAIC,GAE/B,GAAiC,QADZzB,OAAO0B,iBAAiBF,GAC1BG,UACf,OAAQC,KACJ,IAAK,UACDH,EAAaD,EAAGK,YAAcJ,EAC9B,MACJ,IAAK,WACDA,IAAeD,EAAGK,YAAcJ,GAI5CD,EAAGC,WAAaA,CACpB,CAGA,IAAIO,EACJ,SAASJ,IACL,OAAOI,IAAqBA,EAEhC,WACI,IAUIC,EAVAT,EAAKU,SAASf,cAAc,OAChCK,EAAGH,MAAM7C,SAAW,WACpBgD,EAAGH,MAAMc,IAAM,UACfX,EAAGH,MAAMe,MAAQ,MACjBZ,EAAGH,MAAMgB,OAAS,MAClBb,EAAGH,MAAMiB,SAAW,SACpBd,EAAGH,MAAMM,UAAY,MACrBH,EAAGH,MAAMpC,SAAW,QACpBuC,EAAGe,UAAY,IACfL,SAASM,KAAKC,YAAYjB,GAEtBA,EAAGC,WAAa,EAChBQ,EAAS,YAGTT,EAAGC,WAAa,EAEZQ,EADAT,EAAGC,WAAa,EACP,UAGA,YAIjB,OADAiB,EAAAA,EAAAA,IAAclB,GACPS,CACX,CA5BmDU,GACnD,CAsCA,MAAMC,EACFC,WAAAA,CAAYC,EAAUC,GAClBC,KAAKF,SAAWA,EAChBE,KAAKD,MAAQA,EACbC,KAAKC,WAAa,KACd,IAAI,SAAEH,GAAaE,KACfE,GAAMC,EAAAA,EAAAA,IAAaL,EAfX,eAqDxB,SAA+BI,EAAKE,EAASC,GACzCH,EAAII,SAAQ,CAAC9B,EAAI+B,KACb,IAEI5E,GAFA,UAAE6E,EAAS,QAAEC,EAAO,YAAEC,GAAgBN,EAAQG,GAC9CI,EAAcD,EAAYE,MAAQF,EAAY/E,KAI9CA,EAFc,WAAd6E,GACAG,EAAcN,GACNA,EAAgBI,GAAW,EAG5B,IAEXI,EAAAA,EAAAA,IAAWrC,EAAI,CACX7C,OACAiF,MAAOjF,EACPwD,IAAK,GACP,GAEV,CArDY2B,CAAsBZ,EAFRF,KAAKe,aAAab,GACZJ,EAAShB,YACqB,CAE1D,CACAiC,YAAAA,CAAab,GACT,IAAI,SAAEJ,EAAQ,MAAEC,GAAUC,KACtBgB,EA5FZ,SAA+BlB,GAC3B,IAAImB,EAAOnB,EAASoB,wBAChBC,GAAQC,EAAAA,EAAAA,IAAatB,GACzB,MAAO,CACHnE,KAAMsF,EAAKtF,KAAOwF,EAAME,WAAaF,EAAMG,cAAgB/C,EAAsBuB,GACjFX,IAAK8B,EAAK9B,IAAMgC,EAAMI,UAAYzB,EAAS0B,UAEnD,CAqF2BC,CAAsB3B,GACrCM,EAAU,GACd,IAAK,IAAI5B,KAAM0B,EAAK,CAChB,IAAIQ,GAAcgB,EAAAA,EAAAA,KAAcC,EAAAA,EAAAA,IAAiBnD,EAAGoD,YAAY,GAAM,IACrEZ,EAAarF,MAAOqF,EAAa7B,KAC9B0C,EAASrD,EAAG0C,wBACZY,EAAiB9E,OAAO0B,iBAAiBF,GACzCgC,EAAYxD,OAAO0B,iBAAiBF,EAAGoD,YAAYpB,UACnDuB,EAAe,KACD,UAAdvB,EACAA,EAAYT,EAAQ,QAAU,OAEX,QAAdS,IACLA,EAAYT,EAAQ,OAAS,SAED,WAA5B+B,EAAetG,WACfuG,GAAeL,EAAAA,EAAAA,IAAcG,GAASb,EAAarF,MAAQqG,WAAWF,EAAenG,OAAS,IAC7FqF,EAAa7B,KAAO6C,WAAWF,EAAe3C,MAAQ,KAE3DiB,EAAQ6B,KAAK,CACTvB,cACAqB,eACAtB,QAASoB,EAAOzC,MAChB8C,SAAUL,EAAOxC,OACjBmB,aAER,CACA,OAAOJ,CACX,EAsBJ,MAAM+B,UAAwBC,EAAAA,EAC1BvC,WAAAA,GACIwC,SAASC,WACTtC,KAAKuC,OAAQC,EAAAA,EAAAA,MACbxC,KAAKyC,MAAQ,CACTC,gBAAiB,EACjBC,gBAAiB,GAErB3C,KAAK4C,eAAkBC,IACnB7C,KAAK6C,SAAWA,GAChBC,EAAAA,EAAAA,GAAO9C,KAAK+C,MAAMC,YAAaH,EAAS,EAE5C7C,KAAKiD,aAAe,KAChB,IAAI,MAAEF,GAAU/C,KACQ,kBAApB+C,EAAMG,WACNlD,KAAKmD,SAAS,CAAER,gBAAiB3C,KAAK6C,SAASO,uBAE3B,kBAApBL,EAAMM,WACNrD,KAAKmD,SAAS,CAAET,gBAAiB1C,KAAK6C,SAASS,sBACnD,CAER,CACAC,MAAAA,GACI,IAAI,MAAER,EAAK,MAAEN,EAAK,QAAE7F,GAAYoD,KAC5BwD,EAAoB5G,EAAQmD,QAAS0D,EAAAA,EAAAA,MACrCC,EAAe,EACfC,EAAgB,EAChBC,EAAiB,GACjB,UAAEP,EAAS,UAAEH,GAAcH,EAkB/B,OAjBIA,EAAMc,WACNR,EAAY,UACZH,EAAY,WAEE,kBAAdG,IACAO,EAAiBnB,EAAMC,iBAET,kBAAdQ,GAC6B,MAAzBT,EAAME,kBACFa,EACAE,EAAejB,EAAME,gBAGrBgB,EAAgBlB,EAAME,kBAI1BxE,EAAAA,EAAAA,GAAc,MAAO,CAAE2F,IAAK9D,KAAKuC,MAAOnE,UAAW,uBAAyB2E,EAAMgB,OAAS,8BAAgC,MAC/H5F,EAAAA,EAAAA,GAAc6F,EAAAA,GAAU,CAAEF,IAAK9D,KAAK4C,eAAgBL,MAAOvC,KAAK+C,MAAMkB,cAAeZ,UAAyB,kBAAdA,EAAgC,SAAWA,EAAWH,UAAyB,kBAAdA,EAAgC,SAAWA,EAAWQ,aAAcA,EAAcC,cAAeA,EAAeC,eAAgBA,EAAgBM,UAAsC,kBAApBnB,EAAMmB,UAC9TnB,EAAMmB,WAA2B,kBAAdb,EAAgCZ,EAAMC,gBAAkB,GAC5E,GAAIqB,OAAQhB,EAAMgB,OAAQI,kBAAkB,GAAQpB,EAAMqB,UAC5E,CACAC,iBAAAA,GACIrE,KAAKiD,eACLjD,KAAKpD,QAAQ0H,iBAAiBtE,KAAKiD,aACvC,CACAsB,uBAAAA,CAAwBC,GACpB,OAAIxE,KAAK+C,MAAMc,WAAaW,EAAUX,SAC3B,CAAEY,mBAAoBzE,KAAK6C,SAASrE,GAAGC,YAE3C,CAAC,CACZ,CACAiG,kBAAAA,CAAmBF,EAAWG,EAAWC,GACrC,MAAM,MAAE7B,EAAOF,UAAYrE,GAAIqG,IAAiB7E,KAIhD,IAHK8E,EAAAA,EAAAA,GAAaN,EAAWzB,IACzB/C,KAAKiD,oBAE2B8B,IAAhCH,EAASH,mBACTI,EAAWxG,MAAM1C,MAAQiJ,EAASH,mBAAqB,UAEtD,IAAK1B,EAAMc,UAAYW,EAAUX,SAAU,CAC5C,MAAMmB,GAAsBrH,SAASkH,EAAWxG,MAAM1C,MACtDkJ,EAAWxG,MAAM1C,KAAO,GACxBkJ,EAAWpG,WAAauG,CAC5B,CACJ,CACAC,oBAAAA,GACIjF,KAAKpD,QAAQsI,oBAAoBlF,KAAKiD,aAC1C,CACAkC,eAAAA,GACI,OAAOnF,KAAK6C,SAASsC,iBACzB,CACAC,eAAAA,GACI,OAAOpF,KAAK6C,SAASuC,iBACzB,EAGJ,MAAMC,EAAoB,sDAAsDC,MAAM,KAItF,MAAMC,EACF1F,WAAAA,CAAYrB,GACRwB,KAAKxB,GAAKA,EACVwB,KAAKwF,QAAU,IAAIC,EAAAA,EACnBzF,KAAK0F,aAAc,EACnB1F,KAAK2F,YAAa,EAClB3F,KAAK4F,mBAAoB,EACzB5F,KAAK6F,oBAAqB,EAC1B7F,KAAK8F,YAAc,IAAIC,EAAAA,EAAc/F,KAAKgG,mBAAmBC,KAAKjG,OAClEA,KAAKkG,aAAe,IAAIH,EAAAA,EAAc/F,KAAKmG,oBAAoBF,KAAKjG,OAGpEA,KAAKoG,aAAe,KAChBpG,KAAKqG,cACLrG,KAAKwF,QAAQc,QAAQ,SAAUtG,KAAK4F,kBAAmB5F,KAAK2F,YAC5D3F,KAAK6F,oBAAqB,EAC1B7F,KAAKkG,aAAaK,QAAQ,IAAI,EAGlCvG,KAAKwG,YAAc,KACfxG,KAAK4F,mBAAoB,EACzB5F,KAAK8F,YAAYS,QAAQ,IAAI,EAGjCvG,KAAKyG,iBAAmB,KACpBzG,KAAK2F,YAAa,CAAI,EAE1B3F,KAAK0G,eAAiB,KAClB1G,KAAK2F,YAAa,EAGb3F,KAAK6F,oBACN7F,KAAK2G,WACT,EAEJnI,EAAGoI,iBAAiB,SAAU5G,KAAKoG,cACnC5H,EAAGoI,iBAAiB,aAAc5G,KAAKyG,iBAAkB,CAAEI,SAAS,IACpErI,EAAGoI,iBAAiB,WAAY5G,KAAK0G,gBACrC,IAAK,IAAII,KAAazB,EAClB7G,EAAGoI,iBAAiBE,EAAW9G,KAAKwG,YAE5C,CACAO,OAAAA,GACI,IAAI,GAAEvI,GAAOwB,KACbxB,EAAGwI,oBAAoB,SAAUhH,KAAKoG,cACtC5H,EAAGwI,oBAAoB,aAAchH,KAAKyG,iBAAkB,CAAEI,SAAS,IACvErI,EAAGwI,oBAAoB,WAAYhH,KAAK0G,gBACxC,IAAK,IAAII,KAAazB,EAClB7G,EAAGwI,oBAAoBF,EAAW9G,KAAKwG,YAE/C,CAGAH,WAAAA,GACSrG,KAAK0F,cACN1F,KAAK0F,aAAc,EACnB1F,KAAKwF,QAAQc,QAAQ,cAAetG,KAAK4F,kBAAmB5F,KAAK2F,YAEzE,CACAgB,SAAAA,GACQ3G,KAAK0F,cACL1F,KAAKwF,QAAQc,QAAQ,aACrBtG,KAAK0F,aAAc,EACnB1F,KAAK6F,oBAAqB,EAC1B7F,KAAK4F,mBAAoB,EACzB5F,KAAKkG,aAAae,QAClBjH,KAAK8F,YAAYmB,QAEzB,CACAd,mBAAAA,GACInG,KAAK6F,oBAAqB,EAGrB7F,KAAK2F,YACN3F,KAAK2G,WAEb,CACAX,kBAAAA,GACIhG,KAAK4F,mBAAoB,CAC7B,EAGJ,MAAMsB,EACFrH,WAAAA,CAAYsH,EAAYC,GACpBpH,KAAKmH,WAAaA,EAClBnH,KAAKoH,UAAYA,EACjBpH,KAAKqH,UAAW,EAChBrH,KAAKsH,gBAAkBF,EAAUG,KAAK/I,GAAOwB,KAAKwH,aAAahJ,IACnE,CACAuI,OAAAA,GACI,IAAK,IAAIU,KAAkBzH,KAAKsH,gBAC5BG,EAAeV,SAEvB,CACAS,YAAAA,CAAahJ,GACT,IAAI,UAAE4I,EAAS,WAAED,GAAenH,KAC5ByH,EAAiB,IAAIlC,EAAe/G,GA2BxC,OAFAiJ,EAAejC,QAAQkC,GAAG,UAxBTC,CAACC,EAASC,KACvB,IAAK7H,KAAKqH,aACDrH,KAAK8H,UAAa9H,KAAK8H,WAAatJ,IAAOoJ,GAAWC,KACvD7H,KAAK+H,aAAavJ,GAElBwB,KAAK8H,WAAatJ,GAClB,IAAK,IAAIwJ,KAAWZ,EACZY,IAAYxJ,IACR2I,EACAa,EAAQxG,UAAYhD,EAAGgD,UAGvBwG,EAAQvJ,WAAaD,EAAGC,WAK5C,IAQJgJ,EAAejC,QAAQkC,GAAG,aANNO,KACZjI,KAAK8H,WAAatJ,IAClBwB,KAAK8H,SAAW,KACpB,IAIGL,CACX,CACAM,YAAAA,CAAavJ,GACTwB,KAAK8H,SAAWtJ,EAChB,IAAK,IAAIiJ,KAAkBzH,KAAKsH,gBACxBG,EAAejJ,KAAOA,GACtBiJ,EAAed,WAG3B,CAIAuB,eAAAA,CAAgBzJ,GACZuB,KAAKqH,UAAW,EAChB,IAAK,IAAIc,KAAYnI,KAAKsH,gBACtBvI,EAAsBoJ,EAAS3J,GAAIC,GAEvCuB,KAAKqH,UAAW,CACpB,CACAe,cAAAA,CAAejJ,GACXa,KAAKqH,UAAW,EAChB,IAAK,IAAIc,KAAYnI,KAAKsH,gBACtBa,EAAS3J,GAAGgD,UAAYrC,EAE5Ba,KAAKqH,UAAW,CACpB,EAGJxJ,EAAAA,GAAOwK,2BAA6B,IAKpC,MAAMC,UAAmBlG,EAAAA,EACrBvC,WAAAA,GACIwC,SAASC,WACTtC,KAAKuI,sBAAuBC,EAAAA,EAAAA,IAAiBC,EAAqBC,GAClE1I,KAAK2I,sBAAuBH,EAAAA,EAAAA,IAAiBI,EAAAA,IAC7C5I,KAAK6I,oBAAsB,IAAIC,EAAAA,GAE/B9I,KAAK+I,eAAiB,IAAID,EAAAA,GAAO9I,KAAKgJ,kBAAkB/C,KAAKjG,OAC7DA,KAAKiJ,YAAc,IAAIH,EAAAA,GAAO9I,KAAKkJ,eAAejD,KAAKjG,OACvDA,KAAKmJ,uBAAyB,CAAC,EAC/BnJ,KAAKoJ,sBAAwB,CAAC,EAE9BpJ,KAAKqJ,eAAiB,IAAIC,IAC1BtJ,KAAKuJ,qBAAuB,IAAID,IAChCtJ,KAAKwJ,sBAAuB,EAC5BxJ,KAAKyJ,gBAAkB,EACvBzJ,KAAKyC,MAAQ,CACTiH,aAAc,GACdC,kBAAkB,EAClBC,kBAAkB,EAClBC,qBAAsB,CAAC,EACvBC,sBAAuB,CAAC,EACxBC,qBAAsB,IAE1B/J,KAAKiD,aAAe,CAAC+G,EAAgBC,KACjC,IAAKjK,KAAKkK,cACN,OAECD,IACDjK,KAAKwJ,sBAAuB,GAEhC,IAAIW,EAAa,CAAC,GAEdH,IAAoBC,IAAgCjK,KAAKqJ,eAAee,QACxED,EAAWJ,qBAAuB/J,KAAKqK,+BAE3CrK,KAAKmD,SAASmH,OAAOC,OAAOD,OAAOC,OAAO,CAAEb,aAAc1J,KAAKwK,uBAAyBxK,KAAKyK,uBAAwBN,IAAa,KACzHnK,KAAKqJ,eAAee,MACrBpK,KAAK0K,uBACT,GACF,EAEN1K,KAAK2K,sBAAwB,CAACC,EAAOC,KACjC,IAAI,eAAExB,EAAc,qBAAEE,GAAyBvJ,KAC/C,GAAK6K,EAGA,CACDxB,EAAeyB,OAAOF,GACtB,IAAIG,EAAiBC,EAAqBJ,GACrCrB,EAAqB0B,IAAIL,IAAUrB,EAAqB2B,IAAIN,KAAWG,IACxExB,EAAqB4B,IAAIP,EAAOG,GAChC/K,KAAKwJ,sBAAuB,IAE3BH,EAAee,MAAQpK,KAAKwJ,uBAC7BxJ,KAAKwJ,sBAAuB,EAC5BxJ,KAAKmD,SAAS,CACV4G,qBAAsB/J,KAAKqK,gCAGvC,MAfIhB,EAAe8B,IAAIP,GAAO,EAe9B,CAER,CACArH,MAAAA,GACI,IAAI,MAAER,EAAK,MAAEN,EAAK,QAAE7F,GAAYoD,MAC5B,aAAE0J,GAAiBjH,EACnB2I,EAAgBpL,KAAKuI,qBAAqBxF,EAAMsI,UAAU9D,KAAK+D,GAAa,CAACA,MAC7EC,EAAqBvL,KAAK2I,qBAAqByC,EAAc7D,KAAI,CAACiE,EAAMjL,IAAM,CAACiL,EAAKC,KAAM/B,EAAanJ,OACvGmL,GAAaC,EAAAA,EAAAA,IAAwB5I,EAAMgB,OAAQnH,GACvDoD,KAAK4L,UAEL,IAGIC,EAHAC,EAAiB/I,EAAMgJ,SACvBC,EAAYF,EAAetO,OAC3ByO,EAAU,EAEVC,EAAmB,GACnBC,EAAmB,GACnBC,EAAmB,GACvB,KAAOH,EAAUD,GAAgE,YAAlDH,EAAgBC,EAAeG,IAAUI,MACpEH,EAAiBjK,KAAKjC,KAAKsM,cAAcT,EAAeI,EAASb,EAAeG,EAAoB9I,EAAMsH,sBAAsB,IAChIkC,GAAW,EAEf,KAAOA,EAAUD,GAAgE,UAAlDH,EAAgBC,EAAeG,IAAUI,MACpEF,EAAiBlK,KAAKjC,KAAKsM,cAAcT,EAAeI,EAASb,EAAeG,EAAoB9I,EAAMsH,sBAAsB,IAChIkC,GAAW,EAEf,KAAOA,EAAUD,GAAgE,YAAlDH,EAAgBC,EAAeG,IAAUI,MACpED,EAAiBnK,KAAKjC,KAAKsM,cAAcT,EAAeI,EAASb,EAAeG,EAAoB9I,EAAMsH,sBAAsB,IAChIkC,GAAW,EAEf,MAAMM,IAAWC,EAAAA,EAAAA,MACXC,EAAY,CAAEC,KAAM,YAC1B,OAAOvO,EAAAA,EAAAA,GAAc,QAAS,CAC1B2F,IAAKf,EAAMR,MACXmK,KAAM,OACNtO,UAAWsN,EAAWiB,KAAK,MAqTvC,SAA6BvB,EAAe1B,GACxC,IAAItF,EAAWgH,EAAc7D,KAAI,CAACqF,EAAcrM,KAC5C,IAAInB,EAAQwN,EAAaxN,MAIzB,MAHc,WAAVA,IACAA,EAAQwN,EAAaC,eAAgBC,EAAAA,EAAAA,IAAoBpD,EAAanJ,IAAM,IAGhFpC,EAAAA,EAAAA,GAAc,MAAO,CAAEE,MAAO,CAAEe,UAAU,IAE9C,OAAOjB,EAAAA,EAAAA,GAAc,WAAY,CAAC,KAAMiG,EAC5C,CA9TW2I,CAAoB3B,EAAe1B,GAAesD,SAAST,GAAWL,EAAiB1O,UAAWW,EAAAA,EAAAA,GAAc,QAASsO,KAAcP,GAAmBc,SAAST,GAAWJ,EAAiB3O,UAAWW,EAAAA,EAAAA,GAAc,QAASsO,KAAcN,GAAmBa,SAAST,GAAWH,EAAiB5O,UAAWW,EAAAA,EAAAA,GAAc,QAASsO,KAAcL,GAAmBG,IAAWpO,EAAAA,EAAAA,GAAc,QAASsO,KAAcP,KAAqBC,KAAqBC,GAC3c,CACAE,aAAAA,CAAcW,EAAeC,EAAc9B,EAAeG,EAAoBxB,EAAsBoD,GAChG,MAAI,iBAAkBF,GACV9O,EAAAA,EAAAA,GAAcG,EAAAA,GAAU,CAAEzB,IAAKoQ,EAAcpQ,KAAOoQ,EAAcG,eAEtEjP,EAAAA,EAAAA,GAAc,KAAM,CAAEtB,IAAKoQ,EAAcpQ,IAAK6P,KAAM,eAAgBtO,WAAWiP,EAAAA,EAAAA,IAAqBJ,EAAejN,KAAK+C,MAAMgB,QAAQ4I,KAAK,MAAQM,EAAcK,OAAO/F,KAAI,CAACgG,EAAahN,IAAMP,KAAKwN,YAAYP,EAAeC,EAAc9B,EAAc7K,GAAIgL,EAAmBhL,GAAIgN,EAAahN,GAAIwJ,EAAqBmD,IAAiB,IAAI3M,IAAM,GAAI4M,KACxW,CACAK,WAAAA,CAAYP,EAAeC,EAAcN,EAAca,EAAmBF,EAAaG,EAAYC,EAAYR,GAC3G,GAAI,iBAAkBI,EAClB,OAAQpP,EAAAA,EAAAA,GAAcG,EAAAA,GAAU,CAAEzB,IAAK0Q,EAAY1Q,KAAO0Q,EAAYH,cAE1E,IAAI,MAAE3K,GAAUzC,MACZ,qBAAE6J,EAAoB,sBAAEC,GAA0BrH,GACjDmL,EAAYC,GAAoB7N,KAAK4L,UACtCtP,EAAQ4Q,EAAeW,EAAmBH,EAE1CI,EAAgBJ,MADI1N,KAAKpD,QAAQmD,QAAS0D,EAAAA,EAAAA,MAA6BoK,EAAmB,EAAI,GAE9FE,EAAgBb,IAAiBU,EAAa,EAC9ChE,EAAmBmE,GAAiBtL,EAAMmH,iBAC1CD,EAAmBmE,GAAiBrL,EAAMkH,iBAC1CqE,EAAkBpB,GAAgBA,EAAaoB,gBAC/CC,GAAkBC,EAAAA,EAAAA,IAAmBlO,KAAK+C,MAAOkK,GACjDkB,GAAaC,EAAAA,EAAAA,IAA0BpO,KAAK+C,MAAOkK,GACnDoB,EAAapB,EAAcoB,YAAcF,EACzCG,EAAiB1B,GAAgBA,EAAa2B,kBAAqB,GACnEC,GAAUC,EAAAA,EAAAA,IAAmBxB,EAAeM,EAAa,CACzDmB,kBAAmBjB,EACnBa,gBACAxP,iBAA6CiG,IAAhC8E,EAAqBvN,GAAuBuN,EAAqBvN,GAAS,KACvFqS,kBAA+C5J,IAAjC+E,EAAsBxN,GAAuBwN,EAAsBxN,GAAS,KAC1F+R,aACAO,eAAgB5B,QAAQC,EAAc2B,gBACtCC,eAAgBlB,EAChBmB,sBAAuB9O,KAAK2K,uBAC7BwC,GACC9J,EAAYuG,EAAoBmE,EAAgB,SAAW,gBAC1DC,EACID,EAAgB,OAAS,gBADX,SAEnB7K,EAAYyG,EAAoBmE,EAAgB,SAAW,gBAC1DG,EACIH,EAAgB,OAAS,gBADX,SAKvB,OADAU,GAAWrQ,EAAAA,EAAAA,GAAcgE,EAAiB,CAAE2B,IAAK9D,KAAK6I,oBAAoBrG,UAAUlG,GAAQ2H,cAAejE,KAAK+I,eAAevG,UAAUlG,GAAQ+G,UAAWA,EAAWH,UAAWA,EAAWW,SAAU7D,KAAK+C,MAAMc,SAAUE,OAAQoK,EAAYjK,UAAW+I,EAAc/I,WAAasK,IAC/QrQ,EAAAA,EAAAA,GAAcgP,EAAW,KAAO,KAAM,CACzCtQ,IAAK0Q,EAAY1Q,IACjBiH,IAAK9D,KAAKiJ,YAAYzG,UAAUlG,GAChCoQ,KAAM,gBACP8B,EACP,CACAnK,iBAAAA,GACIrE,KAAK+O,oBAAqBvG,EAAAA,EAAAA,IAAiBwG,GAC3ChP,KAAKiP,2BAA4BC,EAAAA,EAAAA,IAAgBC,EAAiBlJ,KAAKjG,MAAM,GAAO,KAAMoP,GAC1FpP,KAAKqP,0BAA2BH,EAAAA,EAAAA,IAAgBC,EAAiBlJ,KAAKjG,MAAM,GAAQ,KAAMoP,GAC1FpP,KAAKsP,sBACLtP,KAAKiD,cAAa,GAClBjD,KAAKpD,QAAQ0H,iBAAiBtE,KAAKiD,aACvC,CACAyB,kBAAAA,CAAmBF,EAAWG,GAC1B3E,KAAKsP,sBAELtP,KAAKiD,cAAa,EAAO0B,EAAUoF,uBAAyB/J,KAAKyC,MAAMsH,qBAC3E,CACA9E,oBAAAA,GACIjF,KAAKpD,QAAQsI,oBAAoBlF,KAAKiD,cACtCjD,KAAKuP,sBACT,CACArF,WAAAA,GACI,IAAIsF,EAAM,IAAI9R,KACd,OAAKsC,KAAKyP,gBACND,EAAIE,UAAY1P,KAAKyP,eAAeC,UAAY7R,EAAAA,GAAOwK,4BACvDrI,KAAKyP,eAAiBD,EACtBxP,KAAKyJ,gBAAkB,GAChB,IAEHzJ,KAAKyJ,iBAAmB,IAAM,EAC1C,CACAe,mBAAAA,GACI,IAAIY,EAAgBpL,KAAKuI,qBAAqBvI,KAAK+C,MAAMsI,UAAU9D,KAAK+D,GAAa,CAACA,OACjFsC,EAAYC,GAAoB7N,KAAK4L,UACtC+D,EAAM/B,EAAaC,EACnBnE,EAAe,GAOnB,OANA0B,EAAc9K,SAAQ,CAACsM,EAAcrM,KACjC,GAAIqM,EAAagD,aAAc,CAC3B,IAAIC,EAAW7P,KAAKiJ,YAAY6G,QAAQvP,EAAGoP,EAAK9B,GAChDnE,EAAanJ,IAAKwP,EAAAA,EAAAA,IAAmBF,EACzC,KAEGnG,CACX,CAGAW,2BAAAA,GACI,IAAI2F,EAAe,IAAI1G,KAClBsE,EAAYC,GAAoB7N,KAAK4L,UACtC7B,EAAuB,GAC3B,IAAK,IAAIkG,EAAW,EAAGA,EAAWrC,EAAYqC,GAAY,EAAG,CACzD,IAAIhD,EAAgBjN,KAAK+C,MAAMgJ,SAASkE,GACpCC,EAAoB,GACxB,GAAIjD,GAAiBA,EAAc2B,eAAgB,CAC/C,IAAIuB,EAAoB,GACxB,IAAK,IAAIC,EAAS,EAAGA,EAASvC,EAAkBuC,GAAU,EAAG,CACzD,IAAI9T,EAAQ2T,EAAWpC,EAAmBuC,EACtCzC,EAAa,GACb0C,EAAUrQ,KAAKiJ,YAAYqH,WAAWhU,GAEtCqR,EADA0C,GACalQ,EAAAA,EAAAA,IAAakQ,EAAS,gCAAgC9I,KAAKqD,IACpE,IAAI2F,EAAMvF,EAAqBJ,GAE/B,OADAoF,EAAa7E,IAAIP,EAAO2F,GACjBA,CAAG,IAID,GAEjBJ,EAAkBlO,KAAK0L,EAC3B,CACA,IAAI6C,EAASL,EAAkB,GAAG3S,OAC9BiT,GAAgB,EACpB,IAAK,IAAIL,EAAS,EAAGA,EAASvC,EAAkBuC,GAAU,EAAG,CAEzD,KADqBnD,EAAcK,OAAO8C,SAAyDrL,IAA9CkI,EAAcK,OAAO8C,GAAQhD,eAC3D+C,EAAkBC,GAAQ5S,SAAWgT,EAAQ,CAChEC,GAAgB,EAChB,KACJ,CACJ,CACA,GAAKA,EA0BA,CACD,IAAK,IAAIL,EAAS,EAAGA,EAASvC,EAAkBuC,GAAU,EACtDF,EAAkBjO,KAAK,IAE3B,IAAK,IAAIyO,EAAM,EAAGA,EAAMF,EAAQE,GAAO,EAAG,CACtC,IAAIC,EAAyB,GAC7B,IAAK,IAAIP,EAAS,EAAGA,EAASvC,EAAkBuC,GAAU,EAAG,CACzD,IAAIQ,EAAIT,EAAkBC,GAAQM,GACzB,MAALE,GACAD,EAAuB1O,KAAK2O,EAEpC,CACA,IAAI1M,EAAY2M,KAAKN,OAAOI,GAC5B,IAAK,IAAIP,EAAS,EAAGA,EAASvC,EAAkBuC,GAAU,EACtDF,EAAkBE,GAAQnO,KAAKiC,EAEvC,CACJ,KA3CoB,CAChB,IAAI4M,EAAkB,GACtB,IAAK,IAAIV,EAAS,EAAGA,EAASvC,EAAkBuC,GAAU,EACtDU,EAAgB7O,KAAK8O,EAAWZ,EAAkBC,IAAWD,EAAkBC,GAAQ5S,QAE3F,IAAIwT,EAAcH,KAAKN,OAAOO,GAC9B,IAAK,IAAIV,EAAS,EAAGA,EAASvC,EAAkBuC,GAAU,EAAG,CACzD,IAAIa,EAAgBd,EAAkBC,GAAQ5S,OAC1C0T,EAAwBF,EAAcC,EAEtCE,EAAyBN,KAAKO,MAAMF,EAAwBD,GAE5DI,EAAwBH,EAAwBC,GAA0BF,EAAgB,GAC1FK,EAAoB,GACpBZ,EAAM,EAKV,IAJIA,EAAMO,IACNK,EAAkBrP,KAAKoP,GACvBX,GAAO,GAEJA,EAAMO,GACTK,EAAkBrP,KAAKkP,GACvBT,GAAO,EAEXR,EAAkBjO,KAAKqP,EAC3B,CACJ,CAmBJ,CACAvH,EAAqB9H,KAAKiO,EAC9B,CAEA,OADAlQ,KAAKuJ,qBAAuByG,EACrBjG,CACX,CACAU,mBAAAA,GACI,IAAI8G,GAAiBC,EAAAA,EAAAA,OAChB5D,EAAYC,GAAoB7N,KAAK4L,UACtC6F,GAAgBzR,KAAKpD,QAAQmD,QAAS0D,EAAAA,EAAAA,MAA6BoK,EAAmB,EAAI,EAC1F6D,EAAe9D,EAAa,EAC5B+D,EAAmB3R,KAAK6I,oBAAoByH,WAC5CsB,EAAc5R,KAAK+I,eAAeuH,WAClC3G,GAAmB,EACnBC,GAAmB,EACnBC,EAAuB,CAAC,EACxBC,EAAwB,CAAC,EAC7B,IAAK,IAAImG,EAAW,EAAGA,EAAWrC,EAAYqC,GAAY,EAAG,CACzD,IACIpN,EAAW8O,EADH1B,EAAWpC,EAAmB4D,GAE1C,GAAI5O,GAAYA,EAASuC,kBAAmB,CACxCuE,GAAmB,EACnB,KACJ,CACJ,CACA,IAAK,IAAIyG,EAAS,EAAGA,EAASvC,EAAkBuC,GAAU,EAAG,CACzD,IACIvN,EAAW8O,EADHD,EAAe7D,EAAmBuC,GAE9C,GAAIvN,GAAYA,EAASsC,kBAAmB,CACxCyE,GAAmB,EACnB,KACJ,CACJ,CACA,IAAK,IAAIqG,EAAW,EAAGA,EAAWrC,EAAYqC,GAAY,EACtD,IAAK,IAAIG,EAAS,EAAGA,EAASvC,EAAkBuC,GAAU,EAAG,CACzD,IAAI9T,EAAQ2T,EAAWpC,EAAmBuC,EACtCvL,EAAa+M,EAAYtV,GAC7B,GAAIuI,EAAY,CAEZ,IAAIgN,EAAYhN,EAAWjD,WAC3BiI,EAAqBvN,GAASuU,KAAKO,MAAMS,EAAU3Q,wBAAwB9B,OAAUgR,IAAWqB,GAAe9H,EACzG4H,EAAeO,EACf,IACNhI,EAAsBxN,GAASuU,KAAKO,MAAMS,EAAU3Q,wBAAwB7B,QAAW4Q,IAAayB,GAAgB9H,EAC9G2H,EAAeQ,EACf,GACV,CACJ,CAEJ,MAAO,CAAEpI,mBAAkBC,mBAAkBC,uBAAsBC,wBACvE,CACAY,qBAAAA,GACI,IAAI,MAAE3K,GAAUC,KAAKpD,QACjBoV,EAAYhS,KAAK+I,eAAekJ,SAAS1K,KAAKzH,GAAa,CAACA,EAAUC,KAC1EC,KAAK+O,mBAAmBiD,GACnB1R,SAAS4R,GAAoBA,EAAgBjS,cACtD,CACAqP,mBAAAA,GACI,IAAK1B,EAAYC,GAAoB7N,KAAK4L,UACtC+D,EAAM/B,EAAaC,EACnBsE,EAAqB,CAAC,EACtBC,EAAoB,CAAC,EACrBC,EAAcrS,KAAK+I,eAAeuH,WACtC,IAAK,IAAIL,EAAW,EAAGA,EAAWrC,EAAYqC,GAAY,EAAG,CACzD,IAAIqC,EAAarC,EAAWpC,EACxB0E,EAAWD,EAAazE,EAC5BsE,EAAmBlC,IAAYuC,EAAAA,EAAAA,IAAgBH,EAAaC,EAAYC,EAAU,EACtF,CACA,IAAK,IAAIE,EAAM,EAAGA,EAAM5E,EAAkB4E,GAAO,EAC7CL,EAAkBK,GAAOzS,KAAK+I,eAAe+G,QAAQ2C,EAAK9C,EAAK9B,GAEnE7N,KAAKmJ,uBAAyBnJ,KAAKiP,0BAA0BkD,GAC7DnS,KAAKoJ,sBAAwBpJ,KAAKqP,yBAAyB+C,EAC/D,CACA7C,oBAAAA,IACImD,EAAAA,EAAAA,GAAQ1S,KAAKmJ,uBAAwBiG,IACrCsD,EAAAA,EAAAA,GAAQ1S,KAAKoJ,sBAAuBgG,EACxC,CACAuD,qBAAAA,CAAsBrW,GAClB,IAAIuR,EAAmB7N,KAAK4L,UAAU,GAClCqE,EAAWY,KAAKO,MAAM9U,EAAQuR,GAC9BuC,EAAS9T,EAAQuR,EACjBZ,EAAgBjN,KAAK+C,MAAMgJ,SAASkE,GACxC,OAAOhD,GAAiBA,EAAcK,OAAO8C,EACjD,CACAlI,eAAAA,CAAgBuK,EAAKhU,GACjB,IAAImU,EAAe5S,KAAKoJ,sBAAsBqJ,GAC1CG,GACAA,EAAa1K,gBAAgBzJ,EAErC,CACA2J,cAAAA,CAAe6H,EAAUzO,GACrB,IAAIoR,EAAe5S,KAAKmJ,uBAAuB8G,GAC3C2C,GACAA,EAAaxK,eAAe5G,EAEpC,CACA0H,cAAAA,CAAemH,EAASxT,GACpB,IAAI0Q,EAAcvN,KAAK2S,sBAAsBhV,SAASd,EAAK,KACvD0Q,IACAzK,EAAAA,EAAAA,GAAOyK,EAAYhL,MAAO8N,EAElC,CACArH,iBAAAA,CAAkBnE,EAAYhI,GAC1B,IAAI0Q,EAAcvN,KAAK2S,sBAAsBhV,SAASd,EAAK,KACvD0Q,IACAzK,EAAAA,EAAAA,GAAOyK,EAAYtJ,cAAeY,EAE1C,CACA+G,OAAAA,GACI,IAAIgC,EAAa5N,KAAK+C,MAAMgJ,SAASvO,OAErC,MAAO,CAACoQ,EADeA,EAAa5N,KAAK+C,MAAMgJ,SAAS,GAAGuB,OAAO9P,OAAS,EAE/E,EAOJ,SAASuT,EAAW8B,GAChB,IAAIC,EAAM,EACV,IAAK,IAAIC,KAAKF,EACVC,GAAOC,EAEX,OAAOD,CACX,CACA,SAAS9H,EAAqBJ,GAC1B,IAAIoI,GAAe7S,EAAAA,EAAAA,IAAayK,EAAO,6BAA6BrD,IAAI0L,GACxE,OAAID,EAAaxV,OACNqT,KAAKN,OAAOyC,GAEhB,CACX,CACA,SAASC,EAAYzU,GACjB,OAAOA,EAAG0U,YACd,CAYA,SAASzK,EAAoB0K,GACzB,IAAItG,EAAgBuG,EAAWD,EAAe1H,KAAM,SAChD8C,EAAmB6E,EAAWD,EAAe1H,KAAM,YACnDmE,GAAeyD,EAAAA,EAAAA,IAAeF,EAAe1H,MAEjD,MAAO,CACHmE,eACA/C,gBACA0B,mBACAP,gBAL2C,WAAzBmF,EAAe/T,OAAsB4N,QAAQH,GAAiB0B,GAAoBqB,GAMpGnE,KAAM0H,EAAe1H,KACrBrM,MAAO+T,EAAe/T,MAE9B,CACA,SAASgU,EAAW3H,EAAM6H,GACtB,IAAIC,EAAQ,EACZ,IAAK,IAAId,KAAOhH,EAAM,CAClB,IAAI+H,EAAMf,EAAIa,GACK,kBAARE,IACPD,GAASC,GAAOf,EAAIgB,MAAQ,GAEpC,CACA,OAAOF,CACX,CAxDAjL,EAAWoL,iBAAiB,CACxBhK,aAAciK,EAAAA,EACd9J,qBAAsB/E,EAAAA,EACtBgF,sBAAuBhF,EAAAA,IAsD3B,MAAM8O,EAA0B,CAC5BnI,KAAMoI,EAAAA,IAEV,SAASnL,EAAqBoL,EAAOC,GACjC,OAAOC,EAAAA,EAAAA,IAAYF,EAAOC,EAAOH,EACrC,CAEA,SAASzE,EAAiBhI,GAA0B,QAAA8M,EAAA3R,UAAA9E,OAAX4J,EAAS,IAAA8M,MAAAD,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAT/M,EAAS+M,EAAA,GAAA7R,UAAA6R,GAC9C,OAAO,IAAIjN,EAAaC,EAAYC,EACxC,CACA,SAASgI,EAAoBwD,GACzBA,EAAa7L,SACjB,CACA,SAASiI,EAAoBlP,EAAUC,GACnC,OAAO,IAAIH,EAAgBE,EAAUC,EACzC,CCz0BA,IAAIzD,GAAQC,EAAAA,EAAAA,cAAa,CACrBC,KAAM,2BACNC,mBAAoB,aACpB2X,KAAM,CAACC,GACPC,eAAgBhM,G","sources":["../node_modules/@fullcalendar/premium-common/index.js","../node_modules/@fullcalendar/scrollgrid/internal.js","../node_modules/@fullcalendar/scrollgrid/index.js"],"sourcesContent":["import { createPlugin } from '@fullcalendar/core/index.js';\nimport { config, isValidDate, addDays } from '@fullcalendar/core/internal.js';\nimport { createElement, Fragment } from '@fullcalendar/core/preact.js';\n\nconst UPGRADE_WINDOW = 365 + 7; // days. 1 week leeway, for tz shift reasons too\nconst INVALID_LICENSE_URL = 'https://fullcalendar.io/docs/schedulerLicenseKey#invalid';\nconst OUTDATED_LICENSE_URL = 'https://fullcalendar.io/docs/schedulerLicenseKey#outdated';\nconst PRESET_LICENSE_KEYS = [\n 'GPL-My-Project-Is-Open-Source',\n 'CC-Attribution-NonCommercial-NoDerivatives',\n];\nconst CSS = {\n position: 'absolute',\n zIndex: 99999,\n bottom: '1px',\n left: '1px',\n background: '#eee',\n borderColor: '#ddd',\n borderStyle: 'solid',\n borderWidth: '1px 1px 0 0',\n padding: '2px 4px',\n fontSize: '12px',\n borderTopRightRadius: '3px',\n};\nfunction buildLicenseWarning(context) {\n let key = context.options.schedulerLicenseKey;\n let currentUrl = typeof window !== 'undefined' ? window.location.href : '';\n if (!isImmuneUrl(currentUrl)) {\n let status = processLicenseKey(key, context.pluginHooks.premiumReleaseDate);\n if (status !== 'valid') {\n return (createElement(\"div\", { className: \"fc-license-message\", style: CSS }, (status === 'outdated') ? (createElement(Fragment, null,\n 'Your license key is too old to work with this version. ',\n createElement(\"a\", { href: OUTDATED_LICENSE_URL }, \"More Info\"))) : (createElement(Fragment, null,\n 'Your license key is invalid. ',\n createElement(\"a\", { href: INVALID_LICENSE_URL }, \"More Info\")))));\n }\n }\n return null;\n}\n/*\nThis decryption is not meant to be bulletproof. Just a way to remind about an upgrade.\n*/\nfunction processLicenseKey(key, premiumReleaseDate) {\n if (PRESET_LICENSE_KEYS.indexOf(key) !== -1) {\n return 'valid';\n }\n const parts = (key || '').match(/^(\\d+)-fcs-(\\d+)$/);\n if (parts && (parts[1].length === 10)) {\n const purchaseDate = new Date(parseInt(parts[2], 10) * 1000);\n const releaseDate = config.mockSchedulerReleaseDate || premiumReleaseDate;\n if (isValidDate(releaseDate)) { // token won't be replaced in dev mode\n const minPurchaseDate = addDays(releaseDate, -UPGRADE_WINDOW);\n if (minPurchaseDate < purchaseDate) {\n return 'valid';\n }\n return 'outdated';\n }\n }\n return 'invalid';\n}\nfunction isImmuneUrl(url) {\n return /\\w+:\\/\\/fullcalendar\\.io\\/|\\/examples\\/[\\w-]+\\.html$/.test(url);\n}\n\nconst OPTION_REFINERS = {\n schedulerLicenseKey: String,\n};\n\nvar index = createPlugin({\n name: '@fullcalendar/premium-common',\n premiumReleaseDate: '2024-02-20',\n optionRefiners: OPTION_REFINERS,\n viewContainerAppends: [buildLicenseWarning],\n});\n\nexport { index as default };\n","import { computeEdges, removeElement, findElements, translateRect, computeInnerRect, applyStyle, BaseComponent, setRef, getIsRtlScrollbarOnLeft, Scroller, isPropsEqual, Emitter, DelayedRunner, config, memoizeArraylike, renderMicroColGroup, RefMap, getScrollGridClassNames, getCanVGrowWithinCell, getSectionClassNames, getAllowYScrolling, getSectionHasLiquidHeight, renderChunkContent, memoizeHashlike, computeShrinkWidth, getScrollbarWidths, collectFromHash, mapHash, isArraysEqual, sanitizeShrinkWidth, hasShrinkWidth, compareObjs, isColPropsEqual } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement, Fragment } from '@fullcalendar/core/preact.js';\n\n// TODO: assume the el has no borders?\nfunction getScrollCanvasOrigin(scrollEl) {\n let rect = scrollEl.getBoundingClientRect();\n let edges = computeEdges(scrollEl); // TODO: pass in isRtl?\n return {\n left: rect.left + edges.borderLeft + edges.scrollbarLeft - getScrollFromLeftEdge(scrollEl),\n top: rect.top + edges.borderTop - scrollEl.scrollTop,\n };\n}\nfunction getScrollFromLeftEdge(el) {\n let scrollLeft = el.scrollLeft;\n let computedStyles = window.getComputedStyle(el); // TODO: pass in isRtl instead?\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'negative':\n scrollLeft *= -1; // convert to 'reverse'. fall through...\n case 'reverse': // scrollLeft is distance between scrollframe's right edge scrollcanvas's right edge\n scrollLeft = el.scrollWidth - scrollLeft - el.clientWidth;\n }\n }\n return scrollLeft;\n}\nfunction setScrollFromLeftEdge(el, scrollLeft) {\n let computedStyles = window.getComputedStyle(el); // TODO: pass in isRtl instead?\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'reverse':\n scrollLeft = el.scrollWidth - scrollLeft;\n break;\n case 'negative':\n scrollLeft = -(el.scrollWidth - scrollLeft);\n break;\n }\n }\n el.scrollLeft = scrollLeft;\n}\n// Horizontal Scroll System Detection\n// ----------------------------------------------------------------------------------------------\nlet _rtlScrollSystem;\nfunction getRtlScrollSystem() {\n return _rtlScrollSystem || (_rtlScrollSystem = detectRtlScrollSystem());\n}\nfunction detectRtlScrollSystem() {\n let el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '-1000px';\n el.style.width = '1px';\n el.style.height = '1px';\n el.style.overflow = 'scroll';\n el.style.direction = 'rtl';\n el.style.fontSize = '100px';\n el.innerHTML = 'A';\n document.body.appendChild(el);\n let system;\n if (el.scrollLeft > 0) {\n system = 'positive'; // scroll is a positive number from the left edge\n }\n else {\n el.scrollLeft = 1;\n if (el.scrollLeft > 0) {\n system = 'reverse'; // scroll is a positive number from the right edge\n }\n else {\n system = 'negative'; // scroll is a negative number from the right edge\n }\n }\n removeElement(el);\n return system;\n}\n\nconst STICKY_SELECTOR = '.fc-sticky';\n/*\nGoes beyond mere position:sticky, allows horizontal centering\n\nREQUIREMENT: fc-sticky elements, if the fc-sticky className is taken away, should NOT have relative or absolute positioning.\nThis is because we attach the coords with JS, and the VDOM might take away the fc-sticky class but doesn't know kill the positioning.\n\nTODO: don't query text-align:center. isn't compatible with flexbox centering. instead, check natural X coord within parent container\n*/\nclass StickyScrolling {\n constructor(scrollEl, isRtl) {\n this.scrollEl = scrollEl;\n this.isRtl = isRtl;\n this.updateSize = () => {\n let { scrollEl } = this;\n let els = findElements(scrollEl, STICKY_SELECTOR);\n let elGeoms = this.queryElGeoms(els);\n let viewportWidth = scrollEl.clientWidth;\n assignStickyPositions(els, elGeoms, viewportWidth);\n };\n }\n queryElGeoms(els) {\n let { scrollEl, isRtl } = this;\n let canvasOrigin = getScrollCanvasOrigin(scrollEl);\n let elGeoms = [];\n for (let el of els) {\n let parentBound = translateRect(computeInnerRect(el.parentNode, true, true), // weird way to call this!!!\n -canvasOrigin.left, -canvasOrigin.top);\n let elRect = el.getBoundingClientRect();\n let computedStyles = window.getComputedStyle(el);\n let textAlign = window.getComputedStyle(el.parentNode).textAlign; // ask the parent\n let naturalBound = null;\n if (textAlign === 'start') {\n textAlign = isRtl ? 'right' : 'left';\n }\n else if (textAlign === 'end') {\n textAlign = isRtl ? 'left' : 'right';\n }\n if (computedStyles.position !== 'sticky') {\n naturalBound = translateRect(elRect, -canvasOrigin.left - (parseFloat(computedStyles.left) || 0), // could be 'auto'\n -canvasOrigin.top - (parseFloat(computedStyles.top) || 0));\n }\n elGeoms.push({\n parentBound,\n naturalBound,\n elWidth: elRect.width,\n elHeight: elRect.height,\n textAlign,\n });\n }\n return elGeoms;\n }\n}\nfunction assignStickyPositions(els, elGeoms, viewportWidth) {\n els.forEach((el, i) => {\n let { textAlign, elWidth, parentBound } = elGeoms[i];\n let parentWidth = parentBound.right - parentBound.left;\n let left;\n if (textAlign === 'center' &&\n parentWidth > viewportWidth) {\n left = (viewportWidth - elWidth) / 2;\n }\n else { // if parent container can be completely in view, we don't need stickiness\n left = '';\n }\n applyStyle(el, {\n left,\n right: left,\n top: 0,\n });\n });\n}\n\nclass ClippedScroller extends BaseComponent {\n constructor() {\n super(...arguments);\n this.elRef = createRef();\n this.state = {\n xScrollbarWidth: 0,\n yScrollbarWidth: 0,\n };\n this.handleScroller = (scroller) => {\n this.scroller = scroller;\n setRef(this.props.scrollerRef, scroller);\n };\n this.handleSizing = () => {\n let { props } = this;\n if (props.overflowY === 'scroll-hidden') {\n this.setState({ yScrollbarWidth: this.scroller.getYScrollbarWidth() });\n }\n if (props.overflowX === 'scroll-hidden') {\n this.setState({ xScrollbarWidth: this.scroller.getXScrollbarWidth() });\n }\n };\n }\n render() {\n let { props, state, context } = this;\n let isScrollbarOnLeft = context.isRtl && getIsRtlScrollbarOnLeft();\n let overcomeLeft = 0;\n let overcomeRight = 0;\n let overcomeBottom = 0;\n let { overflowX, overflowY } = props;\n if (props.forPrint) {\n overflowX = 'visible';\n overflowY = 'visible';\n }\n if (overflowX === 'scroll-hidden') {\n overcomeBottom = state.xScrollbarWidth;\n }\n if (overflowY === 'scroll-hidden') {\n if (state.yScrollbarWidth != null) {\n if (isScrollbarOnLeft) {\n overcomeLeft = state.yScrollbarWidth;\n }\n else {\n overcomeRight = state.yScrollbarWidth;\n }\n }\n }\n return (createElement(\"div\", { ref: this.elRef, className: 'fc-scroller-harness' + (props.liquid ? ' fc-scroller-harness-liquid' : '') },\n createElement(Scroller, { ref: this.handleScroller, elRef: this.props.scrollerElRef, overflowX: overflowX === 'scroll-hidden' ? 'scroll' : overflowX, overflowY: overflowY === 'scroll-hidden' ? 'scroll' : overflowY, overcomeLeft: overcomeLeft, overcomeRight: overcomeRight, overcomeBottom: overcomeBottom, maxHeight: typeof props.maxHeight === 'number'\n ? (props.maxHeight + (overflowX === 'scroll-hidden' ? state.xScrollbarWidth : 0))\n : '', liquid: props.liquid, liquidIsAbsolute: true }, props.children)));\n }\n componentDidMount() {\n this.handleSizing();\n this.context.addResizeHandler(this.handleSizing);\n }\n getSnapshotBeforeUpdate(prevProps) {\n if (this.props.forPrint && !prevProps.forPrint) {\n return { simulateScrollLeft: this.scroller.el.scrollLeft };\n }\n return {};\n }\n componentDidUpdate(prevProps, prevState, snapshot) {\n const { props, scroller: { el: scrollerEl } } = this;\n if (!isPropsEqual(prevProps, props)) { // an external change?\n this.handleSizing();\n }\n if (snapshot.simulateScrollLeft !== undefined) {\n scrollerEl.style.left = -snapshot.simulateScrollLeft + 'px';\n }\n else if (!props.forPrint && prevProps.forPrint) {\n const restoredScrollLeft = -parseInt(scrollerEl.style.left);\n scrollerEl.style.left = '';\n scrollerEl.scrollLeft = restoredScrollLeft;\n }\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing);\n }\n needsXScrolling() {\n return this.scroller.needsXScrolling();\n }\n needsYScrolling() {\n return this.scroller.needsYScrolling();\n }\n}\n\nconst WHEEL_EVENT_NAMES = 'wheel mousewheel DomMouseScroll MozMousePixelScroll'.split(' ');\n/*\nALSO, with the ability to disable touch\n*/\nclass ScrollListener {\n constructor(el) {\n this.el = el;\n this.emitter = new Emitter();\n this.isScrolling = false;\n this.isTouching = false; // user currently has finger down?\n this.isRecentlyWheeled = false;\n this.isRecentlyScrolled = false;\n this.wheelWaiter = new DelayedRunner(this._handleWheelWaited.bind(this));\n this.scrollWaiter = new DelayedRunner(this._handleScrollWaited.bind(this));\n // Handlers\n // ----------------------------------------------------------------------------------------------\n this.handleScroll = () => {\n this.startScroll();\n this.emitter.trigger('scroll', this.isRecentlyWheeled, this.isTouching);\n this.isRecentlyScrolled = true;\n this.scrollWaiter.request(500);\n };\n // will fire *before* the scroll event is fired (might not cause a scroll)\n this.handleWheel = () => {\n this.isRecentlyWheeled = true;\n this.wheelWaiter.request(500);\n };\n // will fire *before* the scroll event is fired (might not cause a scroll)\n this.handleTouchStart = () => {\n this.isTouching = true;\n };\n this.handleTouchEnd = () => {\n this.isTouching = false;\n // if the user ended their touch, and the scroll area wasn't moving,\n // we consider this to be the end of the scroll.\n if (!this.isRecentlyScrolled) {\n this.endScroll(); // won't fire if already ended\n }\n };\n el.addEventListener('scroll', this.handleScroll);\n el.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n el.addEventListener('touchend', this.handleTouchEnd);\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.addEventListener(eventName, this.handleWheel);\n }\n }\n destroy() {\n let { el } = this;\n el.removeEventListener('scroll', this.handleScroll);\n el.removeEventListener('touchstart', this.handleTouchStart, { passive: true });\n el.removeEventListener('touchend', this.handleTouchEnd);\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.removeEventListener(eventName, this.handleWheel);\n }\n }\n // Start / Stop\n // ----------------------------------------------------------------------------------------------\n startScroll() {\n if (!this.isScrolling) {\n this.isScrolling = true;\n this.emitter.trigger('scrollStart', this.isRecentlyWheeled, this.isTouching);\n }\n }\n endScroll() {\n if (this.isScrolling) {\n this.emitter.trigger('scrollEnd');\n this.isScrolling = false;\n this.isRecentlyScrolled = true;\n this.isRecentlyWheeled = false;\n this.scrollWaiter.clear();\n this.wheelWaiter.clear();\n }\n }\n _handleScrollWaited() {\n this.isRecentlyScrolled = false;\n // only end the scroll if not currently touching.\n // if touching, the scrolling will end later, on touchend.\n if (!this.isTouching) {\n this.endScroll(); // won't fire if already ended\n }\n }\n _handleWheelWaited() {\n this.isRecentlyWheeled = false;\n }\n}\n\nclass ScrollSyncer {\n constructor(isVertical, scrollEls) {\n this.isVertical = isVertical;\n this.scrollEls = scrollEls;\n this.isPaused = false;\n this.scrollListeners = scrollEls.map((el) => this.bindScroller(el));\n }\n destroy() {\n for (let scrollListener of this.scrollListeners) {\n scrollListener.destroy();\n }\n }\n bindScroller(el) {\n let { scrollEls, isVertical } = this;\n let scrollListener = new ScrollListener(el);\n const onScroll = (isWheel, isTouch) => {\n if (!this.isPaused) {\n if (!this.masterEl || (this.masterEl !== el && (isWheel || isTouch))) {\n this.assignMaster(el);\n }\n if (this.masterEl === el) { // dealing with current\n for (let otherEl of scrollEls) {\n if (otherEl !== el) {\n if (isVertical) {\n otherEl.scrollTop = el.scrollTop;\n }\n else {\n otherEl.scrollLeft = el.scrollLeft;\n }\n }\n }\n }\n }\n };\n const onScrollEnd = () => {\n if (this.masterEl === el) {\n this.masterEl = null;\n }\n };\n scrollListener.emitter.on('scroll', onScroll);\n scrollListener.emitter.on('scrollEnd', onScrollEnd);\n return scrollListener;\n }\n assignMaster(el) {\n this.masterEl = el;\n for (let scrollListener of this.scrollListeners) {\n if (scrollListener.el !== el) {\n scrollListener.endScroll(); // to prevent residual scrolls from reclaiming master\n }\n }\n }\n /*\n will normalize the scrollLeft value\n */\n forceScrollLeft(scrollLeft) {\n this.isPaused = true;\n for (let listener of this.scrollListeners) {\n setScrollFromLeftEdge(listener.el, scrollLeft);\n }\n this.isPaused = false;\n }\n forceScrollTop(top) {\n this.isPaused = true;\n for (let listener of this.scrollListeners) {\n listener.el.scrollTop = top;\n }\n this.isPaused = false;\n }\n}\n\nconfig.SCROLLGRID_RESIZE_INTERVAL = 500;\n/*\nTODO: make <ScrollGridSection> subcomponent\nNOTE: doesn't support collapsibleWidth (which is sortof a hack anyway)\n*/\nclass ScrollGrid extends BaseComponent {\n constructor() {\n super(...arguments);\n this.compileColGroupStats = memoizeArraylike(compileColGroupStat, isColGroupStatsEqual);\n this.renderMicroColGroups = memoizeArraylike(renderMicroColGroup); // yucky to memoize VNodes, but much more efficient for consumers\n this.clippedScrollerRefs = new RefMap();\n // doesn't hold non-scrolling els used just for padding\n this.scrollerElRefs = new RefMap(this._handleScrollerEl.bind(this));\n this.chunkElRefs = new RefMap(this._handleChunkEl.bind(this));\n this.scrollSyncersBySection = {};\n this.scrollSyncersByColumn = {};\n // for row-height-syncing\n this.rowUnstableMap = new Map(); // no need to groom. always self-cancels\n this.rowInnerMaxHeightMap = new Map();\n this.anyRowHeightsChanged = false;\n this.recentSizingCnt = 0;\n this.state = {\n shrinkWidths: [],\n forceYScrollbars: false,\n forceXScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n sectionRowMaxHeights: [],\n };\n this.handleSizing = (isForcedResize, sectionRowMaxHeightsChanged) => {\n if (!this.allowSizing()) {\n return;\n }\n if (!sectionRowMaxHeightsChanged) { // something else changed, probably external\n this.anyRowHeightsChanged = true;\n }\n let otherState = {};\n // if reacting to self-change of sectionRowMaxHeightsChanged, or not stable, don't do anything\n if (isForcedResize || (!sectionRowMaxHeightsChanged && !this.rowUnstableMap.size)) {\n otherState.sectionRowMaxHeights = this.computeSectionRowMaxHeights();\n }\n this.setState(Object.assign(Object.assign({ shrinkWidths: this.computeShrinkWidths() }, this.computeScrollerDims()), otherState), () => {\n if (!this.rowUnstableMap.size) {\n this.updateStickyScrolling(); // needs to happen AFTER final positioning committed to DOM\n }\n });\n };\n this.handleRowHeightChange = (rowEl, isStable) => {\n let { rowUnstableMap, rowInnerMaxHeightMap } = this;\n if (!isStable) {\n rowUnstableMap.set(rowEl, true);\n }\n else {\n rowUnstableMap.delete(rowEl);\n let innerMaxHeight = getRowInnerMaxHeight(rowEl);\n if (!rowInnerMaxHeightMap.has(rowEl) || rowInnerMaxHeightMap.get(rowEl) !== innerMaxHeight) {\n rowInnerMaxHeightMap.set(rowEl, innerMaxHeight);\n this.anyRowHeightsChanged = true;\n }\n if (!rowUnstableMap.size && this.anyRowHeightsChanged) {\n this.anyRowHeightsChanged = false;\n this.setState({\n sectionRowMaxHeights: this.computeSectionRowMaxHeights(),\n });\n }\n }\n };\n }\n render() {\n let { props, state, context } = this;\n let { shrinkWidths } = state;\n let colGroupStats = this.compileColGroupStats(props.colGroups.map((colGroup) => [colGroup]));\n let microColGroupNodes = this.renderMicroColGroups(colGroupStats.map((stat, i) => [stat.cols, shrinkWidths[i]]));\n let classNames = getScrollGridClassNames(props.liquid, context);\n this.getDims();\n // TODO: make DRY\n let sectionConfigs = props.sections;\n let configCnt = sectionConfigs.length;\n let configI = 0;\n let currentConfig;\n let headSectionNodes = [];\n let bodySectionNodes = [];\n let footSectionNodes = [];\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, false));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));\n configI += 1;\n }\n const isBuggy = !getCanVGrowWithinCell(); // see NOTE in SimpleScrollGrid\n const roleAttrs = { role: 'rowgroup' };\n return createElement('table', {\n ref: props.elRef,\n role: 'grid',\n className: classNames.join(' '),\n }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes), Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes), Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes), isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes));\n }\n renderSection(sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights, isHeader) {\n if ('outerContent' in sectionConfig) {\n return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n }\n return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map((chunkConfig, i) => this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || [], isHeader))));\n }\n renderChunk(sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights, isHeader) {\n if ('outerContent' in chunkConfig) {\n return (createElement(Fragment, { key: chunkConfig.key }, chunkConfig.outerContent));\n }\n let { state } = this;\n let { scrollerClientWidths, scrollerClientHeights } = state;\n let [sectionCnt, chunksPerSection] = this.getDims();\n let index = sectionIndex * chunksPerSection + chunkIndex;\n let sideScrollIndex = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0;\n let isVScrollSide = chunkIndex === sideScrollIndex;\n let isLastSection = sectionIndex === sectionCnt - 1;\n let forceXScrollbars = isLastSection && state.forceXScrollbars; // NOOOO can result in `null`\n let forceYScrollbars = isVScrollSide && state.forceYScrollbars; // NOOOO can result in `null`\n let allowXScrolling = colGroupStat && colGroupStat.allowXScrolling; // rename?\n let allowYScrolling = getAllowYScrolling(this.props, sectionConfig); // rename? do in section func?\n let chunkVGrow = getSectionHasLiquidHeight(this.props, sectionConfig); // do in section func?\n let expandRows = sectionConfig.expandRows && chunkVGrow;\n let tableMinWidth = (colGroupStat && colGroupStat.totalColMinWidth) || '';\n let content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth,\n clientWidth: scrollerClientWidths[index] !== undefined ? scrollerClientWidths[index] : null,\n clientHeight: scrollerClientHeights[index] !== undefined ? scrollerClientHeights[index] : null,\n expandRows,\n syncRowHeights: Boolean(sectionConfig.syncRowHeights),\n rowSyncHeights: rowHeights,\n reportRowHeightChange: this.handleRowHeightChange,\n }, isHeader);\n let overflowX = forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :\n !allowXScrolling ? 'hidden' :\n (isLastSection ? 'auto' : 'scroll-hidden');\n let overflowY = forceYScrollbars ? (isVScrollSide ? 'scroll' : 'scroll-hidden') :\n !allowYScrolling ? 'hidden' :\n (isVScrollSide ? 'auto' : 'scroll-hidden');\n // it *could* be possible to reduce DOM wrappers by only doing a ClippedScroller when allowXScrolling or allowYScrolling,\n // but if these values were to change, the inner components would be unmounted/remounted because of the parent change.\n content = (createElement(ClippedScroller, { ref: this.clippedScrollerRefs.createRef(index), scrollerElRef: this.scrollerElRefs.createRef(index), overflowX: overflowX, overflowY: overflowY, forPrint: this.props.forPrint, liquid: chunkVGrow, maxHeight: sectionConfig.maxHeight }, content));\n return createElement(isHeader ? 'th' : 'td', {\n key: chunkConfig.key,\n ref: this.chunkElRefs.createRef(index),\n role: 'presentation',\n }, content);\n }\n componentDidMount() {\n this.getStickyScrolling = memoizeArraylike(initStickyScrolling);\n this.getScrollSyncersBySection = memoizeHashlike(initScrollSyncer.bind(this, true), null, destroyScrollSyncer);\n this.getScrollSyncersByColumn = memoizeHashlike(initScrollSyncer.bind(this, false), null, destroyScrollSyncer);\n this.updateScrollSyncers();\n this.handleSizing(false);\n this.context.addResizeHandler(this.handleSizing);\n }\n componentDidUpdate(prevProps, prevState) {\n this.updateScrollSyncers();\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing(false, prevState.sectionRowMaxHeights !== this.state.sectionRowMaxHeights);\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing);\n this.destroyScrollSyncers();\n }\n allowSizing() {\n let now = new Date();\n if (!this.lastSizingDate ||\n now.valueOf() > this.lastSizingDate.valueOf() + config.SCROLLGRID_RESIZE_INTERVAL) {\n this.lastSizingDate = now;\n this.recentSizingCnt = 0;\n return true;\n }\n return (this.recentSizingCnt += 1) <= 10;\n }\n computeShrinkWidths() {\n let colGroupStats = this.compileColGroupStats(this.props.colGroups.map((colGroup) => [colGroup]));\n let [sectionCnt, chunksPerSection] = this.getDims();\n let cnt = sectionCnt * chunksPerSection;\n let shrinkWidths = [];\n colGroupStats.forEach((colGroupStat, i) => {\n if (colGroupStat.hasShrinkCol) {\n let chunkEls = this.chunkElRefs.collect(i, cnt, chunksPerSection); // in one col\n shrinkWidths[i] = computeShrinkWidth(chunkEls);\n }\n });\n return shrinkWidths;\n }\n // has the side effect of grooming rowInnerMaxHeightMap\n // TODO: somehow short-circuit if there are no new height changes\n computeSectionRowMaxHeights() {\n let newHeightMap = new Map();\n let [sectionCnt, chunksPerSection] = this.getDims();\n let sectionRowMaxHeights = [];\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let sectionConfig = this.props.sections[sectionI];\n let assignableHeights = []; // chunk, row\n if (sectionConfig && sectionConfig.syncRowHeights) {\n let rowHeightsByChunk = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI;\n let rowHeights = [];\n let chunkEl = this.chunkElRefs.currentMap[index];\n if (chunkEl) {\n rowHeights = findElements(chunkEl, '.fc-scrollgrid-sync-table tr').map((rowEl) => {\n let max = getRowInnerMaxHeight(rowEl);\n newHeightMap.set(rowEl, max);\n return max;\n });\n }\n else {\n rowHeights = [];\n }\n rowHeightsByChunk.push(rowHeights);\n }\n let rowCnt = rowHeightsByChunk[0].length;\n let isEqualRowCnt = true;\n for (let chunkI = 1; chunkI < chunksPerSection; chunkI += 1) {\n let isOuterContent = sectionConfig.chunks[chunkI] && sectionConfig.chunks[chunkI].outerContent !== undefined; // can be null\n if (!isOuterContent && rowHeightsByChunk[chunkI].length !== rowCnt) { // skip outer content\n isEqualRowCnt = false;\n break;\n }\n }\n if (!isEqualRowCnt) {\n let chunkHeightSums = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n chunkHeightSums.push(sumNumbers(rowHeightsByChunk[chunkI]) + rowHeightsByChunk[chunkI].length);\n }\n let maxTotalSum = Math.max(...chunkHeightSums);\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let rowInChunkCnt = rowHeightsByChunk[chunkI].length;\n let rowInChunkTotalHeight = maxTotalSum - rowInChunkCnt; // subtract border\n // height of non-first row. we do this to avoid rounding, because it's unreliable within a table\n let rowInChunkHeightOthers = Math.floor(rowInChunkTotalHeight / rowInChunkCnt);\n // whatever is leftover goes to the first row\n let rowInChunkHeightFirst = rowInChunkTotalHeight - rowInChunkHeightOthers * (rowInChunkCnt - 1);\n let rowInChunkHeights = [];\n let row = 0;\n if (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightFirst);\n row += 1;\n }\n while (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightOthers);\n row += 1;\n }\n assignableHeights.push(rowInChunkHeights);\n }\n }\n else {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights.push([]);\n }\n for (let row = 0; row < rowCnt; row += 1) {\n let rowHeightsAcrossChunks = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let h = rowHeightsByChunk[chunkI][row];\n if (h != null) { // protect against outerContent\n rowHeightsAcrossChunks.push(h);\n }\n }\n let maxHeight = Math.max(...rowHeightsAcrossChunks);\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights[chunkI].push(maxHeight);\n }\n }\n }\n }\n sectionRowMaxHeights.push(assignableHeights);\n }\n this.rowInnerMaxHeightMap = newHeightMap;\n return sectionRowMaxHeights;\n }\n computeScrollerDims() {\n let scrollbarWidth = getScrollbarWidths();\n let [sectionCnt, chunksPerSection] = this.getDims();\n let sideScrollI = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0;\n let lastSectionI = sectionCnt - 1;\n let currentScrollers = this.clippedScrollerRefs.currentMap;\n let scrollerEls = this.scrollerElRefs.currentMap;\n let forceYScrollbars = false;\n let forceXScrollbars = false;\n let scrollerClientWidths = {};\n let scrollerClientHeights = {};\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) { // along edge\n let index = sectionI * chunksPerSection + sideScrollI;\n let scroller = currentScrollers[index];\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true;\n break;\n }\n }\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) { // along last row\n let index = lastSectionI * chunksPerSection + chunkI;\n let scroller = currentScrollers[index];\n if (scroller && scroller.needsXScrolling()) {\n forceXScrollbars = true;\n break;\n }\n }\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI;\n let scrollerEl = scrollerEls[index];\n if (scrollerEl) {\n // TODO: weird way to get this. need harness b/c doesn't include table borders\n let harnessEl = scrollerEl.parentNode;\n scrollerClientWidths[index] = Math.floor(harnessEl.getBoundingClientRect().width - ((chunkI === sideScrollI && forceYScrollbars)\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n scrollerClientHeights[index] = Math.floor(harnessEl.getBoundingClientRect().height - ((sectionI === lastSectionI && forceXScrollbars)\n ? scrollbarWidth.x // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n }\n }\n }\n return { forceYScrollbars, forceXScrollbars, scrollerClientWidths, scrollerClientHeights };\n }\n updateStickyScrolling() {\n let { isRtl } = this.context;\n let argsByKey = this.scrollerElRefs.getAll().map((scrollEl) => [scrollEl, isRtl]);\n this.getStickyScrolling(argsByKey)\n .forEach((stickyScrolling) => stickyScrolling.updateSize());\n }\n updateScrollSyncers() {\n let [sectionCnt, chunksPerSection] = this.getDims();\n let cnt = sectionCnt * chunksPerSection;\n let scrollElsBySection = {};\n let scrollElsByColumn = {};\n let scrollElMap = this.scrollerElRefs.currentMap;\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let startIndex = sectionI * chunksPerSection;\n let endIndex = startIndex + chunksPerSection;\n scrollElsBySection[sectionI] = collectFromHash(scrollElMap, startIndex, endIndex, 1); // use the filtered\n }\n for (let col = 0; col < chunksPerSection; col += 1) {\n scrollElsByColumn[col] = this.scrollerElRefs.collect(col, cnt, chunksPerSection); // DON'T use the filtered\n }\n this.scrollSyncersBySection = this.getScrollSyncersBySection(scrollElsBySection);\n this.scrollSyncersByColumn = this.getScrollSyncersByColumn(scrollElsByColumn);\n }\n destroyScrollSyncers() {\n mapHash(this.scrollSyncersBySection, destroyScrollSyncer);\n mapHash(this.scrollSyncersByColumn, destroyScrollSyncer);\n }\n getChunkConfigByIndex(index) {\n let chunksPerSection = this.getDims()[1];\n let sectionI = Math.floor(index / chunksPerSection);\n let chunkI = index % chunksPerSection;\n let sectionConfig = this.props.sections[sectionI];\n return sectionConfig && sectionConfig.chunks[chunkI];\n }\n forceScrollLeft(col, scrollLeft) {\n let scrollSyncer = this.scrollSyncersByColumn[col];\n if (scrollSyncer) {\n scrollSyncer.forceScrollLeft(scrollLeft);\n }\n }\n forceScrollTop(sectionI, scrollTop) {\n let scrollSyncer = this.scrollSyncersBySection[sectionI];\n if (scrollSyncer) {\n scrollSyncer.forceScrollTop(scrollTop);\n }\n }\n _handleChunkEl(chunkEl, key) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10));\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.elRef, chunkEl);\n }\n }\n _handleScrollerEl(scrollerEl, key) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10));\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.scrollerElRef, scrollerEl);\n }\n }\n getDims() {\n let sectionCnt = this.props.sections.length;\n let chunksPerSection = sectionCnt ? this.props.sections[0].chunks.length : 0;\n return [sectionCnt, chunksPerSection];\n }\n}\nScrollGrid.addStateEquality({\n shrinkWidths: isArraysEqual,\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n});\nfunction sumNumbers(numbers) {\n let sum = 0;\n for (let n of numbers) {\n sum += n;\n }\n return sum;\n}\nfunction getRowInnerMaxHeight(rowEl) {\n let innerHeights = findElements(rowEl, '.fc-scrollgrid-sync-inner').map(getElHeight);\n if (innerHeights.length) {\n return Math.max(...innerHeights);\n }\n return 0;\n}\nfunction getElHeight(el) {\n return el.offsetHeight; // better to deal with integers, for rounding, for PureComponent\n}\nfunction renderMacroColGroup(colGroupStats, shrinkWidths) {\n let children = colGroupStats.map((colGroupStat, i) => {\n let width = colGroupStat.width;\n if (width === 'shrink') {\n width = colGroupStat.totalColWidth + sanitizeShrinkWidth(shrinkWidths[i]) + 1; // +1 for border :(\n }\n return ( // eslint-disable-next-line react/jsx-key\n createElement(\"col\", { style: { width } }));\n });\n return createElement('colgroup', {}, ...children);\n}\nfunction compileColGroupStat(colGroupConfig) {\n let totalColWidth = sumColProp(colGroupConfig.cols, 'width'); // excludes \"shrink\"\n let totalColMinWidth = sumColProp(colGroupConfig.cols, 'minWidth');\n let hasShrinkCol = hasShrinkWidth(colGroupConfig.cols);\n let allowXScrolling = colGroupConfig.width !== 'shrink' && Boolean(totalColWidth || totalColMinWidth || hasShrinkCol);\n return {\n hasShrinkCol,\n totalColWidth,\n totalColMinWidth,\n allowXScrolling,\n cols: colGroupConfig.cols,\n width: colGroupConfig.width,\n };\n}\nfunction sumColProp(cols, propName) {\n let total = 0;\n for (let col of cols) {\n let val = col[propName];\n if (typeof val === 'number') {\n total += val * (col.span || 1);\n }\n }\n return total;\n}\nconst COL_GROUP_STAT_EQUALITY = {\n cols: isColPropsEqual,\n};\nfunction isColGroupStatsEqual(stat0, stat1) {\n return compareObjs(stat0, stat1, COL_GROUP_STAT_EQUALITY);\n}\n// for memoizers...\nfunction initScrollSyncer(isVertical, ...scrollEls) {\n return new ScrollSyncer(isVertical, scrollEls);\n}\nfunction destroyScrollSyncer(scrollSyncer) {\n scrollSyncer.destroy();\n}\nfunction initStickyScrolling(scrollEl, isRtl) {\n return new StickyScrolling(scrollEl, isRtl);\n}\n\nexport { ScrollGrid };\n","import { createPlugin } from '@fullcalendar/core/index.js';\nimport premiumCommonPlugin from '@fullcalendar/premium-common/index.js';\nimport { ScrollGrid } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\n\nvar index = createPlugin({\n name: '@fullcalendar/scrollgrid',\n premiumReleaseDate: '2024-02-20',\n deps: [premiumCommonPlugin],\n scrollGridImpl: ScrollGrid,\n});\n\nexport { index as default };\n"],"names":["UPGRADE_WINDOW","PRESET_LICENSE_KEYS","CSS","position","zIndex","bottom","left","background","borderColor","borderStyle","borderWidth","padding","fontSize","borderTopRightRadius","OPTION_REFINERS","schedulerLicenseKey","String","index","createPlugin","name","premiumReleaseDate","optionRefiners","viewContainerAppends","context","key","options","currentUrl","window","location","href","test","status","indexOf","parts","match","length","purchaseDate","Date","parseInt","releaseDate","config","mockSchedulerReleaseDate","isValidDate","addDays","processLicenseKey","pluginHooks","createElement","className","style","Fragment","getScrollFromLeftEdge","el","scrollLeft","getComputedStyle","direction","getRtlScrollSystem","scrollWidth","clientWidth","setScrollFromLeftEdge","_rtlScrollSystem","system","document","top","width","height","overflow","innerHTML","body","appendChild","removeElement","detectRtlScrollSystem","StickyScrolling","constructor","scrollEl","isRtl","this","updateSize","els","findElements","elGeoms","viewportWidth","forEach","i","textAlign","elWidth","parentBound","parentWidth","right","applyStyle","assignStickyPositions","queryElGeoms","canvasOrigin","rect","getBoundingClientRect","edges","computeEdges","borderLeft","scrollbarLeft","borderTop","scrollTop","getScrollCanvasOrigin","translateRect","computeInnerRect","parentNode","elRect","computedStyles","naturalBound","parseFloat","push","elHeight","ClippedScroller","BaseComponent","super","arguments","elRef","createRef","state","xScrollbarWidth","yScrollbarWidth","handleScroller","scroller","setRef","props","scrollerRef","handleSizing","overflowY","setState","getYScrollbarWidth","overflowX","getXScrollbarWidth","render","isScrollbarOnLeft","getIsRtlScrollbarOnLeft","overcomeLeft","overcomeRight","overcomeBottom","forPrint","ref","liquid","Scroller","scrollerElRef","maxHeight","liquidIsAbsolute","children","componentDidMount","addResizeHandler","getSnapshotBeforeUpdate","prevProps","simulateScrollLeft","componentDidUpdate","prevState","snapshot","scrollerEl","isPropsEqual","undefined","restoredScrollLeft","componentWillUnmount","removeResizeHandler","needsXScrolling","needsYScrolling","WHEEL_EVENT_NAMES","split","ScrollListener","emitter","Emitter","isScrolling","isTouching","isRecentlyWheeled","isRecentlyScrolled","wheelWaiter","DelayedRunner","_handleWheelWaited","bind","scrollWaiter","_handleScrollWaited","handleScroll","startScroll","trigger","request","handleWheel","handleTouchStart","handleTouchEnd","endScroll","addEventListener","passive","eventName","destroy","removeEventListener","clear","ScrollSyncer","isVertical","scrollEls","isPaused","scrollListeners","map","bindScroller","scrollListener","on","onScroll","isWheel","isTouch","masterEl","assignMaster","otherEl","onScrollEnd","forceScrollLeft","listener","forceScrollTop","SCROLLGRID_RESIZE_INTERVAL","ScrollGrid","compileColGroupStats","memoizeArraylike","compileColGroupStat","isColGroupStatsEqual","renderMicroColGroups","renderMicroColGroup","clippedScrollerRefs","RefMap","scrollerElRefs","_handleScrollerEl","chunkElRefs","_handleChunkEl","scrollSyncersBySection","scrollSyncersByColumn","rowUnstableMap","Map","rowInnerMaxHeightMap","anyRowHeightsChanged","recentSizingCnt","shrinkWidths","forceYScrollbars","forceXScrollbars","scrollerClientWidths","scrollerClientHeights","sectionRowMaxHeights","isForcedResize","sectionRowMaxHeightsChanged","allowSizing","otherState","size","computeSectionRowMaxHeights","Object","assign","computeShrinkWidths","computeScrollerDims","updateStickyScrolling","handleRowHeightChange","rowEl","isStable","delete","innerMaxHeight","getRowInnerMaxHeight","has","get","set","colGroupStats","colGroups","colGroup","microColGroupNodes","stat","cols","classNames","getScrollGridClassNames","getDims","currentConfig","sectionConfigs","sections","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","type","renderSection","isBuggy","getCanVGrowWithinCell","roleAttrs","role","join","colGroupStat","totalColWidth","sanitizeShrinkWidth","renderMacroColGroup","Boolean","sectionConfig","sectionIndex","isHeader","outerContent","getSectionClassNames","chunks","chunkConfig","renderChunk","microColGroupNode","chunkIndex","rowHeights","sectionCnt","chunksPerSection","isVScrollSide","isLastSection","allowXScrolling","allowYScrolling","getAllowYScrolling","chunkVGrow","getSectionHasLiquidHeight","expandRows","tableMinWidth","totalColMinWidth","content","renderChunkContent","tableColGroupNode","clientHeight","syncRowHeights","rowSyncHeights","reportRowHeightChange","getStickyScrolling","initStickyScrolling","getScrollSyncersBySection","memoizeHashlike","initScrollSyncer","destroyScrollSyncer","getScrollSyncersByColumn","updateScrollSyncers","destroyScrollSyncers","now","lastSizingDate","valueOf","cnt","hasShrinkCol","chunkEls","collect","computeShrinkWidth","newHeightMap","sectionI","assignableHeights","rowHeightsByChunk","chunkI","chunkEl","currentMap","max","rowCnt","isEqualRowCnt","row","rowHeightsAcrossChunks","h","Math","chunkHeightSums","sumNumbers","maxTotalSum","rowInChunkCnt","rowInChunkTotalHeight","rowInChunkHeightOthers","floor","rowInChunkHeightFirst","rowInChunkHeights","scrollbarWidth","getScrollbarWidths","sideScrollI","lastSectionI","currentScrollers","scrollerEls","harnessEl","y","x","argsByKey","getAll","stickyScrolling","scrollElsBySection","scrollElsByColumn","scrollElMap","startIndex","endIndex","collectFromHash","col","mapHash","getChunkConfigByIndex","scrollSyncer","numbers","sum","n","innerHeights","getElHeight","offsetHeight","colGroupConfig","sumColProp","hasShrinkWidth","propName","total","val","span","addStateEquality","isArraysEqual","COL_GROUP_STAT_EQUALITY","isColPropsEqual","stat0","stat1","compareObjs","_len","Array","_key","deps","premiumCommonPlugin","scrollGridImpl"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 3245.e987bbef.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_kne_components_components_core=self.webpackChunk_kne_components_components_core||[]).push([[3245],{53245:(e,t,r)=>{r.r(t),r.d(t,{AbortedDeferredError:()=>V,Await:()=>$t,BrowserRouter:()=>Cr,Form:()=>Ur,HashRouter:()=>Lr,Link:()=>Tr,MemoryRouter:()=>Bt,NavLink:()=>Ar,Navigate:()=>It,NavigationType:()=>n,Outlet:()=>zt,Route:()=>Ht,Router:()=>Wt,RouterProvider:()=>xr,Routes:()=>Kt,ScrollRestoration:()=>jr,UNSAFE_DataRouterContext:()=>Ye,UNSAFE_DataRouterStateContext:()=>Xe,UNSAFE_FetchersContext:()=>gr,UNSAFE_LocationContext:()=>Ze,UNSAFE_NavigationContext:()=>Qe,UNSAFE_RouteContext:()=>et,UNSAFE_ViewTransitionContext:()=>yr,UNSAFE_useRouteId:()=>Dt,UNSAFE_useScrollRestoration:()=>Yr,createBrowserRouter:()=>fr,createHashRouter:()=>pr,createMemoryRouter:()=>Zt,createPath:()=>m,createRoutesFromChildren:()=>Xt,createRoutesFromElements:()=>Xt,createSearchParams:()=>or,defer:()=>G,generatePath:()=>j,isRouteErrorResponse:()=>te,json:()=>q,matchPath:()=>M,matchRoutes:()=>E,parsePath:()=>v,redirect:()=>Q,redirectDocument:()=>Z,renderMatches:()=>Gt,resolvePath:()=>N,unstable_HistoryRouter:()=>Pr,unstable_usePrompt:()=>Gr,unstable_useViewTransitionState:()=>Qr,useActionData:()=>Tt,useAsyncError:()=>jt,useAsyncValue:()=>Ut,useBeforeUnload:()=>Xr,useBlocker:()=>Ot,useFetcher:()=>$r,useFetchers:()=>Jr,useFormAction:()=>Kr,useHref:()=>rt,useInRouterContext:()=>nt,useLinkClickHandler:()=>Br,useLoaderData:()=>kt,useLocation:()=>at,useMatch:()=>it,useMatches:()=>Pt,useNavigate:()=>st,useNavigation:()=>Ct,useNavigationType:()=>ot,useOutlet:()=>dt,useOutletContext:()=>ct,useParams:()=>ht,useResolvedPath:()=>ft,useRevalidator:()=>Lt,useRouteError:()=>At,useRouteLoaderData:()=>_t,useRoutes:()=>pt,useSearchParams:()=>Ir,useSubmit:()=>Wr});var n,a=r(73884),o=r(10486);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},i.apply(this,arguments)}!function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"}(n||(n={}));const l="popstate";function s(e){void 0===e&&(e={});let t,{initialEntries:r=["/"],initialIndex:a,v5Compat:o=!1}=e;t=r.map(((e,t)=>d(e,"string"===typeof e?null:e.state,0===t?"default":void 0)));let i=u(null==a?t.length-1:a),l=n.Pop,s=null;function u(e){return Math.min(Math.max(e,0),t.length-1)}function c(){return t[i]}function d(e,r,n){void 0===r&&(r=null);let a=p(t?c().pathname:"/",e,r,n);return h("/"===a.pathname.charAt(0),"relative pathnames are not supported in memory history: "+JSON.stringify(e)),a}function f(e){return"string"===typeof e?e:m(e)}return{get index(){return i},get action(){return l},get location(){return c()},createHref:f,createURL:e=>new URL(f(e),"http://localhost"),encodeLocation(e){let t="string"===typeof e?v(e):e;return{pathname:t.pathname||"",search:t.search||"",hash:t.hash||""}},push(e,r){l=n.Push;let a=d(e,r);i+=1,t.splice(i,t.length,a),o&&s&&s({action:l,location:a,delta:1})},replace(e,r){l=n.Replace;let a=d(e,r);t[i]=a,o&&s&&s({action:l,location:a,delta:0})},go(e){l=n.Pop;let r=u(i+e),a=t[r];i=r,s&&s({action:l,location:a,delta:e})},listen:e=>(s=e,()=>{s=null})}}function u(e){return void 0===e&&(e={}),y((function(e,t){let{pathname:r,search:n,hash:a}=e.location;return p("",{pathname:r,search:n,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){return"string"===typeof t?t:m(t)}),null,e)}function c(e){return void 0===e&&(e={}),y((function(e,t){let{pathname:r="/",search:n="",hash:a=""}=v(e.location.hash.substr(1));return r.startsWith("/")||r.startsWith(".")||(r="/"+r),p("",{pathname:r,search:n,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){let r=e.document.querySelector("base"),n="";if(r&&r.getAttribute("href")){let t=e.location.href,r=t.indexOf("#");n=-1===r?t:t.slice(0,r)}return n+"#"+("string"===typeof t?t:m(t))}),(function(e,t){h("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),e)}function d(e,t){if(!1===e||null===e||"undefined"===typeof e)throw new Error(t)}function h(e,t){if(!e){"undefined"!==typeof console&&console.warn(t);try{throw new Error(t)}catch(r){}}}function f(e,t){return{usr:e.state,key:e.key,idx:t}}function p(e,t,r,n){return void 0===r&&(r=null),i({pathname:"string"===typeof e?e:e.pathname,search:"",hash:""},"string"===typeof t?v(t):t,{state:r,key:t&&t.key||n||Math.random().toString(36).substr(2,8)})}function m(e){let{pathname:t="/",search:r="",hash:n=""}=e;return r&&"?"!==r&&(t+="?"===r.charAt(0)?r:"?"+r),n&&"#"!==n&&(t+="#"===n.charAt(0)?n:"#"+n),t}function v(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));let n=e.indexOf("?");n>=0&&(t.search=e.substr(n),e=e.substr(0,n)),e&&(t.pathname=e)}return t}function y(e,t,r,a){void 0===a&&(a={});let{window:o=document.defaultView,v5Compat:s=!1}=a,u=o.history,c=n.Pop,h=null,v=y();function y(){return(u.state||{idx:null}).idx}function g(){c=n.Pop;let e=y(),t=null==e?null:e-v;v=e,h&&h({action:c,location:w.location,delta:t})}function b(e){let t="null"!==o.location.origin?o.location.origin:o.location.href,r="string"===typeof e?e:m(e);return r=r.replace(/ $/,"%20"),d(t,"No window.location.(origin|href) available to create URL for href: "+r),new URL(r,t)}null==v&&(v=0,u.replaceState(i({},u.state,{idx:v}),""));let w={get action(){return c},get location(){return e(o,u)},listen(e){if(h)throw new Error("A history only accepts one active listener");return o.addEventListener(l,g),h=e,()=>{o.removeEventListener(l,g),h=null}},createHref:e=>t(o,e),createURL:b,encodeLocation(e){let t=b(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){c=n.Push;let a=p(w.location,e,t);r&&r(a,e),v=y()+1;let i=f(a,v),l=w.createHref(a);try{u.pushState(i,"",l)}catch(d){if(d instanceof DOMException&&"DataCloneError"===d.name)throw d;o.location.assign(l)}s&&h&&h({action:c,location:w.location,delta:1})},replace:function(e,t){c=n.Replace;let a=p(w.location,e,t);r&&r(a,e),v=y();let o=f(a,v),i=w.createHref(a);u.replaceState(o,"",i),s&&h&&h({action:c,location:w.location,delta:0})},go:e=>u.go(e)};return w}var g;!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(g||(g={}));const b=new Set(["lazy","caseSensitive","path","id","index","children"]);function w(e,t,r,n){return void 0===r&&(r=[]),void 0===n&&(n={}),e.map(((e,a)=>{let o=[...r,a],l="string"===typeof e.id?e.id:o.join("-");if(d(!0!==e.index||!e.children,"Cannot specify children on an index route"),d(!n[l],'Found a route id collision on id "'+l+"\". Route id's must be globally unique within Data Router usages"),function(e){return!0===e.index}(e)){let r=i({},e,t(e),{id:l});return n[l]=r,r}{let r=i({},e,t(e),{id:l,children:void 0});return n[l]=r,e.children&&(r.children=w(e.children,t,o,n)),r}}))}function E(e,t,r){void 0===r&&(r="/");let n=F(("string"===typeof t?v(t):t).pathname||"/",r);if(null==n)return null;let a=R(e);!function(e){e.sort(((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){let r=e.length===t.length&&e.slice(0,-1).every(((e,r)=>e===t[r]));return r?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((e=>e.childrenIndex)),t.routesMeta.map((e=>e.childrenIndex)))))}(a);let o=null;for(let i=0;null==o&&i<a.length;++i){let e=O(n);o=U(a[i],e)}return o}function S(e,t){let{route:r,pathname:n,params:a}=e;return{id:r.id,pathname:n,params:a,data:t[r.id],handle:r.handle}}function R(e,t,r,n){void 0===t&&(t=[]),void 0===r&&(r=[]),void 0===n&&(n="");let a=(e,a,o)=>{let i={relativePath:void 0===o?e.path||"":o,caseSensitive:!0===e.caseSensitive,childrenIndex:a,route:e};i.relativePath.startsWith("/")&&(d(i.relativePath.startsWith(n),'Absolute route path "'+i.relativePath+'" nested under path "'+n+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),i.relativePath=i.relativePath.slice(n.length));let l=W([n,i.relativePath]),s=r.concat(i);e.children&&e.children.length>0&&(d(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+l+'".'),R(e.children,t,s,l)),(null!=e.path||e.index)&&t.push({path:l,score:A(l,e.index),routesMeta:s})};return e.forEach(((e,t)=>{var r;if(""!==e.path&&null!=(r=e.path)&&r.includes("?"))for(let n of x(e.path))a(e,t,n);else a(e,t)})),t}function x(e){let t=e.split("/");if(0===t.length)return[];let[r,...n]=t,a=r.endsWith("?"),o=r.replace(/\?$/,"");if(0===n.length)return a?[o,""]:[o];let i=x(n.join("/")),l=[];return l.push(...i.map((e=>""===e?o:[o,e].join("/")))),a&&l.push(...i),l.map((t=>e.startsWith("/")&&""===t?"/":t))}const D=/^:[\w-]+$/,C=3,L=2,P=1,k=10,_=-2,T=e=>"*"===e;function A(e,t){let r=e.split("/"),n=r.length;return r.some(T)&&(n+=_),t&&(n+=L),r.filter((e=>!T(e))).reduce(((e,t)=>e+(D.test(t)?C:""===t?P:k)),n)}function U(e,t){let{routesMeta:r}=e,n={},a="/",o=[];for(let i=0;i<r.length;++i){let e=r[i],l=i===r.length-1,s="/"===a?t:t.slice(a.length)||"/",u=M({path:e.relativePath,caseSensitive:e.caseSensitive,end:l},s);if(!u)return null;Object.assign(n,u.params);let c=e.route;o.push({params:n,pathname:W([a,u.pathname]),pathnameBase:K(W([a,u.pathnameBase])),route:c}),"/"!==u.pathnameBase&&(a=W([a,u.pathnameBase]))}return o}function j(e,t){void 0===t&&(t={});let r=e;r.endsWith("*")&&"*"!==r&&!r.endsWith("/*")&&(h(!1,'Route path "'+r+'" will be treated as if it were "'+r.replace(/\*$/,"/*")+'" because the `*` character must always follow a `/` in the pattern. To get rid of this warning, please change the route path to "'+r.replace(/\*$/,"/*")+'".'),r=r.replace(/\*$/,"/*"));const n=r.startsWith("/")?"/":"",a=e=>null==e?"":"string"===typeof e?e:String(e);return n+r.split(/\/+/).map(((e,r,n)=>{if(r===n.length-1&&"*"===e){return a(t["*"])}const o=e.match(/^:([\w-]+)(\??)$/);if(o){const[,e,r]=o;let n=t[e];return d("?"===r||null!=n,'Missing ":'+e+'" param'),a(n)}return e.replace(/\?$/g,"")})).filter((e=>!!e)).join("/")}function M(e,t){"string"===typeof e&&(e={path:e,caseSensitive:!1,end:!0});let[r,n]=function(e,t,r){void 0===t&&(t=!1);void 0===r&&(r=!0);h("*"===e||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were "'+e.replace(/\*$/,"/*")+'" because the `*` character must always follow a `/` in the pattern. To get rid of this warning, please change the route path to "'+e.replace(/\*$/,"/*")+'".');let n=[],a="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,((e,t,r)=>(n.push({paramName:t,isOptional:null!=r}),r?"/?([^\\/]+)?":"/([^\\/]+)")));e.endsWith("*")?(n.push({paramName:"*"}),a+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?a+="\\/*$":""!==e&&"/"!==e&&(a+="(?:(?=\\/|$))");let o=new RegExp(a,t?void 0:"i");return[o,n]}(e.path,e.caseSensitive,e.end),a=t.match(r);if(!a)return null;let o=a[0],i=o.replace(/(.)\/+$/,"$1"),l=a.slice(1);return{params:n.reduce(((e,t,r)=>{let{paramName:n,isOptional:a}=t;if("*"===n){let e=l[r]||"";i=o.slice(0,o.length-e.length).replace(/(.)\/+$/,"$1")}const s=l[r];return e[n]=a&&!s?void 0:(s||"").replace(/%2F/g,"/"),e}),{}),pathname:o,pathnameBase:i,pattern:e}}function O(e){try{return e.split("/").map((e=>decodeURIComponent(e).replace(/\//g,"%2F"))).join("/")}catch(t){return h(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function F(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,n=e.charAt(r);return n&&"/"!==n?null:e.slice(r)||"/"}function N(e,t){void 0===t&&(t="/");let{pathname:r,search:n="",hash:a=""}="string"===typeof e?v(e):e,o=r?r.startsWith("/")?r:function(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((e=>{".."===e?r.length>1&&r.pop():"."!==e&&r.push(e)})),r.length>1?r.join("/"):"/"}(r,t):t;return{pathname:o,search:$(n),hash:J(a)}}function B(e,t,r,n){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(n)+"]. Please separate it out to the `to."+r+'` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.'}function I(e){return e.filter(((e,t)=>0===t||e.route.path&&e.route.path.length>0))}function z(e,t){let r=I(e);return t?r.map(((t,r)=>r===e.length-1?t.pathname:t.pathnameBase)):r.map((e=>e.pathnameBase))}function H(e,t,r,n){let a;void 0===n&&(n=!1),"string"===typeof e?a=v(e):(a=i({},e),d(!a.pathname||!a.pathname.includes("?"),B("?","pathname","search",a)),d(!a.pathname||!a.pathname.includes("#"),B("#","pathname","hash",a)),d(!a.search||!a.search.includes("#"),B("#","search","hash",a)));let o,l=""===e||""===a.pathname,s=l?"/":a.pathname;if(null==s)o=r;else{let e=t.length-1;if(!n&&s.startsWith("..")){let t=s.split("/");for(;".."===t[0];)t.shift(),e-=1;a.pathname=t.join("/")}o=e>=0?t[e]:"/"}let u=N(a,o),c=s&&"/"!==s&&s.endsWith("/"),h=(l||"."===s)&&r.endsWith("/");return u.pathname.endsWith("/")||!c&&!h||(u.pathname+="/"),u}const W=e=>e.join("/").replace(/\/\/+/g,"/"),K=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),$=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",J=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"",q=function(e,t){void 0===t&&(t={});let r="number"===typeof t?{status:t}:t,n=new Headers(r.headers);return n.has("Content-Type")||n.set("Content-Type","application/json; charset=utf-8"),new Response(JSON.stringify(e),i({},r,{headers:n}))};class V extends Error{}class Y{constructor(e,t){let r;this.pendingKeysSet=new Set,this.subscribers=new Set,this.deferredKeys=[],d(e&&"object"===typeof e&&!Array.isArray(e),"defer() only accepts plain objects"),this.abortPromise=new Promise(((e,t)=>r=t)),this.controller=new AbortController;let n=()=>r(new V("Deferred data aborted"));this.unlistenAbortSignal=()=>this.controller.signal.removeEventListener("abort",n),this.controller.signal.addEventListener("abort",n),this.data=Object.entries(e).reduce(((e,t)=>{let[r,n]=t;return Object.assign(e,{[r]:this.trackPromise(r,n)})}),{}),this.done&&this.unlistenAbortSignal(),this.init=t}trackPromise(e,t){if(!(t instanceof Promise))return t;this.deferredKeys.push(e),this.pendingKeysSet.add(e);let r=Promise.race([t,this.abortPromise]).then((t=>this.onSettle(r,e,void 0,t)),(t=>this.onSettle(r,e,t)));return r.catch((()=>{})),Object.defineProperty(r,"_tracked",{get:()=>!0}),r}onSettle(e,t,r,n){if(this.controller.signal.aborted&&r instanceof V)return this.unlistenAbortSignal(),Object.defineProperty(e,"_error",{get:()=>r}),Promise.reject(r);if(this.pendingKeysSet.delete(t),this.done&&this.unlistenAbortSignal(),void 0===r&&void 0===n){let r=new Error('Deferred data for key "'+t+'" resolved/rejected with `undefined`, you must resolve/reject with a value or `null`.');return Object.defineProperty(e,"_error",{get:()=>r}),this.emit(!1,t),Promise.reject(r)}return void 0===n?(Object.defineProperty(e,"_error",{get:()=>r}),this.emit(!1,t),Promise.reject(r)):(Object.defineProperty(e,"_data",{get:()=>n}),this.emit(!1,t),n)}emit(e,t){this.subscribers.forEach((r=>r(e,t)))}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}cancel(){this.controller.abort(),this.pendingKeysSet.forEach(((e,t)=>this.pendingKeysSet.delete(t))),this.emit(!0)}async resolveData(e){let t=!1;if(!this.done){let r=()=>this.cancel();e.addEventListener("abort",r),t=await new Promise((t=>{this.subscribe((n=>{e.removeEventListener("abort",r),(n||this.done)&&t(n)}))}))}return t}get done(){return 0===this.pendingKeysSet.size}get unwrappedData(){return d(null!==this.data&&this.done,"Can only unwrap data on initialized and settled deferreds"),Object.entries(this.data).reduce(((e,t)=>{let[r,n]=t;return Object.assign(e,{[r]:X(n)})}),{})}get pendingKeys(){return Array.from(this.pendingKeysSet)}}function X(e){if(!function(e){return e instanceof Promise&&!0===e._tracked}(e))return e;if(e._error)throw e._error;return e._data}const G=function(e,t){return void 0===t&&(t={}),new Y(e,"number"===typeof t?{status:t}:t)},Q=function(e,t){void 0===t&&(t=302);let r=t;"number"===typeof r?r={status:r}:"undefined"===typeof r.status&&(r.status=302);let n=new Headers(r.headers);return n.set("Location",e),new Response(null,i({},r,{headers:n}))},Z=(e,t)=>{let r=Q(e,t);return r.headers.set("X-Remix-Reload-Document","true"),r};class ee{constructor(e,t,r,n){void 0===n&&(n=!1),this.status=e,this.statusText=t||"",this.internal=n,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function te(e){return null!=e&&"number"===typeof e.status&&"string"===typeof e.statusText&&"boolean"===typeof e.internal&&"data"in e}const re=["post","put","patch","delete"],ne=new Set(re),ae=["get",...re],oe=new Set(ae),ie=new Set([301,302,303,307,308]),le=new Set([307,308]),se={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},ue={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},ce={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},de=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,he=e=>({hasErrorBoundary:Boolean(e.hasErrorBoundary)}),fe="remix-router-transitions";function pe(e){const t=e.window?e.window:"undefined"!==typeof window?window:void 0,r="undefined"!==typeof t&&"undefined"!==typeof t.document&&"undefined"!==typeof t.document.createElement,a=!r;let o;if(d(e.routes.length>0,"You must provide a non-empty routes array to createRouter"),e.mapRouteProperties)o=e.mapRouteProperties;else if(e.detectErrorBoundary){let t=e.detectErrorBoundary;o=e=>({hasErrorBoundary:t(e)})}else o=he;let l,s,u={},c=w(e.routes,o,void 0,u),f=e.basename||"/",m=i({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1},e.future),v=null,y=new Set,b=null,R=null,x=null,D=null!=e.hydrationData,C=E(c,e.history.location,f),L=null;if(null==C){let t=Te(404,{pathname:e.history.location.pathname}),{matches:r,route:n}=_e(c);C=r,L={[n.id]:t}}let P,k=C.some((e=>e.route.lazy)),_=C.some((e=>e.route.loader));if(k)s=!1;else if(_)if(m.v7_partialHydration){let t=e.hydrationData?e.hydrationData.loaderData:null,r=e.hydrationData?e.hydrationData.errors:null;s=C.every((e=>e.route.loader&&!0!==e.route.loader.hydrate&&(t&&void 0!==t[e.route.id]||r&&void 0!==r[e.route.id])))}else s=null!=e.hydrationData;else s=!0;let T,A={historyAction:e.history.action,location:e.history.location,matches:C,initialized:s,navigation:se,restoreScrollPosition:null==e.hydrationData&&null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||L,fetchers:new Map,blockers:new Map},U=n.Pop,j=!1,M=!1,O=new Map,N=null,B=!1,I=!1,z=[],H=[],W=new Map,K=0,$=-1,J=new Map,q=new Set,V=new Map,Y=new Map,X=new Set,G=new Map,Q=new Map,Z=!1;function ee(e,t){void 0===t&&(t={}),A=i({},A,e);let r=[],n=[];m.v7_fetcherPersist&&A.fetchers.forEach(((e,t)=>{"idle"===e.state&&(X.has(t)?n.push(t):r.push(t))})),[...y].forEach((e=>e(A,{deletedFetchers:n,unstable_viewTransitionOpts:t.viewTransitionOpts,unstable_flushSync:!0===t.flushSync}))),m.v7_fetcherPersist&&(r.forEach((e=>A.fetchers.delete(e))),n.forEach((e=>be(e))))}function te(t,r,a){var o,s;let u,{flushSync:d}=void 0===a?{}:a,h=null!=A.actionData&&null!=A.navigation.formMethod&&Be(A.navigation.formMethod)&&"loading"===A.navigation.state&&!0!==(null==(o=t.state)?void 0:o._isRedirect);u=r.actionData?Object.keys(r.actionData).length>0?r.actionData:null:h?A.actionData:null;let f=r.loaderData?Pe(A.loaderData,r.loaderData,r.matches||[],r.errors):A.loaderData,p=A.blockers;p.size>0&&(p=new Map(p),p.forEach(((e,t)=>p.set(t,ce))));let m,v=!0===j||null!=A.navigation.formMethod&&Be(A.navigation.formMethod)&&!0!==(null==(s=t.state)?void 0:s._isRedirect);if(l&&(c=l,l=void 0),B||U===n.Pop||(U===n.Push?e.history.push(t,t.state):U===n.Replace&&e.history.replace(t,t.state)),U===n.Pop){let e=O.get(A.location.pathname);e&&e.has(t.pathname)?m={currentLocation:A.location,nextLocation:t}:O.has(t.pathname)&&(m={currentLocation:t,nextLocation:A.location})}else if(M){let e=O.get(A.location.pathname);e?e.add(t.pathname):(e=new Set([t.pathname]),O.set(A.location.pathname,e)),m={currentLocation:A.location,nextLocation:t}}ee(i({},r,{actionData:u,loaderData:f,historyAction:U,location:t,initialized:!0,navigation:se,revalidation:"idle",restoreScrollPosition:Ve(t,r.matches||A.matches),preventScrollReset:v,blockers:p}),{viewTransitionOpts:m,flushSync:!0===d}),U=n.Pop,j=!1,M=!1,B=!1,I=!1,z=[],H=[]}async function re(t,r,a){T&&T.abort(),T=null,U=t,B=!0===(a&&a.startUninterruptedRevalidation),function(e,t){if(b&&x){let r=He(e,t);b[r]=x()}}(A.location,A.matches),j=!0===(a&&a.preventScrollReset),M=!0===(a&&a.enableViewTransition);let s=l||c,d=a&&a.overrideNavigation,h=E(s,r,f),p=!0===(a&&a.flushSync);if(!h){let e=Te(404,{pathname:r.pathname}),{matches:t,route:n}=_e(s);return Ne(),void te(r,{matches:t,loaderData:{},errors:{[n.id]:e}},{flushSync:p})}if(A.initialized&&!I&&function(e,t){if(e.pathname!==t.pathname||e.search!==t.search)return!1;if(""===e.hash)return""!==t.hash;if(e.hash===t.hash)return!0;if(""!==t.hash)return!0;return!1}(A.location,r)&&!(a&&a.submission&&Be(a.submission.formMethod)))return void te(r,{matches:h},{flushSync:p});T=new AbortController;let v,y,w=Re(e.history,r,T.signal,a&&a.submission);if(a&&a.pendingError)y={[ke(h).route.id]:a.pendingError};else if(a&&a.submission&&Be(a.submission.formMethod)){let e=await async function(e,t,r,a,i){void 0===i&&(i={});oe();let l,s=function(e,t){let r={state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text};return r}(t,r);ee({navigation:s},{flushSync:!0===i.flushSync});let c=We(a,t);if(c.route.action||c.route.lazy){if(l=await Se("action",e,c,a,u,o,f,m.v7_relativeSplatPath),e.signal.aborted)return{shortCircuited:!0}}else l={type:g.error,error:Te(405,{method:e.method,pathname:t.pathname,routeId:c.route.id})};if(Oe(l)){let e;return e=i&&null!=i.replace?i.replace:l.location===A.location.pathname+A.location.search,await ne(A,l,{submission:r,replace:e}),{shortCircuited:!0}}if(Me(l)){let e=ke(a,c.route.id);return!0!==(i&&i.replace)&&(U=n.Push),{pendingActionData:{},pendingActionError:{[e.route.id]:l.error}}}if(je(l))throw Te(400,{type:"defer-action"});return{pendingActionData:{[c.route.id]:l.data}}}(w,r,a.submission,h,{replace:a.replace,flushSync:p});if(e.shortCircuited)return;v=e.pendingActionData,y=e.pendingActionError,d=$e(r,a.submission),p=!1,w=new Request(w.url,{signal:w.signal})}let{shortCircuited:S,loaderData:R,errors:D}=await async function(t,r,n,a,o,s,u,d,h,p,v){let y=a||$e(r,o),g=o||s||Ke(y),b=l||c,[w,E]=ge(e.history,A,n,g,r,m.v7_partialHydration&&!0===d,I,z,H,X,V,q,b,f,p,v);if(Ne((e=>!(n&&n.some((t=>t.route.id===e)))||w&&w.some((t=>t.route.id===e)))),$=++K,0===w.length&&0===E.length){let e=xe();return te(r,i({matches:n,loaderData:{},errors:v||null},p?{actionData:p}:{},e?{fetchers:new Map(A.fetchers)}:{}),{flushSync:h}),{shortCircuited:!0}}if(!B&&(!m.v7_partialHydration||!d)){E.forEach((e=>{let t=A.fetchers.get(e.key),r=Je(void 0,t?t.data:void 0);A.fetchers.set(e.key,r)}));let e=p||A.actionData;ee(i({navigation:y},e?0===Object.keys(e).length?{actionData:null}:{actionData:e}:{},E.length>0?{fetchers:new Map(A.fetchers)}:{}),{flushSync:h})}E.forEach((e=>{W.has(e.key)&&we(e.key),e.controller&&W.set(e.key,e.controller)}));let S=()=>E.forEach((e=>we(e.key)));T&&T.signal.addEventListener("abort",S);let{results:R,loaderResults:x,fetcherResults:D}=await ae(A.matches,n,w,E,t);if(t.signal.aborted)return{shortCircuited:!0};T&&T.signal.removeEventListener("abort",S);E.forEach((e=>W.delete(e.key)));let C=Ae(R);if(C){if(C.idx>=w.length){let e=E[C.idx-w.length].key;q.add(e)}return await ne(A,C.result,{replace:u}),{shortCircuited:!0}}let{loaderData:L,errors:P}=Le(A,n,w,x,v,E,D,G);G.forEach(((e,t)=>{e.subscribe((r=>{(r||e.done)&&G.delete(t)}))})),m.v7_partialHydration&&d&&A.errors&&Object.entries(A.errors).filter((e=>{let[t]=e;return!w.some((e=>e.route.id===t))})).forEach((e=>{let[t,r]=e;P=Object.assign(P||{},{[t]:r})}));let k=xe(),_=De($),U=k||_||E.length>0;return i({loaderData:L,errors:P},U?{fetchers:new Map(A.fetchers)}:{})}(w,r,h,d,a&&a.submission,a&&a.fetcherSubmission,a&&a.replace,a&&!0===a.initialHydration,p,v,y);S||(T=null,te(r,i({matches:h},v?{actionData:v}:{},{loaderData:R,errors:D})))}async function ne(a,o,l){let{submission:s,fetcherSubmission:u,replace:c}=void 0===l?{}:l;o.revalidate&&(I=!0);let h=p(a.location,o.location,{_isRedirect:!0});if(d(h,"Expected a location on the redirect navigation"),r){let r=!1;if(o.reloadDocument)r=!0;else if(de.test(o.location)){const n=e.history.createURL(o.location);r=n.origin!==t.location.origin||null==F(n.pathname,f)}if(r)return void(c?t.location.replace(o.location):t.location.assign(o.location))}T=null;let m=!0===c?n.Replace:n.Push,{formMethod:v,formAction:y,formEncType:g}=a.navigation;!s&&!u&&v&&y&&g&&(s=Ke(a.navigation));let b=s||u;if(le.has(o.status)&&b&&Be(b.formMethod))await re(m,h,{submission:i({},b,{formAction:o.location}),preventScrollReset:j});else{let e=$e(h,s);await re(m,h,{overrideNavigation:e,fetcherSubmission:u,preventScrollReset:j})}}async function ae(t,r,n,a,i){let l=await Promise.all([...n.map((e=>Se("loader",i,e,r,u,o,f,m.v7_relativeSplatPath))),...a.map((t=>{if(t.matches&&t.match&&t.controller)return Se("loader",Re(e.history,t.path,t.controller.signal),t.match,t.matches,u,o,f,m.v7_relativeSplatPath);return{type:g.error,error:Te(404,{pathname:t.path})}}))]),s=l.slice(0,n.length),c=l.slice(n.length);return await Promise.all([Ie(t,n,s,s.map((()=>i.signal)),!1,A.loaderData),Ie(t,a.map((e=>e.match)),c,a.map((e=>e.controller?e.controller.signal:null)),!0)]),{results:l,loaderResults:s,fetcherResults:c}}function oe(){I=!0,z.push(...Ne()),V.forEach(((e,t)=>{W.has(t)&&(H.push(t),we(t))}))}function ie(e,t,r){void 0===r&&(r={}),A.fetchers.set(e,t),ee({fetchers:new Map(A.fetchers)},{flushSync:!0===(r&&r.flushSync)})}function pe(e,t,r,n){void 0===n&&(n={});let a=ke(A.matches,t);be(e),ee({errors:{[a.route.id]:r},fetchers:new Map(A.fetchers)},{flushSync:!0===(n&&n.flushSync)})}function ye(e){return m.v7_fetcherPersist&&(Y.set(e,(Y.get(e)||0)+1),X.has(e)&&X.delete(e)),A.fetchers.get(e)||ue}function be(e){let t=A.fetchers.get(e);!W.has(e)||t&&"loading"===t.state&&J.has(e)||we(e),V.delete(e),J.delete(e),q.delete(e),X.delete(e),A.fetchers.delete(e)}function we(e){let t=W.get(e);d(t,"Expected fetch controller: "+e),t.abort(),W.delete(e)}function Ee(e){for(let t of e){let e=qe(ye(t).data);A.fetchers.set(t,e)}}function xe(){let e=[],t=!1;for(let r of q){let n=A.fetchers.get(r);d(n,"Expected fetcher: "+r),"loading"===n.state&&(q.delete(r),e.push(r),t=!0)}return Ee(e),t}function De(e){let t=[];for(let[r,n]of J)if(n<e){let e=A.fetchers.get(r);d(e,"Expected fetcher: "+r),"loading"===e.state&&(we(r),J.delete(r),t.push(r))}return Ee(t),t.length>0}function Ce(e){A.blockers.delete(e),Q.delete(e)}function Ue(e,t){let r=A.blockers.get(e)||ce;d("unblocked"===r.state&&"blocked"===t.state||"blocked"===r.state&&"blocked"===t.state||"blocked"===r.state&&"proceeding"===t.state||"blocked"===r.state&&"unblocked"===t.state||"proceeding"===r.state&&"unblocked"===t.state,"Invalid blocker state transition: "+r.state+" -> "+t.state);let n=new Map(A.blockers);n.set(e,t),ee({blockers:n})}function Fe(e){let{currentLocation:t,nextLocation:r,historyAction:n}=e;if(0===Q.size)return;Q.size>1&&h(!1,"A router only supports one blocker at a time");let a=Array.from(Q.entries()),[o,i]=a[a.length-1],l=A.blockers.get(o);return l&&"proceeding"===l.state?void 0:i({currentLocation:t,nextLocation:r,historyAction:n})?o:void 0}function Ne(e){let t=[];return G.forEach(((r,n)=>{e&&!e(n)||(r.cancel(),t.push(n),G.delete(n))})),t}function He(e,t){if(R){return R(e,t.map((e=>S(e,A.loaderData))))||e.key}return e.key}function Ve(e,t){if(b){let r=He(e,t),n=b[r];if("number"===typeof n)return n}return null}return P={get basename(){return f},get future(){return m},get state(){return A},get routes(){return c},get window(){return t},initialize:function(){if(v=e.history.listen((t=>{let{action:r,location:n,delta:a}=t;if(Z)return void(Z=!1);h(0===Q.size||null!=a,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let o=Fe({currentLocation:A.location,nextLocation:n,historyAction:r});return o&&null!=a?(Z=!0,e.history.go(-1*a),void Ue(o,{state:"blocked",location:n,proceed(){Ue(o,{state:"proceeding",proceed:void 0,reset:void 0,location:n}),e.history.go(a)},reset(){let e=new Map(A.blockers);e.set(o,ce),ee({blockers:e})}})):re(r,n)})),r){!function(e,t){try{let r=e.sessionStorage.getItem(fe);if(r){let e=JSON.parse(r);for(let[r,n]of Object.entries(e||{}))n&&Array.isArray(n)&&t.set(r,new Set(n||[]))}}catch(r){}}(t,O);let e=()=>function(e,t){if(t.size>0){let n={};for(let[e,r]of t)n[e]=[...r];try{e.sessionStorage.setItem(fe,JSON.stringify(n))}catch(r){h(!1,"Failed to save applied view transitions in sessionStorage ("+r+").")}}}(t,O);t.addEventListener("pagehide",e),N=()=>t.removeEventListener("pagehide",e)}return A.initialized||re(n.Pop,A.location,{initialHydration:!0}),P},subscribe:function(e){return y.add(e),()=>y.delete(e)},enableScrollRestoration:function(e,t,r){if(b=e,x=t,R=r||null,!D&&A.navigation===se){D=!0;let e=Ve(A.location,A.matches);null!=e&&ee({restoreScrollPosition:e})}return()=>{b=null,x=null,R=null}},navigate:async function t(r,a){if("number"===typeof r)return void e.history.go(r);let o=me(A.location,A.matches,f,m.v7_prependBasename,r,m.v7_relativeSplatPath,null==a?void 0:a.fromRouteId,null==a?void 0:a.relative),{path:l,submission:s,error:u}=ve(m.v7_normalizeFormMethod,!1,o,a),c=A.location,d=p(A.location,l,a&&a.state);d=i({},d,e.history.encodeLocation(d));let h=a&&null!=a.replace?a.replace:void 0,v=n.Push;!0===h?v=n.Replace:!1===h||null!=s&&Be(s.formMethod)&&s.formAction===A.location.pathname+A.location.search&&(v=n.Replace);let y=a&&"preventScrollReset"in a?!0===a.preventScrollReset:void 0,g=!0===(a&&a.unstable_flushSync),b=Fe({currentLocation:c,nextLocation:d,historyAction:v});if(!b)return await re(v,d,{submission:s,pendingError:u,preventScrollReset:y,replace:a&&a.replace,enableViewTransition:a&&a.unstable_viewTransition,flushSync:g});Ue(b,{state:"blocked",location:d,proceed(){Ue(b,{state:"proceeding",proceed:void 0,reset:void 0,location:d}),t(r,a)},reset(){let e=new Map(A.blockers);e.set(b,ce),ee({blockers:e})}})},fetch:function(t,r,n,i){if(a)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");W.has(t)&&we(t);let s=!0===(i&&i.unstable_flushSync),h=l||c,p=me(A.location,A.matches,f,m.v7_prependBasename,n,m.v7_relativeSplatPath,r,null==i?void 0:i.relative),v=E(h,p,f);if(!v)return void pe(t,r,Te(404,{pathname:p}),{flushSync:s});let{path:y,submission:g,error:b}=ve(m.v7_normalizeFormMethod,!0,p,i);if(b)return void pe(t,r,b,{flushSync:s});let w=We(v,y);j=!0===(i&&i.preventScrollReset),g&&Be(g.formMethod)?async function(t,r,n,a,i,s,h){if(oe(),V.delete(t),!a.route.action&&!a.route.lazy){let e=Te(405,{method:h.formMethod,pathname:n,routeId:r});return void pe(t,r,e,{flushSync:s})}let p=A.fetchers.get(t);ie(t,function(e,t){let r={state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0};return r}(h,p),{flushSync:s});let v=new AbortController,y=Re(e.history,n,v.signal,h);W.set(t,v);let g=K,b=await Se("action",y,a,i,u,o,f,m.v7_relativeSplatPath);if(y.signal.aborted)return void(W.get(t)===v&&W.delete(t));if(m.v7_fetcherPersist&&X.has(t)){if(Oe(b)||Me(b))return void ie(t,qe(void 0))}else{if(Oe(b))return W.delete(t),$>g?void ie(t,qe(void 0)):(q.add(t),ie(t,Je(h)),ne(A,b,{fetcherSubmission:h}));if(Me(b))return void pe(t,r,b.error)}if(je(b))throw Te(400,{type:"defer-action"});let w=A.navigation.location||A.location,S=Re(e.history,w,v.signal),R=l||c,x="idle"!==A.navigation.state?E(R,A.navigation.location,f):A.matches;d(x,"Didn't find any matches after fetcher action");let D=++K;J.set(t,D);let C=Je(h,b.data);A.fetchers.set(t,C);let[L,P]=ge(e.history,A,x,h,w,!1,I,z,H,X,V,q,R,f,{[a.route.id]:b.data},void 0);P.filter((e=>e.key!==t)).forEach((e=>{let t=e.key,r=A.fetchers.get(t),n=Je(void 0,r?r.data:void 0);A.fetchers.set(t,n),W.has(t)&&we(t),e.controller&&W.set(t,e.controller)})),ee({fetchers:new Map(A.fetchers)});let k=()=>P.forEach((e=>we(e.key)));v.signal.addEventListener("abort",k);let{results:_,loaderResults:j,fetcherResults:M}=await ae(A.matches,x,L,P,S);if(v.signal.aborted)return;v.signal.removeEventListener("abort",k),J.delete(t),W.delete(t),P.forEach((e=>W.delete(e.key)));let O=Ae(_);if(O){if(O.idx>=L.length){let e=P[O.idx-L.length].key;q.add(e)}return ne(A,O.result)}let{loaderData:F,errors:N}=Le(A,A.matches,L,j,void 0,P,M,G);if(A.fetchers.has(t)){let e=qe(b.data);A.fetchers.set(t,e)}De(D),"loading"===A.navigation.state&&D>$?(d(U,"Expected pending action"),T&&T.abort(),te(A.navigation.location,{matches:x,loaderData:F,errors:N,fetchers:new Map(A.fetchers)})):(ee({errors:N,loaderData:Pe(A.loaderData,F,x,N),fetchers:new Map(A.fetchers)}),I=!1)}(t,r,y,w,v,s,g):(V.set(t,{routeId:r,path:y}),async function(t,r,n,a,i,l,s){let c=A.fetchers.get(t);ie(t,Je(s,c?c.data:void 0),{flushSync:l});let h=new AbortController,p=Re(e.history,n,h.signal);W.set(t,h);let v=K,y=await Se("loader",p,a,i,u,o,f,m.v7_relativeSplatPath);je(y)&&(y=await ze(y,p.signal,!0)||y);W.get(t)===h&&W.delete(t);if(p.signal.aborted)return;if(X.has(t))return void ie(t,qe(void 0));if(Oe(y))return $>v?void ie(t,qe(void 0)):(q.add(t),void await ne(A,y));if(Me(y))return void pe(t,r,y.error);d(!je(y),"Unhandled fetcher deferred data"),ie(t,qe(y.data))}(t,r,y,w,v,s,g))},revalidate:function(){oe(),ee({revalidation:"loading"}),"submitting"!==A.navigation.state&&("idle"!==A.navigation.state?re(U||A.historyAction,A.navigation.location,{overrideNavigation:A.navigation}):re(A.historyAction,A.location,{startUninterruptedRevalidation:!0}))},createHref:t=>e.history.createHref(t),encodeLocation:t=>e.history.encodeLocation(t),getFetcher:ye,deleteFetcher:function(e){if(m.v7_fetcherPersist){let t=(Y.get(e)||0)-1;t<=0?(Y.delete(e),X.add(e)):Y.set(e,t)}else be(e);ee({fetchers:new Map(A.fetchers)})},dispose:function(){v&&v(),N&&N(),y.clear(),T&&T.abort(),A.fetchers.forEach(((e,t)=>be(t))),A.blockers.forEach(((e,t)=>Ce(t)))},getBlocker:function(e,t){let r=A.blockers.get(e)||ce;return Q.get(e)!==t&&Q.set(e,t),r},deleteBlocker:Ce,_internalFetchControllers:W,_internalActiveDeferreds:G,_internalSetRoutes:function(e){u={},l=w(e,o,void 0,u)}},P}Symbol("deferred");function me(e,t,r,n,a,o,i,l){let s,u;if(i){s=[];for(let e of t)if(s.push(e),e.route.id===i){u=e;break}}else s=t,u=t[t.length-1];let c=H(a||".",z(s,o),F(e.pathname,r)||e.pathname,"path"===l);return null==a&&(c.search=e.search,c.hash=e.hash),null!=a&&""!==a&&"."!==a||!u||!u.route.index||He(c.search)||(c.search=c.search?c.search.replace(/^\?/,"?index&"):"?index"),n&&"/"!==r&&(c.pathname="/"===c.pathname?r:W([r,c.pathname])),m(c)}function ve(e,t,r,n){if(!n||!function(e){return null!=e&&("formData"in e&&null!=e.formData||"body"in e&&void 0!==e.body)}(n))return{path:r};if(n.formMethod&&!Ne(n.formMethod))return{path:r,error:Te(405,{method:n.formMethod})};let a,o,i=()=>({path:r,error:Te(400,{type:"invalid-body"})}),l=n.formMethod||"get",s=e?l.toUpperCase():l.toLowerCase(),u=Ue(r);if(void 0!==n.body){if("text/plain"===n.formEncType){if(!Be(s))return i();let e="string"===typeof n.body?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce(((e,t)=>{let[r,n]=t;return""+e+r+"="+n+"\n"}),""):String(n.body);return{path:r,submission:{formMethod:s,formAction:u,formEncType:n.formEncType,formData:void 0,json:void 0,text:e}}}if("application/json"===n.formEncType){if(!Be(s))return i();try{let e="string"===typeof n.body?JSON.parse(n.body):n.body;return{path:r,submission:{formMethod:s,formAction:u,formEncType:n.formEncType,formData:void 0,json:e,text:void 0}}}catch(f){return i()}}}if(d("function"===typeof FormData,"FormData is not available in this environment"),n.formData)a=xe(n.formData),o=n.formData;else if(n.body instanceof FormData)a=xe(n.body),o=n.body;else if(n.body instanceof URLSearchParams)a=n.body,o=De(a);else if(null==n.body)a=new URLSearchParams,o=new FormData;else try{a=new URLSearchParams(n.body),o=De(a)}catch(f){return i()}let c={formMethod:s,formAction:u,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:o,json:void 0,text:void 0};if(Be(c.formMethod))return{path:r,submission:c};let h=v(r);return t&&h.search&&He(h.search)&&a.append("index",""),h.search="?"+a,{path:m(h),submission:c}}function ye(e,t){let r=e;if(t){let n=e.findIndex((e=>e.route.id===t));n>=0&&(r=e.slice(0,n))}return r}function ge(e,t,r,n,a,o,l,s,u,c,d,h,f,p,m,v){let y=v?Object.values(v)[0]:m?Object.values(m)[0]:void 0,g=e.createURL(t.location),b=e.createURL(a),w=v?Object.keys(v)[0]:void 0,S=ye(r,w).filter(((e,r)=>{let{route:a}=e;if(a.lazy)return!0;if(null==a.loader)return!1;if(o)return!!a.loader.hydrate||void 0===t.loaderData[a.id]&&(!t.errors||void 0===t.errors[a.id]);if(function(e,t,r){let n=!t||r.route.id!==t.route.id,a=void 0===e[r.route.id];return n||a}(t.loaderData,t.matches[r],e)||s.some((t=>t===e.route.id)))return!0;let u=t.matches[r],c=e;return we(e,i({currentUrl:g,currentParams:u.params,nextUrl:b,nextParams:c.params},n,{actionResult:y,defaultShouldRevalidate:l||g.pathname+g.search===b.pathname+b.search||g.search!==b.search||be(u,c)}))})),R=[];return d.forEach(((e,a)=>{if(o||!r.some((t=>t.route.id===e.routeId))||c.has(a))return;let s=E(f,e.path,p);if(!s)return void R.push({key:a,routeId:e.routeId,path:e.path,matches:null,match:null,controller:null});let d=t.fetchers.get(a),m=We(s,e.path),v=!1;v=!h.has(a)&&(!!u.includes(a)||(d&&"idle"!==d.state&&void 0===d.data?l:we(m,i({currentUrl:g,currentParams:t.matches[t.matches.length-1].params,nextUrl:b,nextParams:r[r.length-1].params},n,{actionResult:y,defaultShouldRevalidate:l})))),v&&R.push({key:a,routeId:e.routeId,path:e.path,matches:s,match:m,controller:new AbortController})})),[S,R]}function be(e,t){let r=e.route.path;return e.pathname!==t.pathname||null!=r&&r.endsWith("*")&&e.params["*"]!==t.params["*"]}function we(e,t){if(e.route.shouldRevalidate){let r=e.route.shouldRevalidate(t);if("boolean"===typeof r)return r}return t.defaultShouldRevalidate}async function Ee(e,t,r){if(!e.lazy)return;let n=await e.lazy();if(!e.lazy)return;let a=r[e.id];d(a,"No route found in manifest");let o={};for(let i in n){let e=void 0!==a[i]&&"hasErrorBoundary"!==i;h(!e,'Route "'+a.id+'" has a static property "'+i+'" defined but its lazy function is also returning a value for this property. The lazy route property "'+i+'" will be ignored.'),e||b.has(i)||(o[i]=n[i])}Object.assign(a,o),Object.assign(a,i({},t(a),{lazy:void 0}))}async function Se(e,t,r,n,a,o,i,l,s){let u,c,h;void 0===s&&(s={});let f=e=>{let n,a=new Promise(((e,t)=>n=t));return h=()=>n(),t.signal.addEventListener("abort",h),Promise.race([e({request:t,params:r.params,context:s.requestContext}),a])};try{let n=r.route[e];if(r.route.lazy)if(n){let e,t=await Promise.all([f(n).catch((t=>{e=t})),Ee(r.route,o,a)]);if(e)throw e;c=t[0]}else{if(await Ee(r.route,o,a),n=r.route[e],!n){if("action"===e){let e=new URL(t.url),n=e.pathname+e.search;throw Te(405,{method:t.method,pathname:n,routeId:r.route.id})}return{type:g.data,data:void 0}}c=await f(n)}else{if(!n){let e=new URL(t.url);throw Te(404,{pathname:e.pathname+e.search})}c=await f(n)}d(void 0!==c,"You defined "+("action"===e?"an action":"a loader")+' for route "'+r.route.id+"\" but didn't return anything from your `"+e+"` function. Please return a value or `null`.")}catch(v){u=g.error,c=v}finally{h&&t.signal.removeEventListener("abort",h)}if(Fe(c)){let e,a=c.status;if(ie.has(a)){let e=c.headers.get("Location");if(d(e,"Redirects returned/thrown from loaders/actions must have a Location header"),de.test(e)){if(!s.isStaticRequest){let r=new URL(t.url),n=e.startsWith("//")?new URL(r.protocol+e):new URL(e),a=null!=F(n.pathname,i);n.origin===r.origin&&a&&(e=n.pathname+n.search+n.hash)}}else e=me(new URL(t.url),n.slice(0,n.indexOf(r)+1),i,!0,e,l);if(s.isStaticRequest)throw c.headers.set("Location",e),c;return{type:g.redirect,status:a,location:e,revalidate:null!==c.headers.get("X-Remix-Revalidate"),reloadDocument:null!==c.headers.get("X-Remix-Reload-Document")}}if(s.isRouteRequest){throw{type:u===g.error?g.error:g.data,response:c}}try{let t=c.headers.get("Content-Type");e=t&&/\bapplication\/json\b/.test(t)?null==c.body?null:await c.json():await c.text()}catch(v){return{type:g.error,error:v}}return u===g.error?{type:u,error:new ee(a,c.statusText,e),headers:c.headers}:{type:g.data,data:e,statusCode:c.status,headers:c.headers}}return u===g.error?{type:u,error:c}:function(e){let t=e;return t&&"object"===typeof t&&"object"===typeof t.data&&"function"===typeof t.subscribe&&"function"===typeof t.cancel&&"function"===typeof t.resolveData}(c)?{type:g.deferred,deferredData:c,statusCode:null==(p=c.init)?void 0:p.status,headers:(null==(m=c.init)?void 0:m.headers)&&new Headers(c.init.headers)}:{type:g.data,data:c};var p,m}function Re(e,t,r,n){let a=e.createURL(Ue(t)).toString(),o={signal:r};if(n&&Be(n.formMethod)){let{formMethod:e,formEncType:t}=n;o.method=e.toUpperCase(),"application/json"===t?(o.headers=new Headers({"Content-Type":t}),o.body=JSON.stringify(n.json)):"text/plain"===t?o.body=n.text:"application/x-www-form-urlencoded"===t&&n.formData?o.body=xe(n.formData):o.body=n.formData}return new Request(a,o)}function xe(e){let t=new URLSearchParams;for(let[r,n]of e.entries())t.append(r,"string"===typeof n?n:n.name);return t}function De(e){let t=new FormData;for(let[r,n]of e.entries())t.append(r,n);return t}function Ce(e,t,r,n,a){let o,i={},l=null,s=!1,u={};return r.forEach(((r,c)=>{let h=t[c].route.id;if(d(!Oe(r),"Cannot handle redirect results in processLoaderData"),Me(r)){let t=ke(e,h),a=r.error;n&&(a=Object.values(n)[0],n=void 0),l=l||{},null==l[t.route.id]&&(l[t.route.id]=a),i[h]=void 0,s||(s=!0,o=te(r.error)?r.error.status:500),r.headers&&(u[h]=r.headers)}else je(r)?(a.set(h,r.deferredData),i[h]=r.deferredData.data):i[h]=r.data,null==r.statusCode||200===r.statusCode||s||(o=r.statusCode),r.headers&&(u[h]=r.headers)})),n&&(l=n,i[Object.keys(n)[0]]=void 0),{loaderData:i,errors:l,statusCode:o||200,loaderHeaders:u}}function Le(e,t,r,n,a,o,l,s){let{loaderData:u,errors:c}=Ce(t,r,n,a,s);for(let h=0;h<o.length;h++){let{key:t,match:r,controller:n}=o[h];d(void 0!==l&&void 0!==l[h],"Did not find corresponding fetcher result");let a=l[h];if(!n||!n.signal.aborted)if(Me(a)){let n=ke(e.matches,null==r?void 0:r.route.id);c&&c[n.route.id]||(c=i({},c,{[n.route.id]:a.error})),e.fetchers.delete(t)}else if(Oe(a))d(!1,"Unhandled fetcher revalidation redirect");else if(je(a))d(!1,"Unhandled fetcher deferred data");else{let r=qe(a.data);e.fetchers.set(t,r)}}return{loaderData:u,errors:c}}function Pe(e,t,r,n){let a=i({},t);for(let o of r){let r=o.route.id;if(t.hasOwnProperty(r)?void 0!==t[r]&&(a[r]=t[r]):void 0!==e[r]&&o.route.loader&&(a[r]=e[r]),n&&n.hasOwnProperty(r))break}return a}function ke(e,t){return(t?e.slice(0,e.findIndex((e=>e.route.id===t))+1):[...e]).reverse().find((e=>!0===e.route.hasErrorBoundary))||e[0]}function _e(e){let t=1===e.length?e[0]:e.find((e=>e.index||!e.path||"/"===e.path))||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function Te(e,t){let{pathname:r,routeId:n,method:a,type:o}=void 0===t?{}:t,i="Unknown Server Error",l="Unknown @remix-run/router error";return 400===e?(i="Bad Request",a&&r&&n?l="You made a "+a+' request to "'+r+'" but did not provide a `loader` for route "'+n+'", so there is no way to handle the request.':"defer-action"===o?l="defer() is not supported in actions":"invalid-body"===o&&(l="Unable to encode submission body")):403===e?(i="Forbidden",l='Route "'+n+'" does not match URL "'+r+'"'):404===e?(i="Not Found",l='No route matches URL "'+r+'"'):405===e&&(i="Method Not Allowed",a&&r&&n?l="You made a "+a.toUpperCase()+' request to "'+r+'" but did not provide an `action` for route "'+n+'", so there is no way to handle the request.':a&&(l='Invalid request method "'+a.toUpperCase()+'"')),new ee(e||500,i,new Error(l),!0)}function Ae(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if(Oe(r))return{result:r,idx:t}}}function Ue(e){return m(i({},"string"===typeof e?v(e):e,{hash:""}))}function je(e){return e.type===g.deferred}function Me(e){return e.type===g.error}function Oe(e){return(e&&e.type)===g.redirect}function Fe(e){return null!=e&&"number"===typeof e.status&&"string"===typeof e.statusText&&"object"===typeof e.headers&&"undefined"!==typeof e.body}function Ne(e){return oe.has(e.toLowerCase())}function Be(e){return ne.has(e.toLowerCase())}async function Ie(e,t,r,n,a,o){for(let i=0;i<r.length;i++){let l=r[i],s=t[i];if(!s)continue;let u=e.find((e=>e.route.id===s.route.id)),c=null!=u&&!be(u,s)&&void 0!==(o&&o[s.route.id]);if(je(l)&&(a||c)){let e=n[i];d(e,"Expected an AbortSignal for revalidating fetcher deferred result"),await ze(l,e,a).then((e=>{e&&(r[i]=e||r[i])}))}}}async function ze(e,t,r){if(void 0===r&&(r=!1),!await e.deferredData.resolveData(t)){if(r)try{return{type:g.data,data:e.deferredData.unwrappedData}}catch(n){return{type:g.error,error:n}}return{type:g.data,data:e.deferredData.data}}}function He(e){return new URLSearchParams(e).getAll("index").some((e=>""===e))}function We(e,t){let r="string"===typeof t?v(t).search:t.search;if(e[e.length-1].route.index&&He(r||""))return e[e.length-1];let n=I(e);return n[n.length-1]}function Ke(e){let{formMethod:t,formAction:r,formEncType:n,text:a,formData:o,json:i}=e;if(t&&r&&n)return null!=a?{formMethod:t,formAction:r,formEncType:n,formData:void 0,json:void 0,text:a}:null!=o?{formMethod:t,formAction:r,formEncType:n,formData:o,json:void 0,text:void 0}:void 0!==i?{formMethod:t,formAction:r,formEncType:n,formData:void 0,json:i,text:void 0}:void 0}function $e(e,t){if(t){return{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}return{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Je(e,t){if(e){return{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}}return{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function qe(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function Ve(){return Ve=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Ve.apply(this,arguments)}const Ye=a.createContext(null);const Xe=a.createContext(null);const Ge=a.createContext(null);const Qe=a.createContext(null);const Ze=a.createContext(null);const et=a.createContext({outlet:null,matches:[],isDataRoute:!1});const tt=a.createContext(null);function rt(e,t){let{relative:r}=void 0===t?{}:t;nt()||d(!1);let{basename:n,navigator:o}=a.useContext(Qe),{hash:i,pathname:l,search:s}=ft(e,{relative:r}),u=l;return"/"!==n&&(u="/"===l?n:W([n,l])),o.createHref({pathname:u,search:s,hash:i})}function nt(){return null!=a.useContext(Ze)}function at(){return nt()||d(!1),a.useContext(Ze).location}function ot(){return a.useContext(Ze).navigationType}function it(e){nt()||d(!1);let{pathname:t}=at();return a.useMemo((()=>M(e,t)),[t,e])}function lt(e){a.useContext(Qe).static||a.useLayoutEffect(e)}function st(){let{isDataRoute:e}=a.useContext(et);return e?function(){let{router:e}=St(wt.UseNavigateStable),t=xt(Et.UseNavigateStable),r=a.useRef(!1);return lt((()=>{r.current=!0})),a.useCallback((function(n,a){void 0===a&&(a={}),r.current&&("number"===typeof n?e.navigate(n):e.navigate(n,Ve({fromRouteId:t},a)))}),[e,t])}():function(){nt()||d(!1);let e=a.useContext(Ye),{basename:t,future:r,navigator:n}=a.useContext(Qe),{matches:o}=a.useContext(et),{pathname:i}=at(),l=JSON.stringify(z(o,r.v7_relativeSplatPath)),s=a.useRef(!1);return lt((()=>{s.current=!0})),a.useCallback((function(r,a){if(void 0===a&&(a={}),!s.current)return;if("number"===typeof r)return void n.go(r);let o=H(r,JSON.parse(l),i,"path"===a.relative);null==e&&"/"!==t&&(o.pathname="/"===o.pathname?t:W([t,o.pathname])),(a.replace?n.replace:n.push)(o,a.state,a)}),[t,n,l,i,e])}()}const ut=a.createContext(null);function ct(){return a.useContext(ut)}function dt(e){let t=a.useContext(et).outlet;return t?a.createElement(ut.Provider,{value:e},t):t}function ht(){let{matches:e}=a.useContext(et),t=e[e.length-1];return t?t.params:{}}function ft(e,t){let{relative:r}=void 0===t?{}:t,{future:n}=a.useContext(Qe),{matches:o}=a.useContext(et),{pathname:i}=at(),l=JSON.stringify(z(o,n.v7_relativeSplatPath));return a.useMemo((()=>H(e,JSON.parse(l),i,"path"===r)),[e,l,i,r])}function pt(e,t){return mt(e,t)}function mt(e,t,r,o){nt()||d(!1);let{navigator:i}=a.useContext(Qe),{matches:l}=a.useContext(et),s=l[l.length-1],u=s?s.params:{},c=(s&&s.pathname,s?s.pathnameBase:"/");s&&s.route;let h,f=at();if(t){var p;let e="string"===typeof t?v(t):t;"/"===c||(null==(p=e.pathname)?void 0:p.startsWith(c))||d(!1),h=e}else h=f;let m=h.pathname||"/",y=m;if("/"!==c){let e=c.replace(/^\//,"").split("/");y="/"+m.replace(/^\//,"").split("/").slice(e.length).join("/")}let g=E(e,{pathname:y});let b=bt(g&&g.map((e=>Object.assign({},e,{params:Object.assign({},u,e.params),pathname:W([c,i.encodeLocation?i.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?c:W([c,i.encodeLocation?i.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])}))),l,r,o);return t&&b?a.createElement(Ze.Provider,{value:{location:Ve({pathname:"/",search:"",hash:"",state:null,key:"default"},h),navigationType:n.Pop}},b):b}const vt=a.createElement((function(){let e=At(),t=te(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,n="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:n};return a.createElement(a.Fragment,null,a.createElement("h2",null,"Unexpected Application Error!"),a.createElement("h3",{style:{fontStyle:"italic"}},t),r?a.createElement("pre",{style:o},r):null,null)}),null);class yt extends a.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?a.createElement(et.Provider,{value:this.props.routeContext},a.createElement(tt.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function gt(e){let{routeContext:t,match:r,children:n}=e,o=a.useContext(Ye);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),a.createElement(et.Provider,{value:t},n)}function bt(e,t,r,n){var o;if(void 0===t&&(t=[]),void 0===r&&(r=null),void 0===n&&(n=null),null==e){var i;if(null==(i=r)||!i.errors)return null;e=r.matches}let l=e,s=null==(o=r)?void 0:o.errors;if(null!=s){let e=l.findIndex((e=>e.route.id&&(null==s?void 0:s[e.route.id])));e>=0||d(!1),l=l.slice(0,Math.min(l.length,e+1))}let u=!1,c=-1;if(r&&n&&n.v7_partialHydration)for(let a=0;a<l.length;a++){let e=l[a];if((e.route.HydrateFallback||e.route.hydrateFallbackElement)&&(c=a),e.route.id){let{loaderData:t,errors:n}=r,a=e.route.loader&&void 0===t[e.route.id]&&(!n||void 0===n[e.route.id]);if(e.route.lazy||a){u=!0,l=c>=0?l.slice(0,c+1):[l[0]];break}}}return l.reduceRight(((e,n,o)=>{let i,d=!1,h=null,f=null;var p;r&&(i=s&&n.route.id?s[n.route.id]:void 0,h=n.route.errorElement||vt,u&&(c<0&&0===o?(p="route-fallback",!1||Ft[p]||(Ft[p]=!0),d=!0,f=null):c===o&&(d=!0,f=n.route.hydrateFallbackElement||null)));let m=t.concat(l.slice(0,o+1)),v=()=>{let t;return t=i?h:d?f:n.route.Component?a.createElement(n.route.Component,null):n.route.element?n.route.element:e,a.createElement(gt,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:null!=r},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||0===o)?a.createElement(yt,{location:r.location,revalidation:r.revalidation,component:h,error:i,children:v(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):v()}),null)}var wt=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(wt||{}),Et=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Et||{});function St(e){let t=a.useContext(Ye);return t||d(!1),t}function Rt(e){let t=a.useContext(Xe);return t||d(!1),t}function xt(e){let t=function(e){let t=a.useContext(et);return t||d(!1),t}(),r=t.matches[t.matches.length-1];return r.route.id||d(!1),r.route.id}function Dt(){return xt(Et.UseRouteId)}function Ct(){return Rt(Et.UseNavigation).navigation}function Lt(){let e=St(wt.UseRevalidator),t=Rt(Et.UseRevalidator);return a.useMemo((()=>({revalidate:e.router.revalidate,state:t.revalidation})),[e.router.revalidate,t.revalidation])}function Pt(){let{matches:e,loaderData:t}=Rt(Et.UseMatches);return a.useMemo((()=>e.map((e=>S(e,t)))),[e,t])}function kt(){let e=Rt(Et.UseLoaderData),t=xt(Et.UseLoaderData);if(!e.errors||null==e.errors[t])return e.loaderData[t];console.error("You cannot `useLoaderData` in an errorElement (routeId: "+t+")")}function _t(e){return Rt(Et.UseRouteLoaderData).loaderData[e]}function Tt(){let e=Rt(Et.UseActionData),t=xt(Et.UseLoaderData);return e.actionData?e.actionData[t]:void 0}function At(){var e;let t=a.useContext(tt),r=Rt(Et.UseRouteError),n=xt(Et.UseRouteError);return void 0!==t?t:null==(e=r.errors)?void 0:e[n]}function Ut(){let e=a.useContext(Ge);return null==e?void 0:e._data}function jt(){let e=a.useContext(Ge);return null==e?void 0:e._error}let Mt=0;function Ot(e){let{router:t,basename:r}=St(wt.UseBlocker),n=Rt(Et.UseBlocker),[o,i]=a.useState(""),l=a.useCallback((t=>{if("function"!==typeof e)return!!e;if("/"===r)return e(t);let{currentLocation:n,nextLocation:a,historyAction:o}=t;return e({currentLocation:Ve({},n,{pathname:F(n.pathname,r)||n.pathname}),nextLocation:Ve({},a,{pathname:F(a.pathname,r)||a.pathname}),historyAction:o})}),[r,e]);return a.useEffect((()=>{let e=String(++Mt);return i(e),()=>t.deleteBlocker(e)}),[t]),a.useEffect((()=>{""!==o&&t.getBlocker(o,l)}),[t,o,l]),o&&n.blockers.has(o)?n.blockers.get(o):ce}const Ft={};const Nt=a.startTransition;function Bt(e){let{basename:t,children:r,initialEntries:n,initialIndex:o,future:i}=e,l=a.useRef();null==l.current&&(l.current=s({initialEntries:n,initialIndex:o,v5Compat:!0}));let u=l.current,[c,d]=a.useState({action:u.action,location:u.location}),{v7_startTransition:h}=i||{},f=a.useCallback((e=>{h&&Nt?Nt((()=>d(e))):d(e)}),[d,h]);return a.useLayoutEffect((()=>u.listen(f)),[u,f]),a.createElement(Wt,{basename:t,children:r,location:c.location,navigationType:c.action,navigator:u,future:i})}function It(e){let{to:t,replace:r,state:n,relative:o}=e;nt()||d(!1);let{future:i,static:l}=a.useContext(Qe),{matches:s}=a.useContext(et),{pathname:u}=at(),c=st(),h=H(t,z(s,i.v7_relativeSplatPath),u,"path"===o),f=JSON.stringify(h);return a.useEffect((()=>c(JSON.parse(f),{replace:r,state:n,relative:o})),[c,f,o,r,n]),null}function zt(e){return dt(e.context)}function Ht(e){d(!1)}function Wt(e){let{basename:t="/",children:r=null,location:o,navigationType:i=n.Pop,navigator:l,static:s=!1,future:u}=e;nt()&&d(!1);let c=t.replace(/^\/*/,"/"),h=a.useMemo((()=>({basename:c,navigator:l,static:s,future:Ve({v7_relativeSplatPath:!1},u)})),[c,u,l,s]);"string"===typeof o&&(o=v(o));let{pathname:f="/",search:p="",hash:m="",state:y=null,key:g="default"}=o,b=a.useMemo((()=>{let e=F(f,c);return null==e?null:{location:{pathname:e,search:p,hash:m,state:y,key:g},navigationType:i}}),[c,f,p,m,y,g,i]);return null==b?null:a.createElement(Qe.Provider,{value:h},a.createElement(Ze.Provider,{children:r,value:b}))}function Kt(e){let{children:t,location:r}=e;return pt(Xt(t),r)}function $t(e){let{children:t,errorElement:r,resolve:n}=e;return a.createElement(Vt,{resolve:n,errorElement:r},a.createElement(Yt,null,t))}var Jt=function(e){return e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error",e}(Jt||{});const qt=new Promise((()=>{}));class Vt extends a.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("<Await> caught the following error during render",e,t)}render(){let{children:e,errorElement:t,resolve:r}=this.props,n=null,o=Jt.pending;if(r instanceof Promise)if(this.state.error){o=Jt.error;let e=this.state.error;n=Promise.reject().catch((()=>{})),Object.defineProperty(n,"_tracked",{get:()=>!0}),Object.defineProperty(n,"_error",{get:()=>e})}else r._tracked?(n=r,o=void 0!==n._error?Jt.error:void 0!==n._data?Jt.success:Jt.pending):(o=Jt.pending,Object.defineProperty(r,"_tracked",{get:()=>!0}),n=r.then((e=>Object.defineProperty(r,"_data",{get:()=>e})),(e=>Object.defineProperty(r,"_error",{get:()=>e}))));else o=Jt.success,n=Promise.resolve(),Object.defineProperty(n,"_tracked",{get:()=>!0}),Object.defineProperty(n,"_data",{get:()=>r});if(o===Jt.error&&n._error instanceof V)throw qt;if(o===Jt.error&&!t)throw n._error;if(o===Jt.error)return a.createElement(Ge.Provider,{value:n,children:t});if(o===Jt.success)return a.createElement(Ge.Provider,{value:n,children:e});throw n}}function Yt(e){let{children:t}=e,r=Ut(),n="function"===typeof t?t(r):t;return a.createElement(a.Fragment,null,n)}function Xt(e,t){void 0===t&&(t=[]);let r=[];return a.Children.forEach(e,((e,n)=>{if(!a.isValidElement(e))return;let o=[...t,n];if(e.type===a.Fragment)return void r.push.apply(r,Xt(e.props.children,o));e.type!==Ht&&d(!1),e.props.index&&e.props.children&&d(!1);let i={id:e.props.id||o.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(i.children=Xt(e.props.children,o)),r.push(i)})),r}function Gt(e){return bt(e)}function Qt(e){let t={hasErrorBoundary:null!=e.ErrorBoundary||null!=e.errorElement};return e.Component&&Object.assign(t,{element:a.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:a.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:a.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}function Zt(e,t){return pe({basename:null==t?void 0:t.basename,future:Ve({},null==t?void 0:t.future,{v7_prependBasename:!0}),history:s({initialEntries:null==t?void 0:t.initialEntries,initialIndex:null==t?void 0:t.initialIndex}),hydrationData:null==t?void 0:t.hydrationData,routes:e,mapRouteProperties:Qt}).initialize()}function er(){return er=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},er.apply(this,arguments)}function tr(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}const rr="get",nr="application/x-www-form-urlencoded";function ar(e){return null!=e&&"string"===typeof e.tagName}function or(e){return void 0===e&&(e=""),new URLSearchParams("string"===typeof e||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce(((t,r)=>{let n=e[r];return t.concat(Array.isArray(n)?n.map((e=>[r,e])):[[r,n]])}),[]))}let ir=null;const lr=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function sr(e){return null==e||lr.has(e)?e:null}function ur(e,t){let r,n,a,o,i;if(ar(l=e)&&"form"===l.tagName.toLowerCase()){let i=e.getAttribute("action");n=i?F(i,t):null,r=e.getAttribute("method")||rr,a=sr(e.getAttribute("enctype"))||nr,o=new FormData(e)}else if(function(e){return ar(e)&&"button"===e.tagName.toLowerCase()}(e)||function(e){return ar(e)&&"input"===e.tagName.toLowerCase()}(e)&&("submit"===e.type||"image"===e.type)){let i=e.form;if(null==i)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let l=e.getAttribute("formaction")||i.getAttribute("action");if(n=l?F(l,t):null,r=e.getAttribute("formmethod")||i.getAttribute("method")||rr,a=sr(e.getAttribute("formenctype"))||sr(i.getAttribute("enctype"))||nr,o=new FormData(i,e),!function(){if(null===ir)try{new FormData(document.createElement("form"),0),ir=!1}catch(e){ir=!0}return ir}()){let{name:t,type:r,value:n}=e;if("image"===r){let e=t?t+".":"";o.append(e+"x","0"),o.append(e+"y","0")}else t&&o.append(t,n)}}else{if(ar(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');r=rr,n=null,a=nr,i=e}var l;return o&&"text/plain"===a&&(i=o,o=void 0),{action:n,method:r.toLowerCase(),encType:a,formData:o,body:i}}const cr=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],dr=["aria-current","caseSensitive","className","end","style","to","unstable_viewTransition","children"],hr=["fetcherKey","navigate","reloadDocument","replace","state","method","action","onSubmit","relative","preventScrollReset","unstable_viewTransition"];try{window.__reactRouterVersion="6"}catch(Zr){}function fr(e,t){return pe({basename:null==t?void 0:t.basename,future:er({},null==t?void 0:t.future,{v7_prependBasename:!0}),history:u({window:null==t?void 0:t.window}),hydrationData:(null==t?void 0:t.hydrationData)||mr(),routes:e,mapRouteProperties:Qt,window:null==t?void 0:t.window}).initialize()}function pr(e,t){return pe({basename:null==t?void 0:t.basename,future:er({},null==t?void 0:t.future,{v7_prependBasename:!0}),history:c({window:null==t?void 0:t.window}),hydrationData:(null==t?void 0:t.hydrationData)||mr(),routes:e,mapRouteProperties:Qt,window:null==t?void 0:t.window}).initialize()}function mr(){var e;let t=null==(e=window)?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=er({},t,{errors:vr(t.errors)})),t}function vr(e){if(!e)return null;let t=Object.entries(e),r={};for(let[n,a]of t)if(a&&"RouteErrorResponse"===a.__type)r[n]=new ee(a.status,a.statusText,a.data,!0===a.internal);else if(a&&"Error"===a.__type){if(a.__subType){let e=window[a.__subType];if("function"===typeof e)try{let t=new e(a.message);t.stack="",r[n]=t}catch(Zr){}}if(null==r[n]){let e=new Error(a.message);e.stack="",r[n]=e}}else r[n]=a;return r}const yr=a.createContext({isTransitioning:!1});const gr=a.createContext(new Map);const br=a.startTransition,wr=o.flushSync,Er=a.useId;function Sr(e){wr?wr(e):e()}class Rr{constructor(){this.status="pending",this.promise=new Promise(((e,t)=>{this.resolve=t=>{"pending"===this.status&&(this.status="resolved",e(t))},this.reject=e=>{"pending"===this.status&&(this.status="rejected",t(e))}}))}}function xr(e){let{fallbackElement:t,router:r,future:n}=e,[o,i]=a.useState(r.state),[l,s]=a.useState(),[u,c]=a.useState({isTransitioning:!1}),[d,h]=a.useState(),[f,p]=a.useState(),[m,v]=a.useState(),y=a.useRef(new Map),{v7_startTransition:g}=n||{},b=a.useCallback((e=>{g?function(e){br?br(e):e()}(e):e()}),[g]),w=a.useCallback(((e,t)=>{let{deletedFetchers:n,unstable_flushSync:a,unstable_viewTransitionOpts:o}=t;n.forEach((e=>y.current.delete(e))),e.fetchers.forEach(((e,t)=>{void 0!==e.data&&y.current.set(t,e.data)}));let l=null==r.window||"function"!==typeof r.window.document.startViewTransition;if(o&&!l){if(a){Sr((()=>{f&&(d&&d.resolve(),f.skipTransition()),c({isTransitioning:!0,flushSync:!0,currentLocation:o.currentLocation,nextLocation:o.nextLocation})}));let t=r.window.document.startViewTransition((()=>{Sr((()=>i(e)))}));return t.finished.finally((()=>{Sr((()=>{h(void 0),p(void 0),s(void 0),c({isTransitioning:!1})}))})),void Sr((()=>p(t)))}f?(d&&d.resolve(),f.skipTransition(),v({state:e,currentLocation:o.currentLocation,nextLocation:o.nextLocation})):(s(e),c({isTransitioning:!0,flushSync:!1,currentLocation:o.currentLocation,nextLocation:o.nextLocation}))}else a?Sr((()=>i(e))):b((()=>i(e)))}),[r.window,f,d,y,b]);a.useLayoutEffect((()=>r.subscribe(w)),[r,w]),a.useEffect((()=>{u.isTransitioning&&!u.flushSync&&h(new Rr)}),[u]),a.useEffect((()=>{if(d&&l&&r.window){let e=l,t=d.promise,n=r.window.document.startViewTransition((async()=>{b((()=>i(e))),await t}));n.finished.finally((()=>{h(void 0),p(void 0),s(void 0),c({isTransitioning:!1})})),p(n)}}),[b,l,d,r.window]),a.useEffect((()=>{d&&l&&o.location.key===l.location.key&&d.resolve()}),[d,f,o.location,l]),a.useEffect((()=>{!u.isTransitioning&&m&&(s(m.state),c({isTransitioning:!0,flushSync:!1,currentLocation:m.currentLocation,nextLocation:m.nextLocation}),v(void 0))}),[u.isTransitioning,m]),a.useEffect((()=>{}),[]);let E=a.useMemo((()=>({createHref:r.createHref,encodeLocation:r.encodeLocation,go:e=>r.navigate(e),push:(e,t,n)=>r.navigate(e,{state:t,preventScrollReset:null==n?void 0:n.preventScrollReset}),replace:(e,t,n)=>r.navigate(e,{replace:!0,state:t,preventScrollReset:null==n?void 0:n.preventScrollReset})})),[r]),S=r.basename||"/",R=a.useMemo((()=>({router:r,navigator:E,static:!1,basename:S})),[r,E,S]);return a.createElement(a.Fragment,null,a.createElement(Ye.Provider,{value:R},a.createElement(Xe.Provider,{value:o},a.createElement(gr.Provider,{value:y.current},a.createElement(yr.Provider,{value:u},a.createElement(Wt,{basename:S,location:o.location,navigationType:o.historyAction,navigator:E,future:{v7_relativeSplatPath:r.future.v7_relativeSplatPath}},o.initialized||r.future.v7_partialHydration?a.createElement(Dr,{routes:r.routes,future:r.future,state:o}):t))))),null)}function Dr(e){let{routes:t,future:r,state:n}=e;return mt(t,void 0,n,r)}function Cr(e){let{basename:t,children:r,future:n,window:o}=e,i=a.useRef();null==i.current&&(i.current=u({window:o,v5Compat:!0}));let l=i.current,[s,c]=a.useState({action:l.action,location:l.location}),{v7_startTransition:d}=n||{},h=a.useCallback((e=>{d&&br?br((()=>c(e))):c(e)}),[c,d]);return a.useLayoutEffect((()=>l.listen(h)),[l,h]),a.createElement(Wt,{basename:t,children:r,location:s.location,navigationType:s.action,navigator:l,future:n})}function Lr(e){let{basename:t,children:r,future:n,window:o}=e,i=a.useRef();null==i.current&&(i.current=c({window:o,v5Compat:!0}));let l=i.current,[s,u]=a.useState({action:l.action,location:l.location}),{v7_startTransition:d}=n||{},h=a.useCallback((e=>{d&&br?br((()=>u(e))):u(e)}),[u,d]);return a.useLayoutEffect((()=>l.listen(h)),[l,h]),a.createElement(Wt,{basename:t,children:r,location:s.location,navigationType:s.action,navigator:l,future:n})}function Pr(e){let{basename:t,children:r,future:n,history:o}=e,[i,l]=a.useState({action:o.action,location:o.location}),{v7_startTransition:s}=n||{},u=a.useCallback((e=>{s&&br?br((()=>l(e))):l(e)}),[l,s]);return a.useLayoutEffect((()=>o.listen(u)),[o,u]),a.createElement(Wt,{basename:t,children:r,location:i.location,navigationType:i.action,navigator:o,future:n})}const kr="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement,_r=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Tr=a.forwardRef((function(e,t){let r,{onClick:n,relative:o,reloadDocument:i,replace:l,state:s,target:u,to:c,preventScrollReset:d,unstable_viewTransition:h}=e,f=tr(e,cr),{basename:p}=a.useContext(Qe),m=!1;if("string"===typeof c&&_r.test(c)&&(r=c,kr))try{let e=new URL(window.location.href),t=c.startsWith("//")?new URL(e.protocol+c):new URL(c),r=F(t.pathname,p);t.origin===e.origin&&null!=r?c=r+t.search+t.hash:m=!0}catch(Zr){}let v=rt(c,{relative:o}),y=Br(c,{replace:l,state:s,target:u,preventScrollReset:d,relative:o,unstable_viewTransition:h});return a.createElement("a",er({},f,{href:r||v,onClick:m||i?n:function(e){n&&n(e),e.defaultPrevented||y(e)},ref:t,target:u}))}));const Ar=a.forwardRef((function(e,t){let{"aria-current":r="page",caseSensitive:n=!1,className:o="",end:i=!1,style:l,to:s,unstable_viewTransition:u,children:c}=e,d=tr(e,dr),h=ft(s,{relative:d.relative}),f=at(),p=a.useContext(Xe),{navigator:m,basename:v}=a.useContext(Qe),y=null!=p&&Qr(h)&&!0===u,g=m.encodeLocation?m.encodeLocation(h).pathname:h.pathname,b=f.pathname,w=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;n||(b=b.toLowerCase(),w=w?w.toLowerCase():null,g=g.toLowerCase()),w&&v&&(w=F(w,v)||w);const E="/"!==g&&g.endsWith("/")?g.length-1:g.length;let S,R=b===g||!i&&b.startsWith(g)&&"/"===b.charAt(E),x=null!=w&&(w===g||!i&&w.startsWith(g)&&"/"===w.charAt(g.length)),D={isActive:R,isPending:x,isTransitioning:y},C=R?r:void 0;S="function"===typeof o?o(D):[o,R?"active":null,x?"pending":null,y?"transitioning":null].filter(Boolean).join(" ");let L="function"===typeof l?l(D):l;return a.createElement(Tr,er({},d,{"aria-current":C,className:S,ref:t,style:L,to:s,unstable_viewTransition:u}),"function"===typeof c?c(D):c)}));const Ur=a.forwardRef(((e,t)=>{let{fetcherKey:r,navigate:n,reloadDocument:o,replace:i,state:l,method:s=rr,action:u,onSubmit:c,relative:d,preventScrollReset:h,unstable_viewTransition:f}=e,p=tr(e,hr),m=Wr(),v=Kr(u,{relative:d}),y="get"===s.toLowerCase()?"get":"post";return a.createElement("form",er({ref:t,method:y,action:v,onSubmit:o?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let t=e.nativeEvent.submitter,a=(null==t?void 0:t.getAttribute("formmethod"))||s;m(t||e.currentTarget,{fetcherKey:r,method:a,navigate:n,replace:i,state:l,relative:d,preventScrollReset:h,unstable_viewTransition:f})}},p))}));function jr(e){let{getKey:t,storageKey:r}=e;return Yr({getKey:t,storageKey:r}),null}var Mr,Or;function Fr(e){let t=a.useContext(Ye);return t||d(!1),t}function Nr(e){let t=a.useContext(Xe);return t||d(!1),t}function Br(e,t){let{target:r,replace:n,state:o,preventScrollReset:i,relative:l,unstable_viewTransition:s}=void 0===t?{}:t,u=st(),c=at(),d=ft(e,{relative:l});return a.useCallback((t=>{if(function(e,t){return 0===e.button&&(!t||"_self"===t)&&!function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)}(t,r)){t.preventDefault();let r=void 0!==n?n:m(c)===m(d);u(e,{replace:r,state:o,preventScrollReset:i,relative:l,unstable_viewTransition:s})}}),[c,u,d,n,o,r,e,i,l,s])}function Ir(e){let t=a.useRef(or(e)),r=a.useRef(!1),n=at(),o=a.useMemo((()=>function(e,t){let r=or(e);return t&&t.forEach(((e,n)=>{r.has(n)||t.getAll(n).forEach((e=>{r.append(n,e)}))})),r}(n.search,r.current?null:t.current)),[n.search]),i=st(),l=a.useCallback(((e,t)=>{const n=or("function"===typeof e?e(o):e);r.current=!0,i("?"+n,t)}),[i,o]);return[o,l]}(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Mr||(Mr={})),function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(Or||(Or={}));let zr=0,Hr=()=>"__"+String(++zr)+"__";function Wr(){let{router:e}=Fr(Mr.UseSubmit),{basename:t}=a.useContext(Qe),r=Dt();return a.useCallback((function(n,a){void 0===a&&(a={}),function(){if("undefined"===typeof document)throw new Error("You are calling submit during the server render. Try calling submit within a `useEffect` or callback instead.")}();let{action:o,method:i,encType:l,formData:s,body:u}=ur(n,t);if(!1===a.navigate){let t=a.fetcherKey||Hr();e.fetch(t,r,a.action||o,{preventScrollReset:a.preventScrollReset,formData:s,body:u,formMethod:a.method||i,formEncType:a.encType||l,unstable_flushSync:a.unstable_flushSync})}else e.navigate(a.action||o,{preventScrollReset:a.preventScrollReset,formData:s,body:u,formMethod:a.method||i,formEncType:a.encType||l,replace:a.replace,state:a.state,fromRouteId:r,unstable_flushSync:a.unstable_flushSync,unstable_viewTransition:a.unstable_viewTransition})}),[e,t,r])}function Kr(e,t){let{relative:r}=void 0===t?{}:t,{basename:n}=a.useContext(Qe),o=a.useContext(et);o||d(!1);let[i]=o.matches.slice(-1),l=er({},ft(e||".",{relative:r})),s=at();if(null==e){l.search=s.search;let e=new URLSearchParams(l.search);e.has("index")&&""===e.get("index")&&(e.delete("index"),l.search=e.toString()?"?"+e.toString():"")}return e&&"."!==e||!i.route.index||(l.search=l.search?l.search.replace(/^\?/,"?index&"):"?index"),"/"!==n&&(l.pathname="/"===l.pathname?n:W([n,l.pathname])),m(l)}function $r(e){var t;let{key:r}=void 0===e?{}:e,{router:n}=Fr(Mr.UseFetcher),o=Nr(Or.UseFetcher),i=a.useContext(gr),l=a.useContext(et),s=null==(t=l.matches[l.matches.length-1])?void 0:t.route.id;i||d(!1),l||d(!1),null==s&&d(!1);let u=Er?Er():"",[c,h]=a.useState(r||u);r&&r!==c?h(r):c||h(Hr()),a.useEffect((()=>(n.getFetcher(c),()=>{n.deleteFetcher(c)})),[n,c]);let f=a.useCallback(((e,t)=>{s||d(!1),n.fetch(c,s,e,t)}),[c,s,n]),p=Wr(),m=a.useCallback(((e,t)=>{p(e,er({},t,{navigate:!1,fetcherKey:c}))}),[c,p]),v=a.useMemo((()=>a.forwardRef(((e,t)=>a.createElement(Ur,er({},e,{navigate:!1,fetcherKey:c,ref:t}))))),[c]),y=o.fetchers.get(c)||ue,g=i.get(c);return a.useMemo((()=>er({Form:v,submit:m,load:f},y,{data:g})),[v,m,f,y,g])}function Jr(){let e=Nr(Or.UseFetchers);return Array.from(e.fetchers.entries()).map((e=>{let[t,r]=e;return er({},r,{key:t})}))}const qr="react-router-scroll-positions";let Vr={};function Yr(e){let{getKey:t,storageKey:r}=void 0===e?{}:e,{router:n}=Fr(Mr.UseScrollRestoration),{restoreScrollPosition:o,preventScrollReset:i}=Nr(Or.UseScrollRestoration),{basename:l}=a.useContext(Qe),s=at(),u=Pt(),c=Ct();a.useEffect((()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"})),[]),function(e,t){let{capture:r}=t||{};a.useEffect((()=>{let t=null!=r?{capture:r}:void 0;return window.addEventListener("pagehide",e,t),()=>{window.removeEventListener("pagehide",e,t)}}),[e,r])}(a.useCallback((()=>{if("idle"===c.state){let e=(t?t(s,u):null)||s.key;Vr[e]=window.scrollY}try{sessionStorage.setItem(r||qr,JSON.stringify(Vr))}catch(e){}window.history.scrollRestoration="auto"}),[r,t,c.state,s,u])),"undefined"!==typeof document&&(a.useLayoutEffect((()=>{try{let e=sessionStorage.getItem(r||qr);e&&(Vr=JSON.parse(e))}catch(Zr){}}),[r]),a.useLayoutEffect((()=>{let e=t&&"/"!==l?(e,r)=>t(er({},e,{pathname:F(e.pathname,l)||e.pathname}),r):t,r=null==n?void 0:n.enableScrollRestoration(Vr,(()=>window.scrollY),e);return()=>r&&r()}),[n,l,t]),a.useLayoutEffect((()=>{if(!1!==o)if("number"!==typeof o){if(s.hash){let e=document.getElementById(decodeURIComponent(s.hash.slice(1)));if(e)return void e.scrollIntoView()}!0!==i&&window.scrollTo(0,0)}else window.scrollTo(0,o)}),[s,o,i]))}function Xr(e,t){let{capture:r}=t||{};a.useEffect((()=>{let t=null!=r?{capture:r}:void 0;return window.addEventListener("beforeunload",e,t),()=>{window.removeEventListener("beforeunload",e,t)}}),[e,r])}function Gr(e){let{when:t,message:r}=e,n=Ot(t);a.useEffect((()=>{if("blocked"===n.state){window.confirm(r)?setTimeout(n.proceed,0):n.reset()}}),[n,r]),a.useEffect((()=>{"blocked"!==n.state||t||n.reset()}),[n,t])}function Qr(e,t){void 0===t&&(t={});let r=a.useContext(yr);null==r&&d(!1);let{basename:n}=Fr(Mr.useViewTransitionState),o=ft(e,{relative:t.relative});if(!r.isTransitioning)return!1;let i=F(r.currentLocation.pathname,n)||r.currentLocation.pathname,l=F(r.nextLocation.pathname,n)||r.nextLocation.pathname;return null!=M(o.pathname,l)||null!=M(o.pathname,i)}}}]);
|
|
3
|
+
//# sourceMappingURL=3245.e987bbef.chunk.js.map
|
package/build/static/js/{3245.3eeca0e4.chunk.js.LICENSE.txt → 3245.e987bbef.chunk.js.LICENSE.txt}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @remix-run/router v1.15.
|
|
2
|
+
* @remix-run/router v1.15.2
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* React Router DOM v6.22.
|
|
13
|
+
* React Router DOM v6.22.2
|
|
14
14
|
*
|
|
15
15
|
* Copyright (c) Remix Software Inc.
|
|
16
16
|
*
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* React Router v6.22.
|
|
24
|
+
* React Router v6.22.2
|
|
25
25
|
*
|
|
26
26
|
* Copyright (c) Remix Software Inc.
|
|
27
27
|
*
|