smoothly 1.2.1-alpha.23 → 1.2.1-alpha.24
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/dist/cjs/{Scrollable-a60d6091.js → Scrollable-20426515.js} +36 -412
- package/dist/cjs/Scrollable-20426515.js.map +1 -0
- package/dist/cjs/{TimeZone-45bcd855.js → TimeZone-c7477083.js} +2940 -1728
- package/dist/cjs/TimeZone-c7477083.js.map +1 -0
- package/dist/cjs/{en-56378cc9.js → en-f4546147.js} +2 -2
- package/dist/cjs/{en-56378cc9.js.map → en-f4546147.js.map} +1 -1
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/smoothly-app_107.cjs.entry.js +78 -91
- package/dist/cjs/smoothly-app_107.cjs.entry.js.map +1 -1
- package/dist/cjs/smoothly-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/smoothly-country.cjs.entry.js +3 -3
- package/dist/cjs/smoothly-country.cjs.entry.js.map +1 -1
- package/dist/cjs/smoothly-input-checkbox-demo.cjs.entry.js +1 -1
- package/dist/cjs/smoothly-trigger-sink.cjs.entry.js +2 -2
- package/dist/cjs/smoothly-trigger-source.cjs.entry.js +2 -2
- package/dist/collection/components/calendar/generate.js +1 -1
- package/dist/collection/components/calendar/generate.js.map +1 -1
- package/dist/collection/components/calendar/index.js +28 -27
- package/dist/collection/components/calendar/index.js.map +1 -1
- package/dist/collection/components/checkbox/translation/index.js +1 -1
- package/dist/collection/components/checkbox/translation/index.js.map +1 -1
- package/dist/collection/components/country/index.js +5 -5
- package/dist/collection/components/country/index.js.map +1 -1
- package/dist/collection/components/display/index.js +21 -21
- package/dist/collection/components/display/index.js.map +1 -1
- package/dist/collection/components/filter/select/index.js +1 -1
- package/dist/collection/components/filter/toggle/index.js +1 -1
- package/dist/collection/components/form/demo/typed/index.js +1 -1
- package/dist/collection/components/form/demo/typed/index.js.map +1 -1
- package/dist/collection/components/input/checkbox/index.js +1 -1
- package/dist/collection/components/input/color/index.js +1 -1
- package/dist/collection/components/input/date/index.js +14 -14
- package/dist/collection/components/input/date/index.js.map +1 -1
- package/dist/collection/components/input/date/range/index.js +1 -1
- package/dist/collection/components/input/file/index.js +1 -1
- package/dist/collection/components/input/index.js +3 -3
- package/dist/collection/components/input/month/index.js +1 -1
- package/dist/collection/components/input/radio/index.js +1 -1
- package/dist/collection/components/input/range/index.js +1 -1
- package/dist/collection/components/input/select/index.js +1 -1
- package/dist/collection/model/Data.spec.js.map +1 -1
- package/dist/components/index.js +2 -2
- package/dist/components/{p-750bac7d.js → p-00028058.js} +6 -6
- package/dist/components/{p-750bac7d.js.map → p-00028058.js.map} +1 -1
- package/dist/components/{p-6b2c0f3e.js → p-0012d70e.js} +2 -2
- package/dist/components/{p-6b2c0f3e.js.map → p-0012d70e.js.map} +1 -1
- package/dist/components/{p-137b3421.js → p-0210b94d.js} +7 -7
- package/dist/components/{p-137b3421.js.map → p-0210b94d.js.map} +1 -1
- package/dist/components/{p-7ad3376d.js → p-0210db4b.js} +5 -5
- package/dist/components/{p-7ad3376d.js.map → p-0210db4b.js.map} +1 -1
- package/dist/components/{p-4833b43b.js → p-0c9b11f0.js} +2 -2
- package/dist/components/{p-4833b43b.js.map → p-0c9b11f0.js.map} +1 -1
- package/dist/components/{p-eccb82fa.js → p-114fa5c2.js} +3 -3
- package/dist/components/{p-eccb82fa.js.map → p-114fa5c2.js.map} +1 -1
- package/dist/components/{p-dffea279.js → p-153f8d1a.js} +12 -12
- package/dist/components/{p-dffea279.js.map → p-153f8d1a.js.map} +1 -1
- package/dist/components/{p-8362e6ea.js → p-174e1154.js} +3 -3
- package/dist/components/{p-8362e6ea.js.map → p-174e1154.js.map} +1 -1
- package/dist/components/{p-3851d6af.js → p-17575bc3.js} +5 -5
- package/dist/components/{p-3851d6af.js.map → p-17575bc3.js.map} +1 -1
- package/dist/components/{p-28e6aa24.js → p-17f423b8.js} +2 -2
- package/dist/components/{p-28e6aa24.js.map → p-17f423b8.js.map} +1 -1
- package/dist/components/{p-f8b6cc8e.js → p-1ccb9b5d.js} +3 -3
- package/dist/components/{p-f8b6cc8e.js.map → p-1ccb9b5d.js.map} +1 -1
- package/dist/components/{p-b5b689d9.js → p-1efc7982.js} +3 -3
- package/dist/components/{p-b5b689d9.js.map → p-1efc7982.js.map} +1 -1
- package/dist/components/{p-fc98f7be.js → p-23fbd92e.js} +6 -6
- package/dist/components/{p-fc98f7be.js.map → p-23fbd92e.js.map} +1 -1
- package/dist/components/{p-fccef2cd.js → p-269f59bb.js} +23 -23
- package/dist/components/{p-fccef2cd.js.map → p-269f59bb.js.map} +1 -1
- package/dist/components/{p-d7ba5dde.js → p-28d37bcb.js} +7 -7
- package/dist/components/{p-d7ba5dde.js.map → p-28d37bcb.js.map} +1 -1
- package/dist/components/{p-a1af56e3.js → p-2d60ab95.js} +3 -3
- package/dist/components/{p-a1af56e3.js.map → p-2d60ab95.js.map} +1 -1
- package/dist/components/{p-4d285afc.js → p-3442e053.js} +2 -2
- package/dist/components/{p-4d285afc.js.map → p-3442e053.js.map} +1 -1
- package/dist/components/{p-089f64c2.js → p-35124e90.js} +2 -2
- package/dist/components/{p-089f64c2.js.map → p-35124e90.js.map} +1 -1
- package/dist/components/{p-0ffdc60e.js → p-3749e7c2.js} +2 -2
- package/dist/components/{p-0ffdc60e.js.map → p-3749e7c2.js.map} +1 -1
- package/dist/components/{p-c5beaa82.js → p-383f1e16.js} +5 -5
- package/dist/components/{p-c5beaa82.js.map → p-383f1e16.js.map} +1 -1
- package/dist/components/{p-6f488a68.js → p-3851c98c.js} +5 -5
- package/dist/components/{p-6f488a68.js.map → p-3851c98c.js.map} +1 -1
- package/dist/{esm/TimeZone-7b25e3f9.js → components/p-390767c7.js} +2806 -1883
- package/dist/components/p-390767c7.js.map +1 -0
- package/dist/components/{p-97848f3d.js → p-3eef0252.js} +21 -21
- package/dist/components/{p-97848f3d.js.map → p-3eef0252.js.map} +1 -1
- package/dist/components/{p-5a3098ce.js → p-3f588352.js} +4 -4
- package/dist/components/{p-5a3098ce.js.map → p-3f588352.js.map} +1 -1
- package/dist/components/{p-acdb7891.js → p-3fc2b239.js} +4 -4
- package/dist/components/{p-acdb7891.js.map → p-3fc2b239.js.map} +1 -1
- package/dist/components/{p-4d4b4a0a.js → p-43c910c5.js} +2 -2
- package/dist/components/{p-4d4b4a0a.js.map → p-43c910c5.js.map} +1 -1
- package/dist/components/{p-72730ae3.js → p-44d5ec3b.js} +10 -10
- package/dist/components/{p-72730ae3.js.map → p-44d5ec3b.js.map} +1 -1
- package/dist/components/{p-918ddb21.js → p-46912f14.js} +10 -10
- package/dist/components/p-46912f14.js.map +1 -0
- package/dist/components/{p-ce03e4d0.js → p-4ed54d65.js} +3 -3
- package/dist/components/{p-ce03e4d0.js.map → p-4ed54d65.js.map} +1 -1
- package/dist/components/{p-58a11f85.js → p-53671a89.js} +3 -3
- package/dist/components/{p-58a11f85.js.map → p-53671a89.js.map} +1 -1
- package/dist/components/{p-938c06a2.js → p-5666c538.js} +2 -2
- package/dist/components/{p-938c06a2.js.map → p-5666c538.js.map} +1 -1
- package/dist/components/{p-ac285959.js → p-5a3bdf21.js} +25 -25
- package/dist/components/{p-ac285959.js.map → p-5a3bdf21.js.map} +1 -1
- package/dist/components/{p-eb3d2060.js → p-5f8480af.js} +2 -2
- package/dist/components/{p-eb3d2060.js.map → p-5f8480af.js.map} +1 -1
- package/dist/components/{p-d3edfccf.js → p-61a1fd24.js} +8 -8
- package/dist/components/{p-d3edfccf.js.map → p-61a1fd24.js.map} +1 -1
- package/dist/components/{p-a08bf822.js → p-6b3ea12e.js} +2 -2
- package/dist/components/{p-a08bf822.js.map → p-6b3ea12e.js.map} +1 -1
- package/dist/components/{p-8edc879e.js → p-6c5bd721.js} +20 -20
- package/dist/components/{p-8edc879e.js.map → p-6c5bd721.js.map} +1 -1
- package/dist/components/{p-5d3caa35.js → p-73862f4b.js} +17 -17
- package/dist/components/{p-5d3caa35.js.map → p-73862f4b.js.map} +1 -1
- package/dist/components/{p-fbd4a12b.js → p-78a3eb0a.js} +9 -9
- package/dist/components/{p-fbd4a12b.js.map → p-78a3eb0a.js.map} +1 -1
- package/dist/components/{p-e451a0b5.js → p-7902ae4f.js} +3 -3
- package/dist/components/{p-e451a0b5.js.map → p-7902ae4f.js.map} +1 -1
- package/dist/components/{p-6eb46ce4.js → p-79729668.js} +37 -37
- package/dist/components/{p-6eb46ce4.js.map → p-79729668.js.map} +1 -1
- package/dist/components/{p-4716165d.js → p-79b2dd05.js} +4 -4
- package/dist/components/{p-4716165d.js.map → p-79b2dd05.js.map} +1 -1
- package/dist/components/{p-264f51a5.js → p-7b1e9421.js} +9 -9
- package/dist/components/{p-264f51a5.js.map → p-7b1e9421.js.map} +1 -1
- package/dist/components/{p-43b0c35c.js → p-7cf8c0f7.js} +5 -5
- package/dist/components/p-7cf8c0f7.js.map +1 -0
- package/dist/components/{p-f8b21fed.js → p-7f853189.js} +9 -9
- package/dist/components/{p-f8b21fed.js.map → p-7f853189.js.map} +1 -1
- package/dist/components/{p-c5519ec1.js → p-80b231e3.js} +5 -5
- package/dist/components/{p-c5519ec1.js.map → p-80b231e3.js.map} +1 -1
- package/dist/components/{p-292bffec.js → p-89505ec7.js} +3 -3
- package/dist/components/{p-292bffec.js.map → p-89505ec7.js.map} +1 -1
- package/dist/components/{p-ca19ed60.js → p-8e1e509d.js} +18 -99
- package/dist/components/p-8e1e509d.js.map +1 -0
- package/dist/components/{p-5325f725.js → p-8e3e6e7c.js} +9 -9
- package/dist/components/{p-5325f725.js.map → p-8e3e6e7c.js.map} +1 -1
- package/dist/components/{p-283f43bb.js → p-904e4b38.js} +11 -11
- package/dist/components/{p-283f43bb.js.map → p-904e4b38.js.map} +1 -1
- package/dist/components/{p-d062ac7b.js → p-957188b3.js} +3 -3
- package/dist/components/{p-d062ac7b.js.map → p-957188b3.js.map} +1 -1
- package/dist/components/{p-c7c1ceaa.js → p-96ca540b.js} +3 -3
- package/dist/components/{p-c7c1ceaa.js.map → p-96ca540b.js.map} +1 -1
- package/dist/components/{p-c025f250.js → p-9780bea7.js} +8 -8
- package/dist/components/{p-c025f250.js.map → p-9780bea7.js.map} +1 -1
- package/dist/components/{p-50f303f3.js → p-97c0e862.js} +3 -3
- package/dist/components/{p-50f303f3.js.map → p-97c0e862.js.map} +1 -1
- package/dist/components/{p-58c24d57.js → p-98279044.js} +9 -9
- package/dist/components/p-98279044.js.map +1 -0
- package/dist/components/{p-e5ac7847.js → p-98cb1594.js} +6 -6
- package/dist/components/{p-e5ac7847.js.map → p-98cb1594.js.map} +1 -1
- package/dist/components/{p-34b2eda8.js → p-9c8ff26d.js} +4 -4
- package/dist/components/{p-34b2eda8.js.map → p-9c8ff26d.js.map} +1 -1
- package/dist/components/{p-666dab06.js → p-9e5e6e83.js} +6 -6
- package/dist/components/{p-666dab06.js.map → p-9e5e6e83.js.map} +1 -1
- package/dist/components/{p-aa3e9c0f.js → p-aa4ee979.js} +5 -5
- package/dist/components/{p-aa3e9c0f.js.map → p-aa4ee979.js.map} +1 -1
- package/dist/components/{p-2efadf3c.js → p-ad1af123.js} +2 -2
- package/dist/components/{p-2efadf3c.js.map → p-ad1af123.js.map} +1 -1
- package/dist/components/{p-96469335.js → p-b0d7a2e6.js} +5 -8
- package/dist/components/p-b0d7a2e6.js.map +1 -0
- package/dist/components/{p-8ad720fa.js → p-b18e0a8b.js} +4 -4
- package/dist/components/{p-8ad720fa.js.map → p-b18e0a8b.js.map} +1 -1
- package/dist/components/{p-fa39a723.js → p-b354198d.js} +2 -2
- package/dist/components/{p-fa39a723.js.map → p-b354198d.js.map} +1 -1
- package/dist/components/{p-6da87c78.js → p-be6d380e.js} +2 -2
- package/dist/components/{p-6da87c78.js.map → p-be6d380e.js.map} +1 -1
- package/dist/components/{p-a74bdd1f.js → p-c05a03ab.js} +2 -2
- package/dist/components/{p-a74bdd1f.js.map → p-c05a03ab.js.map} +1 -1
- package/dist/components/{p-f7691a04.js → p-c4395e67.js} +4 -4
- package/dist/components/{p-f7691a04.js.map → p-c4395e67.js.map} +1 -1
- package/dist/components/{p-2fb54a15.js → p-c44bb76a.js} +7 -7
- package/dist/components/{p-2fb54a15.js.map → p-c44bb76a.js.map} +1 -1
- package/dist/components/{p-730c6db2.js → p-c9b93eb4.js} +10 -10
- package/dist/components/{p-730c6db2.js.map → p-c9b93eb4.js.map} +1 -1
- package/dist/components/{p-0a1466e3.js → p-cc608e51.js} +9 -8
- package/dist/components/p-cc608e51.js.map +1 -0
- package/dist/components/{p-092b23d2.js → p-d2471133.js} +6 -6
- package/dist/components/{p-092b23d2.js.map → p-d2471133.js.map} +1 -1
- package/dist/components/{p-399bba68.js → p-d2ea52c8.js} +15 -15
- package/dist/components/{p-399bba68.js.map → p-d2ea52c8.js.map} +1 -1
- package/dist/components/{p-82c01297.js → p-d471066b.js} +107 -115
- package/dist/components/p-d471066b.js.map +1 -0
- package/dist/components/{p-cfe2cdab.js → p-d5eb1c4b.js} +13 -13
- package/dist/components/{p-cfe2cdab.js.map → p-d5eb1c4b.js.map} +1 -1
- package/dist/components/{p-0bed7501.js → p-df119a54.js} +5 -5
- package/dist/components/{p-0bed7501.js.map → p-df119a54.js.map} +1 -1
- package/dist/components/{p-876d64b3.js → p-e057cdb7.js} +2 -2
- package/dist/components/{p-876d64b3.js.map → p-e057cdb7.js.map} +1 -1
- package/dist/components/{p-96e2307f.js → p-e40f6d2b.js} +14 -14
- package/dist/components/{p-96e2307f.js.map → p-e40f6d2b.js.map} +1 -1
- package/dist/components/{p-5d416ccf.js → p-e51b6e5f.js} +14 -14
- package/dist/components/{p-5d416ccf.js.map → p-e51b6e5f.js.map} +1 -1
- package/dist/components/{p-e92eb120.js → p-ebf469aa.js} +38 -49
- package/dist/components/p-ebf469aa.js.map +1 -0
- package/dist/components/{p-005e85db.js → p-eccf7b48.js} +14 -14
- package/dist/components/{p-005e85db.js.map → p-eccf7b48.js.map} +1 -1
- package/dist/components/{p-dfc5f0b7.js → p-ecf6da6a.js} +2 -2
- package/dist/components/{p-dfc5f0b7.js.map → p-ecf6da6a.js.map} +1 -1
- package/dist/components/{p-26b64015.js → p-ee8127cd.js} +6 -6
- package/dist/components/{p-26b64015.js.map → p-ee8127cd.js.map} +1 -1
- package/dist/components/{p-62833e92.js → p-eed0cef2.js} +13 -13
- package/dist/components/{p-62833e92.js.map → p-eed0cef2.js.map} +1 -1
- package/dist/components/{p-f40a3efd.js → p-f1979b62.js} +2 -2
- package/dist/components/{p-f40a3efd.js.map → p-f1979b62.js.map} +1 -1
- package/dist/components/{p-e572ff39.js → p-f54bc7fc.js} +2 -2
- package/dist/components/{p-e572ff39.js.map → p-f54bc7fc.js.map} +1 -1
- package/dist/components/{p-531fa770.js → p-fa34f451.js} +3 -3
- package/dist/components/{p-531fa770.js.map → p-fa34f451.js.map} +1 -1
- package/dist/components/{p-d9b2d6c1.js → p-fa4fbcc0.js} +19 -19
- package/dist/components/{p-d9b2d6c1.js.map → p-fa4fbcc0.js.map} +1 -1
- package/dist/components/{p-76076037.js → p-fe1bc9d5.js} +2 -2
- package/dist/components/{p-76076037.js.map → p-fe1bc9d5.js.map} +1 -1
- package/dist/components/{p-31873e1c.js → p-fe67f064.js} +30 -30
- package/dist/components/{p-31873e1c.js.map → p-fe67f064.js.map} +1 -1
- package/dist/components/smoothly-app-demo.js +80 -80
- package/dist/components/smoothly-app-room.js +1 -1
- package/dist/components/smoothly-app.js +1 -1
- package/dist/components/smoothly-back-to-top.js +1 -1
- package/dist/components/smoothly-burger.js +1 -1
- package/dist/components/smoothly-button-confirm.js +1 -1
- package/dist/components/smoothly-button-demo.js +1 -1
- package/dist/components/smoothly-button.js +1 -1
- package/dist/components/smoothly-calendar.js +1 -1
- package/dist/components/smoothly-checkbox.js +1 -1
- package/dist/components/smoothly-checkbox.js.map +1 -1
- package/dist/components/smoothly-country.js +3 -3
- package/dist/components/smoothly-country.js.map +1 -1
- package/dist/components/smoothly-dialog-demo.js +1 -1
- package/dist/components/smoothly-dialog.js +1 -1
- package/dist/components/smoothly-display-demo-json.js +1 -1
- package/dist/components/smoothly-display-demo.js +1 -1
- package/dist/components/smoothly-display-json-object.js +1 -1
- package/dist/components/smoothly-display-json.js +1 -1
- package/dist/components/smoothly-display.js +1 -1
- package/dist/components/smoothly-filter-field.js +1 -1
- package/dist/components/smoothly-filter-input.js +1 -1
- package/dist/components/smoothly-filter-select.js +1 -1
- package/dist/components/smoothly-filter-toggle.js +1 -1
- package/dist/components/smoothly-filter.js +1 -1
- package/dist/components/smoothly-form-demo-all.js +1 -1
- package/dist/components/smoothly-form-demo-card.js +1 -1
- package/dist/components/smoothly-form-demo-controlled.js +1 -1
- package/dist/components/smoothly-form-demo-date-range.js +1 -1
- package/dist/components/smoothly-form-demo-date.js +1 -1
- package/dist/components/smoothly-form-demo-login.js +1 -1
- package/dist/components/smoothly-form-demo-pet.js +1 -1
- package/dist/components/smoothly-form-demo-prices.js +1 -1
- package/dist/components/smoothly-form-demo-transparent.js +1 -1
- package/dist/components/smoothly-form-demo-typed.js +1 -1
- package/dist/components/smoothly-form-demo.js +1 -1
- package/dist/components/smoothly-form.js +1 -1
- package/dist/components/smoothly-frame.js +1 -1
- package/dist/components/smoothly-icon-demo.js +1 -1
- package/dist/components/smoothly-icon.js +1 -1
- package/dist/components/smoothly-input-checkbox-demo.js +25 -25
- package/dist/components/smoothly-input-checkbox.js +1 -1
- package/dist/components/smoothly-input-clear.js +1 -1
- package/dist/components/smoothly-input-color-demo.js +1 -1
- package/dist/components/smoothly-input-color.js +1 -1
- package/dist/components/smoothly-input-date-range.js +1 -1
- package/dist/components/smoothly-input-date.js +1 -1
- package/dist/components/smoothly-input-demo-standard.js +1 -1
- package/dist/components/smoothly-input-demo.js +1 -1
- package/dist/components/smoothly-input-edit.js +1 -1
- package/dist/components/smoothly-input-file.js +1 -1
- package/dist/components/smoothly-input-month.js +1 -1
- package/dist/components/smoothly-input-price-demo.js +1 -1
- package/dist/components/smoothly-input-radio-item.js +1 -1
- package/dist/components/smoothly-input-radio.js +1 -1
- package/dist/components/smoothly-input-range-demo.js +1 -1
- package/dist/components/smoothly-input-range.js +1 -1
- package/dist/components/smoothly-input-reset.js +1 -1
- package/dist/components/smoothly-input-select.js +1 -1
- package/dist/components/smoothly-input-submit.js +1 -1
- package/dist/components/smoothly-input.js +1 -1
- package/dist/components/smoothly-modal.js +1 -1
- package/dist/components/smoothly-next-demo-colspan.js +1 -1
- package/dist/components/smoothly-next-demo-group.js +1 -1
- package/dist/components/smoothly-next-demo-nested-inner.js +1 -1
- package/dist/components/smoothly-next-demo-nested.js +1 -1
- package/dist/components/smoothly-next-demo-simple.js +1 -1
- package/dist/components/smoothly-next-demo.js +1 -1
- package/dist/components/smoothly-next-table-demo-filtered.js +1 -1
- package/dist/components/smoothly-next-table-head.js +1 -1
- package/dist/components/smoothly-notification.js +1 -1
- package/dist/components/smoothly-notifier.js +1 -1
- package/dist/components/smoothly-submit.js +1 -1
- package/dist/components/smoothly-summary.js +1 -1
- package/dist/components/smoothly-tab.js +1 -1
- package/dist/components/smoothly-table-cell.js +1 -1
- package/dist/components/smoothly-table-demo-filtered.js +1 -1
- package/dist/components/smoothly-table-demo.js +1 -1
- package/dist/components/smoothly-table-expandable-cell.js +1 -1
- package/dist/components/smoothly-table-testing.js +1 -1
- package/dist/components/smoothly-tabs-demo.js +1 -1
- package/dist/components/smoothly-theme-demo.js +1 -1
- package/dist/components/smoothly-theme-guide.js +1 -1
- package/dist/components/smoothly-theme-picker.js +1 -1
- package/dist/components/smoothly-toggle-switch-demo.js +1 -1
- package/dist/components/smoothly-toggle-switch.js +1 -1
- package/dist/components/smoothly-trigger-sink.js +2 -2
- package/dist/components/smoothly-trigger-source.js +2 -2
- package/dist/esm/{Scrollable-94b2c80b.js → Scrollable-93e46f30.js} +17 -388
- package/dist/esm/Scrollable-93e46f30.js.map +1 -0
- package/dist/{components/p-99f89f10.js → esm/TimeZone-52285537.js} +2933 -1729
- package/dist/esm/TimeZone-52285537.js.map +1 -0
- package/dist/esm/{en-bacb390d.js → en-6e8712b5.js} +2 -2
- package/dist/esm/{en-bacb390d.js.map → en-6e8712b5.js.map} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/smoothly-app_107.entry.js +52 -65
- package/dist/esm/smoothly-app_107.entry.js.map +1 -1
- package/dist/esm/smoothly-checkbox.entry.js.map +1 -1
- package/dist/esm/smoothly-country.entry.js +3 -3
- package/dist/esm/smoothly-country.entry.js.map +1 -1
- package/dist/esm/smoothly-input-checkbox-demo.entry.js +1 -1
- package/dist/esm/smoothly-trigger-sink.entry.js +2 -2
- package/dist/esm/smoothly-trigger-source.entry.js +2 -2
- package/dist/smoothly/index.esm.js +1 -1
- package/dist/smoothly/p-152fd0d7.entry.js.map +1 -1
- package/dist/smoothly/{p-cf245e8a.js → p-2257be8c.js} +2 -2
- package/dist/smoothly/{p-9bfe8aba.entry.js → p-2512c689.entry.js} +2 -2
- package/dist/smoothly/p-34d144e8.js +2 -0
- package/dist/smoothly/p-34d144e8.js.map +1 -0
- package/dist/smoothly/{p-e9cd0cd0.entry.js → p-3ede8604.entry.js} +2 -2
- package/dist/smoothly/p-3ede8604.entry.js.map +1 -0
- package/dist/smoothly/p-6d7ee489.js +2 -0
- package/dist/smoothly/p-6d7ee489.js.map +1 -0
- package/dist/smoothly/{p-5ff5fc57.entry.js → p-87ae07b2.entry.js} +2 -2
- package/dist/smoothly/{p-83ce9999.entry.js → p-ac6fb4e4.entry.js} +2 -2
- package/dist/smoothly/p-e0bfc64f.entry.js +2 -0
- package/dist/smoothly/p-e0bfc64f.entry.js.map +1 -0
- package/dist/smoothly/smoothly.esm.js +1 -1
- package/dist/types/components/calendar/generate.d.ts +1 -1
- package/dist/types/components/calendar/index.d.ts +14 -14
- package/dist/types/components/checkbox/translation/index.d.ts +2 -2
- package/dist/types/components/country/index.d.ts +3 -3
- package/dist/types/components/display/index.d.ts +6 -6
- package/dist/types/components/filter/Filter.d.ts +3 -3
- package/dist/types/components/form/demo/typed/Contact.d.ts +1 -1
- package/dist/types/components/input/Editable.d.ts +2 -2
- package/dist/types/components/input/Input.d.ts +2 -2
- package/dist/types/components/input/Looks.d.ts +2 -2
- package/dist/types/components/input/date/index.d.ts +8 -8
- package/dist/types/components/input/radio/Selected.d.ts +1 -1
- package/dist/types/components/item/Item.d.ts +2 -2
- package/dist/types/components.d.ts +45 -45
- package/dist/types/model/Color/HSL.d.ts +1 -1
- package/dist/types/model/Color/RGB.d.ts +1 -1
- package/dist/types/model/Color/index.d.ts +2 -2
- package/dist/types/model/Submit.d.ts +1 -1
- package/package.json +20 -46
- package/dist/cjs/Scrollable-a60d6091.js.map +0 -1
- package/dist/cjs/TimeZone-45bcd855.js.map +0 -1
- package/dist/collection/components/input/index.e2e.js +0 -52
- package/dist/collection/components/input/index.e2e.js.map +0 -1
- package/dist/components/p-0a1466e3.js.map +0 -1
- package/dist/components/p-43b0c35c.js.map +0 -1
- package/dist/components/p-58c24d57.js.map +0 -1
- package/dist/components/p-82c01297.js.map +0 -1
- package/dist/components/p-918ddb21.js.map +0 -1
- package/dist/components/p-96469335.js.map +0 -1
- package/dist/components/p-99f89f10.js.map +0 -1
- package/dist/components/p-ca19ed60.js.map +0 -1
- package/dist/components/p-e92eb120.js.map +0 -1
- package/dist/esm/Scrollable-94b2c80b.js.map +0 -1
- package/dist/esm/TimeZone-7b25e3f9.js.map +0 -1
- package/dist/smoothly/p-05e38ae2.js +0 -2
- package/dist/smoothly/p-05e38ae2.js.map +0 -1
- package/dist/smoothly/p-32d55e4c.entry.js +0 -2
- package/dist/smoothly/p-32d55e4c.entry.js.map +0 -1
- package/dist/smoothly/p-99846f9b.js +0 -2
- package/dist/smoothly/p-99846f9b.js.map +0 -1
- package/dist/smoothly/p-e9cd0cd0.entry.js.map +0 -1
- /package/dist/smoothly/{p-cf245e8a.js.map → p-2257be8c.js.map} +0 -0
- /package/dist/smoothly/{p-9bfe8aba.entry.js.map → p-2512c689.entry.js.map} +0 -0
- /package/dist/smoothly/{p-5ff5fc57.entry.js.map → p-87ae07b2.entry.js.map} +0 -0
- /package/dist/smoothly/{p-83ce9999.entry.js.map → p-ac6fb4e4.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["any","name","IslyAny","Type","constructor","super","arguments","this","class","is","value","undefined","getLocale","result","navigator","language","isoly.Locale","isoly.Language","toLocale","styleCss","SmoothlyAppStyle0","SmoothlyApp","rooms","componentDidRender","selected","window","location","search","_a","home","Object","values","find","room","element","disabled","setSelected","selectRoom","path","selectedChanged","forEach","content","getContent","mainElement","innerHTML","appendChild","burgerVisibilityHandler","event","burgerVisibility","detail","burgerStatusHandler","stopPropagation","menuOpen","locationChangeHandler","state","smoothlyPath","history","roomSelectedHandler","target","toString","URL","pathname","href","origin","pushState","roomLoadedHandler","replaceState","clickHandler","composedPath","some","e","burgerElement","navElement","render","h","key","color","label","ref","open","onSmoothlyNavStatus","onSmoothlyVisibleStatus","SmoothlyAppDemo","app","slot","type","toolTip","size","style","padding","maxWidth","fill","link","onClick","alert","icon","Part","prefix","suffix","modifier","hasCustomName","regexIdentifierStart","regexIdentifierPart","kFullWildcardRegex","isASCII","str","extended","test","lexer","lenient","tokens","i","length","char","ErrorOrInvalid","msg","TypeError","push","index","j","code","substr","count","pattern","error","parse","options","delimiter","prefixes","segmentWildcardRegex","escapeString","nameSet","Set","tryConsume","tryConsumeModifier","mustConsume","nextType","consumeText","result2","DefaultEncodePart","encodePart","pendingFixedValue","appendToPendingFixedValue","maybeAddPartFromPendingFixedValue","addPart","nameToken","regexOrWildcardToken","modifierToken","regexValue","has","add","charToken","indexOf","openToken","nameToken2","regexOrWildcardToken2","replace","flags","ignoreCase","stringToRegexp","names","partsToRegexp","modifierToString","parts","sensitive","strict","end","start","endsWith","part","RegExp","isEndDelimited","lastPart","DEFAULT_OPTIONS","HOSTNAME_OPTIONS","PATHNAME_OPTIONS","isAbsolutePathname","isPattern","maybeStripPrefix","startsWith","substring","maybeStripSuffix","treatAsIPv6Hostname","SPECIAL_SCHEMES","isSpecialScheme","protocol_regexp","scheme","canonicalizeHash","hash","url","canonicalizeSearch","canonicalizeHostname","hostname","ipv6HostnameEncodeCallback","hostnameEncodeCallback","canonicalizePassword","password","canonicalizeUsername","username","canonicalizePathname","protocol","includes","leadingSlash","canonicalizePort","port","defaultPortForProtocol","portEncodeCallback","canonicalizeProtocol","protocolEncodeCallback","input","toLowerCase","usernameEncodeCallback","passwordEncodeCallback","parseInt","standardURLPathnameEncodeCallback","pathURLPathnameEncodeCallback","searchEncodeCallback","hashEncodeCallback","Parser","tokenList","internalResult","tokenIndex","tokenIncrement","componentStart","groupDepth","hostnameIPv6BracketDepth","shouldTreatAsStandardURL","rewind","isHashPrefix","changeState","isSearchPrefix","rewindAndSetState","isGroupClose","isGroupOpen","isProtocolSuffix","computeShouldTreatAsStandardURL","nextState","skip","nextIsAuthoritySlashes","isIdentityTerminator","isPathnameStart","isPasswordPrefix","isIPv6Open","isIPv6Close","isPortPrefix","newState","makeComponentString","changeStateWithoutSettingComponent","safeToken","isNonSpecialPatternChar","token","previousToken","componentCharStart","assign","regexp","COMPONENTS","DEFAULT_PATTERN","extractValues","baseURL","o","processBaseURLString","escapePatternString","applyInit","init","slashIndex","lastIndexOf","escapeRegexpString","partsToPattern","kFullWildcardRegex2","regexIdentifierPart2","customName","needsGrouping","nextPart","URLPattern","baseURLOrOptions","component_pattern","parser","ignoreCaseOptions","defaults","component","options2","err","message","exec","inputs","match","groups","entries","compareComponent","left","right","comparePart","left2","right2","attr","emptyFixedPart","wildcardOnlyPart","comparePartList","Math","min","globalThis","SmoothlyAppRoomStyle0","SmoothlyAppRoom","componentWillLoad","smoothlyRoomLoaded","emit","contentElement","smoothlyRoomSelected","metaKey","ctrlKey","which","button","preventDefault","Host","SmoothlyBackToTopStyle0","SmoothlyBackToTop","scrollableParent","Scrollable","findParent","addEventListener","visible","_b","scrollTop","cssVariables","opacity","bottom","scrollTo","top","behavior","SmoothlyBurgerStyle0","SmoothlyBurger","matchMedia","mediaQuery","matches","smoothlyNavStatus","smoothlyVisibleStatus","openChanged","resizeHandler","Button","children","local","redirect","convert","download","SmoothlyButtonStyle0","SmoothlyButton","SmoothlyButtonConfirmStyle0","SmoothlyButtonConfirm","clickTimeStamp","timeStamp","doubleClickTime","timer","clearTimeout","smoothlyConfirm","setTimeout","warning","expand","shape","SmoothlyButtonDemoStyle0","SmoothlyButtonDemo","month","date","d","Date","setDate","day","getDay","row","r","column","setUTCDate","isoly.Date","create","firstOfMonth","weekdays","getDate","toLocaleString","weekday","months","current","setMonth","years","max","getYear","getFullYear","setFullYear","year","SmoothlyCalendarStyle0","Calendar","clickCounter","onStart","next","smoothlyStartChange","onEnd","smoothlyEndChange","smoothlyValueChange","doubleInput","frozenDate","smoothlyDateSet","smoothlyDateRangeSet","onHover","withinLimit","Fragment","inCalendar","previous","showLabel","onSmoothlyInput","generate.weekdays","map","generate.month","_c","now","week","tabindex","onMouseOver","today","currentMonth","dateRange","_d","disable","SmoothlyDialogStyle0","SmoothlyDialog","TriggerListener","Trigger","hostData","display","__stencil_render","closable","header","SmoothlyDialogDemoStyle0","SmoothlyDialogDemo","openModal","showFrame","onSmoothlyModalChange","height","getForwardWordBreakIndex","wordRegex","lastIndex","getBackwardWordBreakIndex","execArray","getAdjecentWordBreakIndex","direction","Selection","getCursor","selection","getStalker","State","copy","remainder","StateEditor","get","character","c","isDigit","matcher","s","slice","insert","append","prepend","delete","truncate","pad","padEnd","padStart","toLower","symbol","toUpper","toUpperCase","mapping","replacement","modify","Action","apply","formatter","action","unformat","autocomplete","select","ctrlArrow","ctrlBackspaceDelete","arrowHomeEnd","erase","allowed","format","paste","pasted","cursorPosition","stalkPosition","shiftKey","adjecentIndex","from","to","insertString","handlers","argument","data","handler","fromString","Handler","partialFormat","unformatted","inputmode","formatted","Array","isArray","Number","issuer","getIssuer","spaceIndexes","verification","classes","defaultIssuer","issuers","prototype","hasOwnProperty","call","identification","amex","dankort","diners","discover","electron","interpayment","jcb","unionpay","maestro","mastercard","visa","DateFormat","fromLocale","locale","Base","separator","formatString","validMonth","register","parameters","join","daysInMonth","lastOfMonth","fillerDate","isoly.DateTime","formatDate","validDate","daysPerMonth","split","patterns","extract","zeros","isoly.TimeSpan","span","normalize","minutes","hours","toHours","toFixed","abs","negative","parsed","multiplicand","isFinite","parseFloat","offset","nextValue","settings","mode","firstAllowedSymbol","previousAllowedSymbol","newSymbol","isNaN","isSymbolAllowed","isSymbolLetter","alignedString","previousSpace","country","decimals","parsedFloat","phonePrefix","countryCode","areaCodes","first","digitIndex","digitCount","spaces","ceil","position","currency","toInteger","isoly.Currency","decimalDigits","addLeadingIntegerZero","fillDecimalsIfPresent","truncateIntegerZeros","addThousandSeparators","forceDecimalZero","appendCurrency","separatorIndex","zeroHandling","adjust","repeat","charAt","SmoothlyDisplayStyle0","SmoothlyDisplay","collapseDepth","DateTime","localize","SmoothlyDisplayDemo","noticeWarning","notice","console","log","hour","minute","second","timeZone","Notice","warn","succeeded","failed","execute","Promise","resolve","delay","width","Color","types","downloadingSpinner","overlay","gap","labels","l","hue","description","SmoothlyDisplayDemoJson","colapseDepth","json","nested","age","array","emptyObject","emptyArray","truthy","falsy","null","notDefined","longString","JsonValue","isly.object","SmoothlyDisplayJsonStyle0","SmoothlyDisplayJson","SmoothlyDisplayJsonObjectStyle0","SmoothlyDisplayJsonObject","openBracket","closeBracket","keys","empty","nextCollapseDepth","v","k","SmoothlyDisplayJsonPrimitiveStyle0","SmoothlyDisplayJsonPrimitive","JSON","stringify","SmoothlyDisplayJsonRecordKeyStyle0","SmoothlyDisplayJsonRecordKey","Rule","filter","precedence","creators","criteria","always","setFallback","fallback","Always","MAX_SAFE_INTEGER","Any","getOwnPropertyNames","property","And","rules","reduce","every","generalize","and","criterias","Criteria","isCriteria","recursive","defineProperty","exports","Level","Message_1","Level_1","require$$0","Message","level","Recoverable","region","ConsoleHandler_1","ConsoleHandler","raise","Position_1","Position","line","Location_1","Location","resource","Region_1","Region","merge","other","_Error","require$$1","require$$2","require$$3","require$$4","require$$5","User_1","User","isEmpty","splitted","Endpoint_1","Endpoint","host","Authority_1","Authority","user","endpoint","pop","Locator_1","Locator","authority","query","fragment","isRelative","isFolder","folder","extension","createArray","reverse","item","concat","absolute","appendPath","hasAuthority","shift","unshift","Uri","Device_1","Device","InDevice_1","InDevice","Reader_1","Reader","addOpener","priority","openers","sort","locator","BufferedReader_1","Error","Reader_2","BufferedReader","backend","buffer","lastContent","lastMark","locationValue","tabSize","readable","opened","close","peek","read","splice","peekIs","readIf","readAll","mark","__awaiter","thisArg","_arguments","P","generator","adopt","reject","fulfilled","step","rejected","done","then","fs_browser","fd","fsync","write","encoding","bytesWritten","lstatSync","isDirectory","readdirSync","readFileSync","path_browser","sep","StringReader_1","StringReader","lastPosition","FileReader_1","fs","FileReader","p","FolderReader_1","FolderReader","files","tabSizeValue","lastLocation","getFiles","filetype","ignoreFiles","file","filename","f","Enumerator_1","generate","isIterator","Function","Enumerator","iterator","last","fetch","toArray","Enumerable_1","isIterable","Symbol","Enumerable","getEnumerator","ArrayEnumerator_1","ArrayEnumerator","BufferedEnumerator_1","BufferedEnumerator","_String","String","padLeft","paddingCharacter","padRight","Utilities","String_1","OutDevice_1","OutDevice","Writer_1","Utilities_1","Writer","newLineSymbol","writeImplementation","writeLine","Indenter_1","Indenter","autoFlush","indentionSymbol","indentionCount","indentNext","writable","flush","increase","decrease","getIndention","all","PrefixReader_1","PrefixReader","FileWriter_1","FileWriter","descriptor","Buffer","TillReader_1","TillReader","endMark","UntilReader_1","UntilReader","peeked","IO","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","build","IO_1","Source","reader","errorHandler","Critical","requirePrefix","till","until","peekIsSymbol","symbols","peekIsWhitespace","tokenize","source","peekSymbolLength","t","complete","baseObject","completor","flatMap","cursor","isType","global","Cursor","Completion","completions","completion","suggestion","Boolean","SType","literals","Completor","functions","string","expressions","operators","completorArgument","addArgument","TObject","properties","filtered","filterByType","matched","found","addDot","wildcard","w","partial","Union","template","full","addon","TArray","TString","TNumber","TBoolean","TCompletion","TUnion","TCompletor","EndsWith","needle","Every","arrayArgumentor","FunctionCall","identifier","definition","Expression","Value","evaluate","variable","GreaterThan","object","GreaterThanOrEqual","Has","Includes","Some","Is","LesserThan","LesserThanOrEqual","Not","not","Or","clone","nestingCount","needles","fetchIf","_","n","operator","comparator","binaryOperator","lexer.tokenize","parseNext","precedenceTest","parsers","parseExpression","algebra","parseNextExpression","NaN","expressionParser","expressionParsers","addExpression","getAdder","fetched","Within","within","Contains","contains","Property","reduceRight","StartsWith","InfixOperator","getPrecedence","getSymbol","nextPrecedence","fetchedArray","fetchedValue","expression","definitions","rule","resolvers","className","resolver","parameter","definitionRule","Tuple","EventEmitter","isly.function","Filter","Element","isly.string","optional","isly.record","extend","smoothlyFilterUpdate","smoothlyFilterManipulate","SmoothlyFilterStyle0","SmoothlyFilter","updating","filters","selectively.and","updateHandler","manipulateHandler","smoothlyFilter","update","filterFieldHandler","clear","field","expanded","SmoothlyFilterFieldStyle0","SmoothlyFilterField","filterFieldEmit","smoothlyFilterField","selectively.parse","onKeyDown","onSmoothlyInputLooks","onSmoothlyBlur","onSmoothlyFormDisable","onSmoothlyInputLoad","onSmoothlyChange","SmoothlyFilterInputStyle0","SmoothlyFilterInput","componentDidLoad","bind","selectively.And","rest","selectively.Property","selectively.Includes","inputHandler","manipulate","newCriteria","getCriteria","findIndex","findInstanceOf","selectively.property","selectively.includes","placeholder","SmoothlyFilterSelectStyle0","SmoothlyFilterSelect","items","Map","smoothlyInputLooks","looks","smoothlyInputLoadHandler","selectElement","getItems","set","smoothlyInputLooksHandler","multiple","selectively.Within","selectively.Contains","selectively.Is","selectHandler","selectively.Rule","selectively.contains","selectively.within","selectively.is","menuHeight","onSmoothlyItemSelect","SmoothlyFilterToggleStyle0","SmoothlyFilterToggle","active","activeHandler","selectively.Not","activate","selectively.not","createCriteria","check","Method","contentType","request","headers","text","serializers","serializer","serialize","body","fields","Header","isString","isStringArray","fromEntries","camelCase","CamelCase.from","isHeaders","trim","CamelCase.to","Request","method","remote","RequestHeader","async","Serializer.serialize","searchParams","Parser.parse","cloudflare","cf","PlatformResponse","Response","__classPrivateFieldGet","receiver","kind","__classPrivateFieldSet","_Socket_instances","_Socket_receiveQueue","_Socket_sendQueue","_Socket_closed","_Socket_backend","_Socket_onMessage","_Socket_onClose","_Socket_handleOpen","_Socket_onOpen","Socket","onMessage","onClose","onOpen","isOpen","processReceived","send","processSend","WeakMap","WeakSet","ArrayBuffer","arrayBuffer","TextEncoder","encode","Json","TextDecoder","decode","_Factory_json","_Factory_string","_Factory_arrayBuffer","Factory","SocketJson","SocketString","SocketArrayBuffer","createResponse","status","socket","reason","SocketFactory","getEntries","Like","ResponseHeader","WebSocket","Platform.Response","Headers","webSocket","response","ResponseLike","isView","FormData","isPdf","bytes","Uint8Array","Blob","toHelperObject","form","toHelperArray","head","tail","sources","isObject","encodeURIComponent","convertArrays","entry","decodeURIComponent","Parser.add","formData","Search.parse","Serializer.add","Search.stringify","Clearable","Editable","edit","readonly","isly.boolean","listen","reset","setInitialValue","changed","isly.any","smoothlyFormDisable","Looks","Input","unregister","getValue","invalid","defined","binary","smoothlyInputLoad","smoothlyInput","smoothlyInputForm","parent","formRemove","self","SmoothlyForm","removeInput","formAdd","SmoothlyFormStyle0","readonlyAtLoad","listeners","isConnected","Data","remove","smoothlyFormInput","listener","watchValue","validator","flaws","flaw","validate","nestedFlaws","watchReadonly","smoothlyInputHandler","windowSubmitHandler","submitHandler","inputValue","smoothlyFormDisableHandler","submit","processing","smoothlyFormSubmit","http\n .fetch","http.Request","http.Search.stringify","catch","smoothlyFormClear","editable","smoothlyFormEdit","smoothlyFormReset","hidden","onSubmit","prevent","SmoothlyFormDemoStyle0","SmoothlyFormDemo","SmoothlyFormDemoAll","onSmoothlyFormSubmit","clearable","showSelected","checked","SmoothlyFormDemoCard","SmoothlyFormDemoControlled","currencies","nameChanged","SmoothlyFormDemoDateStyle0","SmoothlyFormDemoDate","hostRef","isly.fromIs","SmoothlyFormDemoDateRangeStyle0","SmoothlyFormDemoDateRange","range","isoly.DateRange","SmoothlyFormDemoLogin","SmoothlyFormDemoPetStyle0","SmoothlyFormDemoPet","onSmoothlyFormInput","hasOwner","owner","firstName","lastName","birthday","ownedRange","favoriteHat","favoriteColor","RGB","toHex","favoritePizza","hasPet","SmoothlyFormDemoPrices","SmoothlyFormDemoTransparent","Contact","middle","isly.number","isoly.CountryCode.Alpha2","SmoothlyFormDemoTypedStyle0","SmoothlyFormDemoTyped","isoly.CountryCode.Name.en.from","SmoothlyFrameStyle0","SmoothlyFrame","contentWindow","iframe","firstElementChild","defaultOrigin","destination","trigger","message2","SmoothlyIconStyle0","SmoothlyIcon","promise","latestPromise","Icon","load","updateDocument","document","rotate","SmoothlyIconDemoStyle0","SmoothlyIconDemo","page","props","Name","variant","Logo","flip","clipboard","writeText","Deep","equal","a","b","notEqual","Adjacent","getWordBreakIndex","InputStateHandler","keydownHandlers","ArrowLeft","moveCursor","ArrowRight","eventHandlers","beforeinput","insertText","insertFromPaste","insertFromDrop","deleteContentBackward","deleteContentForward","deleteWordBackward","formattedState","deleteWord","deleteWordForward","deleteByCut","insertReplacementText","insertCompositionText","extra","tidily.get","selectionStart","selectionEnd","selectionDirection","unformatState","partialFormatState","defaultPrevented","tidily.Selection","stalk","onFocus","onBlur","createFormattedState","onInputEvent","_f","_e","inputType","_g","adjacentIndex","tidily.State","tidily.StateEditor","unformattedState","initialState","stringValue","setValue","inputElement","SmoothlyInputStyle0","SmoothlyInput","uneditable","stateHandler","initialValue","typeChange","stateChange","valueChange","lastValue","readonlyChange","disconnectedCallback","onEvent","onclick","focus","el","required","_h","readOnly","_j","_k","smoothlyBlur","smoothlyChange","htmlFor","errorMessage","SmoothlyInputCheckboxStyle0","SmoothlyInputCheckbox","elementCheck","click","onMouseDown","mouseDownPosition","x","clientX","y","clientY","onMouseUp","SmoothlyInputClearStyle0","SmoothlyInputClear","val","title","tooltip","SmoothlyInputColorStyle0","SmoothlyInputColor","rgb","g","hsl","Hex","toRGB","onWindowClick","output","round","valueChanged","handleSwitchMode","sliderMode","toHSL","hexInputHandler","sliderInputHandler","temporaryColor","HSL","openDropdown","clientHeight","onSmoothlyToggleSwitchChange","checkmark","outputSide","SmoothlyInputColorDemo","SmoothlyInputDateStyle0","SmoothlyInputDate","SmoothlyInputLoadHandler","dateSetHandler","onSmoothlyValueChange","SmoothlyInputDateRangeStyle0","SmoothlyInputDateRange","updateValue","dateRangeInput","initialStart","initialEnd","tidily.format","onSmoothlyStartChange","onSmoothlyEndChange","onSmoothlyDateSet","onSmoothlyDateRangeSet","SmoothlyInputDemoStyle0","SmoothlyInputDemo","nextMonth","mutable","ordered","fromCharCode","duration","alphanumeric","SmoothlyInputDemoStandardStyle0","SmoothlyInputDemoStandard","connectedCallback","updateInputHeightText","rootFontSize","getComputedStyle","documentElement","fontSize","querySelectorAll","vertical","borderRadius","SmoothlyInputEditStyle0","SmoothlyInputEdit","SmoothlyInputFileStyle0","SmoothlyInputFile","transfer","DataTransfer","dropHandler","dragging","dataTransfer","dragOverHandler","dragEnterHandler","dragLeaveHandler","onDragOver","onDragEnter","onDrop","onDragLeave","capture","camera","accept","onInput","SmoothlyInputMonthStyle0","SmoothlyInputMonth","adjustMonth","delta","getMonth","setAllowPreviousMonth","previousMonth","minMonth","allowPreviousMonth","setAllowNextMonth","maxMonth","allowNextMonth","searchDisabled","generate.years","generate.months","SmoothlyInputPriceDemoStyle0","SmoothlyInputPriceDemo","SmoothlyInputRadioStyle0","SmoothlyInputRadio","valueReceivedOnLoad","handleRegister","smoothlyRadioInputHandler","watchingReadonly","SmoothlyInputRadioItemStyle0","SmoothlyInputRadioItem","smoothlyRadioButtonRegister","smoothlySelect","SmoothlyInputRangeStyle0","SmoothlyInputRange","SmoothlyInputRangeDemo","SmoothlyInputResetStyle0","SmoothlyInputReset","Item","deselectable","SmoothlyInputSelectStyle0","SmoothlyInputSelect","initialValueHandled","lastOpen","onSelectedChange","itemHeight","setProperty","scrollToSelected","displaySelected","handleShowOptions","displaySelectedElement","areValuesEqual","onRequiredChange","onFilterChange","iconsDiv","toggle","onItemSelect","onClosed","before","markedItem","marked","wasButtonClicked","clickedItem","tagName","displayString","option","visibleItems","getAttribute","move","selectedItem","markedIndex","optionsDiv","offsetTop","offsetHeight","addItem","addedItems","tabIndex","selectable","Submittable","SmoothlyInputSubmitStyle0","SmoothlyInputSubmit","isly.Type","onSmoothlyConfirm","SmoothlyItemStyle0","SmoothlyItem","selectedWatcher","smoothlyItemSelect","innerText","SmoothlyLabelStyle0","SmoothlyLabel","SmoothlyLazyStyle0","SmoothlyLazy","loadMoreHandler","show","onSmoothlyLoadMore","LoadMore","checkInView","inView","smoothlyLoadMore","observer","IntersectionObserver","observationHandler","observe","triggerMode","once","removeEventListener","disconnect","intersectionRatio","unobserve","SmoothlyModalStyle0","SmoothlyModal","smoothlyModalChange","role","SmoothlyNextDemoStyle0","SmoothlyNextDemo","SmoothlyNextDemoColspanStyle0","SmoothlyNextDemoColspan","columns","SmoothlyNextDemoGroupStyle0","SmoothlyNextDemoGroup","align","id","balance","eyeColor","gender","company","registered","friends","SmoothlyNextDemoNestedStyle0","SmoothlyNextDemoNested","SmoothlyNextDemoNestedInnerStyle0","SmoothlyNextDemoNestedInner","SmoothlyNextDemoSimpleStyle0","SmoothlyNextDemoSimple","cats","cat","breed","coat","SmoothlyNextTableStyle0","SmoothlyNextTable","smoothlyNextTableExpandableCellChange","SmoothlyNextTableBodyStyle0","SmoothlyNextTableBody","SmoothlyNextTableCellStyle0","SmoothlyNextTableCell","Selector","_Selector_selected","handle","intermediate","SmoothlyNextTableDemoFilteredStyle0","TableDemoFiltered","onFilterUpdate","selector","http.fetch","price","charCodeAt","selectively.filter","flat","Australia","Greece","SmoothlyNextTableExpandableCellStyle0","SmoothlyNextTableExpandableCell","smoothlyNextTableExpandableCellRegister","openChange","SmoothlyNextTableExpandableRowStyle0","SmoothlyNextTableExpandableRow","div","smoothlyNextTableExpandableRowChange","SmoothlyNextTableFootStyle0","SmoothlyNextTableFoot","SmoothlyNextTableHeadStyle0","SmoothlyNextTableHead","onScroll","HTMLElement","scrollParent","parentRect","getBoundingClientRect","elementRect","scrolled","SmoothlyNextTableRowStyle0","SmoothlyNextTableRow","expandableCells","smoothlyNextTableExpandableCellRegisterHandler","smoothlyNextTableExpandableCellChangeHandler","cell","SmoothlyNextTableRowGroupStyle0","SmoothlyNextTableRowGroup","smoothlyNextTableRowGroupChange","SmoothlyNotificationStyle0","Notification","tick","onTrigger","onUpdatedNotice","newValue","oldValue","unlisten","SmoothlyNotifierStyle0","Notifier","onNotice","notices","onRemove","SmoothlySpinnerStyle0","SmoothlySpinner","strokeWidth","viewBox","xmlns","cx","cy","SmoothlySubmitStyle0","SmoothlySubmit","SmoothlySummaryStyle0","SmoothlySummary","toggleHandler","HTMLDetailsElement","smoothlySummaryOpen","onInputLoad","onToggle","SmoothlyTabStyle0","SmoothlyTab","openHandler","smoothlyTabOpen","smoothlyTabLoad","SmoothlyTableStyle0","Table","expandable","smoothlyNestedTable","root","smoothlyTableLoad","handleExpandableLoaded","handleExpandableState","smoothlySpotlightChange","allowSpotlight","handleSpotlightState","handleNestedTable","handleEvents","SmoothlyTableCellStyle0","TableCell","SmoothlyTableDemoStyle0","TableDemo","src","alt","SmoothlyTableDemoFilteredStyle0","colSpan","SmoothlyTableExpandableCellStyle0","TableExpandableCell","expansionElement","beginOpen","smoothlyExpandableChange","handleSpotlight","spotlight","smoothlyExpansionLoad","smoothlyExpandableLoad","smoothlyExpansionOpen","handleTableLoaded","SmoothlyTableExpandableRowStyle0","TableExpandableRow","SmoothlyTableFooterStyle0","TableFooter","SmoothlyTableHeaderStyle0","TableHeader","SmoothlyTableRowStyle0","TableRow","expansions","onExpansionLoad","onExpansionChange","expansion","onExpansionOpen","after","SmoothlyTableTestingStyle0","SmoothlyTableTesting","animal","counter","SmoothlyTabsStyle0","SmoothlyTabs","tabs","selectedElement","old","SmoothlyTabsDemoStyle0","SmoothlyTabsDemo","SmoothlyThemeColorStyle0","SmoothlyThemeColor","SmoothlyThemeColorVariantStyle0","SmoothlyThemeColorVariant","SmoothlyThemeColorsStyle0","SmoothlyThemeColors","SmoothlyThemeDemoStyle0","SmoothlyThemeDemo","SmoothlyThemeGuideStyle0","SmoothlyThemePickerStyle0","SmoothlyThemePicker","querySelector","HTMLLinkElement","theme","SmoothlyToggleStyle0","SmoothlyToggle","SmoothlyToggleSwitchStyle0","SmoothlyToggleSwitch","handleClick","smoothlyToggleSwitchChange","SmoothlyToggleSwitchDemoStyle0","SmoothlyToggleSwitchDemo","SmoothlyTriggerStyle0","SmoothlyTrigger"],"sources":["node_modules/isly/dist/mjs/any.js","src/model/getLocale.ts","src/components/app/style.css?tag=smoothly-app","src/components/app/index.tsx","src/components/app/demo/index.tsx","node_modules/urlpattern-polyfill/dist/urlpattern.js","node_modules/urlpattern-polyfill/index.js","src/components/app/room/style.css?tag=smoothly-app-room&encapsulation=scoped","src/components/app/room/index.tsx","src/components/back-to-top/style.scss?tag=smoothly-back-to-top&encapsulation=scoped","src/components/back-to-top/index.tsx","src/components/burger/style.css?tag=smoothly-burger&encapsulation=scoped","src/components/burger/index.tsx","src/components/button/Button.tsx","src/components/button/style.css?tag=smoothly-button&encapsulation=scoped","src/components/button/index.tsx","src/components/confirm/style.css?tag=smoothly-button-confirm&encapsulation=scoped","src/components/confirm/index.tsx","src/components/button/demo/style.css?tag=smoothly-button-demo","src/components/button/demo/index.tsx","src/components/calendar/generate.ts","src/components/calendar/style.css?tag=smoothly-calendar&encapsulation=scoped","src/components/calendar/index.tsx","src/components/dialog/style.css?tag=smoothly-dialog&encapsulation=scoped","src/components/dialog/index.tsx","src/components/dialog/demo/style.css?tag=smoothly-dialog-demo&encapsulation=scoped","src/components/dialog/demo/index.tsx","node_modules/tidily/dist/mjs/getAdjecentWordBreakIndex.js","node_modules/tidily/dist/mjs/Selection.js","node_modules/tidily/dist/mjs/State.js","node_modules/tidily/dist/mjs/StateEditor.js","node_modules/tidily/dist/mjs/Action.js","node_modules/tidily/dist/mjs/Handler/base.js","node_modules/tidily/dist/mjs/Handler/card-csc.js","node_modules/tidily/dist/mjs/Handler/card-expires.js","node_modules/tidily/dist/mjs/Handler/card-number.js","node_modules/tidily/dist/mjs/DateFormat.js","node_modules/tidily/dist/mjs/Handler/date/Base.js","node_modules/tidily/dist/mjs/Handler/date/dmy.js","node_modules/tidily/dist/mjs/Handler/date/mdy.js","node_modules/tidily/dist/mjs/Handler/date/ymd.js","node_modules/tidily/dist/mjs/Handler/date-time.js","node_modules/tidily/dist/mjs/Handler/divisor.js","node_modules/tidily/dist/mjs/Handler/duration.js","node_modules/tidily/dist/mjs/Handler/email.js","node_modules/tidily/dist/mjs/Handler/identifier.js","node_modules/tidily/dist/mjs/Handler/identity-number.js","node_modules/tidily/dist/mjs/Handler/integer.js","node_modules/tidily/dist/mjs/Handler/password.js","node_modules/tidily/dist/mjs/Handler/percent.js","node_modules/tidily/dist/mjs/Handler/phonePrefix.js","node_modules/tidily/dist/mjs/Handler/phone.js","node_modules/tidily/dist/mjs/Handler/postal-code.js","node_modules/tidily/dist/mjs/Handler/price.js","node_modules/tidily/dist/mjs/Handler/text.js","node_modules/tidily/dist/mjs/Handler/hex-color.js","src/components/display/style.css?tag=smoothly-display&encapsulation=scoped","src/components/display/index.tsx","src/components/display/demo/index.tsx","src/components/display/demo/json/index.tsx","src/components/display/json/JsonValue.tsx","src/components/display/json/style.css?tag=smoothly-display-json&encapsulation=scoped","src/components/display/json/index.tsx","src/components/display/json/object/style.css?tag=smoothly-display-json-object&encapsulation=scoped","src/components/display/json/object/index.tsx","src/components/display/json/primitive/style.css?tag=smoothly-display-json-primitive&encapsulation=scoped","src/components/display/json/primitive/index.tsx","src/components/display/json/object/key/style.css?tag=smoothly-display-json-record-key&encapsulation=scoped","src/components/display/json/object/key/index.tsx","node_modules/selectively/dist/mjs/Rule.js","node_modules/selectively/dist/mjs/Always.js","node_modules/selectively/dist/mjs/Any.js","node_modules/selectively/dist/mjs/And.js","node_modules/selectively/dist/mjs/Criteria.js","node_modules/@cogneco/mend/build/Error/Level.js","node_modules/@cogneco/mend/build/Error/Message.js","node_modules/@cogneco/mend/build/Error/ConsoleHandler.js","node_modules/@cogneco/mend/build/Error/Position.js","node_modules/@cogneco/mend/build/Error/Location.js","node_modules/@cogneco/mend/build/Error/Region.js","node_modules/@cogneco/mend/build/Error/index.js","node_modules/@cogneco/mend/build/Uri/User.js","node_modules/@cogneco/mend/build/Uri/Endpoint.js","node_modules/@cogneco/mend/build/Uri/Authority.js","node_modules/@cogneco/mend/build/Uri/Locator.js","node_modules/@cogneco/mend/build/Uri/index.js","node_modules/@cogneco/mend/build/IO/Device.js","node_modules/@cogneco/mend/build/IO/InDevice.js","node_modules/@cogneco/mend/build/IO/Reader.js","node_modules/@cogneco/mend/build/IO/BufferedReader.js","node_modules/@cogneco/mend/build/IO/fs.browser.js","node_modules/@cogneco/mend/build/IO/path.browser.js","node_modules/@cogneco/mend/build/IO/StringReader.js","node_modules/@cogneco/mend/build/IO/FileReader.js","node_modules/@cogneco/mend/build/IO/FolderReader.js","node_modules/@cogneco/mend/build/Utilities/Enumerator.js","node_modules/@cogneco/mend/build/Utilities/Enumerable.js","node_modules/@cogneco/mend/build/Utilities/ArrayEnumerator.js","node_modules/@cogneco/mend/build/Utilities/BufferedEnumerator.js","node_modules/@cogneco/mend/build/Utilities/String.js","node_modules/@cogneco/mend/build/Utilities/index.js","node_modules/@cogneco/mend/build/IO/OutDevice.js","node_modules/@cogneco/mend/build/IO/Writer.js","node_modules/@cogneco/mend/build/IO/Indenter.js","node_modules/@cogneco/mend/build/IO/PrefixReader.js","node_modules/@cogneco/mend/build/IO/FileWriter.js","node_modules/@cogneco/mend/build/IO/TillReader.js","node_modules/@cogneco/mend/build/IO/UntilReader.js","node_modules/@cogneco/mend/build/IO/index.js","node_modules/@cogneco/mend/build/index.js","node_modules/selectively/dist/mjs/lexer/Source.js","node_modules/selectively/dist/mjs/lexer/index.js","node_modules/selectively/dist/mjs/Type/Base.js","node_modules/selectively/dist/mjs/Type/Array.js","node_modules/selectively/dist/mjs/Type/Cursor.js","node_modules/selectively/dist/mjs/Type/Completion.js","node_modules/selectively/dist/mjs/Type/Boolean.js","node_modules/selectively/dist/mjs/Type/Completor.js","node_modules/selectively/dist/mjs/Type/Number.js","node_modules/selectively/dist/mjs/Type/Object.js","node_modules/selectively/dist/mjs/Type/String.js","node_modules/selectively/dist/mjs/Type/Union.js","node_modules/selectively/dist/mjs/Type/index.js","node_modules/selectively/dist/mjs/EndsWith.js","node_modules/selectively/dist/mjs/Every.js","node_modules/selectively/dist/mjs/FunctionCall.js","node_modules/selectively/dist/mjs/Expression.js","node_modules/selectively/dist/mjs/Value.js","node_modules/selectively/dist/mjs/GreaterThan.js","node_modules/selectively/dist/mjs/GreaterThanOrEqual.js","node_modules/selectively/dist/mjs/Has.js","node_modules/selectively/dist/mjs/Includes.js","node_modules/selectively/dist/mjs/Some.js","node_modules/selectively/dist/mjs/Is.js","node_modules/selectively/dist/mjs/LesserThan.js","node_modules/selectively/dist/mjs/LesserThanOrEqual.js","node_modules/selectively/dist/mjs/Match.js","node_modules/selectively/dist/mjs/Not.js","node_modules/selectively/dist/mjs/Or.js","node_modules/selectively/dist/mjs/parse/Source.js","node_modules/selectively/dist/mjs/parse/parse.js","node_modules/selectively/dist/mjs/parse/Expression.js","node_modules/selectively/dist/mjs/parse/Every.js","node_modules/selectively/dist/mjs/parse/Some.js","node_modules/selectively/dist/mjs/parse/group.js","node_modules/selectively/dist/mjs/parse/GreaterThan.js","node_modules/selectively/dist/mjs/parse/GreaterThanOrEqual.js","node_modules/selectively/dist/mjs/parse/LesserThan.js","node_modules/selectively/dist/mjs/parse/LesserThanOrEqual.js","node_modules/selectively/dist/mjs/parse/Not.js","node_modules/selectively/dist/mjs/parse/Has.js","node_modules/selectively/dist/mjs/Within.js","node_modules/selectively/dist/mjs/parse/Within.js","node_modules/selectively/dist/mjs/Contains.js","node_modules/selectively/dist/mjs/parse/Contains.js","node_modules/selectively/dist/mjs/parse/FunctionCall.js","node_modules/selectively/dist/mjs/Property.js","node_modules/selectively/dist/mjs/parse/Property.js","node_modules/selectively/dist/mjs/parse/Includes.js","node_modules/selectively/dist/mjs/StartsWith.js","node_modules/selectively/dist/mjs/parse/StartsWith.js","node_modules/selectively/dist/mjs/parse/EndsWith.js","node_modules/selectively/dist/mjs/InfixOperator.js","node_modules/selectively/dist/mjs/parse/InfixOperator.js","node_modules/selectively/dist/mjs/parse/Value.js","node_modules/selectively/dist/mjs/parse/Is.js","node_modules/selectively/dist/mjs/parse/ignore.js","node_modules/selectively/dist/mjs/resolve/resolve.js","node_modules/selectively/dist/mjs/resolve/And.js","node_modules/selectively/dist/mjs/resolve/replace.js","node_modules/selectively/dist/mjs/resolve/Endswith.js","node_modules/selectively/dist/mjs/resolve/Every.js","node_modules/selectively/dist/mjs/resolve/FunctionCall.js","node_modules/selectively/dist/mjs/resolve/GreaterThan.js","node_modules/selectively/dist/mjs/resolve/GreaterThanOrEqual.js","node_modules/selectively/dist/mjs/resolve/Has.js","node_modules/selectively/dist/mjs/resolve/Includes.js","node_modules/selectively/dist/mjs/resolve/LesserThan.js","node_modules/selectively/dist/mjs/resolve/LesserThanOrEqual.js","node_modules/selectively/dist/mjs/resolve/Not.js","node_modules/selectively/dist/mjs/resolve/Or.js","node_modules/selectively/dist/mjs/resolve/Property.js","node_modules/selectively/dist/mjs/resolve/Some.js","node_modules/selectively/dist/mjs/resolve/Startswith.js","node_modules/selectively/dist/mjs/resolve/Is.js","node_modules/selectively/dist/mjs/Tuple.js","node_modules/selectively/dist/mjs/selectively.js","src/components/filter/Filter.ts","src/components/filter/style.css?tag=smoothly-filter&encapsulation=scoped","src/components/filter/index.tsx","src/components/filter/field/style.css?tag=smoothly-filter-field&encapsulation=scoped","src/components/filter/field/index.tsx","src/components/filter/input/style.css?tag=smoothly-filter-input&encapsulation=scoped","src/components/filter/input/index.tsx","src/components/filter/select/style.css?tag=smoothly-filter-select&encapsulation=scoped","src/components/filter/select/index.tsx","src/components/filter/toggle/style.css?tag=smoothly-filter-toggle&encapsulation=scoped","src/components/filter/toggle/index.tsx","node_modules/cloudly-http/dist/Method.js","node_modules/cloudly-http/dist/Parser.js","node_modules/cloudly-http/dist/Serializer.js","node_modules/cloudly-http/dist/CamelCase.js","node_modules/cloudly-http/dist/Request/Header.js","node_modules/cloudly-http/dist/Request/index.js","node_modules/cloudly-http/dist/Platform.js","node_modules/cloudly-http/dist/Socket/Socket.js","node_modules/cloudly-http/dist/Socket/ArrayBuffer.js","node_modules/cloudly-http/dist/Socket/Json.js","node_modules/cloudly-http/dist/Socket/String.js","node_modules/cloudly-http/dist/Socket/Factory.js","node_modules/cloudly-http/dist/Socket/index.js","node_modules/cloudly-http/dist/Response/Header.js","node_modules/cloudly-http/dist/Response/Like.js","node_modules/cloudly-http/dist/Response/index.js","node_modules/cloudly-http/dist/fetch.js","node_modules/cloudly-http/dist/FormData.js","node_modules/cloudly-http/dist/Search.js","node_modules/cloudly-http/dist/index.js","src/components/input/Clearable.ts","src/components/input/Editable.ts","src/components/input/Looks.ts","src/components/input/Input.ts","src/components/form/style.css?tag=smoothly-form","src/components/form/index.tsx","src/components/form/demo/style.css?tag=smoothly-form-demo&encapsulation=scoped","src/components/form/demo/index.tsx","src/components/form/demo/all/index.tsx","src/components/form/demo/card/index.tsx","src/components/form/demo/controlled/index.tsx","src/components/form/demo/date/style.css?tag=smoothly-form-demo-date&encapsulation=scoped","src/components/form/demo/date/index.tsx","src/components/form/demo/date-range/style.css?tag=smoothly-form-demo-date-range&encapsulation=scoped","src/components/form/demo/date-range/index.tsx","src/components/form/demo/login/index.tsx","src/components/form/demo/pet/style.css?tag=smoothly-form-demo-pet&encapsulation=scoped","src/components/form/demo/pet/index.tsx","src/components/form/demo/prices/index.tsx","src/components/form/demo/transparent/index.tsx","src/components/form/demo/typed/Contact.ts","src/components/form/demo/typed/style.css?tag=smoothly-form-demo-typed&encapsulation=scoped","src/components/form/demo/typed/index.tsx","src/components/frame/style.css?tag=smoothly-frame&encapsulation=scoped","src/components/frame/index.tsx","src/components/icon/style.css?tag=smoothly-icon&encapsulation=scoped","src/components/icon/index.tsx","src/components/icon/demo/style.css?tag=smoothly-icon-demo&encapsulation=scoped","src/components/icon/demo/index.tsx","src/components/input/Deep.ts","src/components/input/Adjacent.ts","src/components/input/InputStateHandler.ts","src/components/input/style.css?tag=smoothly-input&encapsulation=scoped","src/components/input/index.tsx","src/components/input/checkbox/style.css?tag=smoothly-input-checkbox&encapsulation=scoped","src/components/input/checkbox/index.tsx","src/components/input/clear/style.css?tag=smoothly-input-clear&encapsulation=scoped","src/components/input/clear/index.tsx","src/components/input/color/style.css?tag=smoothly-input-color&encapsulation=scoped","src/components/input/color/index.tsx","src/components/input/color/demo/index.tsx","src/components/input/date/style.css?tag=smoothly-input-date&encapsulation=scoped","src/components/input/date/index.tsx","src/components/input/date/range/style.scss?tag=smoothly-input-date-range&encapsulation=scoped","src/components/input/date/range/index.tsx","src/components/input/demo/style.css?tag=smoothly-input-demo&encapsulation=scoped","src/components/input/demo/index.tsx","src/components/input/demo/standard/style.css?tag=smoothly-input-demo-standard&encapsulation=scoped","src/components/input/demo/standard/index.tsx","src/components/input/edit/style.css?tag=smoothly-input-edit&encapsulation=scoped","src/components/input/edit/index.tsx","src/components/input/file/style.css?tag=smoothly-input-file&encapsulation=scoped","src/components/input/file/index.tsx","src/components/input/month/style.css?tag=smoothly-input-month&encapsulation=scoped","src/components/input/month/index.tsx","src/components/input/demo/price/style.css?tag=smoothly-input-price-demo&encapsulation=scoped","src/components/input/demo/price/index.tsx","src/components/input/radio/style.css?tag=smoothly-input-radio&encapsulation=scoped","src/components/input/radio/index.tsx","src/components/input/radio/item/style.css?tag=smoothly-input-radio-item&encapsulation=scoped","src/components/input/radio/item/index.tsx","src/components/input/range/style.css?tag=smoothly-input-range&encapsulation=scoped","src/components/input/range/index.tsx","src/components/input/range/demo/index.tsx","src/components/input/reset/style.css?tag=smoothly-input-reset&encapsulation=scoped","src/components/input/reset/index.tsx","src/components/item/Item.ts","src/components/input/select/style.css?tag=smoothly-input-select&encapsulation=scoped","src/components/input/select/index.tsx","src/components/input/Submittable.ts","src/components/input/submit/style.css?tag=smoothly-input-submit&encapsulation=scoped","src/components/input/submit/index.tsx","src/components/item/style.css?tag=smoothly-item&encapsulation=scoped","src/components/item/index.tsx","src/components/label/style.css?tag=smoothly-label&encapsulation=scoped","src/components/label/index.tsx","src/components/lazy/style.css?tag=smoothly-lazy&encapsulation=scoped","src/components/lazy/index.tsx","src/components/load-more/index.tsx","src/components/modal/style.css?tag=smoothly-modal&encapsulation=scoped","src/components/modal/index.tsx","src/components/next/demo/style.css?tag=smoothly-next-demo&encapsulation=scoped","src/components/next/demo/index.tsx","src/components/next/demo/colspan/style.css?tag=smoothly-next-demo-colspan&encapsulation=scoped","src/components/next/demo/colspan/index.tsx","src/components/next/demo/group/style.css?tag=smoothly-next-demo-group&encapsulation=scoped","src/components/next/demo/group/index.tsx","src/components/next/demo/nested/data.ts","src/components/next/demo/nested/style.css?tag=smoothly-next-demo-nested&encapsulation=scoped","src/components/next/demo/nested/index.tsx","src/components/next/demo/nested/inner/style.css?tag=smoothly-next-demo-nested-inner&encapsulation=scoped","src/components/next/demo/nested/inner/index.tsx","src/components/next/demo/simple/style.css?tag=smoothly-next-demo-simple&encapsulation=scoped","src/components/next/demo/simple/simple.tsx","src/components/next/table/style.css?tag=smoothly-next-table&encapsulation=scoped","src/components/next/table/index.tsx","src/components/next/table/body/style.css?tag=smoothly-next-table-body&encapsulation=scoped","src/components/next/table/body/index.tsx","src/components/next/table/cell/style.css?tag=smoothly-next-table-cell&encapsulation=scoped","src/components/next/table/cell/index.tsx","src/components/table/Selector.tsx","src/components/next/demo/filtered/style.css?tag=smoothly-next-table-demo-filtered&encapsulation=scoped","src/components/next/demo/filtered/index.tsx","src/components/next/table/expandable/cell/style.scss?tag=smoothly-next-table-expandable-cell&encapsulation=scoped","src/components/next/table/expandable/cell/index.tsx","src/components/next/table/expandable/row/style.scss?tag=smoothly-next-table-expandable-row&encapsulation=scoped","src/components/next/table/expandable/row/index.tsx","src/components/next/table/foot/style.css?tag=smoothly-next-table-foot&encapsulation=scoped","src/components/next/table/foot/index.tsx","src/components/next/table/head/style.css?tag=smoothly-next-table-head&encapsulation=scoped","src/components/next/table/head/index.tsx","src/components/next/table/row/style.css?tag=smoothly-next-table-row&encapsulation=scoped","src/components/next/table/row/index.tsx","src/components/next/table/group/style.css?tag=smoothly-next-table-row-group&encapsulation=scoped","src/components/next/table/group/index.tsx","src/components/notification/style.css?tag=smoothly-notification&encapsulation=scoped","src/components/notification/index.tsx","src/components/notifier/style.css?tag=smoothly-notifier&encapsulation=scoped","src/components/notifier/index.tsx","src/components/spinner/style.css?tag=smoothly-spinner&encapsulation=scoped","src/components/spinner/index.tsx","src/components/submit/style.css?tag=smoothly-submit&encapsulation=scoped","src/components/submit/index.tsx","src/components/summary/style.css?tag=smoothly-summary&encapsulation=scoped","src/components/summary/index.tsx","src/components/tabs/tab/style.css?tag=smoothly-tab&encapsulation=scoped","src/components/tabs/tab/index.tsx","src/components/table/style.css?tag=smoothly-table&encapsulation=scoped","src/components/table/index.tsx","src/components/table/cell/style.css?tag=smoothly-table-cell&encapsulation=scoped","src/components/table/cell/index.tsx","src/components/table/demo/style.css?tag=smoothly-table-demo&encapsulation=scoped","src/components/table/demo/index.tsx","src/components/table/demo/filtered/style.css?tag=smoothly-table-demo-filtered&encapsulation=scoped","src/components/table/demo/filtered/index.tsx","src/components/table/expandable/cell/style.css?tag=smoothly-table-expandable-cell&encapsulation=scoped","src/components/table/expandable/cell/index.tsx","src/components/table/expandable/row/style.css?tag=smoothly-table-expandable-row&encapsulation=scoped","src/components/table/expandable/row/index.tsx","src/components/table/footer/style.css?tag=smoothly-table-footer&encapsulation=scoped","src/components/table/footer/index.tsx","src/components/table/header/style.css?tag=smoothly-table-header&encapsulation=scoped","src/components/table/header/index.tsx","src/components/table/row/style.css?tag=smoothly-table-row&encapsulation=scoped","src/components/table/row/index.tsx","src/components/table/demo/testing/data.ts","src/components/table/demo/testing/style.css?tag=smoothly-table-testing&encapsulation=scoped","src/components/table/demo/testing/index.tsx","src/components/tabs/style.css?tag=smoothly-tabs&encapsulation=scoped","src/components/tabs/index.tsx","src/components/tabs/demo/style.css?tag=smoothly-tabs-demo&encapsulation=scoped","src/components/tabs/demo/index.tsx","src/components/theme/color/style.css?tag=smoothly-theme-color&encapsulation=scoped","src/components/theme/color/index.tsx","src/components/theme/color/variant/style.css?tag=smoothly-theme-color-variant&encapsulation=scoped","src/components/theme/color/variant/index.tsx","src/components/theme/colors/style.css?tag=smoothly-theme-colors&encapsulation=scoped","src/components/theme/colors/index.tsx","src/components/theme/demo/style.css?tag=smoothly-theme-demo&encapsulation=scoped","src/components/theme/demo/index.tsx","src/components/theme/guide/style.css?tag=smoothly-theme-guide&encapsulation=scoped","src/components/theme/guide/index.tsx","src/components/theme/picker/style.css?tag=smoothly-theme-picker&encapsulation=scoped","src/components/theme/picker/index.tsx","src/components/toggle/style.css?tag=smoothly-toggle&encapsulation=scoped","src/components/toggle/index.tsx","src/components/toggle-switch/style.css?tag=smoothly-toggle-switch&encapsulation=scoped","src/components/toggle-switch/index.tsx","src/components/toggle-switch/demo/style.css?tag=smoothly-toggle-switch-demo&encapsulation=scoped","src/components/toggle-switch/demo/index.tsx","src/components/trigger/style.css?tag=smoothly-trigger&encapsulation=scoped","src/components/trigger/index.tsx"],"sourcesContent":["import { Type } from \"./Type\";\nexport function any(name) {\n return new IslyAny(name ?? \"any\");\n}\nexport class IslyAny extends Type {\n constructor() {\n super(...arguments);\n this.class = \"any\";\n this.is = (value) => value != undefined;\n }\n}\n//# sourceMappingURL=any.js.map","import { isoly } from \"isoly\"\n\nexport function getLocale(): isoly.Locale | undefined {\n\tconst result = navigator.language\n\treturn isoly.Locale.is(result) ? result : isoly.Language.is(result) ? isoly.Locale.toLocale(result) : undefined\n}\n","smoothly-app {\n\t--header-height: 5rem;\n\tdisplay: block;\n}\n\nsmoothly-app>smoothly-notifier>main {\n\theight: calc(100dvh - var(--header-height));\n}\n\nsmoothly-app[hidden] {\n\tdisplay: none;\n}\n\nsmoothly-app>smoothly-notifier {\n\theight: 100%;\n\tbackground: none;\n}\n\nheader:has(smoothly-burger[visible])>nav>ul smoothly-app-room {\n\twidth: 100%;\n\theight: 4em;\n}\n\nsmoothly-app>smoothly-notifier>header {\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 5;\n\twidth: 100%;\n\theight: var(--header-height);\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tbox-sizing: border-box;\n\talign-items: center;\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade));\n}\n\nsmoothly-app>smoothly-notifier>header>nav {\n\twidth: 100%;\n\tflex-shrink: 2;\n\theight: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>nav,\nsmoothly-app>smoothly-notifier>header>nav>ul {\n\tdisplay: flex;\n\tmargin: 0;\n}\n\nsmoothly-app:not([label])>smoothly-notifier>header>h1 {\n\tdisplay: none;\n}\nsmoothly-app>smoothly-notifier>header>h1 {\n\tmargin-left: 1rem;\n\tmargin-bottom: 0.8em;\n\tdisplay: flex;\n\theight: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>h1>a {\n\tdisplay: inline-block;\n\talign-self: center;\n\tsize: 100%;\n\tbackground-position-y: center;\n\ttext-decoration: none;\n\twhite-space: nowrap;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul {\n\twidth: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-start-container {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-end-container {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 100%;\n\tmargin-left: auto;\n\tmargin-right: 1rem;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul>[slot=\"nav-end\"] {\n\twidth: fit-content;\n\talign-self: center;\n\theight: fit-content;\n\tmargin-left: 10rem;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul li a {\n\tdisplay: flex;\n\theight: 2.3rem;\n\ttext-decoration: none;\n\talign-items: center;\n\talign-self: center;\n}\n\n@media screen and (max-width: 900px) {\n\tsmoothly-app>smoothly-notifier>header>nav {\n\t\twidth: fit-content;\n\t\tmax-width: 100%;\n\t\ttop: 100%;\n\t\tposition: absolute;\n\t\tmax-height: calc(100dvh - var(--header-height));\n\t\toverflow-y: scroll;\n\t\tright: 0;\n\t\theight: auto;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav,\n\tsmoothly-app>smoothly-notifier>header>nav>ul {\n\t\tflex-direction: column;\n\t\tbackground-color: rgba(var(--smoothly-color));\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul {\n\t\tpadding: 1.5rem;\n\t\tbox-sizing: border-box;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul li {\n\t\tmargin-right: 0;\n\t\twidth: 100%;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>smoothly-burger {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul>[slot=\"nav-start\"] {\n\t\tdisplay: none;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-start-container,\n\tsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-end-container {\n\t\tflex-direction: column;\n\t\tmargin: 0;\n\t\talign-items: start;\n\t\tjustify-content: center;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-start-container>*:last-child {\n\t\tmargin-bottom: 1em;\n\t}\n}\n\nsmoothly-app>smoothly-notifier>header>nav:not(.menu-open) {\n\tdisplay: none;\n}\n\nsmoothly-app>smoothly-notifier>main>div {\n\toverflow-y: scroll;\n\theight: 100%;\n}\n","import { Component, h, Listen, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { SmoothlyAppRoomCustomEvent } from \"../../components\"\nimport { Color } from \"../../model\"\n\ntype Room = {\n\telement: HTMLSmoothlyAppRoomElement\n}\n@Component({\n\ttag: \"smoothly-app\",\n\tstyleUrl: \"style.css\",\n\tscoped: false,\n})\nexport class SmoothlyApp {\n\t@Prop({ reflect: true }) label?: string\n\t@Prop() color: Color\n\t@Prop() home?: string\n\t@Prop({ mutable: true, reflect: true }) menuOpen = false\n\t@State() selected?: Room\n\tprivate burgerVisibility: boolean\n\tprivate burgerElement?: HTMLElement\n\tprivate navElement?: HTMLElement\n\tmainElement?: HTMLElement\n\trooms: Record<string, Room | undefined> = {}\n\tasync componentDidRender() {\n\t\tif (!this.selected && !window.location.search)\n\t\t\t(this.home && this.rooms[this.home]\n\t\t\t\t? this.rooms[this.home]\n\t\t\t\t: Object.values(this.rooms).find(room => !room?.element.disabled)\n\t\t\t)?.element.setSelected(true)\n\t}\n\t@Method()\n\tasync selectRoom(path: string) {\n\t\tthis.rooms[path]?.element.setSelected(true)\n\t}\n\t@Watch(\"selected\")\n\tasync selectedChanged() {\n\t\tObject.values(this.rooms).forEach(\n\t\t\troom => room?.element.path != this.selected?.element.path && room?.element.setSelected(false)\n\t\t)\n\t\tconst content = await this.selected?.element.getContent()\n\t\tif (this.mainElement && content) {\n\t\t\tthis.mainElement.innerHTML = \"\"\n\t\t\tthis.mainElement.appendChild(content)\n\t\t}\n\t}\n\tburgerVisibilityHandler(event: CustomEvent<boolean>) {\n\t\tthis.burgerVisibility = event.detail\n\t}\n\tburgerStatusHandler(event: CustomEvent<boolean>) {\n\t\tevent.stopPropagation()\n\t\tthis.menuOpen = event.detail\n\t}\n\t@Listen(\"popstate\", { target: \"window\" })\n\tasync locationChangeHandler(event: PopStateEvent) {\n\t\tthis.rooms[event.state.smoothlyPath]?.element.setSelected(true, { history: true })\n\t}\n\t@Listen(\"smoothlyRoomSelected\")\n\troomSelectedHandler(event: SmoothlyAppRoomCustomEvent<{ history: boolean }>) {\n\t\tthis.selected = { element: event.target }\n\t\tif (this.burgerVisibility)\n\t\t\tthis.menuOpen = false\n\t\tif (!event.detail.history) {\n\t\t\tconst path = this.selected.element.path.toString()\n\t\t\tconst location = new URL(window.location.pathname == path ? window.location.href : window.location.origin)\n\t\t\tlocation.pathname = path\n\t\t\twindow.history.pushState({ smoothlyPath: path }, \"\", location.href)\n\t\t}\n\t}\n\t@Listen(\"smoothlyRoomLoaded\")\n\troomLoadedHandler(event: SmoothlyAppRoomCustomEvent<{ selected: boolean }>) {\n\t\tconst room = (this.rooms[event.target.path.toString()] = { element: event.target })\n\t\tif (room.element.selected) {\n\t\t\tthis.selected = room\n\t\t\twindow.history.replaceState({ smoothlyPath: room.element.path }, \"\", window.location.href)\n\t\t}\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tclickHandler(event: MouseEvent) {\n\t\tif (this.burgerVisibility)\n\t\t\tif (event.composedPath().some(e => e == this.burgerElement || e == this.navElement))\n\t\t\t\t!this.menuOpen\n\t\t\telse\n\t\t\t\tthis.menuOpen = false\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-notifier>\n\t\t\t\t<header color={this.color}>\n\t\t\t\t\t<h1>\n\t\t\t\t\t\t<a href={\"\"}>{this.label}</a>\n\t\t\t\t\t</h1>\n\t\t\t\t\t<slot name=\"header\" />\n\t\t\t\t\t<nav ref={e => (this.navElement = e)} class={{ \"menu-open\": this.menuOpen }}>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<div class={\"nav-start-container\"}>\n\t\t\t\t\t\t\t\t<slot name=\"nav-start\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<slot />\n\t\t\t\t\t\t\t<div class={\"nav-end-container\"}>\n\t\t\t\t\t\t\t\t<slot name=\"nav-end\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</nav>\n\t\t\t\t\t<smoothly-burger\n\t\t\t\t\t\tref={e => (this.burgerElement = e)}\n\t\t\t\t\t\topen={this.menuOpen}\n\t\t\t\t\t\tonSmoothlyNavStatus={e => this.burgerStatusHandler(e)}\n\t\t\t\t\t\tonSmoothlyVisibleStatus={e => this.burgerVisibilityHandler(e)}\n\t\t\t\t\t/>\n\t\t\t\t</header>\n\t\t\t\t<main ref={e => (this.mainElement = e)} />\n\t\t\t</smoothly-notifier>\n\t\t)\n\t}\n}\n","import { Component, h, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-app-demo\",\n})\nexport class SmoothlyAppDemo {\n\t@Prop() baseUrl: string\n\tapp?: HTMLSmoothlyAppElement\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-app color=\"dark\" label=\"Smoothly Demo\" home=\"/root\" ref={e => (this.app = e)}>\n\t\t\t\t<smoothly-trigger slot=\"nav-start\" type=\"link\" name=\"logout\">\n\t\t\t\t\t<smoothly-icon toolTip={\"Log out\"} name=\"log-out\" size=\"medium\"></smoothly-icon>\n\t\t\t\t</smoothly-trigger>\n\t\t\t\t<smoothly-app-room path=\"/root\" label=\"root\">\n\t\t\t\t\t<smoothly-theme-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/links\" label=\"Links\">\n\t\t\t\t\t<smoothly-input type=\"text\">Default</smoothly-input>\n\t\t\t\t\t<div style={{ padding: \"1em\", maxWidth: \"12em\" }}>\n\t\t\t\t\t\t<smoothly-button fill=\"solid\" color=\"danger\" link=\"https://google.com\">\n\t\t\t\t\t\t\topen\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button\n\t\t\t\t\t\t\tfill=\"solid\"\n\t\t\t\t\t\t\tcolor=\"danger\"\n\t\t\t\t\t\t\tlink=\"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf\"\n\t\t\t\t\t\t\ttype=\"download\">\n\t\t\t\t\t\t\tdownload\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button fill=\"solid\" color=\"danger\" onClick={() => alert(\"clicked\")}>\n\t\t\t\t\t\t\taction\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button disabled fill=\"solid\" color=\"danger\" onClick={() => alert(\"clicked\")}>\n\t\t\t\t\t\t\taction\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button type=\"link\" fill=\"clear\" color=\"danger\" onClick={() => alert(\"clicked\")}>\n\t\t\t\t\t\t\taction link\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t</div>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/form\" label=\"Form\">\n\t\t\t\t\t<smoothly-form-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/input\" label=\"Input\">\n\t\t\t\t\t<smoothly-input-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/button\" label=\"Button\">\n\t\t\t\t\t<smoothly-button-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/dialog\" label=\"Dialog\">\n\t\t\t\t\t<smoothly-dialog-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/display\" label=\"Display\" icon=\"eye-outline\">\n\t\t\t\t\t<smoothly-display-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/table\" label=\"Table\">\n\t\t\t\t\t<smoothly-table-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/next\" label=\"Next\">\n\t\t\t\t\t<smoothly-next-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/tabs\" label=\"Tabs\" slot=\"nav-end\">\n\t\t\t\t\t<smoothly-tabs-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room\n\t\t\t\t\tpath=\"/icon\"\n\t\t\t\t\tlabel=\"Icon\"\n\t\t\t\t\tcontent={<smoothly-icon-demo />}\n\t\t\t\t\tslot=\"nav-end\"></smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/redirect\" label=\"Redirect\" slot=\"nav-end\">\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"/input\">\n\t\t\t\t\t\tTo input\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"../button\">\n\t\t\t\t\t\tTo button\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link={new URL(\"/hidden\", window.location.origin).href}>\n\t\t\t\t\t\tTo hidden\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"/redirect\">\n\t\t\t\t\t\tTo redirect\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"nested\">\n\t\t\t\t\t\tTo redirect nested, relative path\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/hidden\">\n\t\t\t\t\t<p>hello world!</p>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/redirect/nested\">this is a nested room</smoothly-app-room>\n\t\t\t</smoothly-app>\n\t\t)\n\t}\n}\n","// src/path-to-regex-modified.ts\nvar Part = class {\n constructor(type, name, prefix, value, suffix, modifier) {\n this.type = 3 /* kFixed */;\n this.name = \"\";\n this.prefix = \"\";\n this.value = \"\";\n this.suffix = \"\";\n this.modifier = 3 /* kNone */;\n this.type = type;\n this.name = name;\n this.prefix = prefix;\n this.value = value;\n this.suffix = suffix;\n this.modifier = modifier;\n }\n hasCustomName() {\n return this.name !== \"\" && typeof this.name !== \"number\";\n }\n};\nvar regexIdentifierStart = /[$_\\p{ID_Start}]/u;\nvar regexIdentifierPart = /[$_\\u200C\\u200D\\p{ID_Continue}]/u;\nvar kFullWildcardRegex = \".*\";\nfunction isASCII(str, extended) {\n return (extended ? /^[\\x00-\\xFF]*$/ : /^[\\x00-\\x7F]*$/).test(str);\n}\nfunction lexer(str, lenient = false) {\n const tokens = [];\n let i = 0;\n while (i < str.length) {\n const char = str[i];\n const ErrorOrInvalid = function(msg) {\n if (!lenient)\n throw new TypeError(msg);\n tokens.push({ type: \"INVALID_CHAR\", index: i, value: str[i++] });\n };\n if (char === \"*\") {\n tokens.push({ type: \"ASTERISK\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"+\" || char === \"?\") {\n tokens.push({ type: \"OTHER_MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n let name = \"\";\n let j = i + 1;\n while (j < str.length) {\n const code = str.substr(j, 1);\n if (j === i + 1 && regexIdentifierStart.test(code) || j !== i + 1 && regexIdentifierPart.test(code)) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name) {\n ErrorOrInvalid(`Missing parameter name at ${i}`);\n continue;\n }\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n let count = 1;\n let pattern = \"\";\n let j = i + 1;\n let error = false;\n if (str[j] === \"?\") {\n ErrorOrInvalid(`Pattern cannot start with \"?\" at ${j}`);\n continue;\n }\n while (j < str.length) {\n if (!isASCII(str[j], false)) {\n ErrorOrInvalid(`Invalid character '${str[j]}' at ${j}.`);\n error = true;\n break;\n }\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n } else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n ErrorOrInvalid(`Capturing groups are not allowed at ${j}`);\n error = true;\n break;\n }\n }\n pattern += str[j++];\n }\n if (error) {\n continue;\n }\n if (count) {\n ErrorOrInvalid(`Unbalanced pattern at ${i}`);\n continue;\n }\n if (!pattern) {\n ErrorOrInvalid(`Missing pattern at ${i}`);\n continue;\n }\n tokens.push({ type: \"REGEX\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\nfunction parse(str, options = {}) {\n const tokens = lexer(str);\n options.delimiter ?? (options.delimiter = \"/#?\");\n options.prefixes ?? (options.prefixes = \"./\");\n const segmentWildcardRegex = `[^${escapeString(options.delimiter)}]+?`;\n const result = [];\n let key = 0;\n let i = 0;\n let path = \"\";\n let nameSet = /* @__PURE__ */ new Set();\n const tryConsume = (type) => {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n const tryConsumeModifier = () => {\n return tryConsume(\"OTHER_MODIFIER\") ?? tryConsume(\"ASTERISK\");\n };\n const mustConsume = (type) => {\n const value = tryConsume(type);\n if (value !== void 0)\n return value;\n const { type: nextType, index } = tokens[i];\n throw new TypeError(`Unexpected ${nextType} at ${index}, expected ${type}`);\n };\n const consumeText = () => {\n let result2 = \"\";\n let value;\n while (value = tryConsume(\"CHAR\") ?? tryConsume(\"ESCAPED_CHAR\")) {\n result2 += value;\n }\n return result2;\n };\n const DefaultEncodePart = (value) => {\n return value;\n };\n const encodePart = options.encodePart || DefaultEncodePart;\n let pendingFixedValue = \"\";\n const appendToPendingFixedValue = (value) => {\n pendingFixedValue += value;\n };\n const maybeAddPartFromPendingFixedValue = () => {\n if (!pendingFixedValue.length) {\n return;\n }\n result.push(new Part(3 /* kFixed */, \"\", \"\", encodePart(pendingFixedValue), \"\", 3 /* kNone */));\n pendingFixedValue = \"\";\n };\n const addPart = (prefix, nameToken, regexOrWildcardToken, suffix, modifierToken) => {\n let modifier = 3 /* kNone */;\n switch (modifierToken) {\n case \"?\":\n modifier = 1 /* kOptional */;\n break;\n case \"*\":\n modifier = 0 /* kZeroOrMore */;\n break;\n case \"+\":\n modifier = 2 /* kOneOrMore */;\n break;\n }\n if (!nameToken && !regexOrWildcardToken && modifier === 3 /* kNone */) {\n appendToPendingFixedValue(prefix);\n return;\n }\n maybeAddPartFromPendingFixedValue();\n if (!nameToken && !regexOrWildcardToken) {\n if (!prefix) {\n return;\n }\n result.push(new Part(3 /* kFixed */, \"\", \"\", encodePart(prefix), \"\", modifier));\n return;\n }\n let regexValue;\n if (!regexOrWildcardToken) {\n regexValue = segmentWildcardRegex;\n } else if (regexOrWildcardToken === \"*\") {\n regexValue = kFullWildcardRegex;\n } else {\n regexValue = regexOrWildcardToken;\n }\n let type = 2 /* kRegex */;\n if (regexValue === segmentWildcardRegex) {\n type = 1 /* kSegmentWildcard */;\n regexValue = \"\";\n } else if (regexValue === kFullWildcardRegex) {\n type = 0 /* kFullWildcard */;\n regexValue = \"\";\n }\n let name;\n if (nameToken) {\n name = nameToken;\n } else if (regexOrWildcardToken) {\n name = key++;\n }\n if (nameSet.has(name)) {\n throw new TypeError(`Duplicate name '${name}'.`);\n }\n nameSet.add(name);\n result.push(new Part(type, name, encodePart(prefix), regexValue, encodePart(suffix), modifier));\n };\n while (i < tokens.length) {\n const charToken = tryConsume(\"CHAR\");\n const nameToken = tryConsume(\"NAME\");\n let regexOrWildcardToken = tryConsume(\"REGEX\");\n if (!nameToken && !regexOrWildcardToken) {\n regexOrWildcardToken = tryConsume(\"ASTERISK\");\n }\n if (nameToken || regexOrWildcardToken) {\n let prefix = charToken ?? \"\";\n if (options.prefixes.indexOf(prefix) === -1) {\n appendToPendingFixedValue(prefix);\n prefix = \"\";\n }\n maybeAddPartFromPendingFixedValue();\n let modifierToken = tryConsumeModifier();\n addPart(prefix, nameToken, regexOrWildcardToken, \"\", modifierToken);\n continue;\n }\n const value = charToken ?? tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n appendToPendingFixedValue(value);\n continue;\n }\n const openToken = tryConsume(\"OPEN\");\n if (openToken) {\n const prefix = consumeText();\n const nameToken2 = tryConsume(\"NAME\");\n let regexOrWildcardToken2 = tryConsume(\"REGEX\");\n if (!nameToken2 && !regexOrWildcardToken2) {\n regexOrWildcardToken2 = tryConsume(\"ASTERISK\");\n }\n const suffix = consumeText();\n mustConsume(\"CLOSE\");\n const modifierToken = tryConsumeModifier();\n addPart(prefix, nameToken2, regexOrWildcardToken2, suffix, modifierToken);\n continue;\n }\n maybeAddPartFromPendingFixedValue();\n mustConsume(\"END\");\n }\n return result;\n}\nfunction escapeString(str) {\n return str.replace(/([.+*?^${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\nfunction flags(options) {\n return options && options.ignoreCase ? \"ui\" : \"u\";\n}\nfunction stringToRegexp(path, names, options) {\n return partsToRegexp(parse(path, options), names, options);\n}\nfunction modifierToString(modifier) {\n switch (modifier) {\n case 0 /* kZeroOrMore */:\n return \"*\";\n case 1 /* kOptional */:\n return \"?\";\n case 2 /* kOneOrMore */:\n return \"+\";\n case 3 /* kNone */:\n return \"\";\n }\n}\nfunction partsToRegexp(parts, names, options = {}) {\n options.delimiter ?? (options.delimiter = \"/#?\");\n options.prefixes ?? (options.prefixes = \"./\");\n options.sensitive ?? (options.sensitive = false);\n options.strict ?? (options.strict = false);\n options.end ?? (options.end = true);\n options.start ?? (options.start = true);\n options.endsWith = \"\";\n let result = options.start ? \"^\" : \"\";\n for (const part of parts) {\n if (part.type === 3 /* kFixed */) {\n if (part.modifier === 3 /* kNone */) {\n result += escapeString(part.value);\n } else {\n result += `(?:${escapeString(part.value)})${modifierToString(part.modifier)}`;\n }\n continue;\n }\n if (names)\n names.push(part.name);\n const segmentWildcardRegex = `[^${escapeString(options.delimiter)}]+?`;\n let regexValue = part.value;\n if (part.type === 1 /* kSegmentWildcard */)\n regexValue = segmentWildcardRegex;\n else if (part.type === 0 /* kFullWildcard */)\n regexValue = kFullWildcardRegex;\n if (!part.prefix.length && !part.suffix.length) {\n if (part.modifier === 3 /* kNone */ || part.modifier === 1 /* kOptional */) {\n result += `(${regexValue})${modifierToString(part.modifier)}`;\n } else {\n result += `((?:${regexValue})${modifierToString(part.modifier)})`;\n }\n continue;\n }\n if (part.modifier === 3 /* kNone */ || part.modifier === 1 /* kOptional */) {\n result += `(?:${escapeString(part.prefix)}(${regexValue})${escapeString(part.suffix)})`;\n result += modifierToString(part.modifier);\n continue;\n }\n result += `(?:${escapeString(part.prefix)}`;\n result += `((?:${regexValue})(?:`;\n result += escapeString(part.suffix);\n result += escapeString(part.prefix);\n result += `(?:${regexValue}))*)${escapeString(part.suffix)})`;\n if (part.modifier === 0 /* kZeroOrMore */) {\n result += \"?\";\n }\n }\n const endsWith = `[${escapeString(options.endsWith)}]|$`;\n const delimiter = `[${escapeString(options.delimiter)}]`;\n if (options.end) {\n if (!options.strict) {\n result += `${delimiter}?`;\n }\n if (!options.endsWith.length) {\n result += \"$\";\n } else {\n result += `(?=${endsWith})`;\n }\n return new RegExp(result, flags(options));\n }\n if (!options.strict) {\n result += `(?:${delimiter}(?=${endsWith}))?`;\n }\n let isEndDelimited = false;\n if (parts.length) {\n const lastPart = parts[parts.length - 1];\n if (lastPart.type === 3 /* kFixed */ && lastPart.modifier === 3 /* kNone */) {\n isEndDelimited = options.delimiter.indexOf(lastPart) > -1;\n }\n }\n if (!isEndDelimited) {\n result += `(?=${delimiter}|${endsWith})`;\n }\n return new RegExp(result, flags(options));\n}\n\n// src/url-utils.ts\nvar DEFAULT_OPTIONS = {\n delimiter: \"\",\n prefixes: \"\",\n sensitive: true,\n strict: true\n};\nvar HOSTNAME_OPTIONS = {\n delimiter: \".\",\n prefixes: \"\",\n sensitive: true,\n strict: true\n};\nvar PATHNAME_OPTIONS = {\n delimiter: \"/\",\n prefixes: \"/\",\n sensitive: true,\n strict: true\n};\nfunction isAbsolutePathname(pathname, isPattern) {\n if (!pathname.length) {\n return false;\n }\n if (pathname[0] === \"/\") {\n return true;\n }\n if (!isPattern) {\n return false;\n }\n if (pathname.length < 2) {\n return false;\n }\n if ((pathname[0] == \"\\\\\" || pathname[0] == \"{\") && pathname[1] == \"/\") {\n return true;\n }\n return false;\n}\nfunction maybeStripPrefix(value, prefix) {\n if (value.startsWith(prefix)) {\n return value.substring(prefix.length, value.length);\n }\n return value;\n}\nfunction maybeStripSuffix(value, suffix) {\n if (value.endsWith(suffix)) {\n return value.substr(0, value.length - suffix.length);\n }\n return value;\n}\nfunction treatAsIPv6Hostname(value) {\n if (!value || value.length < 2) {\n return false;\n }\n if (value[0] === \"[\") {\n return true;\n }\n if ((value[0] === \"\\\\\" || value[0] === \"{\") && value[1] === \"[\") {\n return true;\n }\n return false;\n}\nvar SPECIAL_SCHEMES = [\n \"ftp\",\n \"file\",\n \"http\",\n \"https\",\n \"ws\",\n \"wss\"\n];\nfunction isSpecialScheme(protocol_regexp) {\n if (!protocol_regexp) {\n return true;\n }\n for (const scheme of SPECIAL_SCHEMES) {\n if (protocol_regexp.test(scheme)) {\n return true;\n }\n }\n return false;\n}\nfunction canonicalizeHash(hash, isPattern) {\n hash = maybeStripPrefix(hash, \"#\");\n if (isPattern || hash === \"\") {\n return hash;\n }\n const url = new URL(\"https://example.com\");\n url.hash = hash;\n return url.hash ? url.hash.substring(1, url.hash.length) : \"\";\n}\nfunction canonicalizeSearch(search, isPattern) {\n search = maybeStripPrefix(search, \"?\");\n if (isPattern || search === \"\") {\n return search;\n }\n const url = new URL(\"https://example.com\");\n url.search = search;\n return url.search ? url.search.substring(1, url.search.length) : \"\";\n}\nfunction canonicalizeHostname(hostname, isPattern) {\n if (isPattern || hostname === \"\") {\n return hostname;\n }\n if (treatAsIPv6Hostname(hostname)) {\n return ipv6HostnameEncodeCallback(hostname);\n } else {\n return hostnameEncodeCallback(hostname);\n }\n}\nfunction canonicalizePassword(password, isPattern) {\n if (isPattern || password === \"\") {\n return password;\n }\n const url = new URL(\"https://example.com\");\n url.password = password;\n return url.password;\n}\nfunction canonicalizeUsername(username, isPattern) {\n if (isPattern || username === \"\") {\n return username;\n }\n const url = new URL(\"https://example.com\");\n url.username = username;\n return url.username;\n}\nfunction canonicalizePathname(pathname, protocol, isPattern) {\n if (isPattern || pathname === \"\") {\n return pathname;\n }\n if (protocol && !SPECIAL_SCHEMES.includes(protocol)) {\n const url = new URL(`${protocol}:${pathname}`);\n return url.pathname;\n }\n const leadingSlash = pathname[0] == \"/\";\n pathname = new URL(\n !leadingSlash ? \"/-\" + pathname : pathname,\n \"https://example.com\"\n ).pathname;\n if (!leadingSlash) {\n pathname = pathname.substring(2, pathname.length);\n }\n return pathname;\n}\nfunction canonicalizePort(port, protocol, isPattern) {\n if (defaultPortForProtocol(protocol) === port) {\n port = \"\";\n }\n if (isPattern || port === \"\") {\n return port;\n }\n return portEncodeCallback(port);\n}\nfunction canonicalizeProtocol(protocol, isPattern) {\n protocol = maybeStripSuffix(protocol, \":\");\n if (isPattern || protocol === \"\") {\n return protocol;\n }\n return protocolEncodeCallback(protocol);\n}\nfunction defaultPortForProtocol(protocol) {\n switch (protocol) {\n case \"ws\":\n case \"http\":\n return \"80\";\n case \"wws\":\n case \"https\":\n return \"443\";\n case \"ftp\":\n return \"21\";\n default:\n return \"\";\n }\n}\nfunction protocolEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/^[-+.A-Za-z0-9]*$/.test(input))\n return input.toLowerCase();\n throw new TypeError(`Invalid protocol '${input}'.`);\n}\nfunction usernameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.username = input;\n return url.username;\n}\nfunction passwordEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.password = input;\n return url.password;\n}\nfunction hostnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/[\\t\\n\\r #%/:<>?@[\\]^\\\\|]/g.test(input)) {\n throw new TypeError(`Invalid hostname '${input}'`);\n }\n const url = new URL(\"https://example.com\");\n url.hostname = input;\n return url.hostname;\n}\nfunction ipv6HostnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/[^0-9a-fA-F[\\]:]/g.test(input)) {\n throw new TypeError(`Invalid IPv6 hostname '${input}'`);\n }\n return input.toLowerCase();\n}\nfunction portEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/^[0-9]*$/.test(input) && parseInt(input) <= 65535) {\n return input;\n }\n throw new TypeError(`Invalid port '${input}'.`);\n}\nfunction standardURLPathnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.pathname = input[0] !== \"/\" ? \"/-\" + input : input;\n if (input[0] !== \"/\") {\n return url.pathname.substring(2, url.pathname.length);\n }\n return url.pathname;\n}\nfunction pathURLPathnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(`data:${input}`);\n return url.pathname;\n}\nfunction searchEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.search = input;\n return url.search.substring(1, url.search.length);\n}\nfunction hashEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.hash = input;\n return url.hash.substring(1, url.hash.length);\n}\n\n// src/url-pattern-parser.ts\nvar Parser = class {\n constructor(input) {\n // The list of `LexToken`s produced by the path-to-regexp `lexer()` function\n // when passed `input` with lenient mode enabled.\n this.tokenList = [];\n // As we parse the input string we populate a `URLPatternInit` dictionary\n // with each component pattern. This is then the final result of the parse.\n this.internalResult = {};\n // The index of the current `LexToken` being considered.\n this.tokenIndex = 0;\n // The value to add to `tokenIndex` on each turn through the parse loop.\n // While typically this is `1`, it is also set to `0` at times for things\n // like state transitions, etc. It is automatically reset back to `1` at\n // the top of the parse loop.\n this.tokenIncrement = 1;\n // The index of the first `LexToken` to include in the component string.\n this.componentStart = 0;\n // The current parse state. This should only be changed via `changeState()`\n // or `rewindAndSetState()`.\n this.state = 0 /* INIT */;\n // The current nest depth of `{ }` pattern groupings.\n this.groupDepth = 0;\n // The current nesting depth of `[ ]` in hostname patterns.\n this.hostnameIPv6BracketDepth = 0;\n // True if we should apply parse rules as if this is a \"standard\" URL. If\n // false then this is treated as a \"not a base URL\".\n this.shouldTreatAsStandardURL = false;\n this.input = input;\n }\n // Return the parse result. The result is only available after the\n // `parse()` method completes.\n get result() {\n return this.internalResult;\n }\n // Attempt to parse the input string used to construct the Parser object.\n // This method may only be called once. Any errors will be thrown as an\n // exception. Retrieve the parse result by accessing the `Parser.result`\n // property getter.\n parse() {\n this.tokenList = lexer(\n this.input,\n /*lenient=*/\n true\n );\n for (; this.tokenIndex < this.tokenList.length; this.tokenIndex += this.tokenIncrement) {\n this.tokenIncrement = 1;\n if (this.tokenList[this.tokenIndex].type === \"END\") {\n if (this.state === 0 /* INIT */) {\n this.rewind();\n if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n } else if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n this.internalResult.hash = \"\";\n } else {\n this.changeState(\n 7 /* PATHNAME */,\n /*skip=*/\n 0\n );\n this.internalResult.search = \"\";\n this.internalResult.hash = \"\";\n }\n continue;\n } else if (this.state === 2 /* AUTHORITY */) {\n this.rewindAndSetState(5 /* HOSTNAME */);\n continue;\n }\n this.changeState(\n 10 /* DONE */,\n /*skip=*/\n 0\n );\n break;\n }\n if (this.groupDepth > 0) {\n if (this.isGroupClose()) {\n this.groupDepth -= 1;\n } else {\n continue;\n }\n }\n if (this.isGroupOpen()) {\n this.groupDepth += 1;\n continue;\n }\n switch (this.state) {\n case 0 /* INIT */:\n if (this.isProtocolSuffix()) {\n this.internalResult.username = \"\";\n this.internalResult.password = \"\";\n this.internalResult.hostname = \"\";\n this.internalResult.port = \"\";\n this.internalResult.pathname = \"\";\n this.internalResult.search = \"\";\n this.internalResult.hash = \"\";\n this.rewindAndSetState(1 /* PROTOCOL */);\n }\n break;\n case 1 /* PROTOCOL */:\n if (this.isProtocolSuffix()) {\n this.computeShouldTreatAsStandardURL();\n let nextState = 7 /* PATHNAME */;\n let skip = 1;\n if (this.shouldTreatAsStandardURL) {\n this.internalResult.pathname = \"/\";\n }\n if (this.nextIsAuthoritySlashes()) {\n nextState = 2 /* AUTHORITY */;\n skip = 3;\n } else if (this.shouldTreatAsStandardURL) {\n nextState = 2 /* AUTHORITY */;\n }\n this.changeState(nextState, skip);\n }\n break;\n case 2 /* AUTHORITY */:\n if (this.isIdentityTerminator()) {\n this.rewindAndSetState(3 /* USERNAME */);\n } else if (this.isPathnameStart() || this.isSearchPrefix() || this.isHashPrefix()) {\n this.rewindAndSetState(5 /* HOSTNAME */);\n }\n break;\n case 3 /* USERNAME */:\n if (this.isPasswordPrefix()) {\n this.changeState(\n 4 /* PASSWORD */,\n /*skip=*/\n 1\n );\n } else if (this.isIdentityTerminator()) {\n this.changeState(\n 5 /* HOSTNAME */,\n /*skip=*/\n 1\n );\n }\n break;\n case 4 /* PASSWORD */:\n if (this.isIdentityTerminator()) {\n this.changeState(\n 5 /* HOSTNAME */,\n /*skip=*/\n 1\n );\n }\n break;\n case 5 /* HOSTNAME */:\n if (this.isIPv6Open()) {\n this.hostnameIPv6BracketDepth += 1;\n } else if (this.isIPv6Close()) {\n this.hostnameIPv6BracketDepth -= 1;\n }\n if (this.isPortPrefix() && !this.hostnameIPv6BracketDepth) {\n this.changeState(\n 6 /* PORT */,\n /*skip=*/\n 1\n );\n } else if (this.isPathnameStart()) {\n this.changeState(\n 7 /* PATHNAME */,\n /*skip=*/\n 0\n );\n } else if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n } else if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n }\n break;\n case 6 /* PORT */:\n if (this.isPathnameStart()) {\n this.changeState(\n 7 /* PATHNAME */,\n /*skip=*/\n 0\n );\n } else if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n } else if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n }\n break;\n case 7 /* PATHNAME */:\n if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n } else if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n }\n break;\n case 8 /* SEARCH */:\n if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n }\n break;\n case 9 /* HASH */:\n break;\n case 10 /* DONE */:\n break;\n }\n }\n }\n changeState(newState, skip) {\n switch (this.state) {\n case 0 /* INIT */:\n break;\n case 1 /* PROTOCOL */:\n this.internalResult.protocol = this.makeComponentString();\n break;\n case 2 /* AUTHORITY */:\n break;\n case 3 /* USERNAME */:\n this.internalResult.username = this.makeComponentString();\n break;\n case 4 /* PASSWORD */:\n this.internalResult.password = this.makeComponentString();\n break;\n case 5 /* HOSTNAME */:\n this.internalResult.hostname = this.makeComponentString();\n break;\n case 6 /* PORT */:\n this.internalResult.port = this.makeComponentString();\n break;\n case 7 /* PATHNAME */:\n this.internalResult.pathname = this.makeComponentString();\n break;\n case 8 /* SEARCH */:\n this.internalResult.search = this.makeComponentString();\n break;\n case 9 /* HASH */:\n this.internalResult.hash = this.makeComponentString();\n break;\n case 10 /* DONE */:\n break;\n }\n this.changeStateWithoutSettingComponent(newState, skip);\n }\n changeStateWithoutSettingComponent(newState, skip) {\n this.state = newState;\n this.componentStart = this.tokenIndex + skip;\n this.tokenIndex += skip;\n this.tokenIncrement = 0;\n }\n rewind() {\n this.tokenIndex = this.componentStart;\n this.tokenIncrement = 0;\n }\n rewindAndSetState(newState) {\n this.rewind();\n this.state = newState;\n }\n safeToken(index) {\n if (index < 0) {\n index = this.tokenList.length - index;\n }\n if (index < this.tokenList.length) {\n return this.tokenList[index];\n }\n return this.tokenList[this.tokenList.length - 1];\n }\n isNonSpecialPatternChar(index, value) {\n const token = this.safeToken(index);\n return token.value === value && (token.type === \"CHAR\" || token.type === \"ESCAPED_CHAR\" || token.type === \"INVALID_CHAR\");\n }\n isProtocolSuffix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \":\");\n }\n nextIsAuthoritySlashes() {\n return this.isNonSpecialPatternChar(this.tokenIndex + 1, \"/\") && this.isNonSpecialPatternChar(this.tokenIndex + 2, \"/\");\n }\n isIdentityTerminator() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"@\");\n }\n isPasswordPrefix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \":\");\n }\n isPortPrefix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \":\");\n }\n isPathnameStart() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"/\");\n }\n isSearchPrefix() {\n if (this.isNonSpecialPatternChar(this.tokenIndex, \"?\")) {\n return true;\n }\n if (this.tokenList[this.tokenIndex].value !== \"?\") {\n return false;\n }\n const previousToken = this.safeToken(this.tokenIndex - 1);\n return previousToken.type !== \"NAME\" && previousToken.type !== \"REGEX\" && previousToken.type !== \"CLOSE\" && previousToken.type !== \"ASTERISK\";\n }\n isHashPrefix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"#\");\n }\n isGroupOpen() {\n return this.tokenList[this.tokenIndex].type == \"OPEN\";\n }\n isGroupClose() {\n return this.tokenList[this.tokenIndex].type == \"CLOSE\";\n }\n isIPv6Open() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"[\");\n }\n isIPv6Close() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"]\");\n }\n makeComponentString() {\n const token = this.tokenList[this.tokenIndex];\n const componentCharStart = this.safeToken(this.componentStart).index;\n return this.input.substring(componentCharStart, token.index);\n }\n computeShouldTreatAsStandardURL() {\n const options = {};\n Object.assign(options, DEFAULT_OPTIONS);\n options.encodePart = protocolEncodeCallback;\n const regexp = stringToRegexp(\n this.makeComponentString(),\n /*keys=*/\n void 0,\n options\n );\n this.shouldTreatAsStandardURL = isSpecialScheme(regexp);\n }\n};\n\n// src/url-pattern.ts\nvar COMPONENTS = [\n \"protocol\",\n \"username\",\n \"password\",\n \"hostname\",\n \"port\",\n \"pathname\",\n \"search\",\n \"hash\"\n];\nvar DEFAULT_PATTERN = \"*\";\nfunction extractValues(url, baseURL) {\n if (typeof url !== \"string\") {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n const o = new URL(url, baseURL);\n return {\n protocol: o.protocol.substring(0, o.protocol.length - 1),\n username: o.username,\n password: o.password,\n hostname: o.hostname,\n port: o.port,\n pathname: o.pathname,\n search: o.search !== \"\" ? o.search.substring(1, o.search.length) : void 0,\n hash: o.hash !== \"\" ? o.hash.substring(1, o.hash.length) : void 0\n };\n}\nfunction processBaseURLString(input, isPattern) {\n if (!isPattern) {\n return input;\n }\n return escapePatternString(input);\n}\nfunction applyInit(o, init, isPattern) {\n let baseURL;\n if (typeof init.baseURL === \"string\") {\n try {\n baseURL = new URL(init.baseURL);\n o.protocol = processBaseURLString(baseURL.protocol.substring(0, baseURL.protocol.length - 1), isPattern);\n o.username = processBaseURLString(baseURL.username, isPattern);\n o.password = processBaseURLString(baseURL.password, isPattern);\n o.hostname = processBaseURLString(baseURL.hostname, isPattern);\n o.port = processBaseURLString(baseURL.port, isPattern);\n o.pathname = processBaseURLString(baseURL.pathname, isPattern);\n o.search = processBaseURLString(baseURL.search.substring(1, baseURL.search.length), isPattern);\n o.hash = processBaseURLString(baseURL.hash.substring(1, baseURL.hash.length), isPattern);\n } catch {\n throw new TypeError(`invalid baseURL '${init.baseURL}'.`);\n }\n }\n if (typeof init.protocol === \"string\") {\n o.protocol = canonicalizeProtocol(init.protocol, isPattern);\n }\n if (typeof init.username === \"string\") {\n o.username = canonicalizeUsername(init.username, isPattern);\n }\n if (typeof init.password === \"string\") {\n o.password = canonicalizePassword(init.password, isPattern);\n }\n if (typeof init.hostname === \"string\") {\n o.hostname = canonicalizeHostname(init.hostname, isPattern);\n }\n if (typeof init.port === \"string\") {\n o.port = canonicalizePort(init.port, o.protocol, isPattern);\n }\n if (typeof init.pathname === \"string\") {\n o.pathname = init.pathname;\n if (baseURL && !isAbsolutePathname(o.pathname, isPattern)) {\n const slashIndex = baseURL.pathname.lastIndexOf(\"/\");\n if (slashIndex >= 0) {\n o.pathname = processBaseURLString(baseURL.pathname.substring(0, slashIndex + 1), isPattern) + o.pathname;\n }\n }\n o.pathname = canonicalizePathname(o.pathname, o.protocol, isPattern);\n }\n if (typeof init.search === \"string\") {\n o.search = canonicalizeSearch(init.search, isPattern);\n }\n if (typeof init.hash === \"string\") {\n o.hash = canonicalizeHash(init.hash, isPattern);\n }\n return o;\n}\nfunction escapePatternString(value) {\n return value.replace(/([+*?:{}()\\\\])/g, \"\\\\$1\");\n}\nfunction escapeRegexpString(value) {\n return value.replace(/([.+*?^${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\nfunction partsToPattern(parts, options) {\n options.delimiter ?? (options.delimiter = \"/#?\");\n options.prefixes ?? (options.prefixes = \"./\");\n options.sensitive ?? (options.sensitive = false);\n options.strict ?? (options.strict = false);\n options.end ?? (options.end = true);\n options.start ?? (options.start = true);\n options.endsWith = \"\";\n const kFullWildcardRegex2 = \".*\";\n const segmentWildcardRegex = `[^${escapeRegexpString(options.delimiter)}]+?`;\n const regexIdentifierPart2 = /[$_\\u200C\\u200D\\p{ID_Continue}]/u;\n let result = \"\";\n for (let i = 0; i < parts.length; ++i) {\n const part = parts[i];\n if (part.type === 3 /* kFixed */) {\n if (part.modifier === 3 /* kNone */) {\n result += escapePatternString(part.value);\n continue;\n }\n result += `{${escapePatternString(part.value)}}${modifierToString(part.modifier)}`;\n continue;\n }\n const customName = part.hasCustomName();\n let needsGrouping = !!part.suffix.length || !!part.prefix.length && (part.prefix.length !== 1 || !options.prefixes.includes(part.prefix));\n const lastPart = i > 0 ? parts[i - 1] : null;\n const nextPart = i < parts.length - 1 ? parts[i + 1] : null;\n if (!needsGrouping && customName && part.type === 1 /* kSegmentWildcard */ && part.modifier === 3 /* kNone */ && nextPart && !nextPart.prefix.length && !nextPart.suffix.length) {\n if (nextPart.type === 3 /* kFixed */) {\n const code = nextPart.value.length > 0 ? nextPart.value[0] : \"\";\n needsGrouping = regexIdentifierPart2.test(code);\n } else {\n needsGrouping = !nextPart.hasCustomName();\n }\n }\n if (!needsGrouping && !part.prefix.length && lastPart && lastPart.type === 3 /* kFixed */) {\n const code = lastPart.value[lastPart.value.length - 1];\n needsGrouping = options.prefixes.includes(code);\n }\n if (needsGrouping) {\n result += \"{\";\n }\n result += escapePatternString(part.prefix);\n if (customName) {\n result += `:${part.name}`;\n }\n if (part.type === 2 /* kRegex */) {\n result += `(${part.value})`;\n } else if (part.type === 1 /* kSegmentWildcard */) {\n if (!customName) {\n result += `(${segmentWildcardRegex})`;\n }\n } else if (part.type === 0 /* kFullWildcard */) {\n if (!customName && (!lastPart || lastPart.type === 3 /* kFixed */ || lastPart.modifier !== 3 /* kNone */ || needsGrouping || part.prefix !== \"\")) {\n result += \"*\";\n } else {\n result += `(${kFullWildcardRegex2})`;\n }\n }\n if (part.type === 1 /* kSegmentWildcard */ && customName && !!part.suffix.length) {\n if (regexIdentifierPart2.test(part.suffix[0])) {\n result += \"\\\\\";\n }\n }\n result += escapePatternString(part.suffix);\n if (needsGrouping) {\n result += \"}\";\n }\n if (part.modifier !== 3 /* kNone */) {\n result += modifierToString(part.modifier);\n }\n }\n return result;\n}\nvar URLPattern = class {\n constructor(init = {}, baseURLOrOptions, options) {\n this.regexp = {};\n this.names = {};\n this.component_pattern = {};\n this.parts = {};\n try {\n let baseURL = void 0;\n if (typeof baseURLOrOptions === \"string\") {\n baseURL = baseURLOrOptions;\n } else {\n options = baseURLOrOptions;\n }\n if (typeof init === \"string\") {\n const parser = new Parser(init);\n parser.parse();\n init = parser.result;\n if (baseURL === void 0 && typeof init.protocol !== \"string\") {\n throw new TypeError(`A base URL must be provided for a relative constructor string.`);\n }\n init.baseURL = baseURL;\n } else {\n if (!init || typeof init !== \"object\") {\n throw new TypeError(`parameter 1 is not of type 'string' and cannot convert to dictionary.`);\n }\n if (baseURL) {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n }\n if (typeof options === \"undefined\") {\n options = { ignoreCase: false };\n }\n const ignoreCaseOptions = { ignoreCase: options.ignoreCase === true };\n const defaults = {\n pathname: DEFAULT_PATTERN,\n protocol: DEFAULT_PATTERN,\n username: DEFAULT_PATTERN,\n password: DEFAULT_PATTERN,\n hostname: DEFAULT_PATTERN,\n port: DEFAULT_PATTERN,\n search: DEFAULT_PATTERN,\n hash: DEFAULT_PATTERN\n };\n this.pattern = applyInit(defaults, init, true);\n if (defaultPortForProtocol(this.pattern.protocol) === this.pattern.port) {\n this.pattern.port = \"\";\n }\n let component;\n for (component of COMPONENTS) {\n if (!(component in this.pattern))\n continue;\n const options2 = {};\n const pattern = this.pattern[component];\n this.names[component] = [];\n switch (component) {\n case \"protocol\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = protocolEncodeCallback;\n break;\n case \"username\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = usernameEncodeCallback;\n break;\n case \"password\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = passwordEncodeCallback;\n break;\n case \"hostname\":\n Object.assign(options2, HOSTNAME_OPTIONS);\n if (treatAsIPv6Hostname(pattern)) {\n options2.encodePart = ipv6HostnameEncodeCallback;\n } else {\n options2.encodePart = hostnameEncodeCallback;\n }\n break;\n case \"port\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = portEncodeCallback;\n break;\n case \"pathname\":\n if (isSpecialScheme(this.regexp.protocol)) {\n Object.assign(options2, PATHNAME_OPTIONS, ignoreCaseOptions);\n options2.encodePart = standardURLPathnameEncodeCallback;\n } else {\n Object.assign(options2, DEFAULT_OPTIONS, ignoreCaseOptions);\n options2.encodePart = pathURLPathnameEncodeCallback;\n }\n break;\n case \"search\":\n Object.assign(options2, DEFAULT_OPTIONS, ignoreCaseOptions);\n options2.encodePart = searchEncodeCallback;\n break;\n case \"hash\":\n Object.assign(options2, DEFAULT_OPTIONS, ignoreCaseOptions);\n options2.encodePart = hashEncodeCallback;\n break;\n }\n try {\n this.parts[component] = parse(pattern, options2);\n this.regexp[component] = partsToRegexp(\n this.parts[component],\n /* out */\n this.names[component],\n options2\n );\n this.component_pattern[component] = partsToPattern(this.parts[component], options2);\n } catch (err) {\n throw new TypeError(`invalid ${component} pattern '${this.pattern[component]}'.`);\n }\n }\n } catch (err) {\n throw new TypeError(`Failed to construct 'URLPattern': ${err.message}`);\n }\n }\n test(input = {}, baseURL) {\n let values = {\n pathname: \"\",\n protocol: \"\",\n username: \"\",\n password: \"\",\n hostname: \"\",\n port: \"\",\n search: \"\",\n hash: \"\"\n };\n if (typeof input !== \"string\" && baseURL) {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n if (typeof input === \"undefined\") {\n return false;\n }\n try {\n if (typeof input === \"object\") {\n values = applyInit(values, input, false);\n } else {\n values = applyInit(values, extractValues(input, baseURL), false);\n }\n } catch (err) {\n return false;\n }\n let component;\n for (component of COMPONENTS) {\n if (!this.regexp[component].exec(values[component])) {\n return false;\n }\n }\n return true;\n }\n exec(input = {}, baseURL) {\n let values = {\n pathname: \"\",\n protocol: \"\",\n username: \"\",\n password: \"\",\n hostname: \"\",\n port: \"\",\n search: \"\",\n hash: \"\"\n };\n if (typeof input !== \"string\" && baseURL) {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n if (typeof input === \"undefined\") {\n return;\n }\n try {\n if (typeof input === \"object\") {\n values = applyInit(values, input, false);\n } else {\n values = applyInit(values, extractValues(input, baseURL), false);\n }\n } catch (err) {\n return null;\n }\n let result = {};\n if (baseURL) {\n result.inputs = [input, baseURL];\n } else {\n result.inputs = [input];\n }\n let component;\n for (component of COMPONENTS) {\n let match = this.regexp[component].exec(values[component]);\n if (!match) {\n return null;\n }\n let groups = {};\n for (let [i, name] of this.names[component].entries()) {\n if (typeof name === \"string\" || typeof name === \"number\") {\n let value = match[i + 1];\n groups[name] = value;\n }\n }\n result[component] = {\n input: values[component] ?? \"\",\n groups\n };\n }\n return result;\n }\n static compareComponent(component, left, right) {\n const comparePart = (left2, right2) => {\n for (let attr of [\"type\", \"modifier\", \"prefix\", \"value\", \"suffix\"]) {\n if (left2[attr] < right2[attr])\n return -1;\n else if (left2[attr] === right2[attr])\n continue;\n else\n return 1;\n }\n return 0;\n };\n const emptyFixedPart = new Part(3 /* kFixed */, \"\", \"\", \"\", \"\", 3 /* kNone */);\n const wildcardOnlyPart = new Part(0 /* kFullWildcard */, \"\", \"\", \"\", \"\", 3 /* kNone */);\n const comparePartList = (left2, right2) => {\n let i = 0;\n for (; i < Math.min(left2.length, right2.length); ++i) {\n let result = comparePart(left2[i], right2[i]);\n if (result)\n return result;\n }\n if (left2.length === right2.length) {\n return 0;\n }\n return comparePart(left2[i] ?? emptyFixedPart, right2[i] ?? emptyFixedPart);\n };\n if (!left.component_pattern[component] && !right.component_pattern[component]) {\n return 0;\n }\n if (left.component_pattern[component] && !right.component_pattern[component]) {\n return comparePartList(left.parts[component], [wildcardOnlyPart]);\n }\n if (!left.component_pattern[component] && right.component_pattern[component]) {\n return comparePartList([wildcardOnlyPart], right.parts[component]);\n }\n return comparePartList(left.parts[component], right.parts[component]);\n }\n get protocol() {\n return this.component_pattern.protocol;\n }\n get username() {\n return this.component_pattern.username;\n }\n get password() {\n return this.component_pattern.password;\n }\n get hostname() {\n return this.component_pattern.hostname;\n }\n get port() {\n return this.component_pattern.port;\n }\n get pathname() {\n return this.component_pattern.pathname;\n }\n get search() {\n return this.component_pattern.search;\n }\n get hash() {\n return this.component_pattern.hash;\n }\n};\nexport {\n URLPattern\n};\n","import { URLPattern } from \"./dist/urlpattern.js\";\n\nexport { URLPattern };\n\nif (!globalThis.URLPattern) {\n globalThis.URLPattern = URLPattern;\n}\n",":host {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttext-align: center;\n\tcursor: pointer;\n\theight: 100%;\n\tposition: relative;\n}\n\n:host>div {\n\toverflow-y: auto;\n\theight: 100%;\n}\n\n:not(:host[label], :host[icon]),\n:host[disabled] {\n\tdisplay: none;\n}\n\n:host>div {\n\tdisplay: none;\n}\n\n:host>li {\n\theight: 100%;\n\tlist-style: none;\n}\n\n:host>li>a {\n\tpadding: 0 1.5em;\n\theight: 100%;\n}\n\n:host[selected]>li>a {\n\tdisplay: flex;\n\tcolor: rgb(var(--smoothly-color-contrast));\n\tbackground: rgb(var(--smoothly-color-shade));\n}\n\n:host:hover>li>a {\n\tcolor: rgb(var(--smoothly-color-contrast));\n\tbackground-color: rgb(var(--smoothly-color-tint));\n\ttransition: 0.2s;\n}\n\n:host>li>a>smoothly-icon {\n\talign-self: inherit;\n}\n:host[icon]>li>a>.label {\n\tdisplay: none;\n}\n:host([icon][label]):hover::before,\n:host([icon][label]):hover::after {\n\tposition: absolute;\n\tcolor: rgb(var(--smoothly-color-contrast));\n\tbackground-color: rgb(var(--smoothly-color-tint));\n\tborder-radius: 0.25rem;\n\tpointer-events: none;\n}\n:host([icon][label]):hover::before {\n\tcontent: \"\";\n bottom: -1.75rem;\n transform: rotate(45deg);\n width: 1.25em;\n height: 1.25em;\n}\n:host([icon][label]):hover::after {\n\tcontent: attr(label);\n\twhite-space: nowrap;\n\tbottom: -3.25rem;\n\tpadding: .5rem 1rem;\n\tborder-radius: .25rem;\n}\n\n\n@media screen and (max-width: 900px) {\n\t:host>li>a {\n\t\tpadding: 0;\n\t}\n\t:host[icon]>li>a>.label {\n\t\tdisplay: unset;\n\t\tpadding: 0 1rem;\n\t}\n\n\t:host>li>a {\n\t\tmargin-left: -1.5rem;\n\t\tmargin-right: -1.5rem;\n\t\tpadding-left: 1.5rem;\n\t\tpadding-right: 1.5rem;\n\t}\n\t:host([icon][label]):hover::before,\n\t:host([icon][label]):hover::after {\n\t\tcontent: unset;\n\t}\n}\n","import { Component, Event, EventEmitter, FunctionalComponent, h, Host, Method, Prop, VNode } from \"@stencil/core\"\nimport \"urlpattern-polyfill\"\nimport { Icon } from \"../../../model\"\n\n@Component({\n\ttag: \"smoothly-app-room\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyAppRoom {\n\t@Prop({ reflect: true }) label?: string\n\t@Prop({ reflect: true }) icon?: Icon\n\t@Prop({ reflect: true }) disabled: boolean\n\t@Prop() path: string | URLPattern = \"\"\n\t@Prop({ reflect: true, mutable: true }) selected?: boolean\n\t@Prop() content?: VNode | FunctionalComponent\n\t@Event() smoothlyRoomSelected: EventEmitter<{ history: boolean }>\n\t@Event() smoothlyRoomLoaded: EventEmitter<{ selected: boolean }>\n\tprivate contentElement?: HTMLElement\n\n\tcomponentWillLoad() {\n\t\tthis.selected = (typeof this.path == \"string\" ? new URLPattern({ pathname: this.path }) : this.path).test(\n\t\t\twindow.location\n\t\t)\n\t\tthis.smoothlyRoomLoaded.emit({ selected: this.selected })\n\t}\n\n\t@Method()\n\tasync getContent(): Promise<HTMLElement | undefined> {\n\t\treturn this.contentElement\n\t}\n\t@Method()\n\tasync setSelected(selected: boolean, options?: { history?: boolean }): Promise<void> {\n\t\tthis.selected = selected\n\t\tif (selected)\n\t\t\tthis.smoothlyRoomSelected.emit({ history: !!options?.history })\n\t}\n\n\tclickHandler(event: MouseEvent) {\n\t\tif (!event.metaKey && !event.ctrlKey && event.which != 2 && event.button != 1) {\n\t\t\tevent.preventDefault()\n\t\t\tthis.setSelected(true)\n\t\t}\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<li>\n\t\t\t\t\t<a href={typeof this.path == \"string\" ? this.path : this.path.pathname} onClick={e => this.clickHandler(e)}>\n\t\t\t\t\t\t{this.icon && <smoothly-icon name={this.icon}></smoothly-icon>}\n\t\t\t\t\t\t{this.label && <span class=\"label\">{this.label}</span>}\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t\t<div ref={e => (this.contentElement = e)}>\n\t\t\t\t\t{this.content && <smoothly-lazy content={this.content} />}\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tbackground-color: rgba(var(--smoothly-default-color), 1);\n\topacity: var(--opacity);\n\tpointer-events: var(--pointer-events);\n\ttransition: opacity 400ms;\n\tz-index: 3;\n\tborder-radius: 50%;\n\tbox-shadow: var(--smoothly-shadow);\n\theight: 3rem;\n\twidth: 3rem;\n\tposition: fixed;\n\tbottom: var(--bottom);\n\tright: var(--right);\n\toutline: none;\n\tcursor: pointer;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n","import { Component, Element, h, Host, Prop, State } from \"@stencil/core\"\nimport { Scrollable } from \"../../model/Scrollable\"\n\n@Component({\n\ttag: \"smoothly-back-to-top\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyBackToTop {\n\tprivate scrollableParent?: HTMLElement\n\t@Element() element: HTMLSmoothlyBackToTopElement\n\t@Prop() opacity = \"0.5\"\n\t@Prop() bottom = \"1rem\"\n\t@Prop() right = \"1rem\"\n\t@State() visible: boolean\n\tcomponentWillLoad() {\n\t\tthis.scrollableParent = Scrollable.findParent(this.element)\n\t\tthis.scrollableParent?.addEventListener(\"scroll\", () => {\n\t\t\tthis.visible = (this.scrollableParent?.scrollTop ?? 0) > 20\n\t\t})\n\t}\n\trender() {\n\t\tconst cssVariables = {\n\t\t\t\"--opacity\": this.visible ? this.opacity : \"0\",\n\t\t\t\"--pointer-events\": this.visible ? \"auto\" : \"none\",\n\t\t\t\"--bottom\": this.bottom,\n\t\t\t\"--right\": this.right,\n\t\t}\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={cssVariables}\n\t\t\t\tonClick={() =>\n\t\t\t\t\tthis.scrollableParent?.scrollTo({\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t})\n\t\t\t\t}>\n\t\t\t\t<smoothly-icon name=\"caret-up-outline\"></smoothly-icon>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host([visible]){\ndisplay: flex;\njustify-content: center;\nalign-items: center;\nheight: 100%;\n}\n:host([visible]) .burger smoothly-icon{\n\tfont-size: 1.7em;\n\tcursor: pointer;\n\tmargin-right: 1em;\n}\n:host:not([visible]){\n\tdisplay: none;\n}\n:host:not([open]) smoothly-icon{\n\ttransform: rotate(0deg);\n\ttransition: transform 100ms ease-in-out;\n}\n:host([open]) smoothly-icon{\n\ttransform: rotate(-90deg);\n\ttransition: transform 100ms ease-in-out;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-burger\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyBurger {\n\t@Element() element: HTMLSmoothlyBurgerElement\n\t@Prop({ mutable: true, reflect: true }) visible: boolean\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Prop({ reflect: true }) mediaQuery = \"(max-width: 900px)\"\n\t@State() history: boolean\n\t@Event() smoothlyNavStatus: EventEmitter<boolean>\n\t@Event() smoothlyVisibleStatus: EventEmitter<boolean>\n\n\tcomponentWillLoad() {\n\t\tthis.history = window.matchMedia(this.mediaQuery).matches\n\t\tif (!window.matchMedia(this.mediaQuery).matches)\n\t\t\tthis.visible = false\n\t\telse\n\t\t\tthis.visible = true\n\t\tthis.smoothlyNavStatus.emit(!this.visible)\n\t\tthis.smoothlyVisibleStatus.emit(this.visible)\n\t}\n\n\t@Watch(\"open\")\n\topenChanged() {\n\t\tthis.smoothlyNavStatus.emit(this.open)\n\t}\n\n\t@Listen(\"click\")\n\tclickHandler(event: MouseEvent) {\n\t\tif (this.visible)\n\t\t\tthis.open = !this.open\n\t}\n\n\t@Listen(\"resize\", { target: \"window\" })\n\tresizeHandler() {\n\t\tconst result = window.matchMedia(this.mediaQuery).matches\n\t\tif (result != this.history) {\n\t\t\tif (result) {\n\t\t\t\tthis.visible = true\n\t\t\t\tthis.open = false\n\t\t\t} else {\n\t\t\t\tthis.visible = false\n\t\t\t\tthis.open = false\n\t\t\t}\n\t\t\tthis.smoothlyVisibleStatus.emit(this.visible)\n\t\t\tthis.smoothlyNavStatus.emit(!this.visible)\n\t\t}\n\t\tthis.history = result\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<span class=\"burger\">\n\t\t\t\t\t<smoothly-icon name=\"menu\" />\n\t\t\t\t</span>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { FunctionalComponent, h } from \"@stencil/core\"\nimport { redirect } from \"../../model\"\n\nexport const Button: FunctionalComponent<Button.Properties> = ({ disabled, type, link }, children) => {\n\treturn disabled && (link || type == \"link\") ? (\n\t\t<slot></slot>\n\t) : type == \"link\" ? (\n\t\t<a href={link} onClick={!link || !local(link) ? undefined : e => (e.preventDefault(), redirect(convert(link)))}>\n\t\t\t<slot name=\"start\"></slot>\n\t\t\t<slot></slot>\n\t\t\t{children}\n\t\t\t<slot name=\"end\"></slot>\n\t\t</a>\n\t) : type == \"download\" ? (\n\t\t<a href={link} target=\"_blank\" download>\n\t\t\t<slot name=\"start\"></slot>\n\t\t\t<slot></slot>\n\t\t\t{children}\n\t\t\t<slot name=\"end\"></slot>\n\t\t</a>\n\t) : (\n\t\t<button disabled={disabled}>\n\t\t\t<slot name=\"start\"></slot>\n\t\t\t<slot></slot>\n\t\t\t{children}\n\t\t\t<slot name=\"end\"></slot>\n\t\t</button>\n\t)\n}\nfunction convert(path: string): string {\n\tlet result: ReturnType<typeof convert>\n\tif (path.startsWith(window.location.origin))\n\t\tresult = new URL(path).pathname\n\telse if (path.match(/^\\//))\n\t\tresult = new URL(path, window.location.origin).pathname\n\telse\n\t\tresult = new URL(`${window.location.pathname.replace(/\\/+$/, \"\")}/${path}`, window.location.origin).pathname\n\n\treturn result\n}\n\nfunction local(path: string): boolean {\n\treturn new URL(path, window.location.origin).origin == window.location.origin\n}\nexport namespace Button {\n\texport interface Properties {\n\t\tdisabled: boolean\n\t\ttype: \"link\" | \"button\" | \"download\"\n\t\tlink?: string\n\t}\n}\n","@import \"../color/style.css\";\n\n:host {\n\t--smoothly-button-border-radius: 0.5rem;\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\tborder-radius: var(--smoothly-button-border-radius);\n\tcursor: pointer;\n\tborder: none;\n\toutline: none;\n\tposition: relative;\n}\n:host([shape=rounded]) {\n\t--smoothly-button-border-radius: 2rem;\n}\n\n:host([type=link]) {\n\tdisplay: inline;\n}\n\n:host([disabled]) {\n\topacity: 0.5;\n\tpointer-events: none;\n}\n\n:host>a,\n:host>button {\n\tfont-size: 110%;\n\tfont-weight: 400;\n\tborder: 1px solid transparent;\n\toutline: none;\n\tbackground-color: transparent;\n\tcursor: pointer;\n\tdisplay: inline-flex;\n\tgap: 0.5rem;\n\tbox-sizing: border-box;\n}\n:host>a:empty,\n:host>button:empty {\n\tborder-width: 0;\n}\n\n:host>button {\n\tfont-weight: bold;\n\tjustify-content: center;\n\theight: 100%;\n\twidth: 100%;\n\tborder-radius: var(--smoothly-button-border-radius);\n\talign-items: center;\n}\n\n:host(:not([size=icon]):not([size=flexible]))>button {\n\tpadding: 0.8em;\n\tmin-width: 8em;\n}\n\n:host(:not([size=icon]):not([size=flexible])):has(smoothly-icon)>button {\n\tpadding: 0.6em;\n}\n\n:host([size=icon])>button {\n\tpadding: 0.5em;\n}\n\n:host([type=button])>a {\n\ttext-align: center;\n\ttext-decoration: inherit;\n\twidth: calc(100% - 0.6em);\n}\n\n:host([size=small])>button {\n\tfont-size: 100%;\n}\n\n:host([size=large])>button {\n\tfont-size: 130%;\n}\n\n:host(:not([size=icon])) {\n\tmin-width: 8em;\n}\n\n:host([size=flexible]) {\n\tmin-width: unset;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n:host([size=flexible])>button {\n\tmin-width: unset;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n:host([expand]) {\n\twidth: 100%;\n}\n\n:host([expand=full]) {\n\tborder-left: none;\n\tborder-right: none;\n\t--smoothly-button-border-radius: 0;\n}\n\n:host([fill=outline])>button {\n\tbackground-color: transparent;\n\tcolor: rgb(var(--smoothly-button-foreground));\n\tfill: rgb(var(--smoothly-button-foreground));\n\tstroke: rgb(var(--smoothly-button-foreground));\n\tborder-color: rgb(var(--smoothly-button-foreground));\n}\n\n:host(:not([fill=clear]))>button:hover,\n:host()>button:focus-visible,\n:host([fill=outline]):active>button::before {\n\tborder-color: rgb(var(--smoothly-button-focus-color));\n}\n\n:host([fill=outline])>button:hover::before,\n:host([fill=outline])>button:focus-within::before,\n:host([fill=outline])>button:active::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tborder: 2px solid rgb(var(--smoothly-button-focus-border));\n\tinset: -1px;\n\tborder-radius: var(--smoothly-button-border-radius);\n}\n\n:host(:not([fill=clear]):not([fill=outline]))>button:hover,\n:host(:not([fill=clear]):not([fill=outline]))>button:focus-visible,\n:host(:not([fill=clear]):not([fill=outline]))>button:active {\n\tbackground: rgb(var(--smoothly-button-hover-background));\n}\n\n:host>button,\n:host ::slotted(smoothly-icon) {\n\tcolor: rgb(var(--smoothly-button-foreground));\n\tstroke: rgb(var(--smoothly-button-foreground));\n\tfill: rgb(var(--smoothly-button-foreground));\n}\n\n:host([hidden]) {\n\tdisplay: none;\n}\n","import { Component, h, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\nimport { Button } from \"./Button\"\n\n@Component({\n\ttag: \"smoothly-button\",\n\tstyleUrl: \"../button/style.css\",\n\tscoped: true,\n})\nexport class SmoothlyButton {\n\t@Prop({ reflect: true }) color?: Color\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) type: Button.Properties[\"type\"] = \"button\"\n\t@Prop({ reflect: true }) size: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop() link?: string\n\n\trender() {\n\t\treturn (\n\t\t\t<Button disabled={this.disabled} type={this.type} link={this.link}>\n\t\t\t\t<slot />\n\t\t\t</Button>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: inline-block;\n}\n:host([disabled]) {\n\topacity: 0.5;\n\tpointer-events: none;\n}\n:host:not([warning]) > smoothly-button:first-child {\n\tdisplay: none;\n}\n:host[warning] > smoothly-button:nth-child(2) {\n\tdisplay: none;\n}\n:host([expand]) {\n\twidth: 100%;\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, State, VNode } from \"@stencil/core\"\nimport { Color, Data, Fill } from \"../../model\"\nimport { Editable } from \"../input/Editable\"\n\n@Component({\n\ttag: \"smoothly-button-confirm\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyButtonConfirm {\n\ttimer?: number\n\t@Prop() color?: Color\n\t@Prop({ reflect: true }) name: string\n\t@Prop() doubleClickTime = 0.2\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop() fill?: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop() shape?: \"rounded\"\n\t@Prop() size: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\t@State() clickTimeStamp: number | undefined\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyConfirm: EventEmitter<Data>\n\n\tclickHandler(event: MouseEvent): void {\n\t\tif (this.clickTimeStamp && event.timeStamp - this.clickTimeStamp > this.doubleClickTime * 1000) {\n\t\t\tthis.timer && window.clearTimeout(this.timer)\n\t\t\tthis.clickTimeStamp = undefined\n\t\t\tthis.smoothlyConfirm.emit({ [this.name]: true })\n\t\t} else {\n\t\t\tthis.clickTimeStamp = event.timeStamp\n\t\t\tthis.timer = window.setTimeout(() => {\n\t\t\t\tthis.clickTimeStamp = undefined\n\t\t\t}, 2000)\n\t\t}\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host warning={this.clickTimeStamp}>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tfill={this.fill}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\tcolor={\"warning\"}\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\ttype={\"button\"}\n\t\t\t\t\tonClick={event => this.clickHandler(event)}>\n\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\tname={\"alert-outline\"}\n\t\t\t\t\t\tfill={this.fill}\n\t\t\t\t\t\tcolor=\"warning\"\n\t\t\t\t\t\tsize={this.size === \"icon\" ? \"tiny\" : \"small\"}\n\t\t\t\t\t/>\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tfill={this.fill}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\ttype={\"button\"}\n\t\t\t\t\tonClick={event => this.clickHandler(event)}>\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","smoothly-button-demo {\n\tdisplay: block;\n\tmargin: 1rem;\n}\n\nsmoothly-button-demo > section > div {\n\tdisplay: flex;\n\talign-items: center;\n}\n\nsmoothly-button-demo smoothly-button {\n\tmargin: .2em .5em;\n}\n","import { Component, h } from \"@stencil/core\"\n@Component({\n\ttag: \"smoothly-button-demo\",\n\tstyleUrl: \"style.css\",\n})\nexport class SmoothlyButtonDemo {\n\trender() {\n\t\treturn [\n\t\t\t<h2>Buttons</h2>,\n\t\t\t<section>\n\t\t\t\t<h4>Confirm button (two clicks)</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button-confirm name=\"confirm\" shape=\"rounded\" color=\"danger\" size=\"large\">\n\t\t\t\t\t\tDelete\n\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t\t<smoothly-button-confirm name=\"confirm-icon\" shape=\"rounded\" color=\"success\" size=\"icon\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-outline\" size=\"tiny\" />\n\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t\t<smoothly-button-confirm name=\"confirm-icon\" shape=\"rounded\" color=\"danger\" size=\"icon\" fill=\"outline\">\n\t\t\t\t\t\t<smoothly-icon name=\"trash-outline\" size=\"tiny\" fill=\"outline\" />\n\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t</div>\n\t\t\t\t<h4>Toggle button</h4>\n\t\t\t\t<smoothly-toggle>\n\t\t\t\t\t<smoothly-icon name=\"card\" fill=\"solid\" slot=\"icon-slot\"></smoothly-icon>\n\t\t\t\t</smoothly-toggle>\n\t\t\t\t<smoothly-toggle>\n\t\t\t\t\t<smoothly-icon name=\"briefcase\" slot=\"icon-slot\"></smoothly-icon>\n\t\t\t\t</smoothly-toggle>\n\t\t\t\t<smoothly-toggle>\n\t\t\t\t\t<smoothly-icon name=\"airplane\" slot=\"icon-slot\"></smoothly-icon>\n\t\t\t\t</smoothly-toggle>\n\t\t\t\t<smoothly-toggle-switch-demo />\n\t\t\t\t<h4>Links with icons</h4>\n\t\t\t\t<smoothly-button type=\"link\">\n\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\ttype link\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button type=\"button\" color=\"warning\" fill=\"default\">\n\t\t\t\t\t<smoothly-icon name=\"call\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t<a href=\"https://google.com\">link</a>\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button link=\"https://google.com\" type=\"link\">\n\t\t\t\t\t<smoothly-icon name=\"arrow-forward\" slot=\"end\"></smoothly-icon>\n\t\t\t\t\tlink + type link\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Size and Color test</h4>\n\t\t\t\t<smoothly-button color=\"primary\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Primary + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"secondary\" fill=\"solid\" shape=\"rounded\">\n\t\t\t\t\tColor Secondary + Default\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"warning\" fill=\"solid\" size=\"large\">\n\t\t\t\t\tColor Warning + Large\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"danger\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Danger + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"success\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Success + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"tertiary\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Tertiary + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"dark\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Dark + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"medium\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Medium + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"light\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Light + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Expand examples</h4>\n\t\t\t\t<smoothly-button color=\"secondary\" fill=\"solid\" expand=\"full\">\n\t\t\t\t\tColor Secondary + Default\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"warning\" fill=\"solid\" expand=\"block\">\n\t\t\t\t\tColor Warning + Large\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Fill examples</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"primary\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tFill Solid\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"secondary\" fill=\"outline\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tFill Outline\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"tertiary\" fill=\"clear\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tFill Clear\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"success\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"basketball\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Buttons with Icon in \"start\"</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"warning\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tCheck\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"secondary\">\n\t\t\t\t\t\t<smoothly-icon name=\"basketball\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tCheck\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"call\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tCheck\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" fill=\"solid\" shape=\"rounded\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"call\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"flexible\" fill=\"solid\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"airplane\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Buttons with Icon in \"end\"</h4>\n\t\t\t\t<smoothly-button fill=\"solid\" color=\"light\">\n\t\t\t\t\tGo Forward\n\t\t\t\t\t<smoothly-icon name=\"arrow-forward\" slot=\"end\"></smoothly-icon>\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Test for icon button</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button size=\"icon\" fill=\"solid\" shape=\"rounded\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"call\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"warning\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"search-outline\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"secondary\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Link examples</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button type=\"link\">type link</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"button\" fill=\"clear\">\n\t\t\t\t\t\t<a href=\"https://google.com\">link</a>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button link=\"https://google.com\" type=\"link\">\n\t\t\t\t\t\tlink + type link\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Disabled buttons</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button disabled fill=\"solid\" color=\"secondary\">\n\t\t\t\t\t\tDisabled\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"https://google.com\" disabled>\n\t\t\t\t\t\tDisabled link\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t</section>,\n\t\t\t<smoothly-back-to-top />,\n\t\t]\n\t}\n}\n","import * as isoly from \"isoly\"\n\nexport function month(date: isoly.Date): isoly.Date[][] {\n\tconst d = new Date(date)\n\td.setDate(1)\n\tlet day = -((d.getDay() + 6) % 7) + 1\n\tconst result: string[][] = []\n\tfor (let row = 0; row < 6; row++) {\n\t\tconst r = []\n\t\tfor (let column = 0; column < 7; column++) {\n\t\t\tconst d = new Date(date)\n\t\t\td.setUTCDate(day++)\n\t\t\tr.push(isoly.Date.create(d))\n\t\t}\n\t\tif (row < 5 || isoly.Date.firstOfMonth(r[0]) == isoly.Date.firstOfMonth(date))\n\t\t\tresult.push(r)\n\t}\n\treturn result\n}\n\nexport function weekdays(): string[] {\n\tconst day = new globalThis.Date()\n\tday.setDate(day.getDate() - day.getDay() + 1)\n\tconst result: string[] = []\n\tfor (let i = 0; i < 7; i++) {\n\t\tresult.push(day.toLocaleString(undefined, { weekday: \"short\" }))\n\t\tday.setDate(day.getDate() + 1)\n\t}\n\treturn result\n}\n\nexport function months(current: isoly.Date): { date: isoly.Date; name: string; selected?: boolean }[] {\n\tconst day = new globalThis.Date(current)\n\tconst result: { date: isoly.Date; name: string; selected?: boolean }[] = []\n\tfor (let i = 0; i < 12; i++) {\n\t\tday.setMonth(i, 28)\n\t\tconst date = isoly.Date.create(day)\n\t\tresult.push({\n\t\t\tdate,\n\t\t\tname: day.toLocaleString(undefined, { month: \"long\" }),\n\t\t\tselected: date.substr(0, 7) == current.substr(0, 7),\n\t\t})\n\t}\n\treturn result\n}\nexport function years(\n\tcurrent: isoly.Date,\n\tmin?: isoly.Date,\n\tmax?: isoly.Date\n): { date: isoly.Date; name: string; selected?: boolean }[] {\n\tconst day = new globalThis.Date(current)\n\tconst start = min ? isoly.Date.getYear(min) : new Date().getFullYear() - 50\n\tconst end = max ? isoly.Date.getYear(max) : new Date().getFullYear() + 50\n\tconst result: { date: isoly.Date; name: string; selected?: boolean }[] = []\n\tfor (let i = start; i <= end; i++) {\n\t\tday.setFullYear(i)\n\t\tconst date = isoly.Date.create(day)\n\t\tresult.push({\n\t\t\tdate,\n\t\t\tname: day.toLocaleString(undefined, { year: \"numeric\" }),\n\t\t\tselected: date == current,\n\t\t})\n\t}\n\treturn result\n}\n",":host {\n\tdisplay: block;\n\t--other-month-opacity: 0.5;\n\tpadding: 0.5em;\n\tborder: 1px solid rgb(var(--smoothly-input-border));\n}\n\n:host>smoothly-input-month {\n\tpadding: 0 0.5em\n}\n\n:host>table {\n\ttable-layout: fixed;\n\twidth: 100%;\n}\n\n:host>table>thead>tr>th,\n:host>table>tr>td {\n\ttext-align: center;\n\tpadding: 0.5em;\n\tmin-width: 2em;\n\tbox-sizing: border-box;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tcolor: rgb(var(--smoothly-input-foreground));\n\t-webkit-user-select: none;\n\tuser-select: none;\n}\n:host>table>tr>td {\n\tposition: relative;\n\tcursor: pointer;\n}\n\n:host>table>tr>td.currentMonth {\n\tcolor: rgb(var(--smoothly-default-contrast));\n}\n\n:host>table>tr>td:not(.currentMonth) {\n\tcolor: rgba(var(--smoothly-default-contrast), var(--other-month-opacity));\n}\n\n:host>table>tr>td:nth-child(6):not(.currentMonth).selected,\n:host>table>tr>td:nth-child(6):not(.currentMonth).dateRange,\n:host>table>tr>td:nth-child(7):not(.currentMonth).selected,\n:host>table>tr>td:nth-child(7):not(.currentMonth).dateRange {\n\tcolor: rgba(var(--smoothly-default-contrast));\n}\n\n:host>table>tr>td:nth-child(6),\n:host>table>tr>td:nth-child(7) {\n\tcolor: rgb(var(--smoothly-calendar-weekend-foreground, var(--smoothly-danger-color)));\n}\n\n:host>table>tr>td:nth-child(6):not(.currentMonth),\n:host>table>tr>td:nth-child(7):not(.currentMonth) {\n\tcolor: rgba(var(--smoothly-calendar-weekend-foreground, var(--smoothly-danger-color)), var(--other-month-opacity));\n}\n\n:host>table>tr>td:not(.selected, .disable):hover {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-tint));\n}\n\n:host>table>tr>td.selected {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-color));\n}\n\n:host>table>tr>td.today::before {\n\tcontent: \"\";\n\tinset: 2px;\n\tposition: absolute;\n\tborder: 1px solid currentColor;\n}\n\n:host>table>tr>td.dateRange {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-tint));\n}\n\n:host>table>tr>td.disable {\n\tcursor: not-allowed;\n\topacity: 0.5;\n}\n","import { Component, Element, Event, EventEmitter, Fragment, h, Prop, State, Watch } from \"@stencil/core\"\nimport { Date, DateRange } from \"isoly\"\nimport * as generate from \"./generate\"\n\n@Component({\n\ttag: \"smoothly-calendar\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Calendar {\n\tprivate frozenDate: Date\n\t@Element() element: HTMLTableRowElement\n\t@Prop({ mutable: true }) month?: Date\n\t@Prop({ mutable: true }) value?: Date\n\t@Prop({ mutable: true }) start?: Date\n\t@Prop({ mutable: true }) end?: Date\n\t@Prop({ mutable: true }) max: Date\n\t@Prop({ mutable: true }) min: Date\n\t@Prop({ reflect: true }) doubleInput: boolean\n\t@Event() smoothlyValueChange: EventEmitter<Date>\n\t@Event() smoothlyStartChange: EventEmitter<Date>\n\t@Event() smoothlyEndChange: EventEmitter<Date>\n\t@Event() smoothlyDateSet: EventEmitter<Date>\n\t@Event() smoothlyDateRangeSet: EventEmitter<DateRange>\n\t@State() firstSelected: boolean\n\t@Watch(\"start\")\n\tonStart(next: Date) {\n\t\tthis.smoothlyStartChange.emit(next)\n\t}\n\t@Watch(\"end\")\n\tonEnd(next: Date) {\n\t\tthis.smoothlyEndChange.emit(next)\n\t}\n\tprivate clickCounter = 0\n\tprivate onClick(date: Date) {\n\t\tthis.smoothlyValueChange.emit((this.value = date))\n\t\tthis.clickCounter += 1\n\t\tif (this.doubleInput) {\n\t\t\tif (this.clickCounter % 2 == 1)\n\t\t\t\tthis.start = this.end = this.frozenDate = date\n\t\t\telse {\n\t\t\t\tif (this.start && date > this.start)\n\t\t\t\t\tthis.end = date\n\t\t\t\telse\n\t\t\t\t\tthis.start = date\n\t\t\t}\n\t\t}\n\t\t!this.doubleInput && this.smoothlyDateSet.emit(this.value)\n\t\tthis.doubleInput &&\n\t\t\tthis.clickCounter % 2 == 0 &&\n\t\t\tthis.start &&\n\t\t\tthis.end &&\n\t\t\tthis.smoothlyDateRangeSet.emit({ start: this.start, end: this.end })\n\t}\n\tprivate onHover(date: Date) {\n\t\tif (this.doubleInput && this.clickCounter % 2 == 1) {\n\t\t\tif (date < this.frozenDate) {\n\t\t\t\tthis.start = date\n\t\t\t\tthis.end = this.frozenDate\n\t\t\t} else {\n\t\t\t\tthis.start = this.frozenDate\n\t\t\t\tthis.end = date\n\t\t\t}\n\t\t}\n\t}\n\tprivate withinLimit(date: Date) {\n\t\treturn (!this.min || date >= this.min) && (!this.max || date <= this.max)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<smoothly-input-month\n\t\t\t\t\tname=\"month\"\n\t\t\t\t\tvalue={this.month ?? this.value}\n\t\t\t\t\tmin={this.min}\n\t\t\t\t\tmax={this.max}\n\t\t\t\t\tinCalendar\n\t\t\t\t\tnext\n\t\t\t\t\tprevious\n\t\t\t\t\tshowLabel={false}\n\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\"month\" in e.detail && typeof e.detail.month == \"string\" && (this.month = e.detail.month)\n\t\t\t\t\t}}>\n\t\t\t\t\t<div slot={\"year-label\"}>\n\t\t\t\t\t\t<slot name={\"year-label\"} />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div slot={\"month-label\"}>\n\t\t\t\t\t\t<slot name={\"month-label\"} />\n\t\t\t\t\t</div>\n\t\t\t\t</smoothly-input-month>\n\t\t\t\t<table>\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t{generate.weekdays().map(day => (\n\t\t\t\t\t\t\t\t<th>{day}</th>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t{generate.month(this.month ?? this.value ?? Date.now()).map(week => (\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t{week.map(date => (\n\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\ttabindex={1}\n\t\t\t\t\t\t\t\t\tonMouseOver={() => (this.withinLimit(date) ? this.onHover(date) : undefined)}\n\t\t\t\t\t\t\t\t\tonClick={this.withinLimit(date) ? () => this.onClick(date) : undefined}\n\t\t\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\t\tselected: date == this.value || (this.doubleInput && (date == this.start || date == this.end)),\n\t\t\t\t\t\t\t\t\t\ttoday: date == Date.now(),\n\t\t\t\t\t\t\t\t\t\tcurrentMonth: Date.firstOfMonth(this.month ?? this.value ?? Date.now()) == Date.firstOfMonth(date),\n\t\t\t\t\t\t\t\t\t\tdateRange: this.doubleInput && date > (this.start ?? \"\") && date < (this.end ?? \"\"),\n\t\t\t\t\t\t\t\t\t\tdisable: !this.withinLimit(date),\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t{date.substring(8, 10)}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t))}\n\t\t\t\t</table>\n\t\t\t</Fragment>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 55%;\n left: 50%;\n transform: translate(-50%, -50%);\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 1;\n\t/* stylelint-disable-next-line declaration-no-important */\n\tbackground: rgba(var(--smoothly-default-color), var(--smoothly-semitransparent)) !important;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > section {\n\tmargin-top: var(--smoothly-dialog-margin-top)\n}\n:host > section > div.header {\n\tborder-top-left-radius: 8px;\n\tborder-top-right-radius: 8px;\n\tmargin-top: 2em;\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-color));\n\tborder-color: rgb(var(--smoothly-primary-color));\n}\n:host:not([header]) div.header {\n\tborder: none;\n}\n\n:host > section > * {\n\tposition: relative;\n\tcolor: rgb(var(--smoothly-default-contrast));\n\tbackground-color: rgb(var(--smoothly-default-color));\n\tborder-color: rgb(var(--smoothly-color));\n\tborder-width: 1px;\n\tborder-style: solid;\n\tmax-width: 40em;\n\twidth: calc(100vw - 4em - 2px);\n\tmax-height: calc(100vh - 6em - 2px);\n\theight: auto;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tborder-collapse: collapse;\n}\n:host > section > div.content {\n\tborder-bottom-left-radius: 8px;\n\tborder-bottom-right-radius: 8px;\n\tmargin-bottom: 2em;\n\tborder: 1px solid rgb(var(--smoothly-default-contrast));\n\tbox-sizing: border-box;\n\toverflow: hidden;\n}\n:host:not([header]) >section> div.content {\n\tborder-radius: 8px;\n}\n:host > section > * > smoothly-trigger {\n\tposition: absolute;\n\tright: -2em;\n\ttop: -2em;\n\tz-index: 1;\n\tborder-color: transparent;\n}\n:host > section > * > smoothly-trigger:hover {\n\tborder-color: transparent;\n}\n:host > section > div.header > smoothly-trigger > smoothly-icon {\n\tbackground-color: rgb(var(--smoothly-color));\n\tborder-radius: 50%;\n}\n:host > section > * > * {\n\tmargin: 10px;\n}\n","import { Component, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Trigger } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-dialog\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDialog {\n\t@Prop({ reflect: true }) color: Color | undefined\n\t@Prop({ mutable: true, reflect: true }) open = true\n\t@Prop({ reflect: true }) closable = false\n\t@Prop({ reflect: true }) header: string | undefined\n\t@Listen(\"trigger\")\n\tTriggerListener(event: CustomEvent<Trigger>) {\n\t\tif (Trigger.is(event.detail) && event.detail.name == \"close\")\n\t\t\tthis.open = false\n\t}\n\thostData() {\n\t\treturn {\n\t\t\tstyle: {\n\t\t\t\tdisplay: this.open ? \"block\" : \"none\",\n\t\t\t},\n\t\t}\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<section>\n\t\t\t\t<div class=\"header\">\n\t\t\t\t\t{this.closable && (\n\t\t\t\t\t\t<smoothly-trigger fill=\"clear\" name=\"close\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close-circle\" fill=\"solid\" color={this.color}></smoothly-icon>\n\t\t\t\t\t\t</smoothly-trigger>\n\t\t\t\t\t)}\n\t\t\t\t\t{this.header ? <h1>{this.header}</h1> : <slot name=\"header\"></slot>}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"content\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t</section>\n\t\t)\n\t}\n}\n","\n:host > smoothly-button {\n\tdisplay: block;\n\tmargin-block: 2rem;\n}\n","import { Component, h, Host, State } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-dialog-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDialogDemo {\n\t@State() openModal = false\n\t@State() showFrame = false\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-button fill=\"solid\" color=\"light\" onClick={() => (this.openModal = true)}>\n\t\t\t\t\tOpen Modal\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button fill=\"solid\" color=\"light\" onClick={() => (this.showFrame = !this.showFrame)}>\n\t\t\t\t\tShow Frame\n\t\t\t\t</smoothly-button>\n\n\t\t\t\t<smoothly-modal closable open={this.openModal} onSmoothlyModalChange={e => (this.openModal = e.detail)}>\n\t\t\t\t\t{<h2 slot=\"header\">Modal</h2>}\n\t\t\t\t\t<span>Are you sure you want to confirm this action?</span>\n\t\t\t\t\t<smoothly-button slot=\"actions\" color=\"success\">\n\t\t\t\t\t\tConfirm\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button slot=\"actions\" color=\"light\" fill=\"outline\" onClick={() => (this.openModal = false)}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</smoothly-modal>\n\n\t\t\t\t{this.showFrame && (\n\t\t\t\t\t<smoothly-dialog closable>\n\t\t\t\t\t\t<smoothly-frame url=\"https://www.wikipedia.org/\" name=\"parent\" style={{ height: \"80vh\" }} />\n\t\t\t\t\t</smoothly-dialog>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","function getForwardWordBreakIndex(str, index, wordRegex) {\n let result = 0;\n while (wordRegex.exec(str) != null) {\n result = wordRegex.lastIndex;\n if (wordRegex.lastIndex > index)\n break;\n }\n wordRegex.lastIndex <= index && (result = str.length);\n return result;\n}\nfunction getBackwardWordBreakIndex(str, index, wordRegex) {\n let result = 0;\n let execArray;\n while ((execArray = wordRegex.exec(str)) != null) {\n if (wordRegex.lastIndex - execArray[0].length < index)\n result = wordRegex.lastIndex - execArray[0].length;\n else\n break;\n }\n return result;\n}\nexport function getAdjecentWordBreakIndex(str, index, direction) {\n const wordRegex = /([\\wåäöüéáúíóßðœøæñµçþ_]+|[@-]+)/gi;\n return direction == \"backward\"\n ? getBackwardWordBreakIndex(str, index, wordRegex)\n : getForwardWordBreakIndex(str, index, wordRegex);\n}\n//# sourceMappingURL=getAdjecentWordBreakIndex.js.map","export var Selection;\n(function (Selection) {\n function getCursor(selection) {\n return selection.direction == \"backward\" ? selection.start : selection.end;\n }\n Selection.getCursor = getCursor;\n function getStalker(selection) {\n return selection.direction != \"backward\" ? selection.start : selection.end;\n }\n Selection.getStalker = getStalker;\n})(Selection || (Selection = {}));\n//# sourceMappingURL=Selection.js.map","export var State;\n(function (State) {\n function copy(state) {\n return {\n value: state.value,\n selection: { start: state.selection.start, end: state.selection.end, direction: state.selection.direction },\n remainder: state.remainder,\n };\n }\n State.copy = copy;\n})(State || (State = {}));\n//# sourceMappingURL=State.js.map","export class StateEditor {\n constructor(state) {\n this.value = state.value;\n this.selection = { start: state.selection?.start, end: state.selection?.end, direction: state.selection?.direction };\n }\n get(index, length = 1) {\n return this.value.substring(index, index + length);\n }\n is(index, ...character) {\n const c = this.get(index);\n return character.some(d => c == d);\n }\n isDigit(index) {\n const character = this.get(index);\n return character >= \"0\" && character <= \"9\";\n }\n match(matcher) {\n return this.value.match(matcher);\n }\n replace(start, end, value) {\n let result;\n if (typeof start == \"string\" && typeof end == \"string\") {\n let s;\n result = this;\n while ((s = result.value.indexOf(start)) > -1)\n result = result.replace(s, s + start.length, end);\n }\n else if (typeof start == \"number\" && typeof end == \"number\") {\n const state = {\n value: this.value,\n selection: { start: this.selection.start, end: this.selection.end, direction: this.selection.direction },\n };\n if (!value)\n value = \"\";\n state.value = this.value.slice(0, start) + value + this.value.slice(end, this.value.length);\n if (this.selection.start >= end)\n state.selection.start = this.selection.start + value.length - end + start;\n else if (this.selection.start > start && this.selection.start < end)\n state.selection.start = Math.min(this.selection.start, start + value.length);\n if (this.selection.end >= end)\n state.selection.end = this.selection.end + value.length - end + start;\n else if (this.selection.end > start && this.selection.end < end)\n state.selection.end = Math.min(this.selection.end, start + value.length);\n result = new StateEditor(state);\n }\n return result || this;\n }\n insert(index, value) {\n return this.replace(index, index, value);\n }\n append(value) {\n return this.insert(this.value.length, value);\n }\n prepend(value) {\n return this.insert(0, value);\n }\n suffix(value) {\n return new StateEditor({ value: this.value + value, selection: this.selection });\n }\n delete(start, end) {\n let result;\n if (!this.value)\n result = this;\n else if (typeof start == \"string\") {\n let s;\n result = this;\n while (start && (s = result.value.indexOf(start)) > -1)\n result = result.delete(s, s + start.length);\n }\n else\n result = this.replace(start, end || start + 1, \"\");\n return result;\n }\n truncate(end) {\n return this.value.length >= end ? this.delete(end, this.value.length) : this;\n }\n pad(length, padding, index) {\n let result = this;\n while (length > result.value.length + padding.length)\n result = result.insert(index, padding);\n if (length > result.value.length)\n result = result.insert(index, padding.substring(0, length - result.value.length));\n return result;\n }\n padEnd(length, padding) {\n return this.pad(length, padding, this.value.length);\n }\n padStart(length, padding) {\n return this.pad(length, padding, 0);\n }\n toLower() {\n return this.map(symbol => symbol.toLowerCase());\n }\n toUpper() {\n return this.map(symbol => symbol.toUpperCase());\n }\n map(mapping) {\n let result = this;\n let j = 0;\n for (let i = 0; i < this.value.length; i++) {\n const replacement = mapping(this.get(i), i);\n result = result.replace(j, j + 1, replacement);\n j += replacement.length;\n }\n return result;\n }\n static copy(state) {\n return new StateEditor({ ...state });\n }\n static create() {\n return new StateEditor({ value: \"\", selection: { start: 0, end: 0 } });\n }\n static modify(state) {\n return new StateEditor(typeof state == \"string\" ? { value: state, selection: { start: state.length, end: state.length } } : state);\n }\n}\n//# sourceMappingURL=StateEditor.js.map","import { getAdjecentWordBreakIndex } from \"./getAdjecentWordBreakIndex\";\nimport { Selection } from \"./Selection\";\nimport { State } from \"./State\";\nimport { StateEditor } from \"./StateEditor\";\nexport var Action;\n(function (Action) {\n function apply(formatter, state, action) {\n let result = State.copy(formatter.unformat(StateEditor.copy(state)));\n if (state.autocomplete == \"cc-exp\" && /^\\d\\d \\/$/g.test(state.value))\n action?.key && (action.key = \"Backspace\");\n if (action) {\n if (action.ctrlKey || action.metaKey) {\n if (action.key == \"a\")\n select(result, 0, result.value.length, \"forward\");\n else if ([\"ArrowLeft\", \"ArrowRight\"].includes(action.key) && state?.type != \"password\")\n result = ctrlArrow(formatter, state, action);\n else if ([\"Delete\", \"Backspace\"].includes(action.key) && state?.type != \"password\")\n result = ctrlBackspaceDelete(formatter, state, action);\n }\n else if ([\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].includes(action.key))\n arrowHomeEnd(result, action);\n else if ([\"Delete\", \"Backspace\"].includes(action.key)) {\n result.selection.start == result.selection.end &&\n select(result, result.selection.start + (action.key == \"Backspace\" ? -1 : 0), result.selection.end + (action.key == \"Delete\" ? 1 : 0));\n erase(result);\n }\n else if (action.key != \"Unidentified\") {\n erase(result);\n formatter.allowed(action.key, result) && replace(result, action.key);\n }\n }\n return formatter.format(StateEditor.copy(result));\n }\n Action.apply = apply;\n function paste(formatter, state, pasted) {\n const result = State.copy(formatter.unformat(StateEditor.copy(state)));\n replace(result, pasted);\n return formatter.format(StateEditor.copy(result));\n }\n Action.paste = paste;\n function ctrlArrow(formatter, state, action) {\n let cursorPosition = Selection.getCursor(state.selection);\n let stalkPosition = Selection.getStalker(state.selection);\n cursorPosition = getAdjecentWordBreakIndex(state.value, cursorPosition, action.key == \"ArrowLeft\" ? \"backward\" : \"forward\");\n stalkPosition = action.shiftKey ? stalkPosition : cursorPosition;\n return State.copy(formatter.unformat(StateEditor.copy({\n ...state,\n selection: {\n start: Math.min(stalkPosition, cursorPosition),\n end: Math.max(stalkPosition, cursorPosition),\n direction: stalkPosition < cursorPosition ? \"forward\" : stalkPosition > cursorPosition ? \"backward\" : \"none\",\n },\n })));\n }\n function ctrlBackspaceDelete(formatter, state, action) {\n const cursorPosition = Selection.getCursor(state.selection);\n const adjecentIndex = getAdjecentWordBreakIndex(state.value, cursorPosition, action.key == \"Backspace\" ? \"backward\" : \"forward\");\n const result = State.copy(formatter.unformat(StateEditor.copy({\n ...state,\n selection: {\n start: Math.min(cursorPosition, adjecentIndex),\n end: Math.max(cursorPosition, adjecentIndex),\n direction: \"none\",\n },\n })));\n result.value = result.value.substring(0, result.selection.start) + result.value.substring(result.selection.end);\n result.selection.end = result.selection.start;\n return result;\n }\n function arrowHomeEnd(state, action) {\n let cursorPosition = Selection.getCursor(state.selection);\n let stalkPosition = Selection.getStalker(state.selection);\n cursorPosition =\n action.key == \"Home\"\n ? 0\n : action.key == \"End\"\n ? state.value.length\n : state.selection.start == state.selection.end || action.shiftKey\n ? Math.min(Math.max(cursorPosition + (action.key == \"ArrowLeft\" ? -1 : 1), 0), state.value.length)\n : action.key == \"ArrowLeft\"\n ? state.selection.start\n : state.selection.end;\n stalkPosition = action.shiftKey ? stalkPosition : cursorPosition;\n state.selection.direction =\n stalkPosition < cursorPosition ? \"forward\" : stalkPosition > cursorPosition ? \"backward\" : \"none\";\n state.selection.start = Math.min(stalkPosition, cursorPosition);\n state.selection.end = Math.max(stalkPosition, cursorPosition);\n }\n function select(state, from, to, direction) {\n state.selection.start = from;\n state.selection.end = to;\n direction && (state.selection.direction = direction);\n }\n function erase(state) {\n replace(state, \"\");\n }\n function replace(state, insertString) {\n state.value =\n state.value.substring(0, state.selection.start) + insertString + state.value.substring(state.selection.end);\n state.selection.start = state.selection.start + insertString.length;\n state.selection.end = state.selection.start;\n }\n})(Action || (Action = {}));\n//# sourceMappingURL=Action.js.map","import { StateEditor } from \"../StateEditor\";\nconst handlers = {};\nexport function add(type, create) {\n handlers[type] = create;\n}\nexport function get(type, ...argument) {\n const create = handlers[type];\n return create && create(argument);\n}\nexport function format(data, type, ...argument) {\n const handler = get(type, ...argument);\n return handler\n ? handler.format(StateEditor.modify(handler.toString(typeof data == \"string\" ? parse(data, type, argument) : data)))\n .value\n : \"\";\n}\nexport function parse(value, type, ...argument) {\n const handler = get(type, argument);\n return handler ? handler.fromString(handler.unformat(StateEditor.modify(value)).value) : undefined;\n}\n//# sourceMappingURL=base.js.map","import { add } from \"./base\";\nclass Handler {\n constructor() {\n this.partialFormat = this.format;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n return {\n ...unformatted,\n type: \"text\",\n inputmode: \"numeric\",\n autocomplete: \"cc-csc\",\n length: [3, 3],\n pattern: /^\\d{3}$/,\n };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return state.value.length < 3 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"card-csc\", () => new Handler());\n//# sourceMappingURL=card-csc.js.map","import { add } from \"./base\";\nclass Handler {\n constructor() {\n this.partialFormat = this.format;\n }\n toString(data) {\n return Array.isArray(data) && data.length == 2 && typeof data[0] == \"number\" && typeof data[1] == \"number\"\n ? data[0].toString().padStart(2, \"0\") + data[1].toString().padStart(2, \"0\")\n : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && value.length == 4\n ? [Number.parseInt(value.slice(0, 2)), Number.parseInt(value.slice(2))]\n : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (unformatted.value.length > 0 && !unformatted.is(0, \"0\", \"1\"))\n result = result.prepend(\"0\");\n if (result.value.length > 1)\n result = result.insert(2, \" / \");\n return {\n ...result,\n type: \"text\",\n inputmode: \"numeric\",\n autocomplete: \"cc-exp\",\n length: [7, 7],\n pattern: /^(0[1-9]|1[012]) \\/ \\d\\d$/,\n };\n }\n unformat(formatted) {\n return formatted.delete(\" / \");\n }\n allowed(symbol, state) {\n return state.value.length < 4 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"card-expires\", () => new Handler());\n//# sourceMappingURL=card-expires.js.map","import { add } from \"./base\";\nclass Handler {\n constructor() {\n this.partialFormat = this.format;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n const issuer = getIssuer(unformatted.value);\n const result = unformatted.map((symbol, index) => (index + 1 < issuer.length[0] && issuer.spaceIndexes.includes(index) ? \" \" : \"\") + symbol);\n return {\n ...result,\n type: \"text\",\n inputmode: \"numeric\",\n autocomplete: \"cc-number\",\n length: issuer.length.slice(1),\n pattern: issuer.verification,\n classes: [\"issuer-\" + issuer.icon],\n };\n }\n unformat(formatted) {\n return formatted.delete(\" \");\n }\n allowed(symbol, state) {\n const issuer = getIssuer(state.value);\n return symbol >= \"0\" && symbol <= \"9\" && state.value.length < issuer.length[0];\n }\n}\nadd(\"card-number\", () => new Handler());\nfunction getIssuer(value) {\n let result = {\n ...defaultIssuer,\n spaceIndexes: value.length == 14 ? [4, 10] : defaultIssuer.spaceIndexes,\n };\n for (const key in issuers)\n if (Object.prototype.hasOwnProperty.call(issuers, key) && issuers[key].identification.test(value)) {\n result = { ...defaultIssuer, name: key, ...issuers[key] };\n break;\n }\n return result;\n}\nconst defaultIssuer = {\n name: \"unknown\",\n verification: /^\\d{19}$/,\n spaceIndexes: [4, 8, 12],\n identification: /^\\d/,\n length: [16, 16, 19],\n icon: \"generic\",\n};\nconst issuers = {\n amex: {\n verification: /^3[47][0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{3}$/,\n identification: /^3[47]/,\n length: [15, 18, 18],\n icon: \"amex\",\n },\n dankort: {\n verification: /^(5019)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n spaceIndexes: [4, 8, 12],\n identification: /^(5019)\\d+/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n diners: {\n verification: /^3(?:0[0-5]|[68][0-9])[0-9]\\s[0-9]{6}\\s[0-9]{4}$/,\n identification: /^3(?:0[0-5]|[68][0-9])/,\n spaceIndexes: [4, 10],\n length: [14, 16, 16],\n icon: \"diners\",\n },\n discover: {\n verification: /^6(?:011|5[0-9]{2})\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n spaceIndexes: [4, 8, 12],\n identification: /^6(?:011|5[0-9]{2})/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n electron: {\n verification: /^((4026|4405|4508|4844|4913|4917)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4})|((4175)\\s(00)[0-9]{2}\\s[0-9]{4}\\s[0-9]{4})$/,\n identification: /^(4026|417500|4405|4508|4844|4913|4917)/,\n spaceIndexes: [4, 8, 12],\n length: [16, 19, 19],\n icon: \"generic\",\n },\n interpayment: {\n verification: /^(636)[0-9]\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n spaceIndexes: [4, 8, 12],\n identification: /^(636)/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n jcb: {\n verification: /^((?:2131|1800)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4})|(35[0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4})$/,\n identification: /^(?:2131|1800|35\\d{3})/,\n spaceIndexes: [4, 8, 12],\n length: [16, 19, 19],\n icon: \"generic\",\n },\n unionpay: {\n verification: /^(62|88)[0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n spaceIndexes: [4, 8, 12],\n identification: /^(62|88)/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n maestro: {\n verification: /^(5018|5020|5038|5612|5893|6304|6759|6761|6762|6763|0604|6390)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n spaceIndexes: [4, 8, 12],\n identification: /^(5018|5020|5038|5612|5893|6304|6759|6761|6762|6763|0604|6390)/,\n length: [16, 19, 19],\n icon: \"maestro\",\n },\n mastercard: {\n verification: /^5[1-5][0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n spaceIndexes: [4, 8, 12],\n identification: /^5[1-5][0-9]/,\n length: [16, 19, 19],\n icon: \"mastercard\",\n },\n visa: {\n verification: /^4[0-9]{3}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9](?:[0-9]{3})?$/,\n spaceIndexes: [4, 8, 12],\n identification: /^4[0-9]/,\n length: [16, 16, 19],\n icon: \"visa\",\n },\n};\n//# sourceMappingURL=card-number.js.map","export var DateFormat;\n(function (DateFormat) {\n function fromLocale(locale) {\n let result;\n switch (locale) {\n case \"sq-AL\":\n case \"es-AR\":\n case \"it-IT\":\n case \"en-GB\":\n case \"fr-FR\":\n result = \"dd/mm/YYYY\";\n break;\n case \"en-US\":\n result = \"mm/dd/YYYY\";\n break;\n case \"et-EE\":\n case \"de-AT\":\n case \"de-DE\":\n case \"he-IL\":\n case \"is-IS\":\n case \"lv-LV\":\n case \"pl-PL\":\n case \"ru-RU\":\n case \"fi-FI\":\n result = \"dd.mm.YYYY\";\n break;\n case \"hi-IN\":\n case \"en-IN\":\n result = \"dd-mm-YYYY\";\n break;\n default:\n result = \"YYYY-mm-dd\";\n break;\n }\n return result;\n }\n DateFormat.fromLocale = fromLocale;\n function toLocale(format) {\n let result;\n switch (format) {\n case \"dd/mm/YYYY\":\n result = \"en-GB\";\n break;\n case \"mm/dd/YYYY\":\n result = \"en-US\";\n break;\n case \"dd.mm.YYYY\":\n result = \"de-DE\";\n break;\n default:\n result = \"sv-SE\";\n break;\n }\n return result;\n }\n DateFormat.toLocale = toLocale;\n function is(value) {\n return (typeof value == \"string\" &&\n (value == \"YYYY-mm-dd\" || value == \"dd/mm/YYYY\" || value == \"dd.mm.YYYY\" || value == \"mm/dd/YYYY\"));\n }\n DateFormat.is = is;\n})(DateFormat || (DateFormat = {}));\n//# sourceMappingURL=DateFormat.js.map","import { DateFormat } from \"../../DateFormat\";\nimport { add } from \"../base\";\nexport class Base {\n constructor(separator) {\n this.separator = separator;\n }\n partialFormat(unformatted) {\n const formatted = this.format(unformatted);\n return {\n ...formatted,\n remainder: this.formatString.slice(formatted.value.length),\n };\n }\n unformat(formatted) {\n return formatted.delete(this.separator);\n }\n validMonth(day, month, year) {\n return (new Date(Number.parseInt(year ?? \"2004\"), Number.parseInt(month), 0).getDate() >=\n Number.parseInt(day));\n }\n}\nconst handlers = {};\nexport function register(format, create) {\n handlers[format] = create;\n}\nadd(\"date\", (parameters) => {\n const argument = parameters && parameters.length > 0 ? parameters[0] : undefined;\n const format = DateFormat.is(argument) ? argument : DateFormat.fromLocale(argument);\n const create = handlers[format] ?? handlers[\"YYYY-mm-dd\"];\n return create();\n});\n//# sourceMappingURL=Base.js.map","import * as isoly from \"isoly\";\nimport { Base, register } from \"./Base\";\nclass Handler extends Base {\n constructor(separator) {\n super(separator);\n this.formatString = `DD${this.separator}MM${this.separator}YYYY`;\n }\n toString(data) {\n return isoly.Date.is(data) && data.length == 10\n ? [data.substring(8, 10), data.substring(5, 7), data.substring(0, 4)].join(this.separator)\n : \"\";\n }\n fromString(value) {\n const result = value?.length == 8 ? `${value.substring(4, 8)}-${value.substring(2, 4)}-${value.substring(0, 2)}` : undefined;\n return isoly.Date.is(result) ? result : undefined;\n }\n format(unformatted) {\n let result = unformatted.delete(this.separator);\n if (result.get(0, 1) > \"3\")\n result = result.insert(0, \"0\");\n if (result.value.length > 1)\n result = result.insert(2, this.separator);\n if (result.get(3, 1) > \"1\")\n result = result.insert(3, \"0\");\n if (result.value.length > 4)\n result = result.insert(5, this.separator);\n return {\n ...result,\n type: \"text\",\n length: [0, 10],\n pattern: new RegExp([\"^(0[1-9]|[12][0-9]|3[01])\", \"(0[1-9]|1[012])\", \"\\\\d{4}$\"].join(this.separator)),\n };\n }\n allowed(symbol, state) {\n return state.selection.start == 1 && state.value[0] == \"3\"\n ? symbol >= \"0\" && symbol <= \"1\"\n : state.selection.start == 1 && state.value[0] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 2\n ? symbol >= \"0\" &&\n symbol <= \"9\" &&\n (symbol == \"0\" || symbol == \"1\" || this.validMonth(state.value.substring(0, 2), symbol))\n : state.selection.start == 3\n ? symbol >= \"0\" && symbol <= \"9\" && this.validMonth(state.value.substring(0, 2), state.value[2] + symbol)\n : state.selection.start == 7\n ? symbol >= \"0\" &&\n symbol <= \"9\" &&\n this.validMonth(state.value.substring(0, 2), state.value.substring(2, 4), state.value.substring(4, 7) + symbol)\n : state.selection.start < 8 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nregister(\"dd.mm.YYYY\", () => new Handler(\".\"));\nregister(\"dd/mm/YYYY\", () => new Handler(\"/\"));\nregister(\"dd-mm-YYYY\", () => new Handler(\"-\"));\n//# sourceMappingURL=dmy.js.map","import * as isoly from \"isoly\";\nimport { Base, register } from \"./Base\";\nclass Handler extends Base {\n constructor(separator) {\n super(separator);\n this.formatString = `MM${this.separator}DD${this.separator}YYYY`;\n }\n toString(data) {\n return isoly.Date.is(data) && data.length == 10\n ? [data.substring(5, 7), data.substring(8, 10), data.substring(0, 4)].join(this.separator)\n : \"\";\n }\n fromString(value) {\n const result = value.length == 8 ? `${value.substring(4, 8)}-${value.substring(0, 2)}-${value.substring(2, 4)}` : undefined;\n return isoly.Date.is(result) ? result : undefined;\n }\n format(unformatted) {\n let result = unformatted.delete(this.separator);\n if (result.get(0, 1) > \"1\")\n result = result.insert(0, \"0\");\n if (result.value.length > 1)\n result = result.insert(2, this.separator);\n if (result.get(3, 1) > (result.get(0, 2) == \"02\" ? \"2\" : \"3\"))\n result = result.insert(3, \"0\");\n if (result.value.length > 4)\n result = result.insert(5, this.separator);\n return {\n ...result,\n type: \"text\",\n length: [0, 10],\n pattern: new RegExp([\"^(0[1-9]|1[012])\", \"(0[1-9]|[12][0-9]|3[01])\", \"\\\\d{4}$\"].join(this.separator)),\n };\n }\n allowed(symbol, state) {\n const result = state.selection.start == 1 && state.value[0] == \"1\"\n ? symbol >= \"0\" && symbol <= \"2\"\n : state.selection.start == 1 && state.value[0] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 3\n ? symbol >= \"0\" && symbol <= \"9\" && this.validMonth(state.value[2] + symbol, state.value.substring(0, 2))\n : state.selection.start == 7\n ? symbol >= \"0\" &&\n symbol <= \"9\" &&\n this.validMonth(state.value.substring(2, 4), state.value.substring(0, 2), state.value.substring(4, 7) + symbol)\n : state.selection.start < 8 && symbol >= \"0\" && symbol <= \"9\";\n return result;\n }\n}\nregister(\"mm/dd/YYYY\", () => new Handler(\"/\"));\n//# sourceMappingURL=mdy.js.map","import * as isoly from \"isoly\";\nimport { Base, register } from \"./Base\";\nclass Handler extends Base {\n constructor(separator) {\n super(separator);\n this.formatString = `YYYY${this.separator}MM${this.separator}DD`;\n }\n toString(data) {\n return typeof data != \"string\" ? \"\" : data;\n }\n fromString(value) {\n const result = value?.length == 8 ? `${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)}` : undefined;\n return isoly.Date.is(result) ? result : undefined;\n }\n daysInMonth(value) {\n const firstOfMonth = `${value.substring(0, 4)}-${value.substring(4, 6)}-01`;\n return isoly.Date.is(firstOfMonth)\n ? +isoly.Date.lastOfMonth(`${value.substring(0, 4)}-${value.substring(4, 6)}-01`).substring(8, 10)\n : 31;\n }\n format(unformatted) {\n let result = unformatted.delete(this.separator);\n if (result.value.length > 3) {\n result = result.insert(4, this.separator);\n if (result.get(5, 1) > \"1\")\n result = result.insert(5, \"0\");\n if (result.value.length > 6) {\n result = result.insert(7, this.separator);\n if (result.get(8, 1) > this.daysInMonth(unformatted.value).toString().substring(0, 1))\n result = result.insert(8, \"0\");\n }\n }\n return {\n ...result,\n type: \"text\",\n length: [0, 10],\n pattern: new RegExp([\"^\\\\d{4}\", \"(0[1-9]|1[012])\", \"(0[1-9]|[12][0-9]|3[01])$\"].join(this.separator)),\n };\n }\n allowed(symbol, state) {\n const daysInMonth = this.daysInMonth(state.value);\n return state.selection.start == 5 && state.value[4] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 5 && state.value[4] == \"1\"\n ? symbol >= \"0\" && symbol <= \"2\"\n : state.selection.start == 7 && state.value[6] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 7 && ((state.value[6] == \"2\" && daysInMonth < 30) || state.value[6] == \"3\")\n ? symbol >= \"0\" && symbol <= daysInMonth.toString().substring(1)\n : state.selection.start < 8 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nregister(\"YYYY-mm-dd\", () => new Handler(\"-\"));\n//# sourceMappingURL=ymd.js.map","import * as isoly from \"isoly\";\nimport { add } from \"./base\";\nclass Handler {\n constructor() {\n this.partialFormat = this.format;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n let result = value.replace(\" \", \"T\");\n const fillerDate = \"0000-01-01T00:00:00.000Z\";\n if (result?.match(/-\\d$/))\n result = result.substring(0, result.length - 1) + \"0\" + result.substring(result.length - 1, result.length);\n result = !result.match(/^\\d{4}-(0[1-9]|1[012])/)\n ? undefined\n : result + fillerDate.substring(result.length, fillerDate.length);\n return isoly.DateTime.is(result) ? result : undefined;\n }\n format(unformatted) {\n let result = formatDate(unformatted);\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[\\d:.-]$/))\n result = result.insert(10, \" \");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 3$/))\n result = result.replace(11, 12, \"23:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) [45]$/))\n result = result.insert(11, \"23:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) [6-9]$/))\n result = result.insert(11, \"23:5\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 24$/))\n result = result.replace(10, 13, \"00:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 25$/))\n result = result.insert(12, \"3:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 2[6-9]$/))\n result = result.insert(12, \"3:5\").append(\":\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3])\\d[\\s\\S]$/))\n result = result.insert(13, \":\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3]):[6-9]$/))\n result = result.insert(14, \"5\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3]):[0-5]\\d\\d$/))\n result = result.insert(16, \":\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3]):[0-5]\\d:[6-9]$/))\n result = result.insert(17, \"5\");\n return {\n ...result,\n type: \"text\",\n length: [0, 19],\n pattern: /^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3])(:[0-5]\\d){2}$/,\n };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return (state.value.length < 19 &&\n ((symbol >= \"0\" && symbol <= \"9\") || symbol == \"-\" || symbol == \":\" || symbol == \".\" || symbol == \" \"));\n }\n}\nadd(\"date-time\", () => new Handler());\nexport function formatDate(unformatted, format) {\n let result = unformatted;\n switch (format) {\n case \"dd/mm/YYYY\":\n case \"dd.mm.YYYY\":\n if (!validDate(result.value, format))\n result = result.replace(0, 10, validDate(\"31\" + result.value.substring(2, 10), format)\n ? \"31\" + result.value.substring(2, 10)\n : validDate(\"30\" + result.value.substring(2, 10), format)\n ? \"30\" + result.value.substring(2, 10)\n : validDate(\"29\" + result.value.substring(2, 10), format)\n ? \"29\" + result.value.substring(2, 10)\n : validDate(\"28\" + result.value.substring(2, 10), format)\n ? \"28\" + result.value.substring(2, 10)\n : result.value);\n break;\n case \"mm/dd/YYYY\":\n if (!validDate(result.value, format))\n result = result.replace(0, 10, validDate(result.value.substring(0, 3) + \"31\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"31\" + result.value.substring(5, 10)\n : validDate(result.value.substring(0, 3) + \"30\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"30\" + result.value.substring(5, 10)\n : validDate(result.value.substring(0, 3) + \"29\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"29\" + result.value.substring(5, 10)\n : validDate(result.value.substring(0, 3) + \"28\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"28\" + result.value.substring(5, 10)\n : result.value);\n break;\n default:\n if (unformatted.value.length == 10) {\n if (!validDate(result.value)) {\n result = result.replace(0, 10, validDate(result.value.substring(0, 8) + \"31\")\n ? result.value.substring(0, 8) + \"31\"\n : validDate(result.value.substring(0, 8) + \"30\")\n ? result.value.substring(0, 8) + \"30\"\n : validDate(result.value.substring(0, 8) + \"29\")\n ? result.value.substring(0, 8) + \"29\"\n : validDate(result.value.substring(0, 8) + \"28\")\n ? result.value.substring(0, 8) + \"28\"\n : result.value);\n break;\n }\n return unformatted;\n }\n }\n return result;\n}\nfunction validDate(date, format) {\n let year;\n let month;\n let day;\n switch (format) {\n case \"dd/mm/YYYY\":\n case \"dd.mm.YYYY\":\n year = parseInt(date.substring(6, 10));\n month = parseInt(date.substring(3, 5));\n day = parseInt(date.substring(0, 2));\n return year && month && day ? day > 0 && daysPerMonth(year, month) >= day : false;\n case \"mm/dd/YYYY\":\n year = parseInt(date.substring(6, 10));\n month = parseInt(date.substring(0, 2));\n day = parseInt(date.substring(3, 5));\n return year && month && day ? day > 0 && daysPerMonth(year, month) >= day : false;\n default:\n year = parseInt(date.substring(0, 4));\n month = parseInt(date.substring(5, 7));\n day = parseInt(date.substring(8, 10));\n return year && month && day ? day > 0 && daysPerMonth(year, month) >= day : false;\n }\n}\nfunction daysPerMonth(year, month) {\n let result;\n switch (month) {\n case 1:\n case 3:\n case 5:\n case 7:\n case 8:\n case 10:\n case 12:\n default:\n result = 31;\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n result = 30;\n break;\n case 2:\n result = 28;\n break;\n }\n return result;\n}\n//# sourceMappingURL=date-time.js.map","import { add } from \"./base\";\nclass Handler {\n constructor() {\n this.partialFormat = this.format;\n }\n toString(data) {\n return Array.isArray(data) && data.length == 2 && typeof data[0] == \"number\" && typeof data[1] == \"number\"\n ? data[0].toString() + \" / \" + data[1].toString()\n : typeof data == \"number\"\n ? data.toString()\n : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && value.match(/^\\d{1,2}\\s+\\/\\s+\\d{1,2}$/)\n ? [Number.parseInt(value.slice(0, 2)), Number.parseInt(value.slice(value.length - 2))]\n : typeof value == \"string\" && value.match(/\\d{1,2}/)\n ? Number.parseInt(value)\n : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (unformatted.match(/^\\d\\/$/))\n result = unformatted.replace(1, 2, \" / \");\n else if (unformatted.match(/^\\d{1,2}\\s$/))\n result = unformatted.replace(unformatted.value.length - 1, unformatted.value.length, \" / \");\n else if (unformatted.match(/^[\\D.]+\\/[\\D.]+$/))\n result = unformatted.delete(0, unformatted.value.length);\n else if (unformatted.match(/^[\\D.]+\\/[\\D.]+\\d$/))\n result = unformatted.delete(0, unformatted.value.length - 1);\n else if (unformatted.match(/^[\\D.]+\\/[\\D.]+\\d\\d$/))\n result = unformatted.delete(0, unformatted.value.length - 2);\n else if (unformatted.match(/^[\\D.]+\\//))\n result = unformatted.delete(0, unformatted.value.search(\"/\") + 1);\n else if (unformatted.match(/^\\d\\d\\/$/))\n result = unformatted.replace(2, 3, \" / \");\n else if (unformatted.match(/^\\d\\d\\s+\\/$/))\n result = unformatted.delete(2, unformatted.value.length);\n else if (unformatted.match(/^\\d\\s+\\/$/))\n result = unformatted.delete(1, unformatted.value.length);\n else if (unformatted.match(/^\\d\\d\\s\\s+\\/\\s*$/))\n result = unformatted.replace(2, unformatted.value.length, \" / \");\n else if (unformatted.match(/^\\d\\s\\s+(\\/\\s*)?$/))\n result = unformatted.replace(1, unformatted.value.length, \" / \");\n else if (unformatted.match(/^\\d\\s\\/\\s\\d\\d.+$/))\n result = unformatted.delete(6, unformatted.value.length);\n else if (unformatted.value.length > 1 && unformatted.value.indexOf(\"/\") < 1)\n result = unformatted.insert(2, \" / \");\n else if (unformatted.value.length > 1 && unformatted.value.split(\"/\").length > 2)\n result = unformatted.delete(unformatted.value.lastIndexOf(\"/\"));\n else if (unformatted.value.length == 1 && !unformatted.isDigit(0))\n result = unformatted.delete(0);\n return { ...result, type: \"text\", length: [1, 7], pattern: /^(\\d{1,2}|\\d{1,2} \\/ \\d{1,2})$/ };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return state.value.length < 7 && ((symbol >= \"0\" && symbol <= \"9\") || symbol == \"/\" || symbol == \" \");\n }\n}\nadd(\"divisor\", () => new Handler());\n//# sourceMappingURL=divisor.js.map","import { isoly } from \"isoly\";\nimport { add } from \"./base\";\nclass Handler {\n constructor() {\n this.separator = \":\";\n this.patterns = {\n allowed: /^-?\\d*(?::{0,1}[0-5]{0,1}[0-9]{0,1}|[.,]{0,1}[0-9]{0,2})$/,\n extract: /^(-?)(\\d*)([:,.]{0,1})([0-9]{0,2})$/,\n zeros: /^(-?)(0+)(?:[1-9]|0[,.:]?)/,\n };\n this.partialFormat = this.format;\n }\n toString(data) {\n let result;\n if (!isoly.TimeSpan.is(data))\n result = \"\";\n else {\n const span = isoly.TimeSpan.normalize(data);\n if (!span.minutes && !span.hours)\n result = \"\";\n else if (this.separator != \":\")\n result = (+isoly.TimeSpan.toHours(span).toFixed(2) || \"\").toString(10);\n else if (span.hours && !span.minutes)\n result = span.hours.toString(10);\n else if (!span.hours && span.minutes)\n result = `${span.minutes < 0 ? \"-\" : \"\"}0:${Math.abs(span.minutes).toString(10)}`;\n else\n result = `${span.hours?.toString(10)}:${Math.abs(span.minutes ?? 0).toString(10)}`;\n }\n return result;\n }\n fromString(value) {\n let result;\n const match = value.match(this.patterns.extract);\n if (!match)\n result = undefined;\n else {\n const [value, negative, hours, separator, minutes] = match;\n this.separator = separator;\n if (separator == \":\") {\n const parsed = {\n hours: parseInt(hours),\n minutes: parseInt(minutes),\n };\n const multiplicand = negative ? -1 : 1;\n result = isoly.TimeSpan.normalize({\n hours: !Number.isFinite(parsed.hours) ? 0 : parsed.hours * multiplicand,\n minutes: !Number.isFinite(parsed.minutes) ? 0 : parsed.minutes * multiplicand,\n });\n }\n else {\n const hours = parseFloat(value.replace(\",\", \".\"));\n result = isoly.TimeSpan.normalize({\n hours: !Number.isFinite(hours) ? 0 : hours,\n });\n }\n }\n return result;\n }\n format(unformatted) {\n let result = unformatted;\n const [, negative, hours, separator] = unformatted.match(this.patterns.extract) ?? [];\n if (!hours && separator)\n result = result.insert(negative ? 1 : 0, \"0\");\n const match = result.match(this.patterns.zeros);\n if (match) {\n const [, negative, zeros] = match;\n if (zeros) {\n const offset = negative ? 1 : 0;\n result = result.delete(offset, zeros.length + offset);\n }\n }\n return { ...result, type: \"tel\", pattern: this.patterns.allowed };\n }\n unformat(formatted) {\n const [, , , separator] = formatted.match(this.patterns.extract) ?? [];\n if (separator)\n this.separator = separator;\n return formatted;\n }\n allowed(symbol, state) {\n const nextValue = state.value.slice(0, state.selection.start) + symbol + state.value.slice(state.selection.end);\n return !!nextValue.match(this.patterns.allowed);\n }\n}\nadd(\"duration\", () => new Handler());\n//# sourceMappingURL=duration.js.map","import { add } from \"./base\";\nclass Handler {\n constructor(settings) {\n this.settings = settings;\n this.partialFormat = this.format;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n return { ...unformatted, ...this.settings, type: \"text\", inputmode: \"email\", autocomplete: \"email\" };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return (this.settings.length == undefined ||\n this.settings.length[1] == undefined ||\n state.value.length < this.settings.length[1]);\n }\n}\nadd(\"email\", (settings) => new Handler(settings || {}));\n//# sourceMappingURL=email.js.map","import { add } from \"./base\";\nconst modeTypes = [\"code\", \"pascal\", \"snake\", \"camel\", \"attribute\"];\nclass Handler {\n constructor(settings, mode) {\n this.settings = settings;\n this.mode = mode;\n this.partialFormat = this.format;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n split(unformatted) {\n let firstAllowedSymbol;\n let previousAllowedSymbol = \"\";\n return unformatted\n .map((symbol, index) => {\n const newSymbol = index !== 0 &&\n symbol === symbol.toUpperCase() &&\n isNaN(+symbol) &&\n previousAllowedSymbol !== \" \" &&\n this.isSymbolAllowed(symbol) &&\n firstAllowedSymbol\n ? \" \" + symbol\n : (symbol === \"_\" || symbol === \"-\") && previousAllowedSymbol !== \" \"\n ? \" \"\n : (symbol === \" \" && previousAllowedSymbol === \" \") ||\n !this.isSymbolAllowed(symbol) ||\n (!firstAllowedSymbol && !this.isSymbolLetter(symbol) && this.mode !== \"code\")\n ? \"\"\n : symbol;\n !firstAllowedSymbol && (firstAllowedSymbol = this.isSymbolLetter(symbol));\n this.isSymbolAllowed(symbol) && (previousAllowedSymbol = symbol);\n return newSymbol;\n })\n .toLower()\n .delete(\"-\")\n .delete(\"_\");\n }\n isSymbolLetter(symbol) {\n return (symbol >= \"a\" && symbol <= \"z\") || (symbol >= \"A\" && symbol <= \"Z\");\n }\n isSymbolAllowed(symbol) {\n return this.isSymbolLetter(symbol) || (symbol >= \"0\" && symbol <= \"9\") || symbol === \" \";\n }\n format(unformatted) {\n const alignedString = this.split(unformatted);\n let result;\n switch (this.mode) {\n case \"code\":\n result = alignedString.delete(\" \");\n break;\n case \"pascal\":\n case \"camel\":\n let previousSpace;\n result = alignedString\n .map((symbol, index) => {\n const newSymbol = (index === 0 && this.mode === \"pascal\") || previousSpace ? symbol.toUpperCase() : symbol.toLowerCase();\n previousSpace = symbol == \" \";\n return newSymbol;\n })\n .delete(\" \");\n break;\n case \"snake\":\n case \"attribute\":\n result = alignedString.replace(\" \", this.mode === \"snake\" ? \"_\" : \"-\");\n break;\n default:\n result = unformatted;\n }\n return { ...result, ...this.settings, type: \"text\", autocomplete: \"on\" };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return (this.isSymbolLetter(symbol) ||\n (symbol >= \"0\" && symbol <= \"9\" && (this.mode == \"code\" || state.value.length > 0)) ||\n (symbol == \"_\" && this.mode == \"snake\" && state.value.length > 0) ||\n (symbol == \"-\" && this.mode == \"attribute\" && state.value.length > 0));\n }\n}\nadd(\"identifier-code\", (settings) => new Handler(settings || {}, \"code\"));\nadd(\"identifier-pascal\", (settings) => new Handler(settings || {}, \"pascal\"));\nadd(\"identifier-snake\", (settings) => new Handler(settings || {}, \"snake\"));\nadd(\"identifier-camel\", (settings) => new Handler(settings || {}, \"camel\"));\nadd(\"identifier-attribute\", (settings) => new Handler(settings || {}, \"attribute\"));\n//# sourceMappingURL=identifier.js.map","import { add } from \"./base\";\nclass Handler {\n constructor(country) {\n this.country = country;\n this.partialFormat = this.format;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n const year = new Date().getFullYear().toString();\n if (unformatted.value.length > 1 && unformatted.get(0, 2) != \"19\" && unformatted.get(0, 2) != \"20\")\n result = result.prepend(unformatted.get(0, 2) > year.substring(2, 4) ? \"19\" : \"20\");\n if (result.value.length >= 8)\n result = result.insert(8, \"-\");\n return {\n ...result.truncate(13),\n type: \"text\",\n length: [11, 13],\n pattern: /^\\d{6,8}-\\d{4}$/,\n };\n }\n unformat(formatted) {\n return formatted.delete(\"-\");\n }\n allowed(symbol, state) {\n return state.value.length < 13 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"identity-number\", (argument) => new Handler(argument && argument.length > 0 ? argument[0] : undefined));\n//# sourceMappingURL=identity-number.js.map","import { add } from \"./base\";\nclass Handler {\n constructor() {\n this.partialFormat = this.format;\n }\n toString(data) {\n return typeof data == \"number\" ? data.toString() : \"\";\n }\n fromString(value) {\n const parsed = typeof value == \"string\" ? Number.parseInt(value) : undefined;\n return typeof parsed == \"number\" && !Number.isNaN(parsed) ? parsed : undefined;\n }\n format(unformatted) {\n return {\n ...unformatted,\n type: \"text\",\n inputmode: \"numeric\",\n length: [3, undefined],\n pattern: /^[0-9]+$/,\n };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"integer\", () => new Handler());\n//# sourceMappingURL=integer.js.map","import { add } from \"./base\";\nclass Handler {\n constructor() {\n this.partialFormat = this.format;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n return { ...unformatted, type: \"password\", autocomplete: \"current-password\" };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return true;\n }\n}\nadd(\"password\", () => new Handler());\n//# sourceMappingURL=password.js.map","import { add } from \"./base\";\nclass Handler {\n constructor() {\n this.partialFormat = this.format;\n }\n toString(data) {\n let result = \"\";\n if (typeof data == \"number\") {\n const decimals = data.toString().split(\".\")[1]?.length ?? 2;\n result = (data * 100).toFixed(!decimals || decimals <= 1 ? 0 : decimals - 2);\n }\n return result;\n }\n fromString(value) {\n const parsedFloat = typeof value == \"string\" ? Number.parseFloat(value) : undefined;\n return typeof parsedFloat == \"number\" && !Number.isNaN(parsedFloat) ? parsedFloat / 100 : undefined;\n }\n format(unformatted) {\n return {\n ...(unformatted.value ? unformatted.suffix(\" %\") : unformatted),\n type: \"text\",\n inputmode: \"numeric\",\n length: [3, undefined],\n pattern: /^\\d+(.\\d+)? %+$/,\n };\n }\n unformat(formatted) {\n return formatted.delete(\" %\");\n }\n allowed(symbol, state) {\n return (symbol >= \"0\" && symbol <= \"9\") || (symbol == \".\" && !state.value.includes(\".\"));\n }\n}\nadd(\"percent\", () => new Handler());\n//# sourceMappingURL=percent.js.map","export const phonePrefix = [\n {\n countryCode: \"+46\",\n areaCodes: [\n \"011\",\n \"0120\",\n \"0121\",\n \"0122\",\n \"0123\",\n \"0125\",\n \"013\",\n \"0140\",\n \"0141\",\n \"0142\",\n \"0143\",\n \"0144\",\n \"0150\",\n \"0151\",\n \"0152\",\n \"0155\",\n \"0156\",\n \"0157\",\n \"0158\",\n \"0159\",\n \"016\",\n \"0171\",\n \"0173\",\n \"0174\",\n \"0175\",\n \"0176\",\n \"018\",\n \"019\",\n \"021\",\n \"0220\",\n \"0221\",\n \"0222\",\n \"0223\",\n \"0224\",\n \"0225\",\n \"0226\",\n \"0227\",\n \"023\",\n \"0240\",\n \"0241\",\n \"0243\",\n \"0246\",\n \"0247\",\n \"0248\",\n \"0250\",\n \"0251\",\n \"0253\",\n \"0258\",\n \"026\",\n \"0270\",\n \"0271\",\n \"0278\",\n \"0280\",\n \"0281\",\n \"0290\",\n \"0291\",\n \"0292\",\n \"0293\",\n \"0294\",\n \"0295\",\n \"0297\",\n \"0300\",\n \"0301\",\n \"0302\",\n \"0303\",\n \"0304\",\n \"031\",\n \"0320\",\n \"0321\",\n \"0322\",\n \"0325\",\n \"033\",\n \"0340\",\n \"0345\",\n \"0346\",\n \"035\",\n \"036\",\n \"0370\",\n \"0371\",\n \"0372\",\n \"0380\",\n \"0381\",\n \"0382\",\n \"0383\",\n \"0390\",\n \"0392\",\n \"0393\",\n \"040\",\n \"0410\",\n \"0411\",\n \"0413\",\n \"0414\",\n \"0415\",\n \"0416\",\n \"0417\",\n \"0418\",\n \"042\",\n \"0430\",\n \"0431\",\n \"0433\",\n \"0435\",\n \"044\",\n \"0451\",\n \"0454\",\n \"0455\",\n \"0456\",\n \"0457\",\n \"0459\",\n \"046\",\n \"0470\",\n \"0471\",\n \"0472\",\n \"0474\",\n \"0476\",\n \"0477\",\n \"0478\",\n \"0479\",\n \"0480\",\n \"0481\",\n \"0485\",\n \"0486\",\n \"0490\",\n \"0491\",\n \"0492\",\n \"0493\",\n \"0494\",\n \"0495\",\n \"0496\",\n \"0498\",\n \"0499\",\n \"0500\",\n \"0501\",\n \"0502\",\n \"0503\",\n \"0504\",\n \"0505\",\n \"0506\",\n \"0510\",\n \"0511\",\n \"0512\",\n \"0513\",\n \"0514\",\n \"0515\",\n \"0520\",\n \"0521\",\n \"0522\",\n \"0523\",\n \"0524\",\n \"0525\",\n \"0526\",\n \"0528\",\n \"0530\",\n \"0531\",\n \"0532\",\n \"0533\",\n \"0534\",\n \"054\",\n \"0550\",\n \"0551\",\n \"0552\",\n \"0553\",\n \"0554\",\n \"0555\",\n \"0560\",\n \"0563\",\n \"0564\",\n \"0565\",\n \"0570\",\n \"0571\",\n \"0573\",\n \"0580\",\n \"0581\",\n \"0582\",\n \"0583\",\n \"0584\",\n \"0585\",\n \"0586\",\n \"0587\",\n \"0589\",\n \"0590\",\n \"0591\",\n \"060\",\n \"0611\",\n \"0612\",\n \"0613\",\n \"0620\",\n \"0621\",\n \"0622\",\n \"0623\",\n \"0624\",\n \"063\",\n \"0640\",\n \"0642\",\n \"0643\",\n \"0644\",\n \"0645\",\n \"0647\",\n \"0650\",\n \"0651\",\n \"0652\",\n \"0653\",\n \"0657\",\n \"0660\",\n \"0661\",\n \"0662\",\n \"0663\",\n \"0670\",\n \"0671\",\n \"0672\",\n \"0680\",\n \"0682\",\n \"0684\",\n \"0687\",\n \"0690\",\n \"0691\",\n \"0692\",\n \"0693\",\n \"0695\",\n \"0696\",\n \"08\",\n \"090\",\n \"0910\",\n \"0911\",\n \"0912\",\n \"0913\",\n \"0914\",\n \"0915\",\n \"0916\",\n \"0918\",\n \"0920\",\n \"0921\",\n \"0922\",\n \"0923\",\n \"0924\",\n \"0925\",\n \"0926\",\n \"0927\",\n \"0928\",\n \"0929\",\n \"0930\",\n \"0932\",\n \"0933\",\n \"0934\",\n \"0935\",\n \"0940\",\n \"0941\",\n \"0942\",\n \"0943\",\n \"0950\",\n \"0951\",\n \"0952\",\n \"0953\",\n \"0954\",\n \"0960\",\n \"0961\",\n \"0970\",\n \"0971\",\n \"0973\",\n \"0975\",\n \"0976\",\n \"0977\",\n \"0978\",\n \"0980\",\n \"0981\",\n \"010\",\n \"020\",\n \"0378\",\n \"070\",\n \"072\",\n \"073\",\n \"076\",\n \"079\",\n \"0710\",\n \"0740\",\n \"0746\",\n \"0749\",\n \"0741\",\n \"0742\",\n \"0743\",\n \"0744\",\n \"0745\",\n \"0747\",\n \"075\",\n \"077\",\n \"078\",\n \"0900\",\n \"0939\",\n \"0944\",\n \"0969\",\n \"099\",\n ],\n },\n];\n//# sourceMappingURL=phonePrefix.js.map","import { add } from \"./base\";\nimport { phonePrefix } from \"./phonePrefix\";\nclass Handler {\n constructor() {\n this.partialFormat = this.format;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (result.value.startsWith(\"+\")) {\n for (const country of phonePrefix)\n if (result.value.startsWith(country.countryCode))\n for (let prefix of country.areaCodes) {\n prefix = prefix.substring(1);\n if (result.value.startsWith(country.countryCode + prefix) && !result.value.includes(\"-\"))\n result = result\n .insert(country.countryCode.length, \"-\")\n .insert(country.countryCode.length + 1 + prefix.length, \"-\");\n }\n }\n else {\n const first = phonePrefix[0];\n for (const prefix of first.areaCodes)\n if (result.value.startsWith(prefix) && !result.value.includes(\"-\")) {\n result = result.insert(prefix.length, \"-\");\n result = result.delete(0);\n result = result.insert(0, \"-\").insert(0, first.countryCode);\n }\n }\n if (result.value.includes(\"-\")) {\n const digitIndex = result.value.indexOf(\"-\", result.value.indexOf(\"-\") + 1) + 1;\n const digitCount = result.value.substring(digitIndex, result.value.length + 1).length;\n switch (digitCount) {\n case 4:\n result = result.insert(digitIndex + 2, \" \");\n break;\n case 5:\n result = result.insert(digitIndex + 3, \" \");\n break;\n case 6:\n result = result.insert(digitIndex + 2, \" \");\n result = result.insert(digitIndex + 5, \" \");\n break;\n case 7:\n result = result.insert(digitIndex + 3, \" \");\n result = result.insert(digitIndex + 6, \" \");\n break;\n case 8:\n case 9:\n result = result.insert(digitIndex + 3, \" \");\n result = result.insert(digitIndex + 7, \" \");\n break;\n default:\n break;\n }\n if (digitCount > 9) {\n const spaces = Math.ceil(digitCount / 3) - 1;\n if (spaces > 0) {\n for (let i = 0; i < spaces; i++) {\n const position = i * 3 + 3 + i;\n result = result.insert(position + digitIndex, \" \");\n }\n }\n }\n }\n return { ...result, type: \"tel\", autocomplete: \"tel\" };\n }\n unformat(formatted) {\n return formatted.delete(\" \").delete(\"-\");\n }\n allowed(symbol, state) {\n return ((symbol >= \"0\" && symbol <= \"9\") || (state.selection.start == 0 && symbol == \"+\" && !state.value.includes(\"+\")));\n }\n}\nadd(\"phone\", () => new Handler());\n//# sourceMappingURL=phone.js.map","import { add } from \"./base\";\nclass Handler {\n constructor(country) {\n this.country = country;\n this.partialFormat = this.format;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n const result = !unformatted.value.includes(\" \") && unformatted.value.length >= 4 ? unformatted.insert(3, \" \") : unformatted;\n return {\n ...result.truncate(6),\n type: \"text\",\n autocomplete: \"postal-code\",\n length: [6, 6],\n pattern: /^\\d{3} \\d{2}$/,\n };\n }\n unformat(formatted) {\n return formatted.delete(\" \");\n }\n allowed(symbol, state) {\n return state.value.length <= 5 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"postal-code\", (argument) => new Handler(argument && argument.length > 0 ? argument[0] : undefined));\n//# sourceMappingURL=postal-code.js.map","import { isoly } from \"isoly\";\nimport { StateEditor } from \"../StateEditor\";\nimport { add } from \"./base\";\nclass Handler {\n constructor(options) {\n this.currency = options && typeof options == \"object\" ? options.currency : options;\n this.toInteger = options && typeof options == \"object\" ? options.toInteger : undefined;\n }\n toString(data) {\n return typeof data == \"number\" ? (isNaN(data) ? \"\" : data.toString()) : \"\";\n }\n fromString(value) {\n const result = typeof value == \"string\" ? Number.parseFloat(value) : undefined;\n return result != undefined && !isNaN(result) ? result : undefined;\n }\n partialFormat(unformatted) {\n let result = unformatted.value == \"NaN\" ? unformatted.replace(0, unformatted.value.length, \"\") : StateEditor.copy(unformatted);\n const decimals = this.currency && isoly.Currency.decimalDigits(this.currency);\n result = this.addLeadingIntegerZero(result);\n result = this.fillDecimalsIfPresent(result, decimals, \"onlyLimit\");\n result = this.truncateIntegerZeros(result);\n result = this.addThousandSeparators(result);\n return {\n ...result,\n remainder: this.format(unformatted).value.slice(result.value.length),\n type: \"text\",\n inputmode: \"numeric\",\n length: [3, undefined],\n pattern: new RegExp(\"^(\\\\d{0,3})( \\\\d{3})*(\\\\.\\\\d*)?$\"),\n };\n }\n format(unformatted) {\n let result = unformatted.value == \"NaN\" ? unformatted.replace(0, unformatted.value.length, \"\") : StateEditor.copy(unformatted);\n const decimals = this.currency && isoly.Currency.decimalDigits(this.currency);\n if (!this.toInteger)\n result = this.forceDecimalZero(result, decimals);\n result = this.addLeadingIntegerZero(result);\n result = this.fillDecimalsIfPresent(result, decimals, \"fillAndLimit\");\n result = this.truncateIntegerZeros(result);\n result = this.addThousandSeparators(result);\n result = this.appendCurrency(result);\n return {\n ...result,\n type: \"text\",\n inputmode: \"numeric\",\n length: [3, undefined],\n pattern: new RegExp(\"^(\\\\d{0,3})( \\\\d{3})*(\\\\.\\\\d+)?\" + (this.currency ? \" \" + this.currency : \"\") + \"$\"),\n };\n }\n forceDecimalZero(state, decimals) {\n if (!state.value.includes(\".\") && decimals && (Math.abs(Number.parseFloat(state.value)) >= 0 || state.value == \"0\"))\n state = state.suffix(\".0\");\n return state;\n }\n addLeadingIntegerZero(state) {\n const separatorIndex = state.value && state.value.includes(\".\") ? state.value.indexOf(\".\") : undefined;\n if (separatorIndex == 0)\n state = state.prepend(\"0\");\n return state;\n }\n fillDecimalsIfPresent(state, decimals, zeroHandling) {\n const separatorIndex = state.value.indexOf(\".\");\n if (separatorIndex != -1) {\n const adjust = separatorIndex + 1 + (decimals ?? 2) - state.value.length;\n state =\n adjust < 0\n ? state.truncate(state.value.length + adjust)\n : zeroHandling == \"fillAndLimit\"\n ? state.suffix(\"0\".repeat(adjust))\n : state;\n }\n return state;\n }\n truncateIntegerZeros(state) {\n const match = state.match(/^[0\\s]{2,}/);\n if (match)\n state = state.replace(0, match[0].length, \"0\");\n return state;\n }\n addThousandSeparators(state) {\n let separatorIndex = state.value.includes(\".\") ? state.value.indexOf(\".\") : state.value.length;\n const spaces = separatorIndex <= 0 ? 0 : Math.ceil(separatorIndex / 3) - 1;\n for (let i = 0; i < spaces; i++) {\n const position = separatorIndex - (spaces - i) * 3;\n state = state.insert(position, \" \");\n separatorIndex++;\n }\n return state;\n }\n appendCurrency(state) {\n return this.currency && (state.value.length > 1 || (state.value.length == 1 && state.value.charAt(0) != \".\"))\n ? state.suffix(\" \" + this.currency)\n : state;\n }\n unformat(formatted) {\n return this.currency ? formatted.delete(\" \").delete(\"\" + this.currency) : formatted.delete(\" \");\n }\n allowed(symbol, state) {\n return ((symbol >= \"0\" && symbol <= \"9\") ||\n (symbol == \".\" &&\n !state.value.includes(\".\") &&\n (!this.currency || isoly.Currency.decimalDigits(this.currency) != 0)));\n }\n}\nadd(\"price\", (argument) => new Handler(argument && argument.length > 0 ? argument[0] : undefined));\n//# sourceMappingURL=price.js.map","import { add } from \"./base\";\nclass Handler {\n constructor(settings) {\n this.settings = settings;\n this.partialFormat = this.format;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n return { ...unformatted, type: \"text\", ...this.settings };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return (this.settings.length == undefined ||\n this.settings.length[1] == undefined ||\n state.value.length < this.settings.length[1]);\n }\n}\nadd(\"text\", (settings) => new Handler(settings || {}));\n//# sourceMappingURL=text.js.map","import { add } from \"./base\";\nclass Handler {\n constructor() {\n this.partialFormat = this.format;\n }\n toString(value) {\n return typeof value == \"string\" ? \"#\" + value : \"\";\n }\n fromString(value) {\n return value ? \"#\" + value : undefined;\n }\n format(unformatted) {\n const result = unformatted.delete(\"#\");\n return {\n ...(result.value ? result.prepend(\"#\") : result),\n type: \"text\",\n length: [4, 7],\n pattern: /^#([0-9a-f]{3}|[0-9a-f]{6})$/i,\n };\n }\n unformat(formatted) {\n return formatted.delete(\"#\");\n }\n allowed(symbol, state) {\n return (((symbol >= \"0\" && symbol <= \"9\") || (symbol >= \"a\" && symbol <= \"f\") || (symbol >= \"A\" && symbol <= \"F\")) &&\n state.value.length < 6);\n }\n}\nadd(\"hex-color\", () => new Handler());\n//# sourceMappingURL=hex-color.js.map",":host {\n\tdisplay: block;\n\twhite-space: wrap;\n}\n\n:host[hidden] {\n\tdisplay: none;\n}\n\n:host>div {\n\topacity: 0.6;\n\tfont-size: .8rem;\n}\n","import { Component, h, Prop } from \"@stencil/core\"\nimport { CountryCode, Currency, DateTime } from \"isoly\"\nimport { format, get, Type } from \"tidily\"\nimport { getLocale } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-display\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplay {\n\t@Prop() type: Type | \"json\"\n\t@Prop() label?: string\n\t@Prop() value?: any\n\t@Prop() collapseDepth?: number\n\t@Prop() toInteger?: boolean\n\t@Prop() currency?: Currency\n\t@Prop() country?: CountryCode.Alpha2\n\t@Prop() format?: DateTime.Format\n\trender() {\n\t\tlet result: string | HTMLElement | undefined\n\t\tconst type = this.type\n\t\tswitch (type) {\n\t\t\tcase \"json\":\n\t\t\t\tresult = <smoothly-display-json value={this.value} collapseDepth={this.collapseDepth}></smoothly-display-json>\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tresult = format(this.value, type)\n\t\t\t\tbreak\n\t\t\tcase \"email\":\n\t\t\t\tresult = <a href={\"mailto:\" + this.value}>{format(this.value, type)}</a>\n\t\t\t\tbreak\n\t\t\tcase \"phone\":\n\t\t\t\tresult = <a href={\"tel:\" + this.value}>{format(this.value, type, this.country)}</a>\n\t\t\t\tbreak\n\t\t\tcase \"postal-code\":\n\t\t\t\tresult = format(this.value, type, this.country)\n\t\t\t\tbreak\n\t\t\tcase \"price\":\n\t\t\t\tresult = format(this.value, type, { currency: this.currency, toInteger: this.toInteger })\n\t\t\t\tbreak\n\t\t\tcase \"date\":\n\t\t\t\tresult = get(this.type as Type, getLocale())?.toString(this.value)\n\t\t\t\tbreak\n\t\t\tcase \"duration\":\n\t\t\t\tresult = format(this.value, type) || \"0\"\n\t\t\t\tbreak\n\t\t\tcase \"date-time\":\n\t\t\t\tresult = this.format\n\t\t\t\t\t? DateTime.localize(this.value, this.format, getLocale())\n\t\t\t\t\t: get(this.type as Type, getLocale())?.toString(this.value)\n\t\t\t\tbreak\n\t\t}\n\t\treturn this.label ? [<div>{this.label}</div>, result] : result\n\t}\n}\n","import { Component, Event, EventEmitter, h, State } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { Color, Notice } from \"../../../model\"\n@Component({\n\ttag: \"smoothly-display-demo\",\n})\nexport class SmoothlyDisplayDemo {\n\t@State() downloadingSpinner: boolean\n\t@Event() notice: EventEmitter<Notice>\n\tprivate noticeWarning(notice: Notice) {\n\t\tconsole.log(\"emit\", notice)\n\t\tthis.notice.emit(notice)\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<main>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly display</h2>\n\t\t\t\t\t<dl>\n\t\t\t\t\t\t<dt>Duration</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{ hours: 13, minutes: 100 }} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{ hours: 8 }} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{ minutes: 3 }} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\t\t\tstyle={{ display: \"inline\" }}\n\t\t\t\t\t\t\t\t\t\ttype=\"duration\"\n\t\t\t\t\t\t\t\t\t\tvalue={{ hours: -13, minutes: 100 }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{ hours: -8 }} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{}} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{ minutes: -3 }} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>text</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"text\" value=\"text\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>postal code</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"postal-code\" value=\"752 31\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>password</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"password\" value=\"password\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>email</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"email\" value=\"test@example.com\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>price</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"price\" value=\"13.37\" currency=\"SEK\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>price without decimals</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={200} currency=\"SEK\" toInteger />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>price with decimals if they are set, otherwise no decimal</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={200.2} currency=\"SEK\" toInteger />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>price with decimals</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={200.2} currency=\"SEK\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>percent</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"percent\" value=\"42\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>phone</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"phone\" value=\"0101881108\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>card number</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"card-number\" value=\"4111111111111111\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>card expires</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"card-expires\" value=\"7/22\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>card csc</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"card-csc\" value=\"987\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>date</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date\" value=\"2022-07-07\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>date time</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{\n\t\t\t\t\t\t\t\t\tyear: \"numeric\",\n\t\t\t\t\t\t\t\t\tmonth: \"short\",\n\t\t\t\t\t\t\t\t\tday: \"numeric\",\n\t\t\t\t\t\t\t\t\thour: \"numeric\",\n\t\t\t\t\t\t\t\t\tminute: \"numeric\",\n\t\t\t\t\t\t\t\t\tsecond: \"numeric\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T02:02:02Z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{\n\t\t\t\t\t\t\t\t\tyear: \"2-digit\",\n\t\t\t\t\t\t\t\t\tmonth: \"long\",\n\t\t\t\t\t\t\t\t\tday: \"2-digit\",\n\t\t\t\t\t\t\t\t\thour: \"2-digit\",\n\t\t\t\t\t\t\t\t\tminute: \"2-digit\",\n\t\t\t\t\t\t\t\t\tsecond: \"2-digit\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T02:02:02Z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{\n\t\t\t\t\t\t\t\t\tyear: \"numeric\",\n\t\t\t\t\t\t\t\t\tmonth: \"2-digit\",\n\t\t\t\t\t\t\t\t\tday: \"2-digit\",\n\t\t\t\t\t\t\t\t\thour: \"numeric\",\n\t\t\t\t\t\t\t\t\tminute: \"numeric\",\n\t\t\t\t\t\t\t\t\tsecond: \"numeric\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T12:22:24Z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{\n\t\t\t\t\t\t\t\t\tyear: \"numeric\",\n\t\t\t\t\t\t\t\t\tmonth: \"numeric\",\n\t\t\t\t\t\t\t\t\tday: \"numeric\",\n\t\t\t\t\t\t\t\t\thour: \"numeric\",\n\t\t\t\t\t\t\t\t\tminute: \"numeric\",\n\t\t\t\t\t\t\t\t\tsecond: \"numeric\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T12:22:24Z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{ year: \"numeric\", month: \"short\", day: \"numeric\" }}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T00:00+02:00\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{ year: \"2-digit\", month: \"numeric\", day: \"numeric\" }}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T00:00+02:00\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{\n\t\t\t\t\t\t\t\t\tyear: \"2-digit\",\n\t\t\t\t\t\t\t\t\tmonth: \"numeric\",\n\t\t\t\t\t\t\t\t\tday: \"numeric\",\n\t\t\t\t\t\t\t\t\thour: \"2-digit\",\n\t\t\t\t\t\t\t\t\tminute: \"2-digit\",\n\t\t\t\t\t\t\t\t\tsecond: \"2-digit\",\n\t\t\t\t\t\t\t\t\ttimeZone: \"Europe/Stockholm\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T12:15Z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>Display JSON</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display-demo-json />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t</dl>\n\t\t\t\t</fieldset>\n\t\t\t\t<h2>With labels</h2>\n\t\t\t\t<dd>\n\t\t\t\t\t<smoothly-display label=\"Today\" type=\"date\" value={isoly.Date.now()} />\n\t\t\t\t\t<smoothly-display label=\"Total amount\" type=\"price\" currency=\"SEK\" value={6789} />\n\t\t\t\t\t<smoothly-display label=\"Total amount\" type=\"price\" currency=\"GBP\" value={678.9} />\n\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\tlabel=\"Logs\"\n\t\t\t\t\t\ttype=\"json\"\n\t\t\t\t\t\tvalue={[\n\t\t\t\t\t\t\t{ type: \"trace\", message: \"Hello\" },\n\t\t\t\t\t\t\t{ type: \"error\", message: \"Oh no!\" },\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t</dd>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Test of different kinds of notifier</h2>\n\t\t\t\t\t<button onClick={() => this.noticeWarning(Notice.warn(\"This is a test warning notice.\"))}>warning</button>\n\t\t\t\t\t<button onClick={() => this.noticeWarning(Notice.succeeded(\"This is a test success notice.\"))}>\n\t\t\t\t\t\tsuccess\n\t\t\t\t\t</button>\n\t\t\t\t\t<button onClick={() => this.noticeWarning(Notice.failed(\"This is a test danger notice.\"))}>danger</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\tthis.noticeWarning(\n\t\t\t\t\t\t\t\tNotice.execute(\n\t\t\t\t\t\t\t\t\t\"This is a test execute notice.\",\n\t\t\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t\t\tnew Promise<[boolean, string]>(resolve =>\n\t\t\t\t\t\t\t\t\t\t\twindow.setTimeout(() => resolve([true, \"This went great\"]), 3000)\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}>\n\t\t\t\t\t\texecute\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\tthis.noticeWarning(\n\t\t\t\t\t\t\t\tNotice.delay(\n\t\t\t\t\t\t\t\t\t\"This is a test delay notice.\",\n\t\t\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t\t\tnew Promise<[boolean, string]>(resolve =>\n\t\t\t\t\t\t\t\t\t\t\twindow.setTimeout(() => resolve([true, \"This went great\"]), 3000)\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}>\n\t\t\t\t\t\tdelay\n\t\t\t\t\t</button>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly spinner</h2>\n\t\t\t\t\t<div style={{ width: \"fit-content\" }}>\n\t\t\t\t\t\tLarge\n\t\t\t\t\t\t<smoothly-spinner\n\t\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\"--spinner-background\": \"200,255,200\",\n\t\t\t\t\t\t\t\t\"--spinner-background-opacity\": \"0.2\",\n\t\t\t\t\t\t\t\t\"--spinner-color\": \"0,130,0\",\n\t\t\t\t\t\t\t}}></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{ width: \"fit-content\" }}>\n\t\t\t\t\t\tMedium\n\t\t\t\t\t\t<smoothly-spinner size=\"medium\"></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{ width: \"fit-content\" }}>\n\t\t\t\t\t\tSmall\n\t\t\t\t\t\t<smoothly-spinner size=\"small\"></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\tIcon sized spinner on button\n\t\t\t\t\t\t{Color.types.map(color => (\n\t\t\t\t\t\t\t<smoothly-button\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tthis.downloadingSpinner = true\n\t\t\t\t\t\t\t\t\tsetTimeout(() => (this.downloadingSpinner = false), 3000)\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t{!this.downloadingSpinner && <smoothly-icon name=\"download-outline\"></smoothly-icon>}\n\t\t\t\t\t\t\t\t{this.downloadingSpinner && (\n\t\t\t\t\t\t\t\t\t<smoothly-spinner size=\"icon\" style={{ \"--spinner-background-opacity\": \"0\" }}></smoothly-spinner>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>Spinner with overlay</h3>\n\t\t\t\t\t<div style={{ position: \"relative\", height: \"10em\" }}>\n\t\t\t\t\t\tLarge Overlay Spinner\n\t\t\t\t\t\t<smoothly-spinner\n\t\t\t\t\t\t\toverlay\n\t\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\"--spinner-background\": \"255,200,255\",\n\t\t\t\t\t\t\t\t\"--spinner-background-opacity\": \"0.5\",\n\t\t\t\t\t\t\t\t\"--spinner-color\": \"0,130,0\",\n\t\t\t\t\t\t\t}}></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{ position: \"relative\", height: \"10em\" }}>\n\t\t\t\t\t\tMedium Overlay Spinner\n\t\t\t\t\t\t<smoothly-spinner overlay color=\"secondary\" size=\"medium\"></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{ position: \"relative\", height: \"10em\" }}>\n\t\t\t\t\t\tSmall Overlay Spinner\n\t\t\t\t\t\t<smoothly-spinner overlay size=\"small\"></smoothly-spinner>\n\t\t\t\t\t</div>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly summary</h2>\n\t\t\t\t\t<smoothly-summary>\n\t\t\t\t\t\t<p slot=\"summary\">Some title</p>\n\t\t\t\t\t\t<p slot=\"content\">Some content</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-summary size=\"large\">\n\t\t\t\t\t\t<p slot=\"summary\">Some title</p>\n\t\t\t\t\t\t<p slot=\"content\">Some content</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-summary color=\"danger\" fill=\"clear\">\n\t\t\t\t\t\t<div slot=\"summary\" style={{ display: \"flex\", gap: \"0.3rem\" }}>\n\t\t\t\t\t\t\t<span>Person</span>\n\t\t\t\t\t\t\t<smoothly-icon name=\"person\" color=\"light\" fill=\"clear\" size=\"tiny\"></smoothly-icon>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p slot=\"content\">Some person information.</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-summary color=\"danger\" fill=\"clear\" open>\n\t\t\t\t\t\t<p slot=\"summary\">Some other title</p>\n\t\t\t\t\t\t<p slot=\"content\">\n\t\t\t\t\t\t\tA lot more content, yes please. A lot more content, yes please. A lot more content, yes please. A lot more\n\t\t\t\t\t\t\tcontent, yes please. A lot more content, yes please.A lot more content, yes please. A lot more content,\n\t\t\t\t\t\t\tyes please. A lot more content, yes please. A lot more content, yes please.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<h2>Label</h2>\n\t\t\t\t\t{labels.map(l => (\n\t\t\t\t\t\t<smoothly-label hue={l.hue} description={l.description} shape={\"rectangle\"}>\n\t\t\t\t\t\t\t{l.name}\n\t\t\t\t\t\t</smoothly-label>\n\t\t\t\t\t))}\n\t\t\t\t\t<smoothly-label color=\"primary\" description=\"Using colors\" shape={\"rectangle\"}>\n\t\t\t\t\t\tPrimary\n\t\t\t\t\t</smoothly-label>\n\t\t\t\t</fieldset>\n\t\t\t</main>,\n\t\t]\n\t}\n}\nconst labels = [\n\t{\n\t\tname: \"2fa\",\n\t\thue: 120,\n\t\tdescription: \"User has two factor authentication enabled.\",\n\t},\n\t{\n\t\tname: \"expired\",\n\t\thue: 240,\n\t\tdescription: \"User's password has expired.\",\n\t},\n\t{\n\t\tname: \"inactive\",\n\t\thue: 60,\n\t\tdescription: \"User is inactive.\",\n\t},\n]\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-display-demo-json\",\n})\nexport class SmoothlyDisplayDemoJson {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t{[0, 1, 3, undefined].map(colapseDepth => [\n\t\t\t\t\t<div>collapseDepth={colapseDepth ?? \"undefined\"}</div>,\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<smoothly-display type=\"json\" value={json} collapseDepth={colapseDepth} />\n\t\t\t\t\t</div>,\n\t\t\t\t])}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n\nconst json = {\n\tname: \"stringy\",\n\tnested: {\n\t\tage: 109,\n\t\tarray: [\"one\", \"two\", \"three\", { name: \"four\" }],\n\t\temptyObject: {},\n\t\temptyArray: [],\n\t\ttruthy: true,\n\t\tfalsy: false,\n\t\tnull: null,\n\t\tnotDefined: undefined,\n\t\tlongString:\n\t\t\t\"pepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakor\",\n\t},\n}\n","import { FunctionalComponent, h } from \"@stencil/core\"\nimport { isly } from \"isly\"\n\nexport const JsonValue: FunctionalComponent<{ value: any; collapseDepth?: number }> = ({ value, collapseDepth }) => {\n\treturn isly.object().is(value) || Array.isArray(value) ? (\n\t\t<smoothly-display-json-object value={value} collapseDepth={collapseDepth} />\n\t) : (\n\t\t<smoothly-display-json-primitive value={value} />\n\t)\n}\n",":host {\n\tfont-family: monospace;\n}\n","import { Component, h, Prop, VNode } from \"@stencil/core\"\nimport { JsonValue } from \"./JsonValue\"\n\n@Component({\n\ttag: \"smoothly-display-json\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplayJson {\n\t@Prop() value: any\n\t@Prop() collapseDepth?: number\n\n\trender(): VNode {\n\t\treturn <JsonValue value={this.value} collapseDepth={this.collapseDepth}></JsonValue>\n\t}\n}\n",":host {\n\tfont-family: monospace;\n\tposition: relative;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n\n.indent {\n\tpadding-left: 1rem;\n\tborder-left: 1px solid rgb(var(--smoothly-light-shade));\n}\n:host(:not(.open)) .content {\n\tdisplay: none;\n}\n:host>.content>.indent:last-child>.comma {\n\tdisplay: none;\n}\n.open-bracket::after {\n\tbackground-color: rgb(var(--smoothly-light-color));\n\tcolor: rgb(var(--smoothly-light-shade));\n\twhite-space: pre;\n\tborder-radius: 0.25rem;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n:host(:not(.open):not(.empty))>.open-bracket::after {\n\tcontent: \" ▶ \" attr(data-length) \" ◀ \";\n}\n:host(.open:not(.empty))>.open-bracket::after {\n\tcontent: \" ▼ \";\n}\n","import { Component, ComponentWillLoad, h, Host, Prop, State, VNode } from \"@stencil/core\"\nimport { JsonValue } from \"../JsonValue\"\n\n@Component({\n\ttag: \"smoothly-display-json-object\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplayJsonObject implements ComponentWillLoad {\n\t@Prop() value: Record<string, any> | any[]\n\t@Prop() collapseDepth?: number\n\t@State() open: boolean\n\t@State() empty: boolean\n\tprivate openBracket: string = \"\"\n\tprivate closeBracket: string = \"\"\n\tprivate length: number\n\n\tcomponentWillLoad() {\n\t\tthis.open = typeof this.collapseDepth == \"number\" ? this.collapseDepth > 0 : true\n\t\tif (Array.isArray(this.value)) {\n\t\t\tthis.openBracket = \"[\"\n\t\t\tthis.closeBracket = \"]\"\n\t\t\tthis.length = this.value.length\n\t\t} else {\n\t\t\tthis.openBracket = \"{\"\n\t\t\tthis.closeBracket = \"}\"\n\t\t\tthis.length = Object.keys(this.value).length\n\t\t}\n\t\tthis.empty = this.length == 0\n\t}\n\n\trender(): VNode {\n\t\tconst nextCollapseDepth = typeof this.collapseDepth == \"number\" ? Math.max(this.collapseDepth - 1, 0) : undefined\n\t\treturn (\n\t\t\t<Host class={{ empty: this.empty, open: this.open }}>\n\t\t\t\t<span class=\"open-bracket\" onClick={() => (this.open = !this.open)} data-length={this.length}>\n\t\t\t\t\t{this.openBracket}\n\t\t\t\t</span>\n\t\t\t\t<span class=\"content\">\n\t\t\t\t\t{Array.isArray(this.value)\n\t\t\t\t\t\t? this.value.map(v => (\n\t\t\t\t\t\t\t\t<div class=\"indent\">\n\t\t\t\t\t\t\t\t\t<JsonValue value={v} collapseDepth={nextCollapseDepth}></JsonValue>\n\t\t\t\t\t\t\t\t\t<span class=\"comma\">,</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t ))\n\t\t\t\t\t\t: Object.entries(this.value).map(([k, v]) => (\n\t\t\t\t\t\t\t\t<div class=\"indent\">\n\t\t\t\t\t\t\t\t\t{<smoothly-display-json-record-key value={k}></smoothly-display-json-record-key>}:{\" \"}\n\t\t\t\t\t\t\t\t\t{<JsonValue value={v} collapseDepth={nextCollapseDepth}></JsonValue>}\n\t\t\t\t\t\t\t\t\t<span class=\"comma\">,</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t ))}\n\t\t\t\t</span>\n\t\t\t\t<span>{this.closeBracket}</span>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tfont-family: monospace;\n\tdisplay: inline;\n\tword-wrap: anywhere;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n\n:host(.string), \n:host(.number),\n:host(.boolean) {\n\tfont-weight: bold;\n}\n:host(.string) {\n\tcolor: rgb(var(--smoothly-primary-color));\n}\n:host(.number) {\n\tcolor: rgb(var(--smoothly-secondary-color));\n}\n:host(.boolean) {\n\tcolor: rgb(var(--smoothly-tertiary-color));\n}\n:host(.null),\n:host(.undefined) {\n\tcolor: rgb(var(--smoothly-medium-color));\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-display-json-primitive\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplayJsonPrimitive {\n\t@Prop() value: any\n\n\trender(): VNode {\n\t\treturn <Host class={this.value == null ? \"null\" : typeof this.value}>{\"\" + JSON.stringify(this.value)}</Host>\n\t}\n}\n",":host {\n\tfont-family: monospace;\n\tdisplay: inline;\n\tcolor: rgb(var(--smoothly-default-contrast));\n}\n:host[hidden] {\n\tdisplay: none;\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-display-json-record-key\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplayJsonRecordKey {\n\t@Prop() value: any\n\n\trender(): VNode {\n\t\treturn <Host>\"{this.value}\"</Host>\n\t}\n}\n","export class Rule {\n filter(value) {\n return value.filter(element => this.is(element));\n }\n stringify(precedence = 0) {\n let result = this.toString();\n if (this.precedence < precedence)\n result = \"(\" + result + \")\";\n return result;\n }\n}\nconst creators = [\n criteria => (criteria instanceof Rule ? criteria : undefined),\n];\nexport function add(create) {\n creators.push(create);\n}\nlet always;\nexport function setFallback(fallback) {\n always = fallback;\n}\nexport function create(criteria) {\n let result;\n for (const c of creators) {\n result = c(criteria);\n if (result)\n break;\n }\n return result || always;\n}\n//# sourceMappingURL=Rule.js.map","import { Rule, setFallback } from \"./Rule\";\nexport class Always extends Rule {\n constructor() {\n super();\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Always\";\n }\n is(value) {\n return true;\n }\n toString() {\n return \"\";\n }\n}\nsetFallback(new Always());\n//# sourceMappingURL=Always.js.map","import { create, Rule } from \"./Rule\";\nexport class Any extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 50;\n this.class = \"Any\";\n }\n is(value) {\n return (value &&\n typeof value == \"object\" &&\n Object.getOwnPropertyNames(value).some(property => this.criteria.is(value[property]) || this.is(value[property])));\n }\n toString() {\n return this.criteria.stringify(this.precedence);\n }\n}\nexport function any(criteria, value) {\n const result = new Any(create(criteria));\n return value ? result.is(value) : result;\n}\n//# sourceMappingURL=Any.js.map","import { Any } from \"./Any\";\nimport { create, Rule } from \"./Rule\";\nexport class And extends Rule {\n constructor(rules) {\n super();\n this.precedence = 40;\n this.class = \"And\";\n this.rules = rules.reduce((r, e) => (e instanceof And ? [...r, ...e.rules] : [...r, e]), []);\n }\n is(value) {\n return this.rules.every(c => c.is(value));\n }\n toString() {\n return this.rules.map(c => c.stringify(this.precedence)).join(\" \");\n }\n generalize() {\n return new And(this.rules.map(r => (r.class == \"Property\" ? r : new Any(r))));\n }\n}\nexport function and(...criterias) {\n return new And(criterias.map(create));\n}\n//# sourceMappingURL=And.js.map","import { Rule } from \"./Rule\";\nexport var Criteria;\n(function (Criteria) {\n Criteria.is = isCriteria;\n})(Criteria || (Criteria = {}));\nexport function isCriteria(value, recursive = false) {\n return (typeof value == \"number\" ||\n typeof value == \"string\" ||\n value instanceof Rule ||\n (recursive &&\n typeof value == \"object\" &&\n value &&\n Object.values(value).every(value => Array.isArray(value) ? value.every(value => isCriteria(value, true)) : isCriteria(value, true))));\n}\n//# sourceMappingURL=Criteria.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Level;\n(function (Level) {\n Level[Level[\"Logging\"] = 0] = \"Logging\";\n Level[Level[\"Debug\"] = 1] = \"Debug\";\n Level[Level[\"Warning\"] = 2] = \"Warning\";\n Level[Level[\"Recoverable\"] = 3] = \"Recoverable\";\n Level[Level[\"Critical\"] = 4] = \"Critical\";\n})(Level = exports.Level || (exports.Level = {}));\n//# sourceMappingURL=Level.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Level_1 = require(\"./Level\");\nclass Message {\n constructor(description, level = Level_1.Level.Recoverable, type = \"unknown\", region) {\n this.description = description;\n this.level = level;\n this.type = type;\n this.region = region;\n }\n toString() {\n return Level_1.Level[this.level] + \": \" + this.type + \" error. \" + this.description + (this.region ? \" @ \" + this.region.toString() : \"\");\n }\n}\nexports.Message = Message;\n//# sourceMappingURL=Message.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Message_1 = require(\"./Message\");\nclass ConsoleHandler {\n raise(message, level, type, region) {\n if (!(message instanceof Message_1.Message))\n message = new Message_1.Message(message, level, type, region);\n console.error(message.toString());\n }\n}\nexports.ConsoleHandler = ConsoleHandler;\n//# sourceMappingURL=ConsoleHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Position {\n constructor(line, column) {\n this.line = line;\n this.column = column;\n }\n toString() {\n return \"Ln \" + this.line + \", Col \" + this.column;\n }\n}\nexports.Position = Position;\n//# sourceMappingURL=Position.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Position_1 = require(\"./Position\");\nclass Location extends Position_1.Position {\n constructor(resource, line, column) {\n super(line, column);\n this.resource = resource;\n }\n toString() {\n return this.resource.toString() + \" @ \" + super.toString();\n }\n}\nexports.Location = Location;\n//# sourceMappingURL=Location.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Region {\n constructor(resource, start, end, content) {\n this.resource = resource;\n this.start = start;\n this.end = end;\n this.content = content;\n }\n merge(other) { return other ? new Region(this.resource, this.start, other.end, this.content ? this.content : \"\" + other.content ? other.content : \"\") : this; }\n toString() {\n let result = this.resource.toString();\n if (this.start && this.end)\n result += \" (\" + this.start.toString() + \" - \" + this.end.toString() + \") \";\n if (this.content)\n result += this.content;\n return result;\n }\n}\nexports.Region = Region;\n//# sourceMappingURL=Region.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ConsoleHandler_1 = require(\"./ConsoleHandler\");\nexports.ConsoleHandler = ConsoleHandler_1.ConsoleHandler;\nvar Level_1 = require(\"./Level\");\nexports.Level = Level_1.Level;\nvar Location_1 = require(\"./Location\");\nexports.Location = Location_1.Location;\nvar Message_1 = require(\"./Message\");\nexports.Message = Message_1.Message;\nvar Position_1 = require(\"./Position\");\nexports.Position = Position_1.Position;\nvar Region_1 = require(\"./Region\");\nexports.Region = Region_1.Region;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass User {\n constructor(name, password) {\n this.name = name;\n this.password = password;\n }\n get isEmpty() {\n return !this.name && !this.password;\n }\n toString() {\n let result = \"\";\n if (this.name)\n result = this.name;\n if (this.password)\n result += \":\" + this.password;\n return result;\n }\n static parse(data) {\n let result;\n if (data) {\n const splitted = data.split(\":\", 2);\n result = new User(splitted[0], splitted[1]);\n }\n else\n result = new User();\n return result;\n }\n}\nexports.User = User;\n//# sourceMappingURL=User.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Endpoint {\n constructor(host = [], port) {\n this.host = host;\n this.port = port;\n }\n get isEmpty() {\n return this.host.length == 0 && !this.port;\n }\n toString() {\n let result = this.host.join(\".\");\n if (this.port)\n result += \":\" + this.port.toString();\n return result;\n }\n static parse(data) {\n let result;\n if (data) {\n const splitted = data.split(\":\", 2);\n result = new Endpoint(splitted[0].split(\".\"), splitted.length > 1 ? parseInt(splitted[1]) : undefined);\n }\n else\n result = new Endpoint();\n return result;\n }\n}\nexports.Endpoint = Endpoint;\n//# sourceMappingURL=Endpoint.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst User_1 = require(\"./User\");\nconst Endpoint_1 = require(\"./Endpoint\");\nclass Authority {\n constructor(user = new User_1.User(), endpoint = new Endpoint_1.Endpoint()) {\n this.user = user;\n this.endpoint = endpoint;\n }\n get isEmpty() {\n return this.user.isEmpty && this.endpoint.isEmpty;\n }\n toString() {\n let result = \"\";\n if (!this.user.isEmpty)\n result = this.user.toString() + \"@\";\n if (!this.endpoint.isEmpty)\n result = result + this.endpoint.toString();\n return result;\n }\n static parse(data) {\n let result;\n if (data) {\n const splitted = data.split(\"@\", 2);\n result = new Authority(User_1.User.parse(splitted.length == 2 ? splitted.pop() : undefined), Endpoint_1.Endpoint.parse(splitted.pop()));\n }\n return result;\n }\n}\nexports.Authority = Authority;\n//# sourceMappingURL=Authority.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Authority_1 = require(\"./Authority\");\nclass Locator {\n constructor(scheme = [], authority = new Authority_1.Authority(), path = [], query = {}, fragment) {\n this.scheme = scheme;\n this.authority = authority;\n this.path = path;\n this.query = query;\n this.fragment = fragment;\n }\n get isRelative() {\n return this.path[0] == \".\" || this.path[0] == \"..\";\n }\n get isFolder() {\n return this.path[this.path.length - 1] == \"\";\n }\n get folder() {\n return this.isFolder ? this : new Locator(this.scheme, this.authority, this.path.filter((value, index) => index < this.path.length - 1), this.query, this.fragment);\n }\n get name() {\n return this.path[this.path.length - 1];\n }\n get extension() {\n const splitted = this.name.split(\".\");\n return splitted.length > 1 ? splitted[splitted.length - 1] : \"\";\n }\n createArray(value, count) {\n const result = [];\n while (count-- > 0)\n result.push(value);\n return result;\n }\n normalize() {\n let skip = 0;\n const path = this.path.reverse().filter((item, index) => {\n let r = false;\n if ((item == \"\" || item == \".\") && index < this.path.length - 1)\n r = false;\n else if (item == \"..\")\n skip++;\n else if (skip > 0)\n skip--;\n else\n r = true;\n return r;\n }).concat(this.createArray(\"..\", skip)).reverse();\n return new Locator(this.scheme, this.authority, path, this.query, this.fragment);\n }\n resolve(absolute) {\n return !absolute ? this : new Locator(this.scheme.length > 0 ? this.scheme : absolute.scheme, !this.authority.isEmpty ? this.authority : absolute.authority, this.isRelative ? absolute.folder.path.concat(this.path) : this.path, this.query, this.fragment).normalize();\n }\n appendPath(path) {\n return new Locator(this.scheme, this.authority, path instanceof Array ? [...this.path, ...path] : [...this.path, path], this.query, this.fragment);\n }\n toString() {\n let result = \"\";\n if (this.scheme.length > 0)\n result += this.scheme.join(\"+\") + \":\";\n if (!this.authority.isEmpty)\n result += \"//\" + this.authority.toString();\n else if (this.scheme.length > 0)\n result += \"//\";\n if (this.path) {\n let path = this.path.join(\"/\");\n if (path[0] != \".\" || result.length > 0)\n path = \"/\" + path;\n result += path;\n }\n if (Object.keys(this.query).length > 0)\n result += \"?\" + this.query.toString();\n if (this.fragment)\n result += \"#\" + this.fragment;\n return result;\n }\n static parse(data) {\n let result;\n switch (data) {\n case \"\":\n case null:\n case undefined:\n break;\n default:\n let hasAuthority = true;\n let scheme = [];\n let splitted = data.split(\"://\", 2);\n if (splitted.length > 1) {\n scheme = (splitted.shift() || \"\").split(\"+\");\n data = splitted.shift();\n }\n else if (data.slice(0, 2) == \"//\")\n data = data.slice(2);\n else\n hasAuthority = false;\n let index;\n let fragment;\n if (data && (index = data.lastIndexOf(\"#\")) > -1) {\n fragment = data.slice(index + 1);\n data = data.slice(0, index);\n }\n let query = {};\n if (data && (index = data.lastIndexOf(\"?\")) > -1) {\n query = new Object();\n data.slice(index + 1).split(\";\").forEach(element => {\n splitted = element.split(\"=\");\n const key = splitted.shift();\n const value = splitted.shift();\n if (key && value)\n query[key] = value;\n });\n data = data.slice(0, index);\n }\n let authority;\n let path = [];\n if (data) {\n splitted = data.split(\"/\");\n if (splitted.length > 0) {\n switch (splitted[0]) {\n case \".\":\n case \"..\":\n break;\n case \"\":\n splitted.shift();\n break;\n default:\n if (hasAuthority)\n authority = Authority_1.Authority.parse(splitted.shift());\n else\n splitted.unshift(\".\");\n break;\n }\n path = splitted;\n }\n }\n result = new Locator(scheme, authority, path, query, fragment);\n break;\n }\n return result;\n }\n}\nexports.Locator = Locator;\nLocator.empty = new Locator(undefined, undefined, undefined, undefined, undefined);\n//# sourceMappingURL=Locator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Authority_1 = require(\"./Authority\");\nexports.Authority = Authority_1.Authority;\nvar Endpoint_1 = require(\"./Endpoint\");\nexports.Endpoint = Endpoint_1.Endpoint;\nvar Locator_1 = require(\"./Locator\");\nexports.Locator = Locator_1.Locator;\nvar User_1 = require(\"./User\");\nexports.User = User_1.User;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Device {\n}\nexports.Device = Device;\n//# sourceMappingURL=Device.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Device_1 = require(\"./Device\");\nclass InDevice extends Device_1.Device {\n}\nexports.InDevice = InDevice;\n//# sourceMappingURL=InDevice.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst InDevice_1 = require(\"./InDevice\");\nclass Reader extends InDevice_1.InDevice {\n static addOpener(open, priority) {\n if (!priority)\n priority = 0;\n Reader.openers.push({ open, priority });\n Reader.openers = Reader.openers.sort((left, right) => right.priority - left.priority);\n }\n static open(locator) {\n let result;\n let i = 0;\n do\n result = Reader.openers[i++].open(locator);\n while (!result && i < Reader.openers.length);\n return result;\n }\n}\nexports.Reader = Reader;\nReader.openers = [];\n//# sourceMappingURL=Reader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Uri = require(\"../Uri\");\nconst Error = require(\"../Error\");\nconst Reader_1 = require(\"./Reader\");\nvar Reader_2 = require(\"./Reader\");\nexports.Reader = Reader_2.Reader;\nclass BufferedReader extends Reader_1.Reader {\n constructor(backend) {\n super();\n this.backend = backend;\n this.buffer = [];\n this.lastContent = \"\";\n this.lastMark = this.locationValue = this.backend.location;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return !!this.backend; }\n get opened() { return !!this.backend; }\n get isEmpty() { return (this.buffer.length == 0 || this.buffer[0].data == \"\\0\") && this.backend.isEmpty; }\n get resource() {\n const location = this.location;\n return location ? location.resource : Uri.Locator.empty;\n }\n get location() {\n return this.locationValue;\n }\n get region() {\n return new Error.Region(this.resource, this.lastMark, this.location, this.lastContent);\n }\n close() {\n return this.backend.close();\n }\n peek(length) {\n if (!length)\n length = 1;\n let next;\n while (length > this.buffer.length && (next = this.backend.read()))\n this.buffer.push({ data: next, location: this.backend.location });\n return this.buffer.length == 0 ? undefined : this.buffer.slice(0, length > this.buffer.length ? this.buffer.length : length).map(value => value.data).join(\"\");\n }\n read(length) {\n if (!length)\n length = 1;\n const result = this.peek(length);\n if (result && result.length > 0) {\n this.locationValue = this.buffer[result.length - 1].location;\n this.buffer.splice(0, result.length);\n this.lastContent += result;\n }\n return result;\n }\n peekIs(value, count) {\n let result;\n if (value)\n if (typeof (value) == \"string\") {\n const v = value;\n while (count && count-- > 0)\n value += v;\n result = this.peek(value.length) == value ? value : undefined;\n }\n else if (value.length > 0 && !(result = this.peekIs(value[0])) && value.length)\n result = this.peekIs(value.slice(1));\n return result;\n }\n readIf(value) {\n let result;\n if (value)\n if (typeof (value) == \"string\")\n result = this.peek(value.length) == value && this.read(value.length) || undefined;\n else if (value.length > 0 && !(result = this.readIf(value[0])) && value.length)\n result = this.readIf(value.slice(1));\n return result;\n }\n readAll() {\n let result = \"\";\n while (this.peek())\n result += this.read();\n return result != \"\" ? result : undefined;\n }\n mark() {\n const result = this.region;\n this.lastMark = this.location;\n this.lastContent = \"\";\n return result;\n }\n static create(backend) {\n return backend ? new BufferedReader(backend) : undefined;\n }\n}\nexports.BufferedReader = BufferedReader;\n//# sourceMappingURL=BufferedReader.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction close(fd) {\n return __awaiter(this, void 0, void 0, function* () { });\n}\nexports.close = close;\nfunction fsync(fd) {\n return __awaiter(this, void 0, void 0, function* () { });\n}\nexports.fsync = fsync;\nfunction open(path, flags, mode) {\n return __awaiter(this, void 0, void 0, function* () { return 0; });\n}\nexports.open = open;\nfunction write(fd, buffer, offset, encoding) {\n return __awaiter(this, void 0, void 0, function* () { return { bytesWritten: 0 }; });\n}\nexports.write = write;\nfunction lstatSync(path, options) { return { isDirectory: () => false }; }\nexports.lstatSync = lstatSync;\nfunction readdirSync(path) { return []; }\nexports.readdirSync = readdirSync;\nfunction readFileSync(path, encoding) { return \"\"; }\nexports.readFileSync = readFileSync;\n//# sourceMappingURL=fs.browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sep = \"/\";\nexports.sep = sep;\n//# sourceMappingURL=path.browser.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Error = require(\"../Error\");\nconst Uri = require(\"../Uri\");\nconst Reader_1 = require(\"./Reader\");\nclass StringReader extends Reader_1.Reader {\n constructor(content, resource) {\n super();\n this.content = content;\n this.resource = resource;\n this.tabSize = 2;\n this.count = 0;\n this.line = 1;\n this.column = 1;\n this.lastContent = \"\";\n this.readable = true;\n this.content += \"\\0\";\n this.lastPosition = this.location;\n }\n get opened() { return this.count + 1 >= this.content.length; }\n get isEmpty() { return this.opened; }\n get location() { return new Error.Location(this.resource, this.line, this.column); }\n get region() { return new Error.Region(this.resource, this.lastPosition, this.location, this.lastContent); }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n const result = !(yield this.isEmpty);\n if (result)\n this.count = this.content.length;\n return result;\n });\n }\n read() {\n let result;\n if (this.count < this.content.length)\n result = this.content.charAt(this.count);\n else if (this.count == this.content.length)\n result = undefined;\n this.count++;\n if (result) {\n switch (result) {\n case \"\\n\":\n this.line++;\n this.column = 1;\n break;\n case \"\\t\":\n this.column += this.tabSize;\n break;\n default:\n this.column++;\n break;\n }\n this.lastContent += result;\n }\n return result;\n }\n mark() {\n const result = this.region;\n this.lastPosition = this.location;\n this.lastContent = \"\";\n return result;\n }\n static create(content, resource) {\n return content != undefined ? new StringReader(content, resource || Uri.Locator.empty) : undefined;\n }\n}\nexports.StringReader = StringReader;\n//# sourceMappingURL=StringReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./fs\");\nconst path = require(\"./path\");\nconst Uri = require(\"../Uri\");\nconst Reader_1 = require(\"./Reader\");\nconst StringReader_1 = require(\"./StringReader\");\nclass FileReader extends Reader_1.Reader {\n constructor(backend) {\n super();\n this.backend = backend;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return this.backend.opened; }\n get isEmpty() { return this.backend.isEmpty; }\n get resource() { return this.backend ? this.backend.resource : Uri.Locator.empty; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n return this.backend.close();\n }\n read() { return this.backend.read(); }\n mark() { return this.backend.mark(); }\n static open(resource) {\n let backend;\n if (resource && (resource.scheme.length == 0 || resource.scheme.length == 1 && resource.scheme[0] == \"file\"))\n try {\n backend = StringReader_1.StringReader.create(fs.readFileSync((resource.isRelative ? \"\" : path.sep) + resource.path.join(path.sep), \"utf-8\"), resource);\n }\n catch (error) {\n console.log(`Failed to open file: ${resource.toString()}`);\n }\n return backend ? new FileReader(backend) : undefined;\n }\n}\nexports.FileReader = FileReader;\nReader_1.Reader.addOpener(p => FileReader.open(p), 10);\n//# sourceMappingURL=FileReader.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./fs\");\nconst path = require(\"./path\");\nconst Uri = require(\"../Uri\");\nconst Error = require(\"../Error\");\nconst Reader_1 = require(\"./Reader\");\nconst FileReader_1 = require(\"./FileReader\");\nclass FolderReader extends Reader_1.Reader {\n constructor(files) {\n super();\n this.files = files;\n this.tabSizeValue = 2;\n this.lastLocation = new Error.Location(Uri.Locator.empty, 0, 0);\n }\n get tabSize() { return this.tabSizeValue; }\n set tabSize(size) {\n this.tabSizeValue = size;\n if (this.current)\n this.current.tabSize = size;\n }\n get readable() { return this.current != undefined && this.current.readable || this.files.length > 0; }\n get opened() { return this.current != undefined || this.files.length > 0; }\n get isEmpty() { return this.files.length == 0 && (!this.current || this.current.isEmpty); }\n get resource() { return this.current ? this.current.resource : this.lastLocation.resource; }\n get location() { return this.current ? this.current.location : this.lastLocation; }\n get region() { return this.current ? this.current.region : new Error.Region(this.resource); }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.current != undefined && (yield this.current.close());\n });\n }\n read() {\n let result;\n if (!this.current && this.files.length > 0) {\n this.current = FileReader_1.FileReader.open(this.files.shift());\n this.current.tabSize = this.tabSize;\n }\n if (this.current) {\n result = this.current.read();\n if (result == undefined || result == \"\\0\") {\n this.current.close();\n this.current = undefined;\n }\n }\n this.lastLocation = this.location;\n return result;\n }\n mark() { return this.current ? this.current.mark() : new Error.Region(this.resource); }\n static getFiles(folder, filetype, ignoreFiles = []) {\n let result = [];\n const files = fs.readdirSync(folder);\n files.forEach(file => {\n const filename = folder + path.sep + file;\n if (ignoreFiles.indexOf(filename) == -1) {\n if (fs.lstatSync(filename).isDirectory())\n result = result.concat(FolderReader.getFiles(filename, filetype, ignoreFiles));\n else if (file.length > filetype.length && file.lastIndexOf(filetype, file.length - filetype.length) === file.length - filetype.length)\n result.push(filename);\n }\n });\n return result;\n }\n static open(resource) {\n let files;\n try {\n if (resource && (resource.scheme.length == 0 || resource.scheme.length == 1 && resource.scheme[0] == \"file\") && resource.isFolder || resource.name.match(\"*\"))\n files = FolderReader.getFiles((resource.isRelative ? \"\" : path.sep) + resource.folder.path.join(path.sep), resource.extension);\n }\n catch (error) {\n }\n return files ? new FolderReader(files.map(f => new Uri.Locator([\"file\"], undefined, f.split(path.sep)))) : undefined;\n }\n}\nexports.FolderReader = FolderReader;\nReader_1.Reader.addOpener((resource) => FolderReader.open(resource), 0);\n//# sourceMappingURL=FolderReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction* generate(next) {\n let result;\n while ((result = next()) != undefined)\n yield result;\n}\nfunction isIterator(item) {\n return item.next instanceof Function;\n}\nfunction* merge(left, right) {\n let result;\n while (!(result = left.next()).done)\n yield result.value;\n if (isIterator(right))\n while (!(result = right.next()).done)\n yield result.value;\n else\n yield right;\n}\nclass Enumerator {\n constructor(backend) {\n this.iterator = backend instanceof Function ? generate(backend) : backend;\n }\n get length() {\n let result = 0;\n while (!this.next().done)\n result++;\n return result;\n }\n get last() {\n return this.nextValue && !this.nextValue.done ? this.nextValue.value : undefined;\n }\n fetch() {\n const result = this.next();\n return result.done ? undefined : result.value;\n }\n next(value) {\n return this.nextValue = this.iterator.next(value);\n }\n append(item) {\n return new Enumerator(merge(this, item));\n }\n map(mapping) {\n return new Enumerator(() => {\n const item = this.fetch();\n return (item != undefined) ? mapping(item) : undefined;\n });\n }\n reduce(reduce, result) {\n const item = this.fetch();\n return item ? this.reduce(reduce, reduce(result, item)) : result;\n }\n apply(apply) {\n const item = this.fetch();\n if (item) {\n apply(item);\n this.apply(apply);\n }\n }\n filter(filter) {\n return new Enumerator(() => {\n let item;\n do\n item = this.fetch();\n while (item != undefined && !filter(item));\n return item;\n });\n }\n toArray() {\n const item = this.fetch();\n let result;\n if (!item)\n result = [];\n else {\n result = this.toArray();\n result.unshift(item);\n }\n return result;\n }\n static from(backend) {\n return new Enumerator(backend);\n }\n}\nexports.Enumerator = Enumerator;\nEnumerator.empty = Enumerator.from(() => undefined);\n//# sourceMappingURL=Enumerator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Enumerator_1 = require(\"./Enumerator\");\nfunction isIterable(other) {\n return other == null ? false : typeof other[Symbol.iterator] === \"function\";\n}\nclass Enumerable {\n constructor(get) {\n this.get = get;\n }\n get length() {\n return this.get().length;\n }\n get first() {\n return this.get().fetch();\n }\n get last() {\n return this.get().last;\n }\n getEnumerator() {\n return new Enumerator_1.Enumerator(this.get());\n }\n [Symbol.iterator]() {\n return this.getEnumerator();\n }\n append(item) {\n return new Enumerable(() => this.get().append(item));\n }\n map(mapping) {\n return new Enumerable(() => this.get().map(mapping));\n }\n reduce(reduce, result) {\n return this.get().reduce(reduce, result);\n }\n apply(apply) {\n this.get().apply(apply);\n }\n filter(filter) {\n return new Enumerable(() => this.get().filter(filter));\n }\n toArray() {\n return this.getEnumerator().toArray();\n }\n static from(get) {\n return isIterable(get) ? new Enumerable(() => new Enumerator_1.Enumerator(get[Symbol.iterator]())) : new Enumerable(() => {\n const r = get();\n return r instanceof Enumerator_1.Enumerator ? r : new Enumerator_1.Enumerator(r);\n });\n }\n}\nexports.Enumerable = Enumerable;\nEnumerable.empty = Enumerable.from([]);\n//# sourceMappingURL=Enumerable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Enumerator_1 = require(\"./Enumerator\");\nclass ArrayEnumerator extends Enumerator_1.Enumerator {\n constructor(backend) {\n super(() => this.position < this.backend.length ? this.backend[this.position++] : undefined);\n this.backend = backend;\n this.position = 0;\n }\n}\nexports.ArrayEnumerator = ArrayEnumerator;\n//# sourceMappingURL=ArrayEnumerator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Enumerator_1 = require(\"./Enumerator\");\nclass BufferedEnumerator extends Enumerator_1.Enumerator {\n constructor(backend) {\n super(() => {\n const result = this.peek(0);\n if (this.buffer.length > 0)\n this.buffer.shift();\n return result;\n });\n this.backend = backend;\n this.buffer = [];\n }\n peek(position) {\n if (!position)\n position = 0;\n let next;\n while (position > this.buffer.length - 1 && (next = this.backend.fetch()))\n this.buffer.push(next);\n return position > this.buffer.length - 1 ? undefined : this.buffer[position];\n }\n}\nexports.BufferedEnumerator = BufferedEnumerator;\n//# sourceMappingURL=BufferedEnumerator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass String {\n static padLeft(value, paddingCharacter, width) {\n return String.pad(value, paddingCharacter, width, true);\n }\n static padRight(value, paddingCharacter, width) {\n return String.pad(value, paddingCharacter, width, false);\n }\n static pad(value, paddingCharacter, width, padLeft) {\n let padding = \"\";\n const count = width - value.length;\n for (let i = 0; i < count; i++)\n padding += paddingCharacter;\n return padLeft ? padding + value : value + padding;\n }\n}\nexports.String = String;\n//# sourceMappingURL=String.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Enumerator_1 = require(\"./Enumerator\");\nexports.Enumerator = Enumerator_1.Enumerator;\nvar Enumerable_1 = require(\"./Enumerable\");\nexports.Enumerable = Enumerable_1.Enumerable;\nvar ArrayEnumerator_1 = require(\"./ArrayEnumerator\");\nexports.ArrayEnumerator = ArrayEnumerator_1.ArrayEnumerator;\nvar BufferedEnumerator_1 = require(\"./BufferedEnumerator\");\nexports.BufferedEnumerator = BufferedEnumerator_1.BufferedEnumerator;\nvar String_1 = require(\"./String\");\nexports.String = String_1.String;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Device_1 = require(\"./Device\");\nclass OutDevice extends Device_1.Device {\n}\nexports.OutDevice = OutDevice;\n//# sourceMappingURL=OutDevice.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Uri = require(\"../Uri\");\nconst Utilities_1 = require(\"../Utilities\");\nconst OutDevice_1 = require(\"./OutDevice\");\nclass Writer extends OutDevice_1.OutDevice {\n constructor() {\n super(...arguments);\n this.newLineSymbol = \"\\n\";\n }\n write(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return message instanceof Utilities_1.Enumerator ? this.writeImplementation(message) :\n message instanceof Array ? this.writeImplementation(new Utilities_1.ArrayEnumerator(message)) :\n this.writeImplementation(new Utilities_1.ArrayEnumerator([message]));\n });\n }\n writeLine(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return message instanceof Utilities_1.Enumerator ? this.writeImplementation(message.append(this.newLineSymbol)) :\n message instanceof Array ? this.writeImplementation(new Utilities_1.ArrayEnumerator([...message, this.newLineSymbol])) :\n message ? this.writeImplementation(new Utilities_1.ArrayEnumerator([message, this.newLineSymbol])) :\n this.writeImplementation(new Utilities_1.ArrayEnumerator([this.newLineSymbol]));\n });\n }\n static addOpener(open, priority) {\n if (!priority)\n priority = 0;\n Writer.openers.push({ open, priority });\n Writer.openers = Writer.openers.sort((left, right) => right.priority - left.priority);\n }\n static open(resource) {\n return __awaiter(this, void 0, void 0, function* () {\n let result;\n if (typeof (resource) == \"string\") {\n const r = Uri.Locator.parse(resource);\n result = r ? yield Writer.open(r) : undefined;\n }\n else {\n let i = 0;\n do\n result = yield Writer.openers[i++].open(resource);\n while (!result && i < Writer.openers.length);\n }\n return result;\n });\n }\n}\nexports.Writer = Writer;\nWriter.openers = [];\n//# sourceMappingURL=Writer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Writer_1 = require(\"./Writer\");\nclass Indenter extends Writer_1.Writer {\n constructor(backend) {\n super();\n this.backend = backend;\n this.autoFlush = true;\n this.indentionSymbol = \"\\t\";\n this.indentionCount = 0;\n this.indentNext = false;\n }\n get resource() { return this.backend.resource; }\n get opened() { return this.backend.opened; }\n get writable() { return this.backend.writable; }\n flush() {\n return this.backend.flush();\n }\n close() {\n return this.backend.close();\n }\n increase() {\n this.indentionCount++;\n return true;\n }\n decrease() {\n this.indentionCount--;\n return this.indentionCount >= 0;\n }\n getIndention() {\n return this.indentionSymbol.repeat(this.indentionCount);\n }\n writeImplementation(buffer) {\n const result = [];\n let item;\n let next = buffer.fetch();\n if (next)\n do {\n item = next;\n next = buffer.fetch();\n if (this.indentNext)\n item = this.getIndention() + item;\n this.indentNext = item.endsWith(this.newLineSymbol);\n item = item.replace(this.newLineSymbol, this.newLineSymbol + this.getIndention());\n if (this.indentNext)\n item = item.substring(0, item.length - this.indentionCount * this.indentionSymbol.length);\n result.push(this.backend.write(item));\n } while (next);\n return Promise.all(result).then(r => r.reduce((previous, current) => previous && current, true));\n }\n}\nexports.Indenter = Indenter;\n//# sourceMappingURL=Indenter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Reader_1 = require(\"./Reader\");\nconst BufferedReader_1 = require(\"./BufferedReader\");\nclass PrefixReader extends Reader_1.Reader {\n constructor(backend, prefix) {\n super();\n this.prefix = prefix;\n this.done = false;\n this.backend = backend instanceof BufferedReader_1.BufferedReader ? backend : BufferedReader_1.BufferedReader.create(backend);\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return this.backend.opened; }\n get isEmpty() { return this.done || this.backend.isEmpty; }\n get resource() { return this.backend.resource; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n return this.backend.close();\n }\n read() {\n let result;\n if (!this.done) {\n result = this.backend.read();\n this.done = result == \"\\n\" && !this.backend.readIf(this.prefix) && !this.backend.peekIs(\"\\n\");\n }\n return result;\n }\n mark() { return this.backend.mark(); }\n static create(backend, prefix) {\n return backend && prefix ? new PrefixReader(backend, prefix) : backend;\n }\n}\nexports.PrefixReader = PrefixReader;\n//# sourceMappingURL=PrefixReader.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./fs\");\nconst path = require(\"./path\");\nconst Writer_1 = require(\"./Writer\");\nclass FileWriter extends Writer_1.Writer {\n constructor(resource, descriptor) {\n super();\n this.resource = resource;\n this.descriptor = descriptor;\n this.autoFlush = false;\n }\n get opened() { return this.descriptor > 0; }\n get writable() { return this.descriptor > 0; }\n flush() {\n return __awaiter(this, void 0, void 0, function* () {\n let result = true;\n try {\n yield fs.fsync(this.descriptor);\n }\n catch (error) {\n result = false;\n }\n return result;\n });\n }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n let result = this.opened;\n if (result) {\n try {\n yield fs.close(this.descriptor);\n }\n catch (error) {\n result = false;\n }\n this.descriptor = 0;\n }\n return result;\n });\n }\n writeImplementation(buffer) {\n return __awaiter(this, void 0, void 0, function* () {\n let result = true;\n const content = Buffer.from(buffer.reduce((r, item) => r + item, \"\"));\n try {\n const r = yield fs.write(this.descriptor, content, 0, \"utf8\");\n result = r.bytesWritten == content.length;\n }\n catch (error) {\n result = false;\n }\n return result && (!this.autoFlush || (yield this.flush()));\n });\n }\n static open(resource) {\n return __awaiter(this, void 0, void 0, function* () {\n let backend;\n if (resource && (resource.scheme.length == 0 || resource.scheme.length == 1 && resource.scheme[0] == \"file\"))\n try {\n backend = yield fs.open((resource.isRelative ? \"\" : path.sep) + resource.path.join(path.sep), \"w\");\n }\n catch (error) {\n backend = undefined;\n }\n return backend ? new FileWriter(resource, backend) : undefined;\n });\n }\n}\nexports.FileWriter = FileWriter;\nWriter_1.Writer.addOpener(FileWriter.open);\n//# sourceMappingURL=FileWriter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Reader_1 = require(\"./Reader\");\nconst BufferedReader_1 = require(\"./BufferedReader\");\nclass TillReader extends Reader_1.Reader {\n constructor(backend, endMark) {\n super();\n this.endMark = endMark;\n this.done = false;\n this.backend = backend instanceof BufferedReader_1.BufferedReader ? backend : BufferedReader_1.BufferedReader.create(backend);\n this.done = this.backend.peekIs(this.endMark) != undefined;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return !this.done && this.backend.opened; }\n get isEmpty() { return this.done || this.backend.isEmpty; }\n get resource() { return this.backend.resource; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n const result = !this.done;\n if (result)\n this.done = true;\n return Promise.resolve(result);\n }\n read() {\n let result;\n if (!this.done) {\n result = this.backend.read();\n this.done = this.backend.peekIs(this.endMark) != undefined;\n }\n return result;\n }\n mark() { return this.backend.mark(); }\n static create(backend, endMark) {\n return backend && endMark ? new TillReader(backend, endMark) : backend;\n }\n}\nexports.TillReader = TillReader;\n//# sourceMappingURL=TillReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Reader_1 = require(\"./Reader\");\nconst BufferedReader_1 = require(\"./BufferedReader\");\nclass UntilReader extends Reader_1.Reader {\n constructor(backend, endMark) {\n super();\n this.endMark = endMark;\n this.done = -1;\n this.backend = backend instanceof BufferedReader_1.BufferedReader ? backend : BufferedReader_1.BufferedReader.create(backend);\n const peeked = this.backend.peekIs(this.endMark);\n if (peeked)\n this.done = peeked.length;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return !this.done && this.backend.opened; }\n get isEmpty() { return this.done == 0 || this.backend.isEmpty; }\n get resource() { return this.backend.resource; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n const result = this.done > 0;\n if (result)\n this.done = 0;\n return Promise.resolve(result);\n }\n read() {\n let result;\n if (this.done != 0) {\n result = this.backend.read();\n let peeked;\n if (this.done > 0)\n this.done--;\n else if (peeked = this.backend.peekIs(this.endMark))\n this.done = peeked.length;\n }\n return result;\n }\n mark() { return this.backend.mark(); }\n static create(backend, endMark) {\n return backend && endMark ? new UntilReader(backend, endMark) : backend;\n }\n}\nexports.UntilReader = UntilReader;\n//# sourceMappingURL=UntilReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BufferedReader_1 = require(\"./BufferedReader\");\nexports.BufferedReader = BufferedReader_1.BufferedReader;\nvar Device_1 = require(\"./Device\");\nexports.Device = Device_1.Device;\nvar FileReader_1 = require(\"./FileReader\");\nexports.FileReader = FileReader_1.FileReader;\nvar FolderReader_1 = require(\"./FolderReader\");\nexports.FolderReader = FolderReader_1.FolderReader;\nvar Indenter_1 = require(\"./Indenter\");\nexports.Indenter = Indenter_1.Indenter;\nvar InDevice_1 = require(\"./InDevice\");\nexports.InDevice = InDevice_1.InDevice;\nvar OutDevice_1 = require(\"./OutDevice\");\nexports.OutDevice = OutDevice_1.OutDevice;\nvar PrefixReader_1 = require(\"./PrefixReader\");\nexports.PrefixReader = PrefixReader_1.PrefixReader;\nvar Reader_1 = require(\"./Reader\");\nexports.Reader = Reader_1.Reader;\nvar StringReader_1 = require(\"./StringReader\");\nexports.StringReader = StringReader_1.StringReader;\nvar FileWriter_1 = require(\"./FileWriter\");\nexports.FileWriter = FileWriter_1.FileWriter;\nvar TillReader_1 = require(\"./TillReader\");\nexports.TillReader = TillReader_1.TillReader;\nvar UntilReader_1 = require(\"./UntilReader\");\nexports.UntilReader = UntilReader_1.UntilReader;\nvar Writer_1 = require(\"./Writer\");\nexports.Writer = Writer_1.Writer;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Error = require(\"./Error\");\nexports.Error = Error;\nconst IO = require(\"./IO\");\nexports.IO = IO;\nconst Uri = require(\"./Uri\");\nexports.Uri = Uri;\nconst Utilities = require(\"./Utilities\");\nexports.Utilities = Utilities;\n//# sourceMappingURL=index.js.map","import { Error, IO } from \"@cogneco/mend\";\nexport class Source extends IO.BufferedReader {\n constructor(reader, errorHandler) {\n super(typeof reader == \"string\" ? IO.StringReader.create(reader) : reader);\n this.errorHandler = errorHandler;\n }\n raise(message, level, type = \"lexical\", region) {\n if (!(message instanceof Error.Message)) {\n if (!level)\n level = Error.Level.Critical;\n if (!region)\n region = this.region;\n message = new Error.Message(message, level, type, region);\n }\n if (this.errorHandler)\n this.errorHandler.raise(message);\n }\n requirePrefix(prefix) {\n return new Source(new IO.PrefixReader(this, prefix), this.errorHandler);\n }\n till(endMark) {\n return new Source(IO.TillReader.create(this, endMark), this.errorHandler);\n }\n until(endMark) {\n return new Source(IO.UntilReader.create(this, endMark), this.errorHandler);\n }\n peekIsSymbol(symbols) {\n return (this.peekIs(symbols ?? [\"!\", \"(\", \")\", \"[\", \"]\", \"|\", \"*\", \":\", \".\", \"<=\", \">=\", \"<\", \">\", \" * \", \" + \", \" - \", \" / \", \",\"])?.length ?? false);\n }\n peekIsWhitespace() {\n return !!this.peekIs([\" \", \"\\n\", \"\\t\"]);\n }\n}\n//# sourceMappingURL=Source.js.map","import { Utilities } from \"@cogneco/mend\";\nimport { Source } from \"./Source\";\nfunction tokenize(reader, errorHandler, symbols) {\n const source = new Source(reader, errorHandler);\n return new Utilities.Enumerator(() => {\n let result;\n let peekSymbolLength = 1;\n if (!source.isEmpty) {\n while (source.peekIsWhitespace() && !source.peekIsSymbol(symbols))\n source.read();\n if ((peekSymbolLength = source.peekIsSymbol(symbols)))\n result = { value: source.read(peekSymbolLength) || \"\", region: source.mark() };\n else {\n let value = \"\";\n while (!source.isEmpty && !source.peekIsWhitespace() && !source.peekIsSymbol(symbols))\n value += source.read();\n if (value)\n result = { value, region: source.mark() };\n }\n }\n return result;\n });\n}\nexport { Source, tokenize };\n//# sourceMappingURL=index.js.map","import { tokenize } from \"../lexer\";\nexport class Base {\n tokenize(input) {\n return tokenize(input, undefined, [\n \"!\",\n \"(\",\n \")\",\n \"[\",\n \"]\",\n \"|\",\n \" | \",\n \"*\",\n \":\",\n \".\",\n \"<=\",\n \">=\",\n \"<\",\n \">\",\n \" * \",\n \" + \",\n \"+\",\n \" - \",\n \"-\",\n \" / \",\n ])\n .map(t => ({ value: t.value }))\n .toArray();\n }\n}\n//# sourceMappingURL=Base.js.map","import { Base } from \"./Base\";\nexport class Array extends Base {\n constructor(input) {\n super();\n this.class = \"array\";\n this.array = input;\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n return Array.completor\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []);\n }\n isType(value) {\n return global.Array.isArray(value);\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n static is(value) {\n return value instanceof Array;\n }\n}\nArray.completor = [];\n//# sourceMappingURL=Array.js.map","export var Cursor;\n(function (Cursor) {\n function is(value) {\n return typeof value == \"object\" && typeof value.start == \"number\" && typeof value.end == \"number\";\n }\n Cursor.is = is;\n})(Cursor || (Cursor = {}));\n//# sourceMappingURL=Cursor.js.map","import { Cursor } from \"./Cursor\";\nexport var Completion;\n(function (Completion) {\n function stringify(completions) {\n return completions.map(c => typeof c.cursor == \"number\"\n ? c.value.slice(0, c.cursor) + \"_\" + c.value.slice(c.cursor, c.value.length)\n : c.value + \"_\");\n }\n Completion.stringify = stringify;\n function prepend(prefix, completion, suffix) {\n return Array.isArray(completion)\n ? completion.map(c => prepend(prefix, c, suffix))\n : {\n value: prefix + completion.value + (suffix ?? \"\"),\n cursor: typeof completion?.cursor == \"number\"\n ? completion?.cursor + prefix.length\n : Cursor.is(completion.cursor)\n ? { start: completion.cursor.start + prefix.length, end: completion.cursor.end + prefix.length }\n : completion.value.length + prefix.length,\n suggestion: completion.suggestion,\n };\n }\n Completion.prepend = prepend;\n})(Completion || (Completion = {}));\n//# sourceMappingURL=Completion.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class Boolean extends SType {\n constructor() {\n super();\n this.class = \"boolean\";\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n const result = type\n ? Boolean.literals.filter(c => c.value.startsWith(tokens[0]?.value ?? \"\"))\n : tokens[0]?.value == \":\"\n ? Completion.prepend(\":\", Boolean.literals.filter(c => c.value.startsWith(tokens[1]?.value ?? \"\")))\n : [];\n return [\n ...(result ?? []),\n ...(type ? [] : Boolean.completor)\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ];\n }\n isType(value) {\n return typeof value == \"boolean\";\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n}\nBoolean.literals = [\n { value: \"true\", suggestion: { value: \"true\" } },\n { value: \"false\", suggestion: { value: \"false\" } },\n];\nBoolean.completor = [];\n//# sourceMappingURL=Boolean.js.map","import { Completion } from \"./Completion\";\nexport var Completor;\n(function (Completor) {\n function functions(tokens, argument, completion) {\n return tokens.length == 0\n ? [{ value: \":\", suggestion: { value: \":\" } }]\n : tokens.length <= 3 &&\n tokens[0].value == \":\" &&\n completion.value.startsWith(tokens[1]?.value ?? \"\") &&\n (tokens[2]?.value ?? \"(\") == \"(\"\n ? Completion.prepend(\":\", [completion])\n : tokens.length <= 4 &&\n tokens.slice(0, 4).reduce((string, token) => string + token.value, \"\") == \":\" + completion.value\n ? Completion.prepend(\":\" + completion.value.substring(0, completion.value.length - 1), argument(), \")\")\n : tokens.length == 5 &&\n tokens.slice(0, 3).reduce((string, token) => string + token.value, \"\") + tokens[4].value ==\n \":\" + completion.value\n ? Completion.prepend(\":\" + completion.value.substring(0, completion.value.length - 1), argument(tokens.slice(3, tokens.length - 1)), \")\")\n : tokens.length > 5 &&\n tokens.slice(0, 3).reduce((string, token) => string + token.value, \"\") + tokens[tokens.length - 1].value ==\n \":\" + completion.value\n ? Completion.prepend(\":\" + completion.value.substring(0, completion.value.length - 1), argument(tokens.slice(3, tokens.length - 1)), \")\")\n : [];\n }\n Completor.functions = functions;\n function expressions(tokens, argument, completion) {\n return tokens.length == 0\n ? [{ value: \":\", suggestion: { value: \":\" } }]\n : tokens[0].value != \":\"\n ? []\n : tokens.length == 1\n ? Completion.prepend(\":\", [completion])\n : Completion.prepend(\":\", argument(tokens.slice(1)));\n }\n Completor.expressions = expressions;\n function operators(tokens, argument, completion) {\n return tokens.length >= 1 && tokens[0].value == completion.value\n ? Completion.prepend(completion.value, argument(tokens.slice(1)))\n : tokens.length == 0 ||\n (tokens.length == 1 && completion.value.startsWith(tokens[0].value)) ||\n tokens[0].value == completion.value.replace(/ /g, \"\")\n ? [completion]\n : [];\n }\n Completor.operators = operators;\n})(Completor || (Completor = {}));\n//# sourceMappingURL=Completor.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class Number extends SType {\n constructor(input) {\n super();\n this.input = input;\n this.class = \"number\";\n if (input)\n this.value = input;\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n return [\n ...(tokens.length > 0 && tokens[0].value == \":\" && baseObject\n ? Completion.prepend(\":\", baseObject.complete(tokens.slice(1), undefined, this))\n : baseObject && tokens.length >= 0 && type\n ? Completion.prepend(\" \", baseObject?.complete(tokens, undefined, undefined))\n : []),\n ...(type ? Number.completorArgument : Number.completor)\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ];\n }\n isType(value) {\n return isNaN(+value) ? false : true;\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n static addArgument(...pattern) {\n this.completorArgument.push(...pattern);\n }\n static is(value) {\n return value instanceof Number || !global.Number.isNaN(value);\n }\n}\nNumber.completor = [];\nNumber.completorArgument = [];\n//# sourceMappingURL=Number.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class TObject extends SType {\n constructor(properties) {\n super();\n this.properties = properties;\n this.class = \"object\";\n this.completions = Object.keys(this.properties).map(p => ({ value: p, suggestion: { value: p } }));\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n let result;\n const filtered = this.filterByType(type);\n if (!baseObject) {\n const matched = tokens.length > 0 ? this.match(tokens[0], filtered) : undefined;\n if (matched)\n result =\n tokens.length >= 1\n ? Completion.prepend(matched.value, this.properties[matched.value].complete(tokens.slice(1), this, type))\n : [];\n else if (type && tokens.length > 2 && type.isType(tokens[0].value + tokens[1].value + tokens[2].value))\n result = Completion.prepend(tokens[0].value + tokens[1].value + tokens[2].value, type.complete(tokens.slice(3), this, type));\n else if (type && tokens.length > 0 && type.isType(tokens[0].value))\n result = Completion.prepend(tokens[0].value, type.complete(tokens.slice(1), this, type));\n else {\n let found;\n result =\n tokens.length == 0\n ? [...this.addDot(filtered, type), ...(type?.class == \"number\" ? [] : TObject.wildcard)]\n : tokens.length == 1 && (found = TObject.wildcard.find(w => w.value == tokens[0].value))\n ? Completion.prepend(found.value, this.completions, type ? \".\" : \"\")\n : tokens.length >= 1 && (found = TObject.wildcard.find(w => w.value == tokens[0].value))\n ? Completion.prepend(found.value, this.complete(tokens.slice(1)))\n : this.addDot(this.partial(tokens[0], filtered), type);\n }\n }\n else\n result =\n tokens.length == 0\n ? [{ value: \".\", suggestion: { value: \".\" } }]\n : tokens[0].value != \".\"\n ? []\n : tokens.length == 1\n ? Completion.prepend(\".\", this.addDot(filtered, type))\n : this.properties[tokens[1].value]\n ? Completion.prepend(\".\" + tokens[1].value, this.properties[tokens[1].value].complete(tokens.slice(2), baseObject, type))\n : Completion.prepend(\".\", this.addDot(this.partial(tokens[1], filtered), type));\n return [\n ...result.reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ...TObject.completor.flatMap(p => p(tokens, this, baseObject)),\n ];\n }\n filterByType(type) {\n return type\n ? this.completions.filter(c => this.properties[c.value].class == type.class ||\n (this.properties[c.value].class == \"object\"\n ? this.properties[c.value].filterByType(type).length > 0\n : false))\n : this.completions;\n }\n addDot(completions, type) {\n return !completions\n ? []\n : type\n ? completions.map(c => this.properties[c.value].class == \"object\"\n ? { value: c.value + \".\", suggestion: { value: c.suggestion?.value + \".\" } }\n : c)\n : completions;\n }\n partial(token, completions) {\n const result = completions.filter(c => c.value.startsWith(token.value));\n return result && result.length > 0 ? result : undefined;\n }\n match(token, completions) {\n const result = completions.filter(c => c.value == token.value);\n return result && result.length > 0 ? result[0] : undefined;\n }\n isType(value) {\n return false;\n }\n static add(...completor) {\n this.completor.push(...completor);\n }\n}\nTObject.wildcard = [\n { value: \"!\", cursor: 1, suggestion: { value: \"!\", description: \"not\" } },\n];\nTObject.completor = [];\n//# sourceMappingURL=Object.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class String extends SType {\n constructor(input) {\n super();\n this.class = \"string\";\n if (input)\n this.value = input;\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n let result;\n if (type)\n result = this.value?.startsWith(tokens[0]?.value ?? \"\")\n ? [{ value: this.value, suggestion: { value: this.value } }]\n : undefined;\n else\n result =\n tokens.length == 0 || tokens[0].value != \":\"\n ? undefined\n : this.value?.startsWith(tokens[1]?.value ?? \"\")\n ? [Completion.prepend(\":\", { value: this.value, suggestion: { value: this.value } })]\n : undefined;\n return [\n ...(result ?? []),\n ...(type ? [] : String.completor)\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ];\n }\n isType(value) {\n return typeof value.value == \"string\";\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n static is(value) {\n return value instanceof String;\n }\n}\nString.completor = [];\n//# sourceMappingURL=String.js.map","import { Base as SType } from \"./Base\";\nexport class Union extends SType {\n constructor(type) {\n super();\n this.type = type;\n this.class = \"union\";\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n return this.type ? this.type?.flatMap(t => t?.complete(tokens, baseObject, type) ?? []) : [];\n }\n isType(value) {\n return value instanceof Union;\n }\n static is(value) {\n return value instanceof Union;\n }\n}\n//# sourceMappingURL=Union.js.map","import { Array as TArray } from \"./Array\";\nimport { Boolean as TBoolean } from \"./Boolean\";\nimport { Completion as TCompletion } from \"./Completion\";\nimport { Completor as TCompletor } from \"./Completor\";\nimport { Number as TNumber } from \"./Number\";\nimport { TObject } from \"./Object\";\nimport { String as TString } from \"./String\";\nimport { Union as TUnion } from \"./Union\";\nexport var Type;\n(function (Type) {\n function complete(template, input) {\n const completions = template.complete(input);\n return completions\n .filter(c => !input.includes(c.value) && c.suggestion?.value)\n .map(c => ({\n full: c.value,\n cursor: c?.cursor ?? c.value.length,\n addon: c?.suggestion?.value,\n description: c?.suggestion?.description,\n }));\n }\n Type.complete = complete;\n function convert(value) {\n let result;\n switch (typeof value) {\n case \"object\":\n result = global.Array.isArray(value)\n ? new TArray(value.map(e => convert(e)))\n : new TObject(global.Object.entries(value).reduce((r, c) => {\n return { ...r, [c[0]]: convert(c[1]) };\n }, {}));\n break;\n case \"string\":\n result = new TString(value);\n break;\n default:\n result = new TNumber(value);\n break;\n }\n return result;\n }\n Type.convert = convert;\n Type.Array = TArray;\n Type.Boolean = TBoolean;\n Type.Completion = TCompletion;\n Type.Object = TObject;\n Type.String = TString;\n Type.Number = TNumber;\n Type.Union = TUnion;\n Type.Completor = TCompletor;\n})(Type || (Type = {}));\n//# sourceMappingURL=index.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class EndsWith extends Rule {\n constructor(needle) {\n super();\n this.needle = needle;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"EndsWith\";\n }\n is(value) {\n return typeof value == \"string\" && value.endsWith(this.needle);\n }\n toString() {\n return `*${this.needle}`;\n }\n}\nexport function endsWith(needle, value) {\n const result = new EndsWith(needle);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return !tokens || (tokens[0].value == \"*\" && string.value && string.value.endsWith(tokens[1]?.value ?? \"\"))\n ? [Type.Completion.prepend(\"*\", { value: string?.value ?? \"\", suggestion: { value: string?.value ?? \"\" } })]\n : [];\n }, { value: \"*\", suggestion: { value: \"*\", description: \"endswith\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=EndsWith.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Every extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 100;\n this.class = \"Every\";\n }\n is(value) {\n return Array.isArray(value) && value.every(v => this.criteria.is(v));\n }\n toString() {\n return `every(${this.criteria.toString()})`;\n }\n}\nexport function every(criteria, value) {\n const result = new Every(create(criteria));\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type) {\n const arrayArgumentor = (tokens) => type.array.some(Type.String.is) && tokens\n ? type.array\n .filter(Type.String.is)\n .map(p => p.complete([{ value: \":\" }, ...tokens]))\n .reduce((result, element) => Array.isArray(element) ? result.concat(element) : element ? [...result, element] : result, [])\n : !tokens && type.array.some(Type.String.is)\n ? type.array.filter(Type.String.is).map(e => ({ value: e?.value ?? \"\" }))\n : type.array.some(Type.Number.is) && tokens\n ? type.array\n .filter(Type.Number.is)\n .map(e => e.complete(tokens))\n .reduce((result, element) => Array.isArray(element) ? result.concat(element) : element ? [...result, element] : result, [])\n : !tokens && type.array.some(Type.Number.is)\n ? type.array.filter(Type.Number.is).map(e => ({ value: (e?.value ?? \"\").toString() }))\n : [];\n return Completor.functions(tokens, arrayArgumentor, {\n value: \"every()\",\n cursor: 6,\n suggestion: { value: \"every()\" },\n });\n}\nType.Array.add(complete);\n//# sourceMappingURL=Every.js.map","import { Rule } from \"./Rule\";\nexport class FunctionCall extends Rule {\n constructor(identifier, argument, definition) {\n super();\n this.identifier = identifier;\n this.argument = argument;\n this.definition = definition;\n this.precedence = 85;\n this.class = \"FunctionCall\";\n }\n is(value) {\n return this.definition?.is(value) ?? true;\n }\n toString() {\n return `${this.identifier}(${this.argument.join(\", \")})`;\n }\n}\nexport function isType(value) {\n return typeof value == \"object\" && value?.class == \"FunctionCall\";\n}\n//# sourceMappingURL=FunctionCall.js.map","export class Expression {\n stringify(precedence = 0) {\n let result = this.toString();\n if (this.precedence < precedence)\n result = \"(\" + result + \")\";\n return result;\n }\n}\n//# sourceMappingURL=Expression.js.map","import { Expression } from \"./Expression\";\nexport class Value extends Expression {\n constructor(value, name) {\n super();\n this.name = name;\n this.precedence = Value.precedence;\n this.class = \"Value\";\n if (typeof value == \"string\")\n this.value = isNaN(+value.replace(\",\", \".\")) ? value : +value.replace(\",\", \".\");\n else\n this.value = value;\n }\n toString() {\n return this.name ? `${this.name?.toString()}.` + this.value.toString() : this.value.toString();\n }\n evaluate(variable) {\n return variable ? this.get(variable) : +this.value;\n }\n get(variable) {\n return typeof this.value == \"string\"\n ? +variable[this.value]\n : this.name && typeof this.value == \"object\"\n ? this.value.get(variable[this.name])\n : +this.value;\n }\n static create(value, name) {\n return new Value(value, name);\n }\n}\nValue.precedence = 19;\n//# sourceMappingURL=Value.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class GreaterThan extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"GreaterThan\";\n this.symbol = \">\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) >\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function greaterThan(criteria, value) {\n const result = new GreaterThan(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \">\",\n suggestion: { value: \">\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=GreaterThan.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class GreaterThanOrEqual extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"GreaterThanOrEqual\";\n this.symbol = \">=\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) >=\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function greaterThanOrEqual(criteria, value) {\n const result = new GreaterThanOrEqual(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \">=\",\n suggestion: { value: \">=\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=GreaterThanOrEqual.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Has extends Rule {\n constructor(property) {\n super();\n this.property = property;\n this.precedence = 85;\n this.class = \"Has\";\n }\n is(value, property) {\n return typeof value == \"object\" && value\n ? Object.entries(value).some(e => {\n property = typeof property == \"string\" ? property : this.property;\n return e[0] == property\n ? true\n : typeof e[1] == \"object\" && e[1]\n ? this.is(e[1], property.includes(\".\") && property.split(\".\")[0] == e[0] ? property.split(\".\")[1] : undefined)\n : false;\n })\n : false;\n }\n toString() {\n return `has(${this.property})`;\n }\n}\nexport function has(criteria, value) {\n const result = new Has(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return baseObject && type?.class == \"object\"\n ? Completor.functions(tokens, (tokens) => type.completions.filter(c => c.value.startsWith(tokens ? tokens[0].value : \"\")), {\n value: \"has()\",\n cursor: 4,\n suggestion: { value: \"has()\" },\n })\n : [];\n}\nType.Object.add(complete);\n//# sourceMappingURL=Has.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Includes extends Rule {\n constructor(needle) {\n super();\n this.needle = needle;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Includes\";\n }\n is(value) {\n return typeof value == \"string\" && value.includes(this.needle);\n }\n toString() {\n return `*${this.needle}*`;\n }\n}\nexport function includes(needle, value) {\n const result = new Includes(needle);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return !tokens ||\n (tokens.length == 3 && string.value?.includes(tokens[1].value) && string.value != tokens[1].value) ||\n (tokens.length == 2 && tokens[0].value + tokens[1].value == \"**\")\n ? [\n Type.Completion.prepend(\"*\", { value: string?.value ?? \"\", suggestion: { value: string?.value ?? \"\" } }, \"*\"),\n ]\n : tokens.length == 1 && tokens[0].value == \"*\"\n ? [{ value: \"**\", suggestion: { value: \"**\", description: \"includes\" } }]\n : [];\n }, { value: \"**\", cursor: 1, suggestion: { value: \"**\", description: \"includes\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=Includes.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nexport class Some extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 100;\n this.class = \"Some\";\n }\n is(value, object) {\n return Array.isArray(value) && value.some(v => this.criteria.is(v, object));\n }\n toString() {\n return `some(${this.criteria.toString()})`;\n }\n}\nexport function some(criteria, value) {\n const result = new Some(create(criteria));\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return tokens.length == 0\n ? [{ value: \":\", suggestion: { value: \":\" } }]\n : tokens[0].value != \":\"\n ? []\n : tokens.length == 1 && tokens[0].value == \":\"\n ? Type.Completion.prepend(\":\", type.array\n .filter(Type.String.is)\n .filter(e => e.value && e.value != \"string\")\n .map(e => ({ value: e?.value ?? \"\", suggestion: { value: e?.value ?? \"\" } })))\n : tokens.length == 2 && tokens[0].value == \":\"\n ? Type.Completion.prepend(\":\", type.array\n .filter(Type.String.is)\n .filter(e => e.value && e.value != \"string\" && e.value.startsWith(tokens[1].value))\n .map(e => ({ value: e?.value ?? \"\", suggestion: { value: e?.value ?? \"\" } })))\n : [];\n}\nType.Array.add(complete);\n//# sourceMappingURL=Some.js.map","import { isCriteria } from \"./Criteria\";\nimport { add, Rule } from \"./Rule\";\nimport { some } from \"./Some\";\nexport class Is extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Is\";\n this.symbol = \":\";\n }\n is(value, object) {\n return Array.isArray(value) && isCriteria(this.value)\n ? some(this.value, value)\n : (typeof value == \"boolean\" ? value.toString() : isNaN(+value) ? value : +value) ==\n (typeof this.value == \"object\" ? this.value.evaluate(object) : this.value);\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function is(criteria, value) {\n const result = new Is(criteria);\n return value ? result.is(value) : result;\n}\nadd(criteria => typeof criteria == \"bigint\" ||\n typeof criteria == \"boolean\" ||\n typeof criteria == \"number\" ||\n typeof criteria == \"string\"\n ? new Is(criteria)\n : undefined);\n//# sourceMappingURL=Is.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class LesserThan extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"LesserThan\";\n this.symbol = \"<\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) <\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function lesserThan(criteria, value) {\n const result = new LesserThan(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \"<\",\n suggestion: { value: \"<\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=LesserThan.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class LesserThanOrEqual extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"LesserThanOrEqual\";\n this.symbol = \"<=\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) <=\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function lesserThanOrEqual(criteria, value) {\n const result = new LesserThanOrEqual(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \"<=\",\n suggestion: { value: \"<=\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=LesserThanOrEqual.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Match extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Match\";\n }\n is(value) {\n return typeof value == \"string\" && this.criteria.test(value);\n }\n toString() {\n return `/${this.criteria}/`;\n }\n}\nexport function match(criteria) {\n return new Match(criteria);\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return tokens && tokens?.length == 1 && tokens[0].value == \"/\" ? [{ value: \"//\", cursor: 1 }] : [];\n }, { value: \"//\", cursor: 1, suggestion: { value: \"//\", description: \"match\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=Match.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Not extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = Not.precedence;\n this.class = \"Not\";\n }\n is(value) {\n return !this.criteria.is(value);\n }\n toString() {\n return `!${this.criteria.stringify(this.precedence)}`;\n }\n}\nNot.precedence = 90;\nexport function not(criteria, value) {\n const result = new Not(create(criteria));\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return type && type.class != \"object\" && baseObject\n ? Completor.expressions(tokens, (tokens) => {\n return tokens[0].value != \"!\"\n ? []\n : Type.Completion.prepend(\"!\", type.complete(tokens.slice(1), baseObject, type));\n }, { value: \"!\", cursor: 1, suggestion: { value: \"!\", description: \"not\" } })\n : [];\n}\nType.String.add(complete);\nType.Number.add(complete);\nType.Boolean.add(complete);\nType.Object.add(complete);\n//# sourceMappingURL=Not.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nexport class Or extends Rule {\n constructor(criterias) {\n super();\n this.precedence = Or.precedence;\n this.class = \"Or\";\n this.criteria = criterias.reduce((r, c) => (c instanceof Or ? [...r, ...c.criteria] : [...r, c]), []);\n }\n is(value) {\n return this.criteria.some(c => c.is(value));\n }\n toString() {\n return this.criteria.map(c => c.stringify(this.precedence)).join(\" | \");\n }\n}\nOr.precedence = 30;\nexport function or(...criterias) {\n return new Or(criterias.map(create));\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, undefined) : []), {\n value: \" | \",\n suggestion: { value: \"|\", description: \"or\" },\n });\n}\nType.Number.addArgument(complete);\n//# sourceMappingURL=Or.js.map","import { Error, Utilities } from \"@cogneco/mend\";\nexport class Source extends Utilities.BufferedEnumerator {\n constructor(tokens, errorHandler) {\n super(Array.isArray(tokens) ? new Utilities.ArrayEnumerator(tokens) : tokens);\n this.errorHandler = errorHandler;\n }\n clone(start = \"(\", end = \")\") {\n let nestingCount = 0;\n return new Source(new Utilities.Enumerator(() => {\n let result;\n if (this.peekIs(start))\n nestingCount++;\n else if (this.peekIs(end))\n nestingCount--;\n if (nestingCount >= 0)\n result = this.fetch();\n return result;\n }), this);\n }\n peekIs(...needles) {\n return needles.every((needle, index) => {\n const peeked = this.peek(index);\n return peeked && peeked.value && Source.is(needle, peeked.value);\n });\n }\n fetchIf(...needles) {\n const result = [];\n if (this.peekIs(...needles))\n needles.forEach(_ => result.push(this.fetch()));\n return needles.length == 1\n ? result.length == 1\n ? result[0]\n : undefined\n : needles.length == result.length\n ? result\n : undefined;\n }\n mark() {\n return Utilities.Enumerable.from(Utilities.Enumerable.empty);\n }\n raise(message, level = Error.Level.Critical, type = \"grammatical\", region) {\n if (typeof message == \"string\") {\n if (!region && this.last)\n region = this.last.region;\n message = new Error.Message(message, level, type, region);\n }\n this.errorHandler.raise(message);\n }\n static is(needle, value) {\n return Array.isArray(needle)\n ? needle.some(n => Source.is(n, value))\n : typeof needle != \"string\"\n ? needle.test(value)\n : needle.startsWith(\"!\") && needle != \"!\"\n ? !Source.is(needle.substring(1), value)\n : needle == \"any\"\n ? Source.symbol.every(s => s != value)\n : needle == \"symbol\"\n ? Source.symbol.some(s => s == value)\n : needle == \"identifier\"\n ? /[A-Za-z][A-Za-z0-9_]*/.test(value)\n : needle == value;\n }\n}\nSource.wildcard = [\"*\", \"?\"];\nSource.separator = [\"(\", \")\", \".\"];\nSource.operator = [\"!\", \"|\"];\nSource.comparator = [\"<\", \"<=\", \">\", \">=\", \":\"];\nSource.binaryOperator = [\" * \", \" + \", \" - \"];\nSource.symbol = [...Source.wildcard, ...Source.separator, ...Source.operator, ...Source.comparator];\n//# sourceMappingURL=Source.js.map","import { Error } from \"@cogneco/mend\";\nimport { And } from \"../And\";\nimport * as lexer from \"../lexer\";\nimport { Or } from \"../Or\";\nimport { Rule } from \"../Rule\";\nimport { Source } from \"./Source\";\nexport function parse(source, handler) {\n if (typeof source == \"string\") {\n handler = handler || new Error.ConsoleHandler();\n const tokens = lexer.tokenize(source, handler).toArray();\n source = new Source(tokens, handler);\n }\n handler = handler instanceof Rule ? handler : undefined;\n const result = [];\n while (source.peek()) {\n if (source.fetchIf(\"|\"))\n result[result.length - 1] = new Or([result[result.length - 1], parseNext(0, source)]);\n else\n result.push(parseNext(0, source));\n }\n return result.length == 1 ? result[0] : new And(result);\n}\nexport function parseNext(previous, source) {\n let result;\n const precedenceTest = typeof previous == \"number\" ? p => previous < p : p => previous.precedence > p;\n const left = typeof previous == \"number\" ? undefined : previous;\n for (const parser of parsers)\n if (precedenceTest(parser[1] || Number.MAX_SAFE_INTEGER)) {\n const r = parser[0](source, left);\n if (r) {\n result = parseNext(r, source);\n break;\n }\n }\n return result || left || new And([]);\n}\nconst parsers = [];\nexport function add(parser, precedence) {\n parsers.push([parser, precedence]);\n}\n//# sourceMappingURL=parse.js.map","import { Error } from \"@cogneco/mend\";\nimport { Expression } from \"../Expression\";\nimport * as lexer from \"../lexer\";\nimport { Value } from \"../Value\";\nimport { Source } from \"./Source\";\nexport function parseExpression(source, handler) {\n if (typeof source == \"string\") {\n handler = handler || new Error.ConsoleHandler();\n const tokens = lexer.tokenize(source, handler).toArray();\n source = new Source(tokens, handler);\n }\n handler = handler instanceof Expression ? handler : undefined;\n let result;\n let algebra = false;\n let comparator = false;\n while (!result != algebra && !comparator && source.peek()) {\n let i = 1;\n algebra = false;\n comparator = false;\n while (!algebra && !comparator && source.peek(i)) {\n algebra = Source.binaryOperator.some(c => source.peek(i)?.value == c);\n comparator = Source.comparator.some(c => source.peek(i)?.value == c);\n i++;\n }\n result = parseNextExpression(result ?? Number.MAX_SAFE_INTEGER, source);\n }\n if (!result)\n source.raise(\"Missing Expression\");\n return result ?? new Value(NaN);\n}\nexport function parseNextExpression(previous, source) {\n let result;\n const left = typeof previous == \"number\" ? undefined : previous;\n for (const expressionParser of expressionParsers) {\n const r = expressionParser[0](source, previous);\n if (r) {\n result = r;\n break;\n }\n }\n return result || left;\n}\nconst expressionParsers = [];\nexport function addExpression(expressionParser, precedence) {\n expressionParsers.push([expressionParser, precedence]);\n}\n//# sourceMappingURL=Expression.js.map","import { Every } from \"../Every\";\nimport { add, parse } from \"./parse\";\nadd(source => {\n const result = source.fetchIf(\":\", \"every\", \"(\") && new Every(parse(source.clone()));\n if (result && !source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n return result;\n});\n//# sourceMappingURL=Every.js.map","import { Some } from \"../Some\";\nimport { add, parse } from \"./parse\";\nadd(source => {\n const result = source.fetchIf(\":\", \"some\", \"(\") && new Some(parse(source.clone()));\n if (result && !source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n return result;\n});\n//# sourceMappingURL=Some.js.map","import { addExpression, parseExpression } from \"./Expression\";\nimport { add, parse } from \"./parse\";\nadd(getAdder(parse));\naddExpression(getAdder(parseExpression));\nfunction getAdder(parser) {\n return (source) => {\n const result = source.fetchIf(\"(\") && parser(source.clone());\n if (result && !source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n return result;\n };\n}\n//# sourceMappingURL=group.js.map","import { GreaterThan } from \"../GreaterThan\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\">\") && new GreaterThan(parseExpression(source));\n});\n//# sourceMappingURL=GreaterThan.js.map","import { GreaterThanOrEqual } from \"../GreaterThanOrEqual\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\">=\") && new GreaterThanOrEqual(parseExpression(source));\n});\n//# sourceMappingURL=GreaterThanOrEqual.js.map","import { LesserThan } from \"../LesserThan\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\"<\") && new LesserThan(parseExpression(source));\n});\n//# sourceMappingURL=LesserThan.js.map","import { LesserThanOrEqual } from \"../LesserThanOrEqual\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\"<=\") && new LesserThanOrEqual(parseExpression(source));\n});\n//# sourceMappingURL=LesserThanOrEqual.js.map","import { Not } from \"../Not\";\nimport { add, parseNext } from \"./parse\";\nadd(source => source.fetchIf(\"!\") && new Not(parseNext(Not.precedence, source)));\n//# sourceMappingURL=Not.js.map","import { Has } from \"../Has\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\"has\", \"(\", \"any\", \")\") || source.fetchIf(\":\", \"has\", \"(\", \"any\", \")\");\n return fetched && new Has(fetched.length == 4 ? fetched[2].value : fetched[3].value);\n});\n//# sourceMappingURL=Has.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Within extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"Within\";\n }\n is(value) {\n return this.value.includes(value);\n }\n toString() {\n return `within(${this.value.join(\", \")})`;\n }\n}\nexport function within(criteria, value) {\n const result = new Within(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return baseObject && type?.class\n ? Completor.functions(tokens, (tokens) => [], {\n value: \"within()\",\n cursor: 7,\n suggestion: { value: \"within()\" },\n })\n : [];\n}\nType.String.add(complete);\nType.Number.add(complete);\n//# sourceMappingURL=Within.js.map","import { Within } from \"../Within\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"within\", \"(\");\n let parameters;\n if (fetched && source.peek()) {\n parameters = [source.fetch()?.value ?? \"\"];\n while (source.fetchIf(\",\"))\n parameters.push(source.fetchIf(\"any\")?.value ?? \"\");\n if (!source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n }\n return fetched && parameters ? new Within(parameters) : undefined;\n});\n//# sourceMappingURL=Within.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Contains extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 85;\n this.class = \"Contains\";\n }\n is(value, object) {\n return Array.isArray(value) && this.criteria.every(c => value.some(v => c == v));\n }\n toString() {\n return `contains(${this.criteria.join(\", \")})`;\n }\n}\nexport function contains(criteria, value) {\n const result = new Contains(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Completor.functions(tokens, () => [], {\n value: \"contains()\",\n cursor: 9,\n suggestion: { value: \"contains()\" },\n });\n}\nType.Array.add(complete);\n//# sourceMappingURL=Contains.js.map","import { Contains } from \"../Contains\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"contains\", \"(\");\n const parameters = [];\n if (fetched && source.peek()) {\n do {\n parameters.push(source.fetchIf(\"any\")?.value ?? \"\");\n } while (source.fetchIf(\",\"));\n if (!source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n }\n return fetched && parameters.length > 0 ? new Contains(parameters) : undefined;\n});\n//# sourceMappingURL=Contains.js.map","import { FunctionCall } from \"../FunctionCall\";\nimport { add } from \"./parse\";\nadd(source => {\n const peek = source.peek(3)?.value;\n const fetched = [\")\", \",\", \"(\"].find(s => s == peek) || source.peek(2)?.value == \")\" ? source.fetchIf(\"identifier\", \"(\") : undefined;\n let parameters;\n if (fetched && source.peek()) {\n parameters = [source.fetchIf(/[A-Za-z0-9_\\.\\-]+/)?.value ?? \"\"];\n while (source.fetchIf(\",\"))\n parameters.push(source.fetchIf(/[A-Za-z0-9_\\.\\-]+/)?.value ?? \"\");\n if (!source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n }\n return fetched && parameters ? new FunctionCall(fetched[0].value, parameters) : undefined;\n});\n//# sourceMappingURL=FunctionCall.js.map","import { and } from \"./And\";\nimport { add, create, Rule } from \"./Rule\";\nexport class Property extends Rule {\n constructor(name, criteria) {\n super();\n this.name = name;\n this.criteria = criteria;\n this.precedence = Property.precedence;\n this.class = \"Property\";\n this.symbol = \".\";\n }\n is(value, object) {\n return !this.criteria\n ? value == object?.[this.name]\n : typeof value == \"object\"\n ? this.criteria.is(value[this.name], object ?? value)\n : this.criteria.is(value, object?.[this.name]);\n }\n toString() {\n return `${this.name}${this.criteria ? this.criteria.symbol ?? \":\" : \"\"}${this.criteria?.stringify(this.precedence) ?? \"\"}`;\n }\n}\nProperty.precedence = 80;\nexport function property(name, criteria, value) {\n const result = (Array.isArray(name) ? name : [name]).reduceRight((r, p) => new Property(p, r), create(criteria));\n return value ? result.is(value) : result;\n}\nadd(criteria => typeof criteria == \"object\" && !(criteria instanceof Rule) && !Array.isArray(criteria)\n ? and(...Object.getOwnPropertyNames(criteria).map(p => property(p, criteria[p])))\n : undefined);\n//# sourceMappingURL=Property.js.map","import { Property } from \"../Property\";\nimport { add, parseNext } from \"./parse\";\nimport { Source } from \"./Source\";\nadd(source => {\n const result = [];\n let fetched;\n while ((fetched = source.fetchIf(\"identifier\", \".\")))\n result.push(fetched[0].value);\n if (source.peekIs(\"identifier\", Source.comparator) && (fetched = source.fetchIf(\"identifier\")))\n result.push(fetched.value);\n return result.length > 0\n ? result.reduceRight((r, name) => new Property(name, r), source.peekIs(\"identifier\") && (fetched = source.fetchIf(\"identifier\"))\n ? new Property(fetched.value)\n : parseNext(Property.precedence, source))\n : undefined;\n});\n//# sourceMappingURL=Property.js.map","import { Includes } from \"../Includes\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"*\", \"any\", \"*\") || source.fetchIf(\"*\", \"any\", \"*\");\n return fetched && new Includes(fetched.length == 4 ? fetched[2].value : fetched[1].value);\n});\n//# sourceMappingURL=Includes.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class StartsWith extends Rule {\n constructor(needle) {\n super();\n this.needle = needle;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"StartsWith\";\n }\n is(value) {\n return typeof value == \"string\" && value.startsWith(this.needle);\n }\n toString() {\n return `${this.needle}*`;\n }\n}\nexport function startsWith(needle, value) {\n const result = new StartsWith(needle);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return !tokens ||\n (tokens.length == 1 && tokens[0].value == \"*\") ||\n (tokens.length == 2 &&\n tokens[1].value == \"*\" &&\n string.value &&\n string.value.startsWith(tokens[0]?.value ?? \"\"))\n ? [Type.Completion.prepend(\"\", { value: string?.value ?? \"\", suggestion: { value: string?.value ?? \"\" } }, \"*\")]\n : [];\n }, { value: \"*\", cursor: 0, suggestion: { value: \"*\", description: \"startswith\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=StartsWith.js.map","import { StartsWith } from \"../StartsWith\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"any\", \"*\") || source.fetchIf(\"any\", \"*\");\n return fetched && new StartsWith(fetched?.length == 3 ? fetched[1].value : fetched[0].value);\n});\n//# sourceMappingURL=StartsWith.js.map","import { EndsWith } from \"../EndsWith\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"*\", \"any\") || source.fetchIf(\"*\", \"any\");\n return fetched && new EndsWith(fetched?.length == 3 ? fetched[2].value : fetched[1].value);\n});\n//# sourceMappingURL=EndsWith.js.map","import { Expression } from \"./Expression\";\nimport { Type } from \"./Type\";\nexport class InfixOperator extends Expression {\n toString() {\n const symbol = this.symbol;\n return (this.left.stringify(InfixOperator.getPrecedence(symbol)) +\n ` ${symbol} ` +\n this.right.stringify(InfixOperator.getPrecedence(symbol)));\n }\n constructor(symbol, precedence, left, right) {\n super();\n this.precedence = precedence;\n this.left = left;\n this.right = right;\n this.class = \"InfixOperator\";\n this.symbol = symbol.replace(/ /g, \"\");\n }\n evaluate(criteria) {\n let result;\n switch (this.getSymbol()) {\n case \"+\":\n result = this.left.evaluate(criteria) + this.right.evaluate(criteria);\n break;\n case \"-\":\n result = this.left.evaluate(criteria) - this.right.evaluate(criteria);\n break;\n case \"*\":\n result = this.left.evaluate(criteria) * this.right.evaluate(criteria);\n break;\n default:\n result = NaN;\n break;\n }\n return result;\n }\n getSymbol() {\n return this.symbol;\n }\n stringify(precedence = 0) {\n let result = this.toString();\n if (this.precedence < precedence)\n result = \"(\" + result + \")\";\n return result;\n }\n static getPrecedence(symbol) {\n let result;\n symbol = symbol?.replace(/ /g, \"\");\n switch (symbol) {\n case \"+\":\n result = 14;\n break;\n case \"-\":\n result = 15;\n break;\n case \"*\":\n result = 16;\n break;\n default:\n result = undefined;\n break;\n }\n return result;\n }\n static create(symbol, left, right) {\n let result;\n const fallback = new InfixOperator(\"+\", 14, left, right);\n const precedence = InfixOperator.getPrecedence(symbol);\n if (precedence)\n result = new InfixOperator(symbol, precedence, left, right);\n return result || fallback;\n }\n}\nfunction complete(tokens, type, baseObject) {\n return [\" + \", \" - \", \" * \"]\n .map(s => ({ value: s, suggestion: { value: s } }))\n .map(c => Type.Completor.operators(tokens, (tokens) => (tokens ? baseObject.complete(tokens, undefined, type) : []), c))\n .reduce((result, element) => result.concat(element), []);\n}\nType.Number.addArgument(complete);\n//# sourceMappingURL=InfixOperator.js.map","import { InfixOperator } from \"../InfixOperator\";\nimport { addExpression, parseNextExpression } from \"./Expression\";\nimport { Source } from \"./Source\";\naddExpression((source, previous) => {\n let result;\n const symbol = source.peekIs(Source.binaryOperator) && source.fetch().value;\n let precedence;\n if (symbol && typeof previous == \"object\") {\n let right;\n let nextPrecedence;\n let i = 0;\n precedence = InfixOperator.getPrecedence(symbol);\n while (!nextPrecedence && source.peek(i)) {\n nextPrecedence =\n source.peek(i)?.value == \"(\" ? Number.MAX_SAFE_INTEGER : InfixOperator.getPrecedence(source.peek(i)?.value);\n i++;\n }\n if (nextPrecedence && precedence < nextPrecedence) {\n right = parseNextExpression(precedence, source);\n if (!right) {\n source.raise(\"Missing right hand side of \" + symbol);\n }\n }\n else\n right = parseNextExpression(NaN, source);\n if ((nextPrecedence && precedence == nextPrecedence) || nextPrecedence == Number.MAX_SAFE_INTEGER) {\n result = parseNextExpression(new InfixOperator(symbol, precedence, previous, right), source);\n }\n else\n result = new InfixOperator(symbol, precedence, previous, right);\n }\n return result;\n});\n//# sourceMappingURL=InfixOperator.js.map","import { Value } from \"../Value\";\nimport { addExpression, parseNextExpression } from \"./Expression\";\naddExpression((source, previous) => {\n const fetchedArray = [];\n let fetched;\n while ((fetched = source.fetchIf(\"identifier\", \".\")))\n fetchedArray.push(fetched[0].value);\n let result;\n if (fetchedArray.length == 0) {\n fetched = source.fetchIf(\"any\", \".\", \"any\") || source.fetchIf(\"any\", \",\", \"any\") || source.fetchIf(\"any\");\n result =\n fetched &&\n (Array.isArray(fetched)\n ? new Value(+fetched.map(t => t.value.replace(\",\", \".\")).join(\"\"))\n : new Value(fetched.value));\n }\n else {\n fetched = source.fetchIf(\"identifier\");\n const fetchedValue = new Value(fetched ? fetched.value : 0);\n result =\n fetchedArray.length > 0\n ? fetchedArray.reduceRight((r, name) => new Value(isNaN(+r) ? r : +r, name), fetchedValue)\n : undefined;\n }\n if (result && typeof previous == \"number\" && !isNaN(previous) && previous != Number.MAX_SAFE_INTEGER)\n result = parseNextExpression(result, source);\n return result;\n});\n//# sourceMappingURL=Value.js.map","import { Is } from \"../Is\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nimport { Source } from \"./Source\";\nadd(source => {\n let expression;\n if (source.fetchIf(\":\")) {\n let algebra = false;\n let comparator = false;\n let i = 1;\n while (!algebra && !comparator && source.peek(i)) {\n algebra = Source.binaryOperator.some(c => source.peek(i)?.value == c);\n comparator = Source.comparator.some(c => source.peek(i)?.value == c);\n i++;\n }\n if (algebra)\n expression = parseExpression(source);\n }\n const fetched = source.fetchIf(\"any\");\n return expression ? new Is(expression) : fetched && new Is(fetched.value);\n});\n//# sourceMappingURL=Is.js.map","import { add } from \"./parse\";\nadd(source => {\n source.raise(`Ignoring unknown token \"${source.fetch()}\"`);\n return undefined;\n});\n//# sourceMappingURL=ignore.js.map","export function resolve(definitions, rule, argument = { input: [], identifier: [] }) {\n return resolvers[rule?.class]?.(definitions, rule, argument) ?? rule;\n}\nconst resolvers = {};\nexport function add(className, resolver) {\n resolvers[className] = resolver;\n}\n//# sourceMappingURL=resolve.js.map","import { And } from \"../And\";\nimport { add, resolve } from \"./resolve\";\nadd(\"And\", (definitions, rule, argument) => new And(rule.rules.map(r => resolve(definitions, r, argument))));\n//# sourceMappingURL=And.js.map","export var replace;\n(function (replace) {\n function argument(value, argument) {\n let result = undefined;\n let index;\n const parameter = typeof value == \"string\" ? value : value.toString();\n if (argument &&\n argument.input &&\n argument.identifier &&\n argument?.input?.length > 0 &&\n argument?.identifier?.length > 0 &&\n argument.identifier.includes(parameter)) {\n index = argument.identifier.indexOf(parameter);\n result = isNaN(+argument.input[index]) ? argument.input[index] : +argument.input[index];\n }\n return result;\n }\n replace.argument = argument;\n})(replace || (replace = {}));\n//# sourceMappingURL=replace.js.map","import { EndsWith } from \"../EndsWith\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"EndsWith\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.needle, argument);\n return parameter\n ? new EndsWith(typeof parameter == \"object\" ? parameter.value.toString() : parameter.toString())\n : rule;\n});\n//# sourceMappingURL=Endswith.js.map","import { Every } from \"../Every\";\nimport { add, resolve } from \"./resolve\";\nadd(\"Every\", (definitions, rule, argument) => {\n return new Every(resolve(definitions, rule.criteria, argument));\n});\n//# sourceMappingURL=Every.js.map","import { FunctionCall } from \"../FunctionCall\";\nimport { parse } from \"../parse\";\nimport { add, resolve } from \"./resolve\";\nadd(\"FunctionCall\", (definitions, rule, argument) => {\n const definition = definitions[rule.identifier];\n const definitionRule = definition ? parse(definition.definition) : undefined;\n const property = definitionRule\n ? resolve(definitions, definitionRule, {\n input: argument?.input?.concat(rule.argument),\n identifier: argument?.identifier?.concat(definition.arguments),\n })\n : undefined;\n return new FunctionCall(rule.identifier, rule.argument, property);\n});\n//# sourceMappingURL=FunctionCall.js.map","import { GreaterThan } from \"../GreaterThan\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"GreaterThan\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.value, argument);\n return parameter ? new GreaterThan(parameter) : rule;\n});\n//# sourceMappingURL=GreaterThan.js.map","import { GreaterThanOrEqual } from \"../GreaterThanOrEqual\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"GreaterThanOrEqual\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.value, argument);\n return parameter ? new GreaterThanOrEqual(parameter) : rule;\n});\n//# sourceMappingURL=GreaterThanOrEqual.js.map","import { Has } from \"../Has\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"Has\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.property, argument);\n return parameter ? new Has(typeof parameter == \"object\" ? parameter.value.toString() : parameter.toString()) : rule;\n});\n//# sourceMappingURL=Has.js.map","import { Includes } from \"../Includes\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"Includes\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.needle, argument);\n return parameter\n ? new Includes(typeof parameter == \"object\" ? parameter.value.toString() : parameter.toString())\n : rule;\n});\n//# sourceMappingURL=Includes.js.map","import { LesserThan } from \"../LesserThan\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"LesserThan\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.value, argument);\n return parameter ? new LesserThan(parameter) : rule;\n});\n//# sourceMappingURL=LesserThan.js.map","import { LesserThanOrEqual } from \"../LesserThanOrEqual\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"LesserThanOrEqual\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.value, argument);\n return parameter ? new LesserThanOrEqual(parameter) : rule;\n});\n//# sourceMappingURL=LesserThanOrEqual.js.map","import { Not } from \"../Not\";\nimport { add, resolve } from \"./resolve\";\nadd(\"Not\", (definitions, rule, argument) => {\n return new Not(resolve(definitions, rule.criteria, argument));\n});\n//# sourceMappingURL=Not.js.map","import { Or } from \"../Or\";\nimport { add, resolve } from \"./resolve\";\nadd(\"Or\", (definitions, rule, argument) => new Or(rule.criteria.map(r => resolve(definitions, r, argument))));\n//# sourceMappingURL=Or.js.map","import { Property } from \"../Property\";\nimport { add, resolve } from \"./resolve\";\nadd(\"Property\", (definitions, rule, argument) => {\n return new Property(rule.name, rule.criteria && resolve(definitions, rule.criteria, argument));\n});\n//# sourceMappingURL=Property.js.map","import { Some } from \"../Some\";\nimport { add, resolve } from \"./resolve\";\nadd(\"Some\", (definitions, rule, argument) => {\n return new Some(resolve(definitions, rule.criteria, argument));\n});\n//# sourceMappingURL=Some.js.map","import { StartsWith } from \"../StartsWith\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"StartsWith\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.needle, argument);\n return parameter\n ? new StartsWith(typeof parameter == \"object\" ? parameter.value.toString() : parameter.toString())\n : rule;\n});\n//# sourceMappingURL=Startswith.js.map","import { Is } from \"../Is\";\nimport { replace } from \"./replace\";\nimport { add } from \"./resolve\";\nadd(\"Is\", (definitions, rule, argument) => {\n const parameter = replace.argument(rule.value, argument);\n return parameter ? new Is(parameter) : rule;\n});\n//# sourceMappingURL=Is.js.map","import { add, create, Rule } from \"./Rule\";\nexport class Tuple extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Tuple\";\n }\n is(value) {\n return this.criteria.length == value.length && this.criteria.every((c, index) => c.is(value[index]));\n }\n toString() {\n return `[${this.criteria.map(c => c.toString()).join(\", \")}]`;\n }\n}\nadd(criteria => (Array.isArray(criteria) ? new Tuple(criteria.map(create)) : undefined));\n//# sourceMappingURL=Tuple.js.map","import \"./Always\";\nimport { And, and } from \"./And\";\nimport { Any, any } from \"./Any\";\nimport { Contains, contains } from \"./Contains\";\nimport { Criteria } from \"./Criteria\";\nimport { EndsWith, endsWith } from \"./EndsWith\";\nimport { Every, every } from \"./Every\";\nimport { FunctionCall } from \"./FunctionCall\";\nimport { GreaterThan, greaterThan } from \"./GreaterThan\";\nimport { GreaterThanOrEqual, greaterThanOrEqual } from \"./GreaterThanOrEqual\";\nimport { Has, has } from \"./Has\";\nimport { Includes, includes } from \"./Includes\";\nimport { Is } from \"./Is\";\nimport { LesserThan, lesserThan } from \"./LesserThan\";\nimport { LesserThanOrEqual, lesserThanOrEqual } from \"./LesserThanOrEqual\";\nimport { Match, match } from \"./Match\";\nimport { Not, not } from \"./Not\";\nimport { Or, or } from \"./Or\";\nimport { parse, parseExpression } from \"./parse\";\nimport { Property, property } from \"./Property\";\nimport { resolve } from \"./resolve\";\nimport { create, Rule } from \"./Rule\";\nimport { Some, some } from \"./Some\";\nimport { StartsWith, startsWith } from \"./StartsWith\";\nimport { Tuple } from \"./Tuple\";\nimport { Type as SType } from \"./Type\";\nimport { Value } from \"./Value\";\nimport { Within, within } from \"./Within\";\nfunction is(criteria, value) {\n const result = create(criteria);\n return value ? result.is(value) : result;\n}\nfunction filter(criteria, value) {\n const c = create(criteria);\n return c.filter(value);\n}\nexport { And, Any, Criteria, Contains, EndsWith, Every, FunctionCall, Has, GreaterThan, GreaterThanOrEqual, LesserThan, LesserThanOrEqual, Includes, Is, Match, Not, Or, Property, Rule, Some, StartsWith, Tuple, SType as Type, Value, Within, any, and, create, contains, endsWith, every, has, filter, greaterThan, greaterThanOrEqual, lesserThan, lesserThanOrEqual, includes, is, match, not, or, parse, parseExpression, property, resolve, some, startsWith, within, };\n//# sourceMappingURL=selectively.js.map","import { EventEmitter } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { isly } from \"isly\"\n\nconst EventEmitter = isly.object<EventEmitter>({ emit: isly.function<EventEmitter[\"emit\"]>() })\nexport interface Filter extends Filter.Element {\n\tsmoothlyFilterUpdate: EventEmitter<Filter.Update>\n\tsmoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n}\nexport namespace Filter {\n\texport type Manipulate = (criteria: selectively.Criteria) => selectively.Criteria\n\texport type Update = (expression: selectively.Criteria) => void\n\texport interface Element {\n\t\tproperty?: string\n\t\tproperties?: Record<string, string>\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tproperty: isly.string().optional(),\n\t\t\tproperties: isly.record<Record<string, string>>(isly.string(), isly.string()).optional(),\n\t\t})\n\t}\n\texport const type = Element.type.extend<Filter>({\n\t\tsmoothlyFilterUpdate: EventEmitter,\n\t\tsmoothlyFilterManipulate: EventEmitter,\n\t})\n}\n",":host {\n\tposition: relative;\n\tborder: 1px solid rgb(var(--smoothly-medium-tint));\n\tmargin-left: 1rem;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tmargin-right: 1rem;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n\n:host>div::slotted([slot=detail]) {\n\tz-index: 5;\n}\n\n:host::slotted([slot=bar]) {\n\tpointer-events: auto;\n\tmargin-left: 0.3em;\n\tmargin-right: 0.3em;\n\n\t&>[looks=\"plain\"] {\n\t\tdisplay: flex;\n\t\talign-self: stretch;\n\t\talign-items: center;\n\t}\n}\n\n:host>div:empty+smoothly-icon {\n\tdisplay: none;\n}\n\n:host>smoothly-icon {\n\tcursor: pointer;\n\tmargin-left: 0.3em;\n\tmargin-right: 0.3em;\n\tflex-shrink: 0;\n}\n\n:host>div.close {\n\tposition: fixed;\n\tz-index: 3;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100dvw;\n\theight: 100dvh;\n\tbackground: transparent;\n}\n\n:host>div.hidden {\n\tdisplay: none;\n}\n\n:host>.container {\n\tpadding: 2em;\n\tposition: absolute;\n\tright: 0.35em;\n\twidth: fit-content;\n\tdisplay: flex;\n\tjustify-content: center;\n\ttop: 100%;\n\twidth: fit-content;\n\tz-index: 4;\n\tbackground-color: rgb(var(--smoothly-color));\n\tmargin: 0.8em -2em;\n}\n\n/* arrow */\n:host>div.container:before {\n\tcontent: \"\";\n\twidth: 0.6em;\n\theight: 0.6em;\n\ttransform: rotate(45deg);\n\tborder-top: 1px solid rgb(var(--smoothly-medium-tint));\n\tborder-left: 1px solid rgb(var(--smoothly-medium-tint));\n\tbackground-color: rgb(var(--smoothly-color));\n\tposition: absolute;\n\tz-index: 3;\n}\n\n/* arrow placement */\n:host>div.container.arrow-top:before {\n\tleft: calc(91%);\n\ttop: -5px;\n}\n\n:host div.container:after {\n\tcontent: \"\";\n\theight: 100%;\n\twidth: 100%;\n\tborder: 1px solid rgb(var(--smoothly-medium-tint));\n\tborder-radius: 0.25em;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, State } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { Filter } from \"./Filter\"\n\n@Component({\n\ttag: \"smoothly-filter\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilter {\n\tfield: HTMLSmoothlyFilterFieldElement | undefined\n\tupdating = false\n\tfilters: Set<Filter.Update> = new Set<Filter.Update>() // maybe set?\n\t@State() detailChildren?: boolean\n\t@State() criteria: selectively.Criteria = selectively.and()\n\t@State() expanded = false\n\t@Event() smoothlyFilter: EventEmitter<selectively.Criteria>\n\n\t@Listen(\"smoothlyFilterUpdate\")\n\tupdateHandler(event: CustomEvent<Filter.Update>) {\n\t\tevent.stopPropagation()\n\t\tif (Filter.Element.type.is(event.target))\n\t\t\tthis.filters.add(event.detail)\n\t}\n\t@Listen(\"smoothlyFilterManipulate\")\n\tmanipulateHandler(event: CustomEvent<Filter.Manipulate>) {\n\t\tevent.stopPropagation()\n\t\tthis.updating = true\n\t\tthis.criteria = event.detail(this.criteria)\n\t\tthis.smoothlyFilter.emit(this.criteria)\n\t\tthis.filters.forEach(update => update(this.criteria))\n\t\tthis.updating = false\n\t}\n\t@Listen(\"smoothlyFilterField\")\n\tfilterFieldHandler(event: CustomEvent<selectively.Criteria>) {\n\t\tevent.stopPropagation()\n\t\tif (!this.updating) {\n\t\t\tthis.smoothlyFilter.emit((this.criteria = selectively.and(event.detail)))\n\t\t\tthis.filters.forEach(update => update(this.criteria))\n\t\t}\n\t}\n\tclear(): void {\n\t\tthis.field?.clear()\n\t\tthis.smoothlyFilter.emit((this.criteria = selectively.and()))\n\t\tthis.filters.forEach(update => update(this.criteria))\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot name=\"bar\" />\n\t\t\t\t<smoothly-filter-field criteria={this.criteria} ref={e => (this.field = e)} />\n\t\t\t\t{this.criteria.toString() != \"\" && (\n\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\tname={\"close\"}\n\t\t\t\t\t\ttoolTip={\"Clear all filters\"}\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tthis.clear()\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<div class={this.expanded ? \"container arrow-top\" : \"hidden\"}>\n\t\t\t\t\t<slot name=\"detail\" />\n\t\t\t\t</div>\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={this.expanded ? \"options\" : \"options-outline\"}\n\t\t\t\t\ttoolTip={(this.expanded ? \"Hide\" : \"Show\") + \" additional filters\"}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tthis.expanded = !this.expanded\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<div class={this.expanded ? \"close\" : \"hidden\"} onClick={() => (this.expanded = !this.expanded)} />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tflex-grow: 5;\n}\n\n","import { Component, Event, EventEmitter, h, Host, Method, Prop } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\n\n@Component({\n\ttag: \"smoothly-filter-field\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterField {\n\tinput: HTMLSmoothlyInputElement | undefined\n\t@Prop() criteria: selectively.Criteria\n\t@Event() smoothlyFilterField: EventEmitter<selectively.Rule>\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tawait this.input?.clear()\n\t}\n\tfilterFieldEmit() {\n\t\tthis.smoothlyFilterField.emit(selectively.parse(this.input?.value ?? \"\"))\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host onKeyDown={(e: KeyboardEvent) => e.key == \"Enter\" && this.filterFieldEmit()}>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tname=\"filter\"\n\t\t\t\t\tref={e => (this.input = e)}\n\t\t\t\t\tvalue={this.criteria.toString()}\n\t\t\t\t\tonSmoothlyInputLooks={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyBlur={e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tthis.filterFieldEmit()\n\t\t\t\t\t}}\n\t\t\t\t\tonSmoothlyFormDisable={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyChange={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t}}>\n\t\t\t\t\tFilter\n\t\t\t\t</smoothly-input>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n\n:host>smoothly-input {\n\tflex-grow: 1;\n\tmin-width: 10em;\n\tflex-basis: 40%;\n}\n","import { Component, Event, EventEmitter, h, Prop, State } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { tidily } from \"tidily\"\nimport { Filter } from \"../Filter\"\n\n@Component({\n\ttag: \"smoothly-filter-input\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterInput implements Filter {\n\ttype: tidily.Type = \"text\"\n\t@State() needle: selectively.Criteria = \"\"\n\t@Prop() label: string\n\t@Prop() property: string\n\t@Prop() placeholder: string\n\t@Event() smoothlyFilterUpdate: EventEmitter<Filter.Update>\n\t@Event() smoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n\tcomponentDidLoad() {\n\t\tthis.smoothlyFilterUpdate.emit(this.update.bind(this))\n\t}\n\tupdate(expression: selectively.Criteria): void {\n\t\tif (expression instanceof selectively.And && expression.rules.length > 0)\n\t\t\tfor (const rule of expression.rules) {\n\t\t\t\tconst criteria = this.isCriteria(rule, this.property)\n\t\t\t\tif (criteria) {\n\t\t\t\t\tthis.needle = criteria.needle ?? \"\"\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\telse\n\t\t\tthis.needle = \"\"\n\t}\n\tprivate isCriteria(criteria: selectively.Rule | undefined, key: string): selectively.Includes | undefined {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn (\n\t\t\t(criteria instanceof selectively.Property &&\n\t\t\t\tcriteria.name == property &&\n\t\t\t\t((criteria.criteria instanceof selectively.Includes && criteria.criteria) ||\n\t\t\t\t\t(criteria.criteria instanceof selectively.Property && this.isCriteria(criteria.criteria, rest.join(\".\"))))) ||\n\t\t\tundefined\n\t\t)\n\t}\n\tinputHandler(event: CustomEvent<Record<string, string>>) {\n\t\tevent.stopPropagation()\n\t\tconst needle = event.detail[this.property]\n\t\tconst manipulate: Filter.Manipulate = (criteria: selectively.Criteria): selectively.Criteria => {\n\t\t\tlet result: selectively.Criteria = criteria\n\t\t\tconst newCriteria = needle ? this.getCriteria(needle) : undefined\n\t\t\tif (result instanceof selectively.And) {\n\t\t\t\tconst index = result.rules.findIndex(r => this.findInstanceOf(r, this.property))\n\t\t\t\t!newCriteria\n\t\t\t\t\t? index != -1 && result.rules.splice(index, 1)\n\t\t\t\t\t: index == -1\n\t\t\t\t\t? result.rules.push(newCriteria)\n\t\t\t\t\t: (result.rules[index] = newCriteria)\n\t\t\t\tresult = selectively.and(...result.rules)\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t\tthis.smoothlyFilterManipulate.emit(manipulate.bind(this))\n\t}\n\tprivate getCriteria(needle: string): selectively.Rule | undefined {\n\t\treturn this.property\n\t\t\t.split(\".\")\n\t\t\t.reduceRight((r: selectively.Rule, e) => selectively.property(e, r), selectively.includes(needle))\n\t}\n\tfindInstanceOf(criteria: selectively.Criteria, property: string): boolean {\n\t\tconst [key, ...rest] = property.split(\".\")\n\t\treturn (\n\t\t\tcriteria instanceof selectively.Property &&\n\t\t\tcriteria.name == key &&\n\t\t\t(rest.length == 0 || (!!criteria.criteria && this.findInstanceOf(criteria.criteria, rest.join(\".\"))))\n\t\t)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-input\n\t\t\t\tname={this.property}\n\t\t\t\tvalue={this.needle}\n\t\t\t\ttype={this.type}\n\t\t\t\tplaceholder={this.placeholder}\n\t\t\t\tonSmoothlyBlur={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyFormDisable={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyChange={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}>\n\t\t\t\t{this.label}\n\t\t\t\t<slot />\n\t\t\t</smoothly-input>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n\n:host>smoothly-input-select {\n\tflex-grow: 1;\n\twidth: 12.5em;\n}\n\n.options {\n\tborder: rgb(var(--smoothly-input-border, var(--smoothly-color-contrast))) solid 1px;\n\tborder-top: rgba(var(--smoothly-input-border, var(--smoothly-color-contrast)), .4) solid 1px;\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { isly } from \"isly\"\nimport { Editable } from \"../../input/Editable\"\nimport { Looks } from \"../../input/Looks\"\nimport { Filter } from \"../Filter\"\n\n@Component({\n\ttag: \"smoothly-filter-select\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterSelect implements Filter {\n\tprivate selectElement?: HTMLSmoothlyInputSelectElement\n\tupdating = false\n\titems: Map<string, { state: Record<string, any>; item: HTMLSmoothlyItemElement }> = new Map<\n\t\tstring,\n\t\t{ state: Record<string, any>; item: HTMLSmoothlyItemElement }\n\t>()\n\t@Element() element: HTMLSmoothlyFilterSelectElement\n\t@Prop() label: string\n\t@Prop() property: string\n\t@Prop() menuHeight?: `${number}items` | `${number}rem` | `${number}px` | `${number}vh` | undefined\n\t@Prop() multiple = false\n\t@Prop() type: \"array\" | \"string\" = \"string\"\n\t@Prop({ mutable: true }) looks?: Looks\n\t@Event() smoothlyFilterUpdate: EventEmitter<Filter.Update>\n\t@Event() smoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks) => void>\n\tcomponentWillLoad() {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = this.looks ?? looks))\n\t}\n\tasync componentDidLoad() {\n\t\tthis.smoothlyFilterUpdate.emit(this.update.bind(this))\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(_: CustomEvent<(parent: Editable) => void>): Promise<void> {\n\t\t;(await this.selectElement?.getItems())?.forEach(item =>\n\t\t\tthis.items.set(item.value, {\n\t\t\t\tstate: this.property.split(\".\").reduceRight((r, e) => ({ [e]: r }), item.value),\n\t\t\t\titem,\n\t\t\t})\n\t\t)\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks?: Looks) => void>): void {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this.looks)\n\t\t}\n\t}\n\tupdate(expression: selectively.Criteria): void {\n\t\tthis.updating = true\n\t\tif (expression instanceof selectively.And && expression.rules.length > 0)\n\t\t\tfor (const item of this.items.values()) {\n\t\t\t\tconst selected = expression.rules.some(\n\t\t\t\t\tr =>\n\t\t\t\t\t\tthis.isCriteria(r, this.property, item.state) &&\n\t\t\t\t\t\t(this.type == \"array\" ? this.findInstanceOf(r, this.property) : r.is(item.state))\n\t\t\t\t)\n\t\t\t\titem.item.selected = selected\n\t\t\t}\n\t\telse\n\t\t\tthis.items.forEach(item => (item.item.selected = false))\n\t\tthis.updating = false\n\t}\n\tprivate isCriteria(criteria: selectively.Rule | undefined, key: string, value: Record<string, any> | any): boolean {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\tconst result =\n\t\t\tcriteria instanceof selectively.Property && criteria.name == property\n\t\t\t\t? this.isCriteria(criteria.criteria, rest.join(\".\"), value[property])\n\t\t\t\t: this.multiple\n\t\t\t\t? (criteria instanceof selectively.Within && criteria.value.some(e => e == value)) ||\n\t\t\t\t (this.type == \"array\" && criteria instanceof selectively.Contains && criteria.criteria.some(e => e == value))\n\t\t\t\t: criteria instanceof selectively.Is && criteria.value == value\n\t\treturn result\n\t}\n\tselectHandler(event: CustomEvent<Record<string, unknown>>) {\n\t\tevent.stopPropagation()\n\t\tif (!this.updating) {\n\t\t\tconst argument = event.detail[this.property]\n\t\t\tconst manipulate = (criteria: selectively.Criteria): selectively.Criteria => {\n\t\t\t\tlet result: selectively.Criteria = criteria\n\t\t\t\tconst newCriteria = this.getCriteria(argument)\n\t\t\t\tif (!(result instanceof selectively.Rule))\n\t\t\t\t\tresult = newCriteria ? selectively.and(result, newCriteria) : result\n\t\t\t\telse if (result instanceof selectively.And) {\n\t\t\t\t\tconst index = result.rules.findIndex(r => this.findInstanceOf(r, this.property))\n\t\t\t\t\t!newCriteria && index >= 0\n\t\t\t\t\t\t? result.rules.splice(index, 1)\n\t\t\t\t\t\t: !newCriteria\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: index == -1\n\t\t\t\t\t\t? result.rules.push(newCriteria)\n\t\t\t\t\t\t: (result.rules[index] = newCriteria)\n\t\t\t\t\tresult = selectively.and(...result.rules)\n\t\t\t\t}\n\t\t\t\treturn result\n\t\t\t}\n\t\t\tthis.smoothlyFilterManipulate.emit(manipulate.bind(this))\n\t\t}\n\t}\n\tfindInstanceOf(criteria: selectively.Criteria, key: string): boolean {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn (\n\t\t\tcriteria instanceof selectively.Property &&\n\t\t\tcriteria.name == property &&\n\t\t\t(criteria.criteria instanceof selectively.Within ||\n\t\t\t\tcriteria.criteria instanceof selectively.Is ||\n\t\t\t\tcriteria.criteria instanceof selectively.Contains ||\n\t\t\t\t(criteria.criteria instanceof selectively.Property && this.findInstanceOf(criteria.criteria, rest.join(\".\"))))\n\t\t)\n\t}\n\tprivate getCriteria(detail: unknown): selectively.Rule | undefined {\n\t\tlet result: selectively.Criteria | undefined\n\t\tif (this.multiple && isly.string().array({ criteria: \"minLength\", value: 1 }).is(detail))\n\t\t\tresult = this.type == \"array\" ? selectively.contains(detail) : selectively.within(detail)\n\t\telse if (typeof detail == \"string\")\n\t\t\tresult = selectively.is(detail)\n\t\telse\n\t\t\tresult = undefined\n\t\treturn result && this.property.split(\".\").reduceRight((r, e) => selectively.property(e, r), result)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-input-select\n\t\t\t\tref={e => (this.selectElement = e)}\n\t\t\t\tname={this.property}\n\t\t\t\tlooks={this.looks}\n\t\t\t\tmultiple={this.multiple}\n\t\t\t\tmenuHeight={this.menuHeight}\n\t\t\t\tonSmoothlyInputLooks={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyItemSelect={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyInput={e => this.selectHandler(e)}>\n\t\t\t\t{this.label && (\n\t\t\t\t\t<span slot=\"label\">\n\t\t\t\t\t\t{[this.label.slice(0, 1).toUpperCase(), this.label.slice(1, this.label.length)].join(\"\")}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t<slot name=\"items\"></slot>\n\t\t\t</smoothly-input-select>\n\t\t)\n\t}\n}\n",":host {\n\tposition: relative;\n\tdisplay: inline-block;\n\tcursor: pointer;\n}\n\n:host:hover>smoothly-icon {\n\tstroke: rgb(var(--smoothly-success-tint));\n\tcolor: rgb(var(--smoothly-success-tint));\n\tfill: rgb(var(--smoothly-success-tint));\n}\n\n:host[flip] {\n\ttransform: scaleX(-1);\n}\n","import { Component, Event, EventEmitter, h, Prop } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { Icon } from \"../../../model\"\nimport { Filter } from \"../Filter\"\n\n@Component({\n\ttag: \"smoothly-filter-toggle\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterToggle {\n\t@Prop() icon: Icon\n\t@Prop() properties: Record<string, string>\n\t@Prop() toolTip: string\n\t@Prop() not: boolean\n\t@Prop({ reflect: true }) flip = false\n\t@Prop({ mutable: true }) active = false\n\t@Event() smoothlyFilterUpdate: EventEmitter<Filter.Update>\n\t@Event() smoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n\tcomponentWillLoad() {\n\t\tthis.active && this.activeHandler()\n\t}\n\tcomponentDidLoad() {\n\t\tthis.smoothlyFilterUpdate.emit(this.update.bind(this))\n\t}\n\tupdate(expression: selectively.Criteria): void {\n\t\tif (expression instanceof selectively.And && expression.rules.length > 0) {\n\t\t\tthis.active = Object.entries(this.properties).every(([key, value]) =>\n\t\t\t\texpression.rules.some(r => {\n\t\t\t\t\tconst criteria = !this.not ? r : r instanceof selectively.Not ? r.criteria : undefined\n\t\t\t\t\treturn value == \"\"\n\t\t\t\t\t\t? !(criteria instanceof selectively.Property && criteria.name == key)\n\t\t\t\t\t\t: this.isCriteria(criteria, key, value)\n\t\t\t\t})\n\t\t\t)\n\t\t} else\n\t\t\tthis.active = false\n\t}\n\tprivate isCriteria(criteria: selectively.Rule | undefined, key: string, value: string): boolean {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn (\n\t\t\tcriteria instanceof selectively.Property &&\n\t\t\tcriteria.name == property &&\n\t\t\t((criteria.criteria instanceof selectively.Is && criteria.criteria.value == value) ||\n\t\t\t\tthis.isCriteria(criteria.criteria, rest.join(\".\"), value))\n\t\t)\n\t}\n\n\tactiveHandler(activate?: true) {\n\t\tconst manipulate: Filter.Manipulate = (criteria: selectively.Criteria): selectively.Criteria => {\n\t\t\tlet result: selectively.Criteria = criteria\n\t\t\tactivate && (this.active = !this.active)\n\t\t\tif (result instanceof selectively.And) {\n\t\t\t\tfor (const [key, value] of Object.entries(this.properties)) {\n\t\t\t\t\tconst newCriteria =\n\t\t\t\t\t\t!this.active || (this.active && value == \"\")\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: this.not\n\t\t\t\t\t\t\t? selectively.not(this.createCriteria(key, value))\n\t\t\t\t\t\t\t: this.createCriteria(key, value)\n\t\t\t\t\tconst index = result.rules.findIndex(r => this.findInstanceOf(r, key))\n\t\t\t\t\t!newCriteria && index >= 0\n\t\t\t\t\t\t? result.rules.splice(index, 1)\n\t\t\t\t\t\t: !newCriteria\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: index == -1\n\t\t\t\t\t\t? result.rules.push(newCriteria)\n\t\t\t\t\t\t: (result.rules[index] = newCriteria)\n\t\t\t\t}\n\t\t\t\tresult = selectively.and(...result.rules)\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t\tthis.smoothlyFilterManipulate.emit(manipulate.bind(this))\n\t}\n\tcreateCriteria(key: string, value: string): selectively.Rule {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn selectively.property(\n\t\t\tproperty,\n\t\t\trest.length == 0 ? selectively.is(value) : this.createCriteria(rest.join(\".\"), value)\n\t\t)\n\t}\n\tfindInstanceOf(criteria: selectively.Criteria, property: string): boolean {\n\t\tconst check = !this.not ? criteria : criteria instanceof selectively.Not ? criteria.criteria : false\n\t\tconst [key, ...rest] = property.split(\".\")\n\t\treturn (\n\t\t\tcheck instanceof selectively.Property &&\n\t\t\tcheck.name == key &&\n\t\t\t(rest.length == 0 || (!!check.criteria && this.findInstanceOf(check.criteria, rest.join(\".\"))))\n\t\t)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-icon\n\t\t\t\tfill=\"clear\"\n\t\t\t\tcolor={this.active ? \"success\" : \"medium\"}\n\t\t\t\tname={(this.active ? `${this.icon}` : `${this.icon}-outline`) as Icon}\n\t\t\t\ttoolTip={this.toolTip}\n\t\t\t\tonClick={() => this.activeHandler(true)}\n\t\t\t/>\n\t\t)\n\t}\n}\n","export var Method;\n(function (Method) {\n function is(value) {\n return (typeof value == \"string\" &&\n (value == \"GET\" ||\n value == \"POST\" ||\n value == \"DELETE\" ||\n value == \"HEAD\" ||\n value == \"PATCH\" ||\n value == \"PUT\" ||\n value == \"OPTIONS\" ||\n value == \"TRACE\" ||\n value == \"CONNECT\"));\n }\n Method.is = is;\n function parse(value) {\n value = value?.toUpperCase();\n return is(value) ? value : undefined;\n }\n Method.parse = parse;\n})(Method || (Method = {}));\n//# sourceMappingURL=Method.js.map","const parsers = {};\nexport function add(parser, ...contentType) {\n contentType.forEach(t => (parsers[t] = parser));\n}\nexport function parse(request) {\n const contentType = request.headers.get(\"Content-Type\");\n const type = contentType && contentType.split(\";\");\n const parser = parsers[type?.[0] ?? \"plain/text\"];\n return parser ? parser(request) : request.text();\n}\n//# sourceMappingURL=Parser.js.map","const serializers = {};\nexport function add(serializer, ...contentType) {\n contentType.forEach(t => (serializers[t] = serializer));\n}\nexport function serialize(body, contentType) {\n const serializer = serializers[contentType?.split(\";\")[0] ?? \"\"];\n return serializer ? serializer(body, contentType) : body;\n}\n//# sourceMappingURL=Serializer.js.map","export function to(name) {\n return name.toLowerCase().replace(/-[a-z]/g, match => match.substring(1).toUpperCase());\n}\nexport function from(name) {\n const result = name.replace(/[A-Z]/g, match => \"-\" + match);\n return result[0].toUpperCase() + result.substring(1);\n}\n//# sourceMappingURL=CamelCase.js.map","import * as CamelCase from \"../CamelCase\";\nconst fields = [\n [\"aIM\", \"A-IM\", 1],\n [\"accept\", \"Accept\", 2],\n [\"acceptCharset\", \"Accept-Charset\", 2],\n [\"acceptDatetime\", \"Accept-Datetime\", 1],\n [\"acceptEncoding\", \"Accept-Encoding\", 2],\n [\"acceptLanguage\", \"Accept-Language\", 2],\n [\"accessControlRequestMethod\", \"Access-Control-Request-Method\", 1],\n [\"accessControlRequestHeaders\", \"Access-Control-Request-Headers\", 1],\n [\"authorization\", \"Authorization\", 1],\n [\"cacheControl\", \"Cache-Control\", 1],\n [\"cfConnectionIp\", \"CF-Connecting-IP\", 1],\n [\"cfIpCountry\", \"CF-IPCountry\", 1],\n [\"connection\", \"Connection\", 1],\n [\"contentLength\", \"Content-Length\", 1],\n [\"contentMD5\", \"Content-MD5\", 1],\n [\"contentType\", \"Content-Type\", 1],\n [\"cookie\", \"Cookie\", 1],\n [\"date\", \"Date\", 1],\n [\"expect\", \"Expect\", 1],\n [\"forwarded\", \"Forwarded\", 1],\n [\"from\", \"From\", 1],\n [\"host\", \"Host\", 1],\n [\"http2Settings\", \"HTTP2-Settings\", 1],\n [\"ifMatch\", \"If-Match\", 2],\n [\"ifModifiedSince\", \"If-Modified-Since\", 1],\n [\"ifNoneMatch\", \"If-None-Match\", 2],\n [\"ifRange\", \"If-Range\", 1],\n [\"ifUnmodifiedSince\", \"If-Unmodified-Since\", 1],\n [\"maxForwards\", \"Max-Forwards\", 1],\n [\"origin\", \"Origin\", 1],\n [\"pragma\", \"Pragma\", 1],\n [\"proxyAuthorization\", \"Proxy-Authorization\", 1],\n [\"range\", \"Range\", 1],\n [\"referer\", \"Referer\", 1],\n [\"te\", \"TE\", 2],\n [\"trailer\", \"Trailer\", 1],\n [\"transferEncoding\", \"Transfer-Encoding\", 1],\n [\"userAgent\", \"User-Agent\", 1],\n [\"upgrade\", \"Upgrade\", 2],\n [\"via\", \"Via\", 2],\n [\"warning\", \"Warning\", 1],\n [\"upgradeInsecureRequests\", \"Upgrade-Insecure-Requests\", 1],\n [\"xRequestedWith\", \"X-Requested-With\", 1],\n [\"dnt\", \"DNT\", 1],\n [\"xForwardedFor\", \"X-Forwarded-For\", 1],\n [\"xForwardedHost\", \"X-Forwarded-Host\", 1],\n [\"xForwardedProto\", \"X-Forwarded-Proto\", 1],\n [\"xMsContinuation\", \"X-Ms-Continuation\", 1],\n [\"frontEndHttps\", \"Front-End-Https\", 1],\n [\"xHttpMethodOverride\", \"X-Http-Method-Override\", 1],\n [\"xAttDeviceId\", \"X-ATT-DeviceId\", 1],\n [\"xWapProfile\", \"X-Wap-Profile\", 1],\n [\"proxyConnection\", \"Proxy-Connection\", 1],\n [\"xCsrfToken\", \"X-Csrf-Token\", 1],\n [\"xCorrelationID\", \"X-Correlation-ID\", 1],\n [\"xModNonce\", \"x-mod-nonce\", 1],\n [\"xModRetry\", \"x-mod-retry\", 1],\n [\"saveData\", \"Save-Data\", 1],\n [\"xAuthToken\", \"X-Auth-Token\", 1],\n [\"xTrackingId\", \"x-tracking-id\", 1],\n];\nexport var Header;\n(function (Header) {\n function is(value) {\n function isString(value) {\n return value == undefined || typeof value == \"string\";\n }\n function isStringArray(value) {\n return value == undefined || (Array.isArray(value) && value.every(v => typeof v == \"string\"));\n }\n return (typeof value == \"object\" && fields.every(field => (field[2] == 1 ? isString : isStringArray)(value[field[0]])));\n }\n Header.is = is;\n function to(header) {\n return Object.fromEntries(Object.entries(header).map(([name, value]) => {\n const field = fields.find(([camelCase, n, l]) => camelCase == name);\n return [field ? field[1] : CamelCase.from(name), Array.isArray(value) ? value.join(\", \") : value];\n }));\n }\n Header.to = to;\n function from(headers) {\n return Object.fromEntries((Array.isArray(headers)\n ? headers.map(([field, ...value]) => [field, value.join(\", \")])\n : isHeaders(headers)\n ? [...headers]\n : Object.entries(headers)).map(([name, value]) => {\n const field = fields.find(([c, n, l]) => name.toLowerCase() == n.toLowerCase());\n return field\n ? [field[0], field[2] == 1 || typeof value != \"string\" ? value : value.split(\",\").map(v => v.trim())]\n : [CamelCase.to(name), value];\n }));\n }\n Header.from = from;\n function toString(header) {\n return Object.entries(header)\n .map(([header, value]) => header + \": \" + value)\n .join(\"\\n\");\n }\n Header.toString = toString;\n function isHeaders(value) {\n return typeof value.entries == \"function\";\n }\n})(Header || (Header = {}));\n//# sourceMappingURL=Header.js.map","import { Method } from \"../Method\";\nimport * as Parser from \"../Parser\";\nimport * as Serializer from \"../Serializer\";\nimport { Header as RequestHeader } from \"./Header\";\nexport var Request;\n(function (Request) {\n function is(value) {\n return (typeof value == \"object\" &&\n Object.keys(value).every(key => [\"method\", \"url\", \"parameter\", \"search\", \"remote\", \"header\", \"body\"].some(k => k == key)) &&\n Method.is(value.method) &&\n value.url instanceof URL &&\n typeof value.parameter == \"object\" &&\n Object.entries(value.parameter).every(([parameter, value]) => typeof parameter == \"string\" && typeof value == \"string\") &&\n typeof value.search == \"object\" &&\n Object.entries(value.search).every(([key, value]) => typeof key == \"string\" && typeof value == \"string\") &&\n (value.remote == undefined || typeof value.remote == \"string\") &&\n (value.header == undefined || RequestHeader.is(value.header)));\n }\n Request.is = is;\n async function to(request) {\n const r = is(request) ? request : create(request);\n const header = r.header.contentType?.startsWith(\"multipart/form-data\")\n ? (({ contentType, ...header }) => header)(r.header)\n : r.header;\n return {\n url: r.url.toString(),\n method: r.method,\n headers: RequestHeader.to(header),\n body: [\"GET\", \"HEAD\"].some(v => v == r.method)\n ? undefined\n : await Serializer.serialize(await r.body, r.header.contentType),\n };\n }\n Request.to = to;\n function from(request) {\n const url = new URL(request.url);\n return {\n method: Method.parse(request.method) ?? \"GET\",\n url,\n header: RequestHeader.from(request.headers),\n parameter: {},\n search: Object.fromEntries(url.searchParams.entries()),\n body: Parser.parse(request),\n ...(\"cf\" in request && { cloudflare: request.cf }),\n };\n }\n Request.from = from;\n function create(request) {\n let result;\n if (typeof request == \"string\")\n result = create({ url: request });\n else {\n const url = typeof request.url == \"string\" ? new URL(request.url) : request.url;\n result = {\n method: Method.parse(request.method) ?? \"GET\",\n url,\n parameter: request.parameter ?? {},\n search: { ...request.search, ...Object.fromEntries(url.searchParams.entries()) },\n remote: request.remote,\n header: request.header ?? {},\n body: request.body,\n };\n }\n return result;\n }\n Request.create = create;\n let Header;\n (function (Header) {\n Header.is = RequestHeader.is;\n Header.from = RequestHeader.from;\n Header.to = RequestHeader.to;\n })(Header = Request.Header || (Request.Header = {}));\n})(Request || (Request = {}));\n//# sourceMappingURL=index.js.map","const PlatformRequest = typeof Request != \"undefined\" ? Request : globalThis.Request;\nconst PlatformResponse = typeof Response != \"undefined\" ? Response : globalThis.Response;\nexport { PlatformRequest as Request, PlatformResponse as Response };\n//# sourceMappingURL=Platform.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Socket_instances, _Socket_receiveQueue, _Socket_sendQueue, _Socket_closed, _Socket_backend, _Socket_onMessage, _Socket_onClose, _Socket_handleOpen, _Socket_onOpen;\nexport class Socket {\n get state() {\n return __classPrivateFieldGet(this, _Socket_closed, \"f\") ? \"closed\" : \"opened\";\n }\n set onMessage(value) {\n if (__classPrivateFieldGet(this, _Socket_receiveQueue, \"f\").length && value) {\n __classPrivateFieldGet(this, _Socket_receiveQueue, \"f\").forEach(value);\n __classPrivateFieldSet(this, _Socket_receiveQueue, [], \"f\");\n }\n __classPrivateFieldSet(this, _Socket_onMessage, value, \"f\");\n }\n set onClose(value) {\n if (this.state == \"closed\" && value)\n value();\n __classPrivateFieldSet(this, _Socket_onClose, value, \"f\");\n }\n set onOpen(value) {\n if (this.state == \"opened\" && value)\n value();\n __classPrivateFieldSet(this, _Socket_onOpen, value, \"f\");\n }\n constructor(backend, isOpen) {\n _Socket_instances.add(this);\n _Socket_receiveQueue.set(this, []);\n _Socket_sendQueue.set(this, []);\n _Socket_closed.set(this, false);\n _Socket_backend.set(this, void 0);\n _Socket_onMessage.set(this, void 0);\n _Socket_onClose.set(this, void 0);\n _Socket_onOpen.set(this, void 0);\n __classPrivateFieldSet(this, _Socket_backend, backend, \"f\");\n if (isOpen)\n __classPrivateFieldSet(this, _Socket_sendQueue, undefined, \"f\");\n __classPrivateFieldGet(this, _Socket_backend, \"f\").addEventListener(\"open\", () => {\n if (__classPrivateFieldGet(this, _Socket_onOpen, \"f\"))\n __classPrivateFieldGet(this, _Socket_onOpen, \"f\").call(this);\n __classPrivateFieldGet(this, _Socket_instances, \"m\", _Socket_handleOpen).bind(this);\n });\n __classPrivateFieldGet(this, _Socket_backend, \"f\").addEventListener(\"message\", async (event) => {\n const data = this.processReceived(event.data);\n __classPrivateFieldGet(this, _Socket_instances, \"m\", _Socket_handleOpen).call(this);\n if (__classPrivateFieldGet(this, _Socket_onMessage, \"f\"))\n __classPrivateFieldGet(this, _Socket_onMessage, \"f\").call(this, data);\n else\n __classPrivateFieldGet(this, _Socket_receiveQueue, \"f\")?.push(data);\n });\n __classPrivateFieldGet(this, _Socket_backend, \"f\").addEventListener(\"close\", () => {\n if (__classPrivateFieldGet(this, _Socket_onClose, \"f\"))\n __classPrivateFieldGet(this, _Socket_onClose, \"f\").call(this);\n __classPrivateFieldSet(this, _Socket_closed, true, \"f\");\n });\n }\n send(message) {\n if (__classPrivateFieldGet(this, _Socket_sendQueue, \"f\"))\n __classPrivateFieldGet(this, _Socket_sendQueue, \"f\").push(this.processSend(message));\n else\n __classPrivateFieldGet(this, _Socket_backend, \"f\").send(this.processSend(message));\n }\n}\n_Socket_receiveQueue = new WeakMap(), _Socket_sendQueue = new WeakMap(), _Socket_closed = new WeakMap(), _Socket_backend = new WeakMap(), _Socket_onMessage = new WeakMap(), _Socket_onClose = new WeakMap(), _Socket_onOpen = new WeakMap(), _Socket_instances = new WeakSet(), _Socket_handleOpen = function _Socket_handleOpen() {\n __classPrivateFieldGet(this, _Socket_sendQueue, \"f\")?.forEach(buffer => __classPrivateFieldGet(this, _Socket_backend, \"f\").send(buffer));\n __classPrivateFieldSet(this, _Socket_sendQueue, undefined, \"f\");\n};\n//# sourceMappingURL=Socket.js.map","import { Socket } from \"./Socket\";\nexport class ArrayBuffer extends Socket {\n processReceived(data) {\n return data?.arrayBuffer\n ? data.arrayBuffer()\n : typeof data == \"string\"\n ? new TextEncoder().encode(data).buffer\n : data;\n }\n processSend(data) {\n return data;\n }\n}\n//# sourceMappingURL=ArrayBuffer.js.map","import { Socket } from \"./Socket\";\nexport class Json extends Socket {\n processReceived(data) {\n return JSON.parse(data?.arrayBuffer\n ? new TextDecoder().decode(data.arrayBuffer())\n : typeof data != \"string\"\n ? new TextDecoder().decode(data)\n : data);\n }\n processSend(data) {\n return JSON.stringify(data);\n }\n}\n//# sourceMappingURL=Json.js.map","import { Socket } from \"./Socket\";\nexport class String extends Socket {\n processReceived(data) {\n return data?.arrayBuffer\n ? new TextDecoder().decode(data.arrayBuffer())\n : typeof data != \"string\"\n ? new TextDecoder().decode(data)\n : data;\n }\n processSend(data) {\n return data;\n }\n}\n//# sourceMappingURL=String.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Factory_json, _Factory_string, _Factory_arrayBuffer;\nimport { ArrayBuffer as SocketArrayBuffer } from \"./ArrayBuffer\";\nimport { Json as SocketJson } from \"./Json\";\nimport { String as SocketString } from \"./String\";\nexport class Factory {\n get json() {\n if (!__classPrivateFieldGet(this, _Factory_json, \"f\"))\n __classPrivateFieldSet(this, _Factory_json, new SocketJson(this.backend, this.isOpen), \"f\");\n return __classPrivateFieldGet(this, _Factory_json, \"f\");\n }\n get string() {\n if (!__classPrivateFieldGet(this, _Factory_string, \"f\"))\n __classPrivateFieldSet(this, _Factory_string, new SocketString(this.backend, this.isOpen), \"f\");\n return __classPrivateFieldGet(this, _Factory_string, \"f\");\n }\n get arrayBuffer() {\n if (!__classPrivateFieldGet(this, _Factory_arrayBuffer, \"f\"))\n __classPrivateFieldSet(this, _Factory_arrayBuffer, new SocketArrayBuffer(this.backend, this.isOpen), \"f\");\n return __classPrivateFieldGet(this, _Factory_arrayBuffer, \"f\");\n }\n constructor(backend, isOpen) {\n this.backend = backend;\n this.isOpen = isOpen;\n _Factory_json.set(this, void 0);\n _Factory_string.set(this, void 0);\n _Factory_arrayBuffer.set(this, void 0);\n }\n createResponse(header = {}) {\n return { status: 101, socket: this, header };\n }\n close(code, reason) {\n this.backend.close(code, reason);\n }\n}\n_Factory_json = new WeakMap(), _Factory_string = new WeakMap(), _Factory_arrayBuffer = new WeakMap();\n//# sourceMappingURL=Factory.js.map","import { Factory as SocketFactory } from \"./Factory\";\nexport var Socket;\n(function (Socket) {\n Socket.Factory = SocketFactory;\n})(Socket || (Socket = {}));\n//# sourceMappingURL=index.js.map","import * as CamelCase from \"../CamelCase\";\nconst fields = [\n [\"accessControlAllowOrigin\", \"Access-Control-Allow-Origin\", 1],\n [\"accessControlAllowCredentials\", \"Access-Control-Allow-Credentials\", 1],\n [\"accessControlExposeHeaders\", \"Access-Control-Expose-Headers\", 2],\n [\"accessControlMaxAge\", \"Access-Control-Max-Age\", 1],\n [\"accessControlAllowMethods\", \"Access-Control-Allow-Methods\", 2],\n [\"accessControlAllowHeaders\", \"Access-Control-Allow-Headers\", 2],\n [\"acceptPatch\", \"Accept-Patch\", 1],\n [\"acceptRanges\", \"Accept-Ranges\", 1],\n [\"age\", \"Age\", 1],\n [\"allow\", \"Allow\", 2],\n [\"altSvc\", \"Alt-Svc\", 1],\n [\"cacheControl\", \"Cache-Control\", 1],\n [\"cfConnectionIp\", \"CF-Connecting-IP\", 1],\n [\"cfIpCountry\", \"CF-IPCountry\", 1],\n [\"connection\", \"Connection\", 1],\n [\"contentDisposition\", \"Content-Disposition\", 1],\n [\"contentEncoding\", \"Content-Encoding\", 1],\n [\"contentLanguage\", \"Content-Language\", 2],\n [\"contentLength\", \"Content-Length\", 1],\n [\"contentLocation\", \"Content-Location\", 1],\n [\"contentMD5\", \"Content-MD5\", 1],\n [\"contentRange\", \"Content-Range\", 1],\n [\"contentSecurityPolicy\", \"Content-Security-Policy\", 1],\n [\"contentType\", \"Content-Type\", 1],\n [\"date\", \"Date\", 1],\n [\"deltaBase\", \"Delta-Base\", 1],\n [\"eTag\", \"ETag\", 1],\n [\"expires\", \"Expires\", 1],\n [\"iM\", \"IM\", 1],\n [\"lastModified\", \"Last-Modified\", 1],\n [\"link\", \"Link\", 1],\n [\"location\", \"Location\", 1],\n [\"p3P\", \"P3P\", 1],\n [\"pragma\", \"Pragma\", 1],\n [\"proxyAuthenticate\", \"Proxy-Authenticate\", 1],\n [\"publicKeyPins\", \"Public-Key-Pins\", 1],\n [\"refresh\", \"Refresh\", 1],\n [\"retryAfter\", \"Retry-After\", 1],\n [\"server\", \"Server\", 1],\n [\"setCookie\", \"Set-Cookie\", 1],\n [\"status\", \"Status\", 1],\n [\"strictTransportSecurity\", \"Strict-Transport-Security\", 1],\n [\"timingAllowOrigin\", \"Timing-Allow-Origin\", 2],\n [\"trailer\", \"Trailer\", 1],\n [\"transferEncoding\", \"Transfer-Encoding\", 1],\n [\"tk\", \"Tk\", 1],\n [\"upgrade\", \"Upgrade\", 2],\n [\"vary\", \"Vary\", 2],\n [\"via\", \"Via\", 1],\n [\"warning\", \"Warning\", 1],\n [\"wwwAuthenticate\", \"WWW-Authenticate\", 1],\n [\"xContentDuration\", \"X-Content-Duration\", 1],\n [\"xContentSecurityPolicy\", \"X-Content-Security-Policy\", 1],\n [\"xContentTypeOptions\", \"X-Content-Type-Options\", 1],\n [\"xCorrelationId\", \"X-Correlation-ID\", 1],\n [\"xFrameOptions\", \"X-Frame-Options\", 1],\n [\"xMsContinuation\", \"X-Ms-Continuation\", 1],\n [\"xPoweredBy\", \"X-Powered-By\", 1],\n [\"xRequestId\", \"X-Request-ID\", 1],\n [\"xUACompatible\", \"X-UA-Compatible\", 1],\n [\"xWebkitCsp\", \"X-WebKit-CSP\", 1],\n [\"xXssProtection\", \"X-XSS-Protection\", 1],\n];\nexport var Header;\n(function (Header) {\n function is(value) {\n function isString(value) {\n return value == undefined || typeof value == \"string\";\n }\n function isStringArray(value) {\n return value == undefined || (Array.isArray(value) && value.every(v => typeof v == \"string\"));\n }\n return (typeof value == \"object\" && fields.every(field => (field[2] == 1 ? isString : isStringArray)(value[field[0]])));\n }\n Header.is = is;\n function to(header) {\n return Object.fromEntries(Object.entries(header).map(([name, value]) => {\n const field = fields.find(([camelCase, ..._]) => camelCase == name);\n return [field ? field[1] : CamelCase.from(name), Array.isArray(value) ? value.join(\", \") : value];\n }));\n }\n Header.to = to;\n function from(headers) {\n return Object.fromEntries((Array.isArray(headers)\n ? headers.map(([field, ...value]) => [field, value.join(\", \")])\n : isHeaders(headers)\n ? getEntries(headers)\n : Object.entries(headers)).map(([name, value]) => {\n const field = fields.find(([c, n, l]) => name.toLowerCase() == n.toLowerCase());\n return field\n ? [field[0], field[2] == 1 || typeof value != \"string\" ? value : value.split(\",\").map(v => v.trim())]\n : [CamelCase.to(name), value];\n }));\n }\n Header.from = from;\n function toString(header) {\n return Object.entries(header)\n .map(([header, value]) => header + \": \" + value)\n .join(\"\\n\");\n }\n Header.toString = toString;\n function isHeaders(value) {\n return typeof value.forEach == \"function\";\n }\n function getEntries(headers) {\n const result = [];\n headers.forEach((value, key) => result.push([key, value]));\n return result;\n }\n})(Header || (Header = {}));\n//# sourceMappingURL=Header.js.map","import { Header } from \"./Header\";\nexport var Like;\n(function (Like) {\n function is(value) {\n return (typeof value == \"object\" &&\n Object.keys(value).every(key => [\"status\", \"header\", \"body\", \"socket\"].some(property => property == key)) &&\n (value.status == undefined || typeof value.status == \"number\") &&\n (value.header == undefined || Header.is(value.header)) &&\n (value.socket == undefined ||\n (typeof value.socket.close == \"function\" &&\n typeof value.socket.json?.send == \"function\" &&\n typeof value.socket.string?.send == \"function\" &&\n typeof value.socket.arrayBuffer?.send == \"function\")) &&\n (value.status != undefined || value.header != undefined || value.body != undefined));\n }\n Like.is = is;\n})(Like || (Like = {}));\n//# sourceMappingURL=Like.js.map","import * as Parser from \"../Parser\";\nimport * as Platform from \"../Platform\";\nimport * as Serializer from \"../Serializer\";\nimport { Socket } from \"../Socket\";\nimport { Header as ResponseHeader } from \"./Header\";\nimport { Like as ResponseLike } from \"./Like\";\nexport var Response;\n(function (Response) {\n function is(value) {\n return (typeof value == \"object\" &&\n Object.keys(value).every(key => [\"status\", \"header\", \"body\", \"socket\"].some(k => k == key)) &&\n (value.status == undefined || typeof value.status == \"number\") &&\n (value.header == undefined || ResponseHeader.is(value.header)) &&\n (value.socket == undefined || value.socket instanceof WebSocket));\n }\n Response.is = is;\n async function to(request) {\n return new Platform.Response(await Serializer.serialize(await request.body, request.header.contentType), {\n status: request.status,\n headers: new Headers(ResponseHeader.to(!request.header.contentType?.startsWith(\"multipart/formdata\")\n ? request.header\n : (({ contentType, ...header }) => header)(request.header))),\n ...(request.socket && {\n webSocket: { ...request.socket.createResponse().socket }?.backend,\n }),\n });\n }\n Response.to = to;\n function from(response) {\n return {\n status: response.status,\n header: ResponseHeader.from(response.headers),\n body: response.status == 101 ? undefined : Parser.parse(response),\n ...(response.webSocket && { socket: new Socket.Factory(response.webSocket) }),\n };\n }\n Response.from = from;\n function create(response, contentType) {\n const result = ResponseLike.is(response)\n ? {\n status: 200,\n header: {},\n body: undefined,\n ...(response.socket && { socket: response.socket }),\n ...response,\n }\n : typeof response?.createResponse == \"function\" && (contentType == undefined || ResponseHeader.is(contentType))\n ? response.createResponse(contentType)\n : {\n status: (typeof response == \"object\" && typeof response.status == \"number\" && response.status) || 200,\n header: typeof response == \"object\"\n ? {\n ...response.header,\n ...((response.status == 301 || response.status == 302) && response.location\n ? { location: response.location }\n : {}),\n }\n : {},\n body: !(typeof response == \"object\" && !Array.isArray(response)) ||\n response instanceof ArrayBuffer ||\n ArrayBuffer.isView(response) ||\n response instanceof FormData\n ? response\n : (({ header, ...body }) => body)(response),\n ...((response.webSocket && { socket: new Socket.Factory(response.webSocket) }) ||\n (response.socket && { socket: response.socket })),\n };\n if (!result.header.contentType)\n switch (typeof result.body) {\n case \"undefined\":\n break;\n default:\n case \"object\":\n result.header.contentType =\n typeof contentType == \"string\"\n ? contentType\n : contentType?.contentType\n ? contentType.contentType\n : result.body instanceof FormData\n ? \"multipart/formdata\"\n : result.body instanceof ArrayBuffer || ArrayBuffer.isView(result.body)\n ? isPdf(result.body)\n ? \"application/pdf\"\n : \"application/octet-stream\"\n : \"application/json; charset=utf-8\";\n break;\n case \"string\":\n result.header.contentType =\n result.body.slice(0, 9).toLowerCase() == \"<!doctype\"\n ? \"text/html; charset=utf-8\"\n : /^[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.?[A-Za-z0-9-_.+/=]*$/.test(result.body)\n ? \"application/jwt; charset=utf-8\"\n : /^<\\?xml version=(.|\\n)*\\?>(.|\\n)*<svg(.|\\n)*<\\/svg>$/.test(result.body)\n ? \"image/svg+xml\"\n : \"text/plain; charset=utf-8\";\n break;\n }\n return result;\n }\n Response.create = create;\n function isPdf(body) {\n const bytes = new Uint8Array(ArrayBuffer.isView(body) ? body.buffer : body).slice(0, 4);\n return [37, 80, 68, 70].every((current, index) => current == bytes[index]);\n }\n Response.Header = ResponseHeader;\n Response.Like = ResponseLike;\n})(Response || (Response = {}));\n//# sourceMappingURL=index.js.map","import { Request } from \"./Request\";\nimport { Response } from \"./Response\";\nexport const fetch = create(globalThis.fetch);\nfetch.create = create;\nfunction create(fetch) {\n return async (request) => {\n const r = Request.create(request);\n return Response.from(await fetch(r.url.toString(), await Request.to(r)));\n };\n}\n//# sourceMappingURL=fetch.js.map","export var FormData;\n(function (FormData) {\n function to(data) {\n const result = new globalThis.FormData();\n result.append(\"*\", new globalThis.Blob([new TextEncoder().encode(JSON.stringify(toHelperObject(data, \"\", result)))], {\n type: \"application/json; charset=utf-8\",\n }));\n return result;\n }\n FormData.to = to;\n function toHelperObject(data, name, form) {\n return Object.entries(data).reduce((result, [key, value]) => {\n value instanceof Blob\n ? form.append(name ? `${name}.${key}` : key, value)\n : typeof value == \"object\" && value\n ? Array.isArray(value)\n ? (result[key] = toHelperArray(value, name ? `${name}.${key}` : key, form))\n : (result[key] = toHelperObject(value, name ? `${name}.${key}` : key, form))\n : (result[key] = value);\n return result;\n }, {});\n }\n function toHelperArray(data, name, form) {\n return data.reduce((result, value) => {\n typeof value == \"object\" && value\n ? Array.isArray(value)\n ? result.push(toHelperArray(value, name, form))\n : result.push(toHelperObject(value, name, form))\n : result.push(value);\n return result;\n }, []);\n }\n async function from(form) {\n const result = {};\n for (const [name, value] of form.entries())\n await set(result, name.split(\".\"), value);\n return result;\n }\n FormData.from = from;\n async function set(data, [head, ...tail], value) {\n if (tail.length == 0)\n value instanceof Blob && value.type.startsWith(\"application/json\")\n ? head == \"*\"\n ? merge(data, JSON.parse(await value.text()))\n : typeof data[head] == \"object\" && data[head]\n ? merge(data[head], JSON.parse(await value.text()))\n : (data[head] = JSON.parse(await value.text()))\n : (data[head] = value);\n else\n set(typeof data[head] == \"object\" && data[head] ? data[head] : (data[head] = {}), tail, value);\n }\n function merge(target, ...sources) {\n if (sources.length) {\n const [head, ...tail] = sources;\n Object.entries(head).forEach(([key, value]) => isObject(value)\n ? merge(isObject(target[key]) ? target[key] : (target[key] = {}), value)\n : (target[key] = head[key]));\n merge(target, ...tail);\n }\n }\n function isObject(value) {\n return value && typeof value == \"object\" && !Array.isArray(value);\n }\n FormData.isObject = isObject;\n})(FormData || (FormData = {}));\n//# sourceMappingURL=FormData.js.map","export function stringify(data) {\n const result = [];\n const map = (key, value) => {\n switch (typeof value) {\n default:\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n result.push(`${key}=${encodeURIComponent(value.toString())}`);\n break;\n case \"undefined\":\n break;\n case \"object\":\n for (const property in value)\n if (Object.prototype.hasOwnProperty.call(value, property))\n map(key ? key + `[${property}]` : property, value[property]);\n break;\n }\n };\n map(\"\", data);\n return result.join(\"&\");\n}\nexport function parse(data) {\n const convertArrays = (target) => {\n return typeof target == \"object\" &&\n Object.keys(target)\n .sort()\n .every((k, i) => `${k}` == `${i}`)\n ? Object.entries(target)\n .sort()\n .map(entry => (typeof entry[1] == \"object\" ? convertArrays(entry[1]) : entry[1]))\n : typeof target == \"object\"\n ? Object.fromEntries(Object.entries(target).map(entry => [entry[0], convertArrays(entry[1])]))\n : target;\n };\n const insert = (target, key, value) => {\n target[key[0]] = key.length > 1 ? insert(target[key[0]] ?? {}, key.slice(1), value) : value;\n return target;\n };\n const entries = data\n .split(\"&\")\n .map(d => d.split(\"=\", 2))\n .map(([k, v]) => [\n decodeURIComponent(k)\n .split(\"[\")\n .map(p => p.replace(\"]\", \"\")),\n decodeURIComponent(v.replace(/\\+/g, \" \")),\n ]);\n return entries.reduce((result, [key, value]) => convertArrays(insert(result, key, value)), {});\n}\n//# sourceMappingURL=Search.js.map","import { Client } from \"./Client\";\nimport { fetch } from \"./fetch\";\nimport { FormData } from \"./FormData\";\nimport * as http from \"./http\";\nimport { Method } from \"./Method\";\nimport * as Parser from \"./Parser\";\nimport { Request } from \"./Request\";\nimport { Response } from \"./Response\";\nimport * as Search from \"./Search\";\nimport * as Serializer from \"./Serializer\";\nimport { Socket } from \"./Socket\";\nParser.add(async (request) => await request.text(), \"text/plain\", \"text/html\");\nParser.add(async (request) => await request.json(), \"application/json\");\nParser.add(async (request) => await request.arrayBuffer(), \"application/pdf\");\nParser.add(async (request) => FormData.from(await request.formData()), \"multipart/form-data\");\nParser.add(async (request) => Search.parse(await request.text()), \"application/x-www-form-urlencoded\");\nSerializer.add(async (body) => (typeof body == \"string\" ? body : body.toString()), \"text/plain\", \"text/html\");\nSerializer.add(async (body) => JSON.stringify(body), \"application/json\");\nSerializer.add(async (body) => body, \"application/pdf\");\nSerializer.add(async (body) => Search.stringify(body), \"application/x-www-form-urlencoded\");\nSerializer.add(async (body) => (body instanceof globalThis.FormData ? body : FormData.to(body)), \"multipart/form-data\");\nexport { Client, fetch, FormData, Method, Parser, Request, Response, Search, Serializer, Socket, http };\n//# sourceMappingURL=index.js.map","export interface Clearable {\n\tclear(): Promise<void>\n}\nexport namespace Clearable {\n\texport function is(value: Clearable | any): value is Clearable {\n\t\treturn value && typeof value == \"object\" && typeof value.clear == \"function\"\n\t}\n}\n","import { EventEmitter } from \"@stencil/core\"\nimport { isly } from \"isly\"\n\nexport interface Editable extends Editable.Element {\n\tchanged: boolean\n\tvalue?: any\n\tsmoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n}\nexport namespace Editable {\n\texport interface Element {\n\t\tedit: Editable.Edit\n\t\treset: Editable.Reset\n\t\treadonly: boolean\n\t\tlisten: Editable.Listen\n\t\tsetInitialValue: () => void\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tedit: isly.function(),\n\t\t\treadonly: isly.boolean(),\n\t\t\tlisten: isly.function<Listen>(),\n\t\t\treset: isly.function<Reset>(),\n\t\t\tsetInitialValue: isly.function(),\n\t\t})\n\t\texport const is = type.is\n\t}\n\texport type Listen = (property: \"changed\", listener: (parent: Editable) => Promise<void>) => void\n\texport type Edit = (editable: boolean) => Promise<void>\n\texport type Reset = () => Promise<void>\n\tconst EventEmitter = isly.object<EventEmitter>({ emit: isly.function<EventEmitter[\"emit\"]>() })\n\texport const type = Element.type.extend<Editable>({\n\t\tchanged: isly.boolean(),\n\t\tvalue: isly.any().optional(),\n\t\tsmoothlyFormDisable: EventEmitter,\n\t})\n\texport const is = type.is\n}\n","import { isly } from \"isly\"\n\nexport type Looks = typeof Looks.types[number]\n\nexport namespace Looks {\n\texport const types = [\"plain\", \"grid\", \"border\", \"line\", \"transparent\"] as const\n\texport const type = isly.string(types)\n\texport const is = type.is\n}\n","import { EventEmitter } from \"@stencil/core\"\nimport { isly } from \"isly\"\nimport { Color, Data } from \"../../model\"\nimport { SmoothlyForm } from \"../form\"\nimport { Editable } from \"./Editable\"\nimport { Looks } from \"./Looks\"\n\nexport interface Input extends Input.Element {\n\tsmoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\tsmoothlyInput: EventEmitter<Data>\n\tsmoothlyInputForm?: EventEmitter<Record<string, Data>>\n\tparent: Editable | undefined\n}\nexport namespace Input {\n\texport interface Element {\n\t\tregister: () => Promise<void>\n\t\tunregister: () => Promise<void>\n\t\tgetValue: GetValue\n\t\tcolor?: Color\n\t\tname: string\n\t\tinvalid?: boolean\n\t\tlooks?: Looks\n\t\tdefined?: boolean\n\t\tbinary?: Binary\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tregister: isly.function<() => Promise<void>>(),\n\t\t\tunregister: isly.function<() => Promise<void>>(),\n\t\t\tgetValue: isly.function<GetValue>(),\n\t\t\tcolor: Color.type.optional(),\n\t\t\tname: isly.string(),\n\t\t\tinvalid: isly.boolean().optional(),\n\t\t\tlooks: Looks.type,\n\t\t\tdefined: isly.boolean().optional(),\n\t\t\tbinary: isly.function<Binary>().optional(),\n\t\t})\n\t\texport const is = type.is\n\t}\n\texport type GetValue = () => Promise<any>\n\texport type Binary = () => Promise<boolean>\n\tconst EventEmitter = isly.object<EventEmitter>({ emit: isly.function<EventEmitter[\"emit\"]>() })\n\texport const type = Element.type.extend<Input>({\n\t\tsmoothlyInputLoad: EventEmitter,\n\t\tsmoothlyInput: EventEmitter,\n\t\tsmoothlyInputForm: EventEmitter.optional(),\n\t\tparent: Editable.type.optional(),\n\t})\n\texport const is = type.is\n\n\texport function formRemove(self: Input) {\n\t\tif (self.parent instanceof SmoothlyForm) {\n\t\t\tself.parent.removeInput(self.name)\n\t\t}\n\t}\n\texport function formAdd(self: Input) {\n\t\tself.smoothlyInputLoad.emit(parent => (self.parent = parent))\n\t}\n}\n","smoothly-form {\n\tdisplay: block;\n\tposition: relative;\n}\nsmoothly-form > form {\n\tposition: relative;\n\tmin-width: 15em;\n}\nsmoothly-form > form > fieldset {\n\tdisplay: flex;\n\tflex-flow: row wrap;\n\tmargin-inline-start: unset;\n\tmargin-inline-end: unset;\n\tpadding-block-start: unset;\n\tpadding-inline-start: unset;\n\tpadding-inline-end: unset;\n\tpadding-block-end: unset;\n\tmin-inline-size: unset;\n\tborder-width: unset;\n\tborder-style: unset;\n\tborder-color: unset;\n\tborder-image: unset;\n}\nsmoothly-form > form > fieldset > * {\n\tflex-grow: 1;\n\tmin-width: 10em;\n\tflex-basis: 40%;\n}\n\nsmoothly-form[looks=\"line\"] > form > fieldset,\nsmoothly-form[looks=\"border\"] > form > fieldset,\nsmoothly-form[looks=\"transparent\"] > form > fieldset {\n\tgap: 2em\n}\nsmoothly-form[looks=\"grid\"] > form > fieldset {\n\tpadding: 1px;\n\tgap: 1px;\n}\n\nsmoothly-form > form > div:not(:empty) {\n\tdisplay: flex;\n\tjustify-content: end;\n\tgap: 1em;\n\tmargin-top: 0.5rem;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tState,\n\tWatch,\n} from \"@stencil/core\"\nimport { http } from \"cloudly-http\"\nimport { isly } from \"isly\"\nimport { SmoothlyFormCustomEvent } from \"../../components\"\nimport { Color, Data, Notice, Submit } from \"../../model\"\nimport { Clearable } from \"../input/Clearable\"\nimport { Editable } from \"../input/Editable\"\nimport { Input } from \"../input/Input\"\nimport { Looks } from \"../input/Looks\"\nimport { Submittable } from \"../input/Submittable\"\n\n@Component({\n\ttag: \"smoothly-form\",\n\tstyleUrl: \"style.css\",\n})\nexport class SmoothlyForm implements ComponentWillLoad, Clearable, Submittable, Editable {\n\t@Element() element: HTMLSmoothlyFormElement\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ mutable: true }) value: Readonly<Data> = {}\n\t@Prop() action?: string\n\t@Prop() validator?: isly.Type<any>\n\t@Prop() type?: \"update\" | \"change\" | \"fetch\" | \"create\" = this.action ? \"create\" : undefined\n\t@Prop({ mutable: true }) readonly = false\n\t@Prop({ reflect: true, attribute: \"looks\" }) looks?: Looks\n\t@Prop({ reflect: true }) name?: string\n\t@Prop() prevent = true\n\t@Prop({ mutable: true }) changed = false\n\t@State() processing?: Promise<boolean>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyFormInput: EventEmitter<Data>\n\t@Event() smoothlyFormSubmit: EventEmitter<Submit>\n\t@Event() smoothlyFormReset: EventEmitter<void>\n\t@Event() smoothlyFormEdit: EventEmitter<boolean>\n\t@Event() smoothlyFormClear: EventEmitter<void>\n\t@Event() notice: EventEmitter<Notice>\n\tprivate contentType: \"json\" | \"form-data\" = \"json\"\n\tprivate inputs = new Map<string, Input.Element>()\n\tprivate readonlyAtLoad = this.readonly\n\tprivate listeners: {\n\t\tchanged?: ((parent: Editable) => Promise<void>)[]\n\t} = {}\n\n\tcomponentWillLoad(): void {\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t}\n\t@Method()\n\tasync removeInput(name: string) {\n\t\tif (this.element.isConnected) {\n\t\t\tthis.value = Data.remove(this.value, name)\n\t\t\tthis.inputs.delete(name)\n\t\t\tthis.smoothlyFormInput.emit(Data.convertArrays(this.value))\n\t\t}\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\t;(this.listeners[property] ??= []).push(listener)\n\t\tlistener(this)\n\t}\n\t@Watch(\"value\")\n\tasync watchValue() {\n\t\tthis.changed = [...this.inputs.values()].some(input => (Editable.type.is(input) ? input.changed : true))\n\t\tif (this.validator) {\n\t\t\tconst flaws = this.validator\n\t\t\t\t?.flaw(this.value)\n\t\t\t\t.flaws?.reduce((r: Record<string, isly.Flaw>, f) => (f.property ? { ...r, [f.property]: f } : r), {})\n\t\t\tfor (const [property, input] of this.inputs.entries()) {\n\t\t\t\tthis.validate(flaws, property, input)\n\t\t\t}\n\t\t}\n\t\tthis.listeners.changed?.forEach(l => l(this))\n\t}\n\tvalidate(flaws: Record<string, isly.Flaw> | undefined, property: string, input: Input.Element) {\n\t\tif (property.includes(\".\")) {\n\t\t\tconst [key, ...rest] = property.split(\".\")\n\t\t\tconst nestedFlaws = flaws?.[key]?.flaws ?? []\n\t\t\tthis.validate(\n\t\t\t\tnestedFlaws.reduce((r: Record<string, isly.Flaw>, f) => (f.property ? { ...r, [f.property]: f } : r), {}),\n\t\t\t\trest.join(\".\"),\n\t\t\t\tinput\n\t\t\t)\n\t\t} else {\n\t\t\tconst flaw = flaws?.[property]\n\t\t\tinput && (input.invalid = !!flaw)\n\t\t}\n\t}\n\t@Watch(\"readonly\")\n\twatchReadonly() {\n\t\tthis.listeners.changed?.forEach(l => l(this))\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks?: Looks, color?: Color) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.looks, this.color)\n\t}\n\t@Listen(\"smoothlyInput\")\n\tasync smoothlyInputHandler(event: CustomEvent<Record<string, any>>): Promise<void> {\n\t\tthis.value = Data.merge(this.value, event.detail)\n\t\tthis.smoothlyFormInput.emit(Data.convertArrays(this.value))\n\t}\n\t@Listen(\"smoothlyFormSubmit\", { target: \"window\" })\n\twindowSubmitHandler(event: SmoothlyFormCustomEvent<Submit>): void {\n\t\tevent.target == this.element && event.detail.result(false)\n\t}\n\t@Listen(\"smoothlyFormSubmit\")\n\tsubmitHandler(event: SmoothlyFormCustomEvent<Submit>): void {\n\t\tthis.action && event.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyForm) => void>): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this)\n\t\tif (Input.Element.is(event.target)) {\n\t\t\tif (await event.target.binary?.())\n\t\t\t\tthis.contentType = \"form-data\"\n\t\t\tconst inputValue = await event.target.getValue() // Needs to await value separately to avoid race condition\n\t\t\tthis.value = Data.merge(this.value, { [event.target.name]: inputValue })\n\t\t\tthis.smoothlyFormInput.emit(Data.convertArrays(this.value))\n\t\t\tthis.inputs.set(event.target.name, event.target)\n\t\t}\n\t}\n\t@Listen(\"smoothlyFormDisable\")\n\tasync smoothlyFormDisableHandler(event: CustomEvent): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.readonly)\n\t}\n\t@Method()\n\tasync submit(remove?: boolean): Promise<void> {\n\t\tthis.processing = new Promise(resolve => {\n\t\t\tthis.smoothlyFormSubmit.emit({\n\t\t\t\tvalue: Data.convertArrays(this.value),\n\t\t\t\tresult: resolve,\n\t\t\t\ttype: remove == true ? \"remove\" : this.type,\n\t\t\t})\n\t\t\tif (this.action) {\n\t\t\t\tconst action = this.action\n\t\t\t\tthis.notice.emit(\n\t\t\t\t\tNotice.execute(\"Submitting form\", async () => {\n\t\t\t\t\t\tconst method = remove\n\t\t\t\t\t\t\t? \"DELETE\"\n\t\t\t\t\t\t\t: !this.type || this.type == \"create\"\n\t\t\t\t\t\t\t? \"POST\"\n\t\t\t\t\t\t\t: this.type == \"change\"\n\t\t\t\t\t\t\t? \"PUT\"\n\t\t\t\t\t\t\t: this.type == \"update\"\n\t\t\t\t\t\t\t? \"PATCH\"\n\t\t\t\t\t\t\t: \"GET\"\n\t\t\t\t\t\tconst response = await http\n\t\t\t\t\t\t\t.fetch(\n\t\t\t\t\t\t\t\thttp.Request.create(\n\t\t\t\t\t\t\t\t\tmethod == \"GET\"\n\t\t\t\t\t\t\t\t\t\t? { method, url: `${action}?${http.Search.stringify(this.value)}` }\n\t\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\t\tmethod,\n\t\t\t\t\t\t\t\t\t\t\t\turl: action,\n\t\t\t\t\t\t\t\t\t\t\t\t...(this.value && {\n\t\t\t\t\t\t\t\t\t\t\t\t\theader: { contentType: this.contentType ? \"multipart/form-data\" : \"application/json\" },\n\t\t\t\t\t\t\t\t\t\t\t\t\tbody: this.value,\n\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.catch(() => undefined)\n\t\t\t\t\t\tconst result =\n\t\t\t\t\t\t\t!response || response?.status < 200 || response.status >= 300\n\t\t\t\t\t\t\t\t? ([false, \"Failed to submit form.\"] as const)\n\t\t\t\t\t\t\t\t: ([true, \"Form successfully submitted.\"] as const)\n\t\t\t\t\t\tresolve(result[0])\n\t\t\t\t\t\treturn [...result]\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t\tif (await this.processing) {\n\t\t\tthis.type == \"create\" && (await this.clear())\n\t\t\tawait this.setInitialValue()\n\t\t\tthis.readonlyAtLoad && (await this.edit(!this.readonlyAtLoad))\n\t\t}\n\t\tthis.processing = undefined\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tawait Promise.all([...this.inputs.values()].map(async input => Clearable.is(input) && input.clear()))\n\t\tthis.smoothlyFormClear.emit()\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tawait Promise.all(\n\t\t\t[...this.inputs.values()].map(async input => Editable.Element.type.is(input) && input.edit(editable))\n\t\t)\n\t\tthis.readonly = !editable\n\t\tthis.smoothlyFormEdit.emit(editable)\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tawait Promise.all([...this.inputs.values()].map(input => Editable.Element.type.is(input) && input.reset()))\n\t\tthis.changed = [...this.inputs.values()].some(input => (Editable.type.is(input) ? input.changed : true))\n\t\tthis.smoothlyFormReset.emit()\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tawait Promise.all(\n\t\t\t[...this.inputs.values()].map(input => Editable.Element.type.is(input) && input.setInitialValue())\n\t\t)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-spinner overlay hidden={!this.processing} />\n\t\t\t\t<form onSubmit={!this.prevent ? undefined : e => e.preventDefault()} name={this.name}>\n\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</fieldset>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name=\"clear\" />\n\t\t\t\t\t\t<slot name=\"edit\" />\n\t\t\t\t\t\t<slot name=\"reset\" />\n\t\t\t\t\t\t<slot name=\"delete\" />\n\t\t\t\t\t\t<slot name=\"submit\" />\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tmargin-top: 2em;\n\tmargin-bottom: 10em;\n}\n\n:host>div {\n\tmargin: auto;\n\twidth: 1200px;\n\tmax-width: 100%;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemo {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-form-demo-all />\n\t\t\t\t\t<smoothly-form-demo-pet />\n\t\t\t\t\t<smoothly-form-demo-card />\n\t\t\t\t\t<smoothly-form-demo-login />\n\t\t\t\t\t<smoothly-form-demo-prices />\n\t\t\t\t\t<smoothly-form-demo-typed />\n\t\t\t\t\t<smoothly-form-demo-transparent />\n\t\t\t\t\t<smoothly-form-demo-date />\n\t\t\t\t\t<smoothly-form-demo-date-range />\n\t\t\t\t\t<smoothly-form-demo-controlled />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo-all\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoAll {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>All inputs</h2>\n\t\t\t\t<smoothly-form\n\t\t\t\t\tlooks=\"grid\"\n\t\t\t\t\ttype=\"create\"\n\t\t\t\t\treadonly\n\t\t\t\t\taction=\"https://api.toiletapi.com/upload/6b12fd2f-e896-46f9-b38f-25cf42cee4b4\"\n\t\t\t\t\tonSmoothlyFormSubmit={e => {\n\t\t\t\t\t\tObject.entries(e.detail.value).forEach(([key, value]) => console.log(key, value))\n\t\t\t\t\t}}>\n\t\t\t\t\t<smoothly-input readonly name=\"First Name\" value=\"John\">\n\t\t\t\t\t\tFirst name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input showLabel={false} name=\"Last name\" value=\"Doe\">\n\t\t\t\t\t\tLast name\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\"></smoothly-input-clear>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"phone\" name=\"Phone\" value={\"777888999\"}>\n\t\t\t\t\t\tPhone\n\t\t\t\t\t\t<smoothly-input-reset size=\"icon\" slot=\"end\"></smoothly-input-reset>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-radio clearable name=\"radioFirstInput\">\n\t\t\t\t\t\t<label slot=\"label\">Clearable</label>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"first\"}>Label 1</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected value={\"second\"}>\n\t\t\t\t\t\t\tLabel 2\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"third\"}>Label 3</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-color name=\"color\">Color</smoothly-input-color>\n\t\t\t\t\t<smoothly-input-select multiple menuHeight=\"7.5items\" placeholder=\"Select...\" name=\"select-month\">\n\t\t\t\t\t\t<label slot=\"label\">Month multiple select</label>\n\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name=\"select-icon\" clearable={false} showSelected={false}>\n\t\t\t\t\t\t<smoothly-item value=\"folder\" selected>\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"folder-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"camera\">\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"camera-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-checkbox name=\"checkbox\">Check the box</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-checkbox name=\"checkbox2\" checked>\n\t\t\t\t\t\tCheck the box 2\n\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-range step={1} name=\"range3\" value={20} label=\"Range\" />\n\t\t\t\t\t<smoothly-input name=\"pets.0.name\">First Pet's Name</smoothly-input>\n\t\t\t\t\t<smoothly-input-range name=\"pets.0.age\" max={100} step={1} label=\"First Pet's Age\" />\n\t\t\t\t\t<smoothly-input name=\"pets.1.name\">Second Pet's Name</smoothly-input>\n\t\t\t\t\t<smoothly-input-range name=\"pets.1.age\" max={100} step={1} label=\"Second Pet's Age\" />\n\t\t\t\t\t<smoothly-input name=\"pets.2.name\">Third Pet's Name</smoothly-input>\n\t\t\t\t\t<smoothly-input-range name=\"pets.2.age\" max={100} step={1} label=\"Third Pet's Age\" />\n\t\t\t\t\t<smoothly-input-file name={\"profile\"} placeholder={\"Click or drag your profile picture here...\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Profile</span>\n\t\t\t\t\t\t<smoothly-icon slot={\"button\"} name={\"person-circle-outline\"} size={\"tiny\"} fill={\"default\"} />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-input type=\"duration\" name=\"duration\" value={{}}>\n\t\t\t\t\t\tDuration\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-clear fill=\"default\" type=\"form\" color=\"warning\" slot=\"clear\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-edit fill=\"default\" type=\"form\" color=\"tertiary\" slot=\"edit\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-reset fill=\"default\" type=\"form\" color=\"warning\" slot=\"reset\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-submit delete slot=\"delete\" color=\"danger\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-submit fill=\"default\" color=\"success\" slot=\"submit\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo-card\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoCard {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Card</h2>\n\t\t\t\t<smoothly-form looks=\"grid\" onSmoothlyFormSubmit={(e: CustomEvent) => alert(JSON.stringify(e.detail))}>\n\t\t\t\t\t<smoothly-input type=\"card-number\" name=\"card\">\n\t\t\t\t\t\tCard #\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-submit size=\"icon\" slot=\"submit\" color=\"success\" fill=\"solid\"></smoothly-input-submit>\n\t\t\t\t\t<smoothly-input type=\"card-expires\" name=\"expires\">\n\t\t\t\t\t\tExpires\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"card-csc\" name=\"csc\">\n\t\t\t\t\t\tCVV/CVC\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\">\n\t\t\t\t\t\tFirst Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.last\">\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, State, VNode, Watch } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { SmoothlyFormCustomEvent } from \"../../../../components\"\nimport { Data } from \"../../../../model\"\n\n@Component({\n\ttag: \"smoothly-form-demo-controlled\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoControlled {\n\t@State() name = \"Initial name\"\n\t@State() currency: isoly.Currency = \"EUR\"\n\t@State() date: isoly.Date = isoly.Date.now()\n\tprivate currencies: isoly.Currency[] = [\"GBP\", \"SEK\", \"EUR\", \"USD\"]\n\n\t@Watch(\"name\")\n\tnameChanged(current: string, previous: string): void {\n\t\tconsole.log(`updated name from '${previous}' to '${current}'`)\n\t}\n\n\tasync submitHandler(\n\t\tevent: SmoothlyFormCustomEvent<{ result: (result: boolean) => void; value: Data }>\n\t): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tconsole.log(\"Received event. Processing...\", event.detail)\n\t\tif (!(typeof event.detail.value.name == \"string\")) {\n\t\t\tconsole.error(\"Bad input. Resolving false.\")\n\t\t} else if (!(typeof event.detail.value.date == \"string\"))\n\t\t\tconsole.error(\"Bad input. Resolving false.\")\n\t\telse if (!isoly.Currency.is(event.detail.value.currency))\n\t\t\tconsole.error(\"Bad input. Resolving false.\")\n\t\telse {\n\t\t\tawait new Promise(resolve => window.setTimeout(resolve, 1_000))\n\t\t\tthis.name = event.detail.value.name\n\t\t\tthis.date = event.detail.value.date\n\t\t\tthis.currency = event.detail.value.currency\n\t\t\tconsole.log(\"Finished processing successfully. Resolving true.\")\n\t\t\tevent.detail.result(true)\n\t\t}\n\t\tevent.detail.result(false)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Controlled</h2>\n\t\t\t\t<smoothly-form readonly looks={\"grid\"} onSmoothlyFormSubmit={e => this.submitHandler(e)}>\n\t\t\t\t\t<smoothly-input type={\"text\"} name={\"name\"} value={this.name}>\n\t\t\t\t\t\tName\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-select name={\"currency\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Currency</span>\n\t\t\t\t\t\t{this.currencies.map(currency => (\n\t\t\t\t\t\t\t<smoothly-item selected={currency == this.currency} value={currency}>\n\t\t\t\t\t\t\t\t{currency}\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input>Dummy</smoothly-input>\n\t\t\t\t\t<smoothly-input-month name={\"date\"} value={this.date} next previous>\n\t\t\t\t\t\t<span slot={\"year-label\"}>Year</span>\n\t\t\t\t\t\t<span slot={\"month-label\"}>Month</span>\n\t\t\t\t\t</smoothly-input-month>\n\t\t\t\t\t<smoothly-input-edit slot={\"edit\"} size={\"icon\"} color={\"primary\"} fill={\"default\"} />\n\t\t\t\t\t<smoothly-input-reset slot={\"reset\"} size={\"icon\"} color={\"warning\"} fill={\"default\"} />\n\t\t\t\t\t<smoothly-input-submit slot={\"submit\"} size={\"icon\"} color={\"success\"} />\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, Event, EventEmitter, h, Host, VNode } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { isly } from \"isly\"\nimport { Notice, Submit } from \"../../../../model\"\n\n@Component({\n\ttag: \"smoothly-form-demo-date\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoDate {\n\t@Event() notice: EventEmitter<Notice>\n\tprivate validator = isly.object<{ date: isoly.Date }>({\n\t\tdate: isly.fromIs(\"isoly.Date\", isoly.Date.is),\n\t})\n\tasync submitHandler(event: CustomEvent<Submit>): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tif (!this.validator.is(event.detail.value)) {\n\t\t\tconsole.error(`Type is incomplete.`)\n\t\t\tthis.notice.emit(Notice.failed(`Type is incomplete.`))\n\t\t} else {\n\t\t\tthis.notice.emit(Notice.succeeded(`Type is complete!`))\n\t\t\tevent.detail.result(true)\n\t\t}\n\t\tevent.detail.result(false)\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Date input</h2>\n\t\t\t\t<smoothly-form\n\t\t\t\t\tlooks={\"border\"}\n\t\t\t\t\ttype={\"create\"}\n\t\t\t\t\tvalidator={this.validator}\n\t\t\t\t\tonSmoothlyFormSubmit={e => this.submitHandler(e)}>\n\t\t\t\t\t<smoothly-input-date name={\"date\"}>{\"Date\"}</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-submit slot={\"submit\"}>\n\t\t\t\t\t\t<smoothly-icon name={\"checkmark-outline\"} />\n\t\t\t\t\t</smoothly-input-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, Event, EventEmitter, h, Host, VNode } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { isly } from \"isly\"\nimport { Notice, Submit } from \"../../../../model\"\n\n@Component({\n\ttag: \"smoothly-form-demo-date-range\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoDateRange {\n\t@Event() notice: EventEmitter<Notice>\n\tprivate validator = isly.object<{ range: isoly.DateRange }>({\n\t\trange: isly.fromIs(\"isoly.DateRange\", isoly.DateRange.is),\n\t})\n\tasync submitHandler(event: CustomEvent<Submit>): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tif (!this.validator.is(event.detail.value)) {\n\t\t\tconsole.error(`Type is incomplete.`)\n\t\t\tthis.notice.emit(Notice.failed(`Type is incomplete.`))\n\t\t} else {\n\t\t\tthis.notice.emit(Notice.succeeded(`Type is complete!`))\n\t\t\tevent.detail.result(true)\n\t\t}\n\t\tevent.detail.result(false)\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Date-range input</h2>\n\t\t\t\t<smoothly-form\n\t\t\t\t\tlooks={\"border\"}\n\t\t\t\t\ttype={\"create\"}\n\t\t\t\t\tvalidator={this.validator}\n\t\t\t\t\tonSmoothlyFormSubmit={e => this.submitHandler(e)}>\n\t\t\t\t\t<smoothly-input-date-range name={\"range\"}>{\"Range\"}</smoothly-input-date-range>\n\t\t\t\t\t<smoothly-input-submit slot={\"submit\"}>\n\t\t\t\t\t\t<smoothly-icon name={\"checkmark-outline\"} />\n\t\t\t\t\t</smoothly-input-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo-login\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoLogin {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Login</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"username\">\n\t\t\t\t\t\tUsername\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"password\" name=\"password\">\n\t\t\t\t\t\tPassword\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-reset slot=\"reset\" type=\"form\" size=\"icon\" color=\"warning\"></smoothly-input-reset>\n\t\t\t\t\t<smoothly-input-submit slot=\"submit\"></smoothly-input-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","\n:host {\n\tdisplay: grid;\n\tgrid-template-columns: 2fr 1fr;\n\tgrid-template-rows: auto auto;\n\tgrid-column-gap: 2rem;\n}\n\n:host smoothly-input-checkbox[name=\"hasOwner\"],\n:host > smoothly-form smoothly-summary,\n:host > smoothly-form smoothly-tabs {\n\tflex-basis: 100%;\n}\n","import { Component, Fragment, h, Host, State, VNode } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { RGB } from \"../../../../model/Color/RGB\"\n\n@Component({\n\ttag: \"smoothly-form-demo-pet\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoPet {\n\t@State() hasOwner = false\n\t@State() owner: {\n\t\tfirstName?: string\n\t\tlastName?: string\n\t\tbirthday?: string\n\t\townedRange?: isoly.DateRange\n\t\theight?: number\n\t\tfavoriteHat?: string\n\t\tfavoriteColor?: RGB\n\t\tfavoritePizza?: string\n\t\thasPet?: boolean\n\t} = {}\n\t@State() value: any\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Pet</h2>\n\t\t\t\t<h3>Value</h3>\n\t\t\t\t<smoothly-form\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tonSmoothlyFormSubmit={(e: CustomEvent) => alert(JSON.stringify(e.detail))}\n\t\t\t\t\tonSmoothlyFormInput={e => (this.value = { ...e.detail })}>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\">\n\t\t\t\t\t\tName\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"integer\" name=\"age\">\n\t\t\t\t\t\tAge (Years)\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-checkbox\n\t\t\t\t\t\tname=\"hasOwner\"\n\t\t\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\t\tthis.hasOwner = e.detail.hasOwner as boolean\n\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tHas Owner\n\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t{this.hasOwner && (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tname=\"owner.firstName\"\n\t\t\t\t\t\t\t\tvalue={this.owner.firstName}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, firstName: e.detail[\"owner.firstName\"] })}>\n\t\t\t\t\t\t\t\tOwner First Name\n\t\t\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tname=\"owner.lastName\"\n\t\t\t\t\t\t\t\tvalue={this.owner.lastName}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, lastName: e.detail[\"owner.lastName\"] })}>\n\t\t\t\t\t\t\t\tOwner Last Name\n\t\t\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t\t\t<smoothly-input-file name=\"owner.picture\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Owner picture</span>\n\t\t\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t\t\t<smoothly-input-date\n\t\t\t\t\t\t\t\tname=\"owner.birthday\"\n\t\t\t\t\t\t\t\tvalue={this.owner.birthday}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, birthday: e.detail[\"owner.birthday\"] })}>\n\t\t\t\t\t\t\t\tOwner birthday\n\t\t\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\t\t\tname=\"owner.ownedRange\"\n\t\t\t\t\t\t\t\tstart={this.owner.ownedRange?.start}\n\t\t\t\t\t\t\t\tend={this.owner.ownedRange?.end}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, ownedRange: e.detail[\"owner.ownedRange\"] })}>\n\t\t\t\t\t\t\t\tOwner ownedRange\n\t\t\t\t\t\t\t</smoothly-input-date-range>\n\t\t\t\t\t\t\t<smoothly-input-range\n\t\t\t\t\t\t\t\tname=\"owner.height\"\n\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\tmax={250}\n\t\t\t\t\t\t\t\tvalue={this.owner.height}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, height: e.detail[\"owner.height\"] })}>\n\t\t\t\t\t\t\t\tOwner's Height\n\t\t\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t\t\t<smoothly-input-select name=\"owner.favoriteHat\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Owner's Favorite Hat</span>\n\t\t\t\t\t\t\t\t{[\"🎩 top hat\", \"🧢 cap\", \"👒 sun hat\", \"❌ none\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-item value={value} key={index} selected={this.owner.favoriteHat == value}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t\t<smoothly-input-color\n\t\t\t\t\t\t\t\tname=\"owner.favoriteColor\"\n\t\t\t\t\t\t\t\tvalue={this.owner.favoriteColor ? RGB.toHex(this.owner.favoriteColor) : undefined}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, favoriteColor: e.detail[\"owner.favoriteColor\"] })}>\n\t\t\t\t\t\t\t\tOwner's Favorite Color\n\t\t\t\t\t\t\t</smoothly-input-color>\n\t\t\t\t\t\t\t<smoothly-input-radio\n\t\t\t\t\t\t\t\tname=\"owner.favoritePizza\"\n\t\t\t\t\t\t\t\tvalue={this.owner.favoritePizza}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e =>\n\t\t\t\t\t\t\t\t\t(this.owner = { ...this.owner, favoritePizza: e.detail[\"owner.favoritePizza\"] as string })\n\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t<span slot=\"label\">Owner's Favorite Pizza</span>\n\t\t\t\t\t\t\t\t{[\"vesuvio\", \"capricciosa\", \"quattro formaggi\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-input-radio-item value={value} key={index}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t\t\t<smoothly-input-checkbox\n\t\t\t\t\t\t\t\tname=\"owner.hasPet\"\n\t\t\t\t\t\t\t\tchecked={this.owner.hasPet}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, hasPet: e.detail[\"owner.hasPet\"] as boolean })}>\n\t\t\t\t\t\t\t\tHas Pet\n\t\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t)}\n\t\t\t\t\t<smoothly-summary>\n\t\t\t\t\t\t<span slot=\"summary\">Summary</span>\n\t\t\t\t\t\t<div slot=\"content\">\n\t\t\t\t\t\t\t<smoothly-input type=\"price\" name=\"summary.price\" currency=\"EUR\">\n\t\t\t\t\t\t\t\tSummary Price\n\t\t\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t\t\t<smoothly-input-file name=\"summary.picture\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Summary picture</span>\n\t\t\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t\t\t<smoothly-input-date name=\"summary.birthday\">Summary birthday</smoothly-input-date>\n\t\t\t\t\t\t\t<smoothly-input-date-range name=\"summary.ownedRange\">Summary ownedRange</smoothly-input-date-range>\n\t\t\t\t\t\t\t<smoothly-input-range name=\"summary.height\">Height</smoothly-input-range>\n\t\t\t\t\t\t\t<smoothly-input-select name=\"summary.favoriteHat\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Summary's Favorite Hat</span>\n\t\t\t\t\t\t\t\t{[\"🎩 top hat\", \"🧢 cap\", \"👒 sun hat\", \"❌ none\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-item value={value} key={index}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t\t<smoothly-input-month name=\"summary.month\">Summary Month</smoothly-input-month>\n\t\t\t\t\t\t\t<smoothly-input-color name=\"summary.color\">Summary Color</smoothly-input-color>\n\t\t\t\t\t\t\t<smoothly-input-radio name=\"summary.favoritePizza\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Summary's Favorite Pizza</span>\n\t\t\t\t\t\t\t\t{[\"vesuvio\", \"capricciosa\", \"quattro formaggi\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-input-radio-item value={value} key={index}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t\t\t<smoothly-input-checkbox name=\"summary.hasPet\">Has Pet</smoothly-input-checkbox>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-tabs>\n\t\t\t\t\t\t<smoothly-tab label=\"Dog\">\n\t\t\t\t\t\t\t<smoothly-input type={\"text\"} name=\"dog.breed\">\n\t\t\t\t\t\t\t\tBreed\n\t\t\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t\t\t<smoothly-input-file name=\"dog.picture\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Dog picture</span>\n\t\t\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t\t\t<smoothly-input-date name=\"dog.birthday\">Dog birthday</smoothly-input-date>\n\t\t\t\t\t\t\t<smoothly-input-date-range name=\"dog.dateRange\">Dog date range</smoothly-input-date-range>\n\t\t\t\t\t\t\t<smoothly-input-select name=\"dog.favoriteHat\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Dog's Favorite Hat</span>\n\t\t\t\t\t\t\t\t{[\"🎩 top hat\", \"🧢 cap\", \"👒 sun hat\", \"❌ none\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-item value={value} key={index}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t\t<smoothly-input-color name=\"dog.favoriteColor\">Dog's Favorite Color</smoothly-input-color>\n\t\t\t\t\t\t\t<smoothly-input-radio name=\"dog.favoritePizza\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Dog's Favorite Pizza</span>\n\t\t\t\t\t\t\t\t{[\"vesuvio\", \"capricciosa\", \"quattro formaggi\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-input-radio-item value={value} key={index}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t\t\t<smoothly-input-checkbox name=\"dog.hasPet\">Has Pet</smoothly-input-checkbox>\n\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t<smoothly-tab label=\"Cat\" open>\n\t\t\t\t\t\t\t<smoothly-input name={\"cat.favoriteFood\"}>Favorite Food</smoothly-input>\n\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t</smoothly-tabs>\n\t\t\t\t\t<smoothly-input-submit size=\"icon\" slot=\"submit\" color=\"success\" fill=\"solid\" />\n\t\t\t\t</smoothly-form>\n\t\t\t\t<smoothly-display type=\"json\" value={this.value} />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo-prices\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoPrices {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Prices</h2>\n\t\t\t\t<smoothly-form looks=\"line\">\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"no\">\n\t\t\t\t\t\tNo currency\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"crowns\" currency=\"SEK\" toInteger>\n\t\t\t\t\t\tSEK (toInteger)\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"usDollar\" currency=\"USD\">\n\t\t\t\t\t\tUSD\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"pounds\" currency=\"GBP\">\n\t\t\t\t\t\tGBP\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"peso\" currency=\"UYW\">\n\t\t\t\t\t\tUYW\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"iceland\" currency=\"ISK\">\n\t\t\t\t\t\tISK\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"Palladium\" currency=\"XPD\">\n\t\t\t\t\t\t{\"XPD (Palladium)\"}\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-reset slot=\"reset\" fill=\"default\" type=\"form\" color=\"warning\"></smoothly-input-reset>\n\t\t\t\t\t<smoothly-input-submit slot=\"submit\"></smoothly-input-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo-transparent\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoTransparent {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Transparent</h2>\n\t\t\t\t<smoothly-form looks={\"transparent\"} onSmoothlyFormSubmit={e => console.log(e.detail.value)}>\n\t\t\t\t\t<smoothly-input-file name={\"file\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>File</span>\n\t\t\t\t\t\t<smoothly-icon slot={\"button\"} name={\"folder-open-outline\"} size={\"small\"} />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-input type={\"duration\"} looks={\"transparent\"} placeholder={\"h:mm\"}>\n\t\t\t\t\t\tInput\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-date>Date</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-date-range>Date Range</smoothly-input-date-range>\n\t\t\t\t\t<smoothly-input-select name={\"transport\"}>\n\t\t\t\t\t\t<smoothly-item value={\"plane\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"airplane-outline\"} />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"car\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"car-outline\"} />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"bus\"} selected>\n\t\t\t\t\t\t\t<smoothly-icon name={\"bus-outline\"} />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-submit icon={\"checkbox-outline\"} />\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { isoly } from \"isoly\"\nimport { isly } from \"isly\"\n\nexport interface Contact {\n\tname: { first: string; middle?: string; last: string }\n\tage: number\n\tcountry: isoly.CountryCode.Alpha2\n\tbirthday: isoly.Date\n}\nexport namespace Contact {\n\texport const type = isly.object<Contact>({\n\t\tname: isly.object<Contact[\"name\"]>({ first: isly.string(), middle: isly.string().optional(), last: isly.string() }),\n\t\tage: isly.number(age => 18 <= age && age <= 120),\n\t\tcountry: isly.fromIs(\"CountryCode\", isoly.CountryCode.Alpha2.is),\n\t\tbirthday: isly.fromIs(\"Date\", isoly.Date.is),\n\t})\n}\n","\n","import { Component, h, Host, VNode } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { Contact } from \"./Contact\"\n\n@Component({\n\ttag: \"smoothly-form-demo-typed\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoTyped {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Typed Contact</h2>\n\t\t\t\t<smoothly-form validator={Contact.type}>\n\t\t\t\t\t<smoothly-input name=\"name.first\">First Name</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"name.middle\">Middle Name (optional)</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"name.last\">Last Name</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"age\" type=\"integer\">\n\t\t\t\t\t\tAge (18-120)\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-select name=\"country\">\n\t\t\t\t\t\t<span slot=\"label\">Country</span>\n\t\t\t\t\t\t{isoly.CountryCode.Alpha2.types.map(country => (\n\t\t\t\t\t\t\t<smoothly-item value={country}>{isoly.CountryCode.Name.en.from(country)}</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-date name=\"birthday\">Date of birth</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-reset slot={\"reset\"} type={\"form\"} size={\"icon\"} color={\"warning\"} />\n\t\t\t\t\t<smoothly-input-submit slot={\"submit\"} size={\"icon\"} color={\"success\"} />\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > iframe {\n\tborder: none;\n\tpadding: none;\n\tmargin: none;\n}\n","import { Component, Element, Event, EventEmitter, Method, Prop } from \"@stencil/core\"\nimport { Message, Trigger } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-frame\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFrame {\n\t@Prop() url: string\n\t@Prop({ reflect: true }) name: string\n\t@Event() trigger: EventEmitter<Trigger>\n\t@Event() message2: EventEmitter<Message<any>>\n\t@Element() element?: HTMLElement\n\tget contentWindow(): Window | undefined {\n\t\tconst iframe =\n\t\t\tthis.element && this.element.firstElementChild ? (this.element.firstElementChild as HTMLIFrameElement) : undefined\n\t\treturn (iframe && iframe.contentWindow) || undefined\n\t}\n\t@Prop()\n\torigin: string | undefined\n\n\tget defaultOrigin(): string {\n\t\tconst match = this.url.match(/^(([a-z]+\\+)*[a-z]+:\\/\\/)?[^/^\\n]+/)\n\t\treturn match ? match[0] : \"*\"\n\t}\n\tcomponentDidLoad() {\n\t\tif (this.contentWindow)\n\t\t\tMessage.listen(\n\t\t\t\tthis.origin ?? this.defaultOrigin,\n\t\t\t\t(destination: string, content: any) => {\n\t\t\t\t\tif (destination == this.name)\n\t\t\t\t\t\tif (Trigger.is(content))\n\t\t\t\t\t\t\tthis.trigger.emit(content)\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.message2.emit({ destination, content })\n\t\t\t\t},\n\t\t\t\twindow\n\t\t\t)\n\t}\n\tsend(message2: Message<any>): void\n\tsend(destination: string, content: Trigger | any): void\n\t@Method()\n\tasync send(message2: string | Message<any>, content?: Trigger | any): Promise<void> {\n\t\tif (typeof message2 == \"string\")\n\t\t\tMessage.send((this.origin ?? this.defaultOrigin) + \"#\" + message2, content, this.contentWindow)\n\t\telse if (Message.is(message2) && this.contentWindow)\n\t\t\tMessage.send(\n\t\t\t\t{\n\t\t\t\t\tdestination: (this.origin ?? this.defaultOrigin) + \"#\" + message2.destination,\n\t\t\t\t\tcontent: message2.destination,\n\t\t\t\t},\n\t\t\t\tthis.contentWindow\n\t\t\t)\n\t}\n\n\trender() {\n\t\treturn []\n\t}\n}\n",":host[size] {\n\tbackground: none;\n}\n:host {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n:host[rotate] {\n\t--rotate: rotate(var(--rotation, 0deg));\n\ttransform: var(--rotate);\n}\n:host[flip=x] {\n\t--flip: scaleX(-1);\n\ttransform: var(--flip);\n}\n:host[flip=y] {\n\t--flip: scaleY(-1);\n\ttransform: var(--flip);\n}\n:host[rotate][flip] {\n\ttransform:var(--rotate)var(--flip);\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host[size=tiny] {\n\twidth: 1.2em;\n\theight: 1.2em;\n}\n:host[size=small] {\n\twidth: 1.4em;\n\theight: 1.4em;\n}\n:host[size=medium] {\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n:host[size=large] {\n\twidth: 2.8em;\n\theight: 2.8em;\n}\n:host[size=xlarge] {\n\twidth: 4em;\n\theight: 4em;\n}\n:host::slotted(svg) {\n\t/* this is needed for svg to work on safari */\n\twidth: 100%;\n}\n","import { Component, h, Host, Prop, State, Watch } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\nimport { Icon } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-icon\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyIcon {\n\t@Prop({ reflect: true }) color: Color\n\t@Prop({ reflect: true }) fill: Fill = \"solid\"\n\t@Prop({ reflect: true }) name: Icon | \"empty\" = \"empty\"\n\t@Prop({ reflect: true }) size: \"tiny\" | \"small\" | \"medium\" | \"large\" = \"medium\"\n\t@Prop({ reflect: true }) rotate?: number\n\t@Prop({ reflect: true }) flip?: \"x\" | \"y\"\n\t@Prop() toolTip?: string\n\t@State() latestPromise: Promise<string | undefined>\n\t@State() document?: string\n\n\tasync componentWillLoad() {\n\t\tawait this.nameChanged()\n\t}\n\t@Watch(\"name\")\n\tasync nameChanged() {\n\t\tif (this.name != \"empty\") {\n\t\t\tconst promise = (this.latestPromise = Icon.load(this.name))\n\t\t\tlet result = await promise\n\t\t\tif (promise == this.latestPromise) {\n\t\t\t\tresult = result\n\t\t\t\t\t?.replace(/(?<=^<svg\\s?)/, `$& role=\"img\"`)\n\t\t\t\t\t.replace(` width=\"512\" height=\"512\"`, \"\")\n\t\t\t\t\t.replace(/stroke:#000;/gi, \"\")\n\t\t\t\tif (!this.toolTip)\n\t\t\t\t\tresult = result?.replace(/<title>.*<\\/title>/, \"\")\n\t\t\t\telse if (result?.includes(\"<title>\"))\n\t\t\t\t\tresult = result.replace(/(<title>).*(<\\/title>)/, `<title>${this.toolTip}</title>`)\n\t\t\t\telse\n\t\t\t\t\tresult = result?.replace(/(.*>)(<\\/svg>$)/, `$1<title>${this.toolTip}</title>$2`)\n\t\t\t\tthis.updateDocument(result)\n\t\t\t}\n\t\t} else\n\t\t\tthis.updateDocument()\n\t}\n\tupdateDocument(document?: string) {\n\t\tthis.document =\n\t\t\tdocument ??\n\t\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n\t\t<title>Empty</title>\n\t\t</svg>`\n\t}\n\n\trender() {\n\t\treturn <Host innerHTML={this.document} style={{ [\"--rotation\"]: `${this.rotate ?? 0}deg` }} />\n\t}\n}\n",":host {\n\tdisplay: block;\n\twidth: clamp(200px, 100%, 1200px);\n\tmargin: auto;\n}\n:host([hidden]) {\n\tdisplay: none;\n}\n:host > div {\n\tdisplay: flex;\n\tflex-flow: row wrap;\n}\n\n:host > div > smoothly-icon {\n\tpadding: 1rem;\n\tposition: relative;\n}\n\n:host > div > smoothly-icon:hover {\n\tscale: 1.5;\n}\n\n:host > div > smoothly-icon:hover::after {\n\tcontent: attr(data-name);\n\tposition: absolute;\n\twhite-space: nowrap;\n\tbottom: 100%;\n\tbackground: rgb(var(--smoothly-default-contrast));\n\tcolor: rgb(var(--smoothly-default-color));\n\tpadding: 0.25rem 1rem;\n\tz-index: 1;\n\tpointer-events: none;\n}\n","import { Component, Event, EventEmitter, h, Host, State } from \"@stencil/core\"\nimport { Color, Icon, Notice } from \"../../../model\"\n@Component({\n\ttag: \"smoothly-icon-demo\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlyIconDemo {\n\tpage = 0\n\n\t@State() display: { filter?: string; variant?: \"outline\" | \"sharp\" } = {}\n\t@State() props: { color?: Color; flip?: \"x\" | \"y\"; size?: \"tiny\" | \"small\" | \"medium\" | \"large\"; rotate?: number } =\n\t\t{}\n\t@Event() notice: EventEmitter<Notice>\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Filter and Variants</h2>\n\t\t\t\t<smoothly-form onSmoothlyFormInput={e => (this.display = e.detail)}>\n\t\t\t\t\t<smoothly-input name=\"filter\">Filter</smoothly-input>\n\t\t\t\t\t<smoothly-input-select name=\"variant\">\n\t\t\t\t\t\t<span slot=\"label\">Variant</span>\n\t\t\t\t\t\t<smoothly-item value={\"outline\"}>outline</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"sharp\"}>sharp</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-clear slot={\"end\"} />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Props</h2>\n\t\t\t\t<smoothly-form onSmoothlyFormInput={e => (this.props = e.detail)}>\n\t\t\t\t\t<smoothly-input-select name={\"color\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Color</span>\n\t\t\t\t\t\t{Color.types.map(color => (\n\t\t\t\t\t\t\t<smoothly-item value={color} color={color}>\n\t\t\t\t\t\t\t\t{color}\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<smoothly-input-clear slot={\"end\"} />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name=\"flip\">\n\t\t\t\t\t\t<span slot={\"label\"}>Flip</span>\n\t\t\t\t\t\t<smoothly-item value={\"x\"}>x</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"y\"}>y</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-clear slot={\"end\"} />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name={\"size\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Size</span>\n\t\t\t\t\t\t<smoothly-item value={\"tiny\"}>tiny</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"small\"}>small</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"medium\"}>medium</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"large\"}>large</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-clear slot={\"end\"} />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-range name=\"rotate\" step={1} min={-180} max={180} value={0}>\n\t\t\t\t\t\tRotate\n\t\t\t\t\t\t<smoothly-input-clear slot={\"end\"} />\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h1>Icons</h1>\n\t\t\t\t<div class=\"icons\">\n\t\t\t\t\t{[\n\t\t\t\t\t\t...Icon.Name.values\n\t\t\t\t\t\t\t.filter(name => !this.display.filter || name.includes(this.display.filter))\n\t\t\t\t\t\t\t.map((name): Icon => (this.display.variant ? `${name}-${this.display.variant}` : name)),\n\t\t\t\t\t\t...Icon.Logo.values.filter(name => !this.display.filter || name.includes(this.display.filter)),\n\t\t\t\t\t].map(name => (\n\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\ttoolTip={name}\n\t\t\t\t\t\t\tdata-name={name}\n\t\t\t\t\t\t\tcolor={this.props.color}\n\t\t\t\t\t\t\tflip={this.props.flip}\n\t\t\t\t\t\t\tsize={this.props.size}\n\t\t\t\t\t\t\trotate={this.props.rotate}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tnavigator.clipboard.writeText(name)\n\t\t\t\t\t\t\t\tthis.notice.emit(Notice.succeeded(`Copied \"${name}\"`))\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","export namespace Deep {\n\texport function equal(a: any, b: any): boolean {\n\t\tif (a === b)\n\t\t\treturn true\n\t\tif (typeof a == \"object\" && typeof b == \"object\") {\n\t\t\tconst keys = Object.keys(a)\n\t\t\tif (keys.length == Object.keys(b).length && keys.every(key => equal(a[key], b[key])))\n\t\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n\texport function notEqual(a: any, b: any): boolean {\n\t\treturn !equal(a, b)\n\t}\n}\n","export namespace Adjacent {\n\texport function getWordBreakIndex(str: string, index: number, direction: \"backward\" | \"forward\"): number {\n\t\tconst wordRegex = /([^.-@\\s]+)/gi\n\t\treturn direction == \"backward\"\n\t\t\t? getBackwardWordBreakIndex(str, index, wordRegex)\n\t\t\t: getForwardWordBreakIndex(str, index, wordRegex)\n\t}\n\n\tfunction getBackwardWordBreakIndex(str: string, index: number, wordRegex: RegExp): number {\n\t\tlet result = 0\n\t\tlet execArray: RegExpExecArray | null\n\t\twhile ((execArray = wordRegex.exec(str)) != null) {\n\t\t\tif (wordRegex.lastIndex - execArray[0].length < index)\n\t\t\t\tresult = wordRegex.lastIndex - execArray[0].length\n\t\t\telse\n\t\t\t\tbreak\n\t\t}\n\t\treturn result\n\t}\n\n\tfunction getForwardWordBreakIndex(str: string, index: number, wordRegex: RegExp): number {\n\t\tlet result = 0\n\t\twhile (wordRegex.exec(str) != null) {\n\t\t\tresult = wordRegex.lastIndex\n\t\t\tif (wordRegex.lastIndex > index)\n\t\t\t\tbreak\n\t\t}\n\t\twordRegex.lastIndex <= index && (result = str.length)\n\t\treturn result\n\t}\n}\n","import { isoly } from \"isoly\"\nimport { tidily } from \"tidily\"\nimport { Adjacent } from \"./Adjacent\"\n\ntype Formatter = tidily.Formatter & tidily.Converter<any>\ntype Handler<E extends Event> = (event: E, unformatted: tidily.State, formatted: tidily.State) => tidily.State\n\nexport class InputStateHandler {\n\tconstructor(private formatter: Formatter, private type: tidily.Type) {}\n\tstatic create(type: \"price\", priceOptions: { currency?: isoly.Currency; toInteger?: boolean }): InputStateHandler\n\tstatic create(type: tidily.Type, locale?: isoly.Locale): InputStateHandler\n\tstatic create(type: tidily.Type, extra?: any): InputStateHandler {\n\t\tlet result: (tidily.Formatter & tidily.Converter<any>) | undefined\n\t\tswitch (type) {\n\t\t\tcase \"price\":\n\t\t\t\tresult = tidily.get(\"price\", extra)\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tresult = tidily.get(type, extra)\n\t\t\t\tbreak\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\treturn new InputStateHandler(result || tidily.get(\"text\")!, type)\n\t}\n\n\tpublic onKeyDown(\n\t\tevent: KeyboardEvent,\n\t\tstate: Readonly<tidily.State> & tidily.Settings\n\t): Readonly<tidily.State> & tidily.Settings {\n\t\tlet result: Readonly<tidily.State> & tidily.Settings = state\n\t\tconst handler = this.keydownHandlers[event.key]\n\t\tif (handler) {\n\t\t\tconst input = event.target as HTMLInputElement\n\t\t\tstate.selection.start = input.selectionStart ?? state.selection.start\n\t\t\tstate.selection.end = input.selectionEnd ?? state.selection.end\n\t\t\tstate.selection.direction = input.selectionDirection ?? state.selection.direction\n\t\t\tconst unformatted = handler(event, this.unformatState(state), state)\n\t\t\tconst formatted = this.partialFormatState(unformatted)\n\t\t\tif (event.defaultPrevented) {\n\t\t\t\tinput.selectionStart = formatted.selection.start\n\t\t\t\tinput.selectionEnd = formatted.selection.end\n\t\t\t\tinput.selectionDirection = formatted.selection.direction ?? null\n\t\t\t}\n\t\t\tresult = formatted\n\t\t}\n\t\treturn result\n\t}\n\tkeydownHandlers: { [key: string]: Handler<KeyboardEvent> | undefined } = {\n\t\tArrowLeft: (event, state) => (event.ctrlKey || event.metaKey ? state : this.moveCursor(event, state)),\n\t\tArrowRight: (event, state) => (event.ctrlKey || event.metaKey ? state : this.moveCursor(event, state)),\n\t}\n\n\tmoveCursor(event: KeyboardEvent, state: tidily.State): tidily.State {\n\t\tevent.preventDefault()\n\t\tlet cursor = tidily.Selection.getCursor(state.selection)\n\t\tlet stalk = tidily.Selection.getStalker(state.selection)\n\t\tcursor = Math.min(Math.max(cursor + (event.key == \"ArrowLeft\" ? -1 : 1), 0), state.value.length)\n\t\tstalk = event.shiftKey ? stalk : cursor\n\t\tstate.selection.direction = stalk < cursor ? \"forward\" : stalk > cursor ? \"backward\" : \"none\"\n\t\tstate.selection.start = Math.min(stalk, cursor)\n\t\tstate.selection.end = Math.max(stalk, cursor)\n\t\treturn state\n\t}\n\n\tpublic onFocus(event: FocusEvent, state: tidily.State) {\n\t\tconst result = this.partialFormatState(this.unformatState(state))\n\t\tconst input = event.target as HTMLInputElement\n\t\tinput.value = result.value\n\t\treturn result\n\t}\n\n\tpublic onBlur(event: FocusEvent, state: tidily.State): Readonly<tidily.State> & tidily.Settings {\n\t\tconst result = this.createFormattedState(state)\n\t\tconst input = event.target as HTMLInputElement\n\t\tinput.value = result.value\n\t\treturn result\n\t}\n\n\tpublic onInputEvent(event: InputEvent, state: tidily.State): Readonly<tidily.State> & tidily.Settings {\n\t\tconst input = event.target as HTMLInputElement\n\t\tstate.selection.start = input.selectionStart ?? state.selection.start\n\t\tstate.selection.end = input.selectionEnd ?? state.selection.end\n\t\tstate.selection.direction = input.selectionDirection ?? state.selection.direction\n\t\tconst result =\n\t\t\tevent.type == \"beforeinput\" || event.type == \"input\"\n\t\t\t\t? this.eventHandlers[event.type][event.inputType]?.(event, this.unformatState(state), state) ?? state\n\t\t\t\t: state\n\t\tconst formatted = this.partialFormatState(result)\n\t\tif (event.defaultPrevented) {\n\t\t\tinput.value = formatted.value\n\t\t\tinput.selectionStart = formatted.selection.start\n\t\t\tinput.selectionEnd = formatted.selection.end\n\t\t\tinput.selectionDirection = formatted.selection.direction ?? null\n\t\t}\n\t\treturn formatted\n\t}\n\tprivate eventHandlers: Record<\"beforeinput\" | \"input\", { [inputType: string]: Handler<InputEvent> | undefined }> = {\n\t\tbeforeinput: {\n\t\t\tinsertText: (event, state) => this.insert(event, state),\n\t\t\tinsertFromPaste: (event, state) => this.insert(event, state),\n\t\t\tinsertFromDrop: (event, state) => this.insert(event, state),\n\t\t\tdeleteContentBackward: (event, state) => {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tif (state.selection.start == state.selection.end)\n\t\t\t\t\tthis.select(state, state.selection.start - 1, state.selection.end)\n\t\t\t\tthis.erase(state)\n\t\t\t\treturn state\n\t\t\t},\n\t\t\tdeleteContentForward: (event, state) => {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tif (state.selection.start == state.selection.end)\n\t\t\t\t\tthis.select(state, state.selection.start, state.selection.end + 1)\n\t\t\t\tthis.erase(state)\n\t\t\t\treturn state\n\t\t\t},\n\t\t\tdeleteWordBackward: (event, unformatted, formattedState) => {\n\t\t\t\tlet result = unformatted\n\t\t\t\tif (this.type != \"password\") {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tresult = this.deleteWord(formattedState, \"backward\")\n\t\t\t\t}\n\t\t\t\treturn result\n\t\t\t},\n\t\t\tdeleteWordForward: (event, unformatted, formattedState) => {\n\t\t\t\tlet result = unformatted\n\t\t\t\tif (this.type != \"password\") {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tresult = this.deleteWord(formattedState, \"forward\")\n\t\t\t\t}\n\t\t\t\treturn result\n\t\t\t},\n\t\t\tdeleteByCut: (_, state) => {\n\t\t\t\tthis.erase(state)\n\t\t\t\treturn state\n\t\t\t},\n\t\t\t// historyUndo - TODO\n\t\t\t// historyRedo - TODO\n\t\t\t// insertLineBreak - TODO\n\t\t},\n\t\tinput: {\n\t\t\tinsertReplacementText: (event, state) => ({ ...state, value: (event.target as HTMLInputElement).value }),\n\t\t\tinsertCompositionText: (event, state) => ({ ...state, value: (event.target as HTMLInputElement).value }),\n\t\t\tdeleteWordBackward: (event, state) =>\n\t\t\t\tthis.type == \"password\" ? { ...state, value: (event.target as HTMLInputElement).value } : state,\n\t\t\tdeleteWordForward: (event, state) =>\n\t\t\t\tthis.type == \"password\" ? { ...state, value: (event.target as HTMLInputElement).value } : state,\n\t\t\t// Chrome will dispatch an input event without inputType when auto-filling\n\t\t\tundefined: (event, state) => ({ ...state, value: (event.target as HTMLInputElement).value }),\n\t\t},\n\t}\n\n\tprivate insert(event: InputEvent, unformatted: tidily.State): tidily.State {\n\t\tevent.preventDefault()\n\t\tif (typeof event.data == \"string\")\n\t\t\tfor (const c of event.data)\n\t\t\t\tthis.formatter.allowed(c, unformatted) && this.replace(unformatted, c)\n\t\treturn unformatted\n\t}\n\tprivate deleteWord(formattedState: tidily.State, direction: \"backward\" | \"forward\"): tidily.State {\n\t\tconst cursorPosition = tidily.Selection.getCursor(formattedState.selection)\n\t\tconst adjacentIndex = Adjacent.getWordBreakIndex(formattedState.value, cursorPosition, direction)\n\t\tconst result = this.unformatState({\n\t\t\t...formattedState,\n\t\t\tselection: {\n\t\t\t\tstart: Math.min(cursorPosition, adjacentIndex),\n\t\t\t\tend: Math.max(cursorPosition, adjacentIndex),\n\t\t\t\tdirection: \"none\",\n\t\t\t},\n\t\t})\n\t\tconst value = result.value.substring(0, result.selection.start) + result.value.substring(result.selection.end)\n\t\tresult.value = value\n\t\tresult.selection.end = result.selection.start\n\t\treturn result\n\t}\n\n\tprivate select(state: tidily.State, from: number, to: number, direction?: tidily.Direction): void {\n\t\tstate.selection.start = from\n\t\tstate.selection.end = to\n\t\tdirection && (state.selection.direction = direction)\n\t}\n\tprivate erase(state: tidily.State): void {\n\t\tthis.replace(state, \"\")\n\t}\n\tprivate replace(state: tidily.State, insertString: string): void {\n\t\tstate.value =\n\t\t\tstate.value.substring(0, state.selection.start) + insertString + state.value.substring(state.selection.end)\n\t\tstate.selection.start = state.selection.start + insertString.length\n\t\tstate.selection.end = state.selection.start\n\t}\n\n\tprivate unformatState(formattedState: tidily.State): tidily.State {\n\t\treturn tidily.State.copy(this.formatter.unformat(tidily.StateEditor.copy(formattedState)))\n\t}\n\tprivate partialFormatState(unformattedState: tidily.State): Readonly<tidily.State> & tidily.Settings {\n\t\treturn this.formatter.partialFormat(tidily.StateEditor.copy(unformattedState))\n\t}\n\tprivate createFormattedState(state: tidily.State): Readonly<tidily.State> & tidily.Settings {\n\t\treturn this.formatter.format(tidily.StateEditor.copy(this.formatter.unformat(tidily.StateEditor.copy(state))))\n\t}\n\tprivate toString(value: any): string {\n\t\treturn this.formatter.toString(value)\n\t}\n\tpublic initialState(value: any): Readonly<tidily.State> & tidily.Settings {\n\t\tconst stringValue = this.toString(value) || \"\"\n\t\tconst start = stringValue.length\n\t\tconst state = this.createFormattedState({\n\t\t\tvalue: stringValue,\n\t\t\tselection: { start, end: start, direction: \"none\" },\n\t\t})\n\t\treturn state\n\t}\n\tpublic setValue(\n\t\tinputElement: HTMLInputElement,\n\t\tformattedState: Readonly<tidily.State> & tidily.Settings,\n\t\tvalue: any\n\t): Readonly<tidily.State> & tidily.Settings {\n\t\tconst result = {\n\t\t\t...formattedState,\n\t\t\tvalue: this.createFormattedState({ value: this.formatter.toString(value), selection: formattedState.selection })\n\t\t\t\t.value,\n\t\t}\n\t\tinputElement.value = result.value\n\t\treturn result\n\t}\n\tpublic getValue(formattedState: tidily.State): any {\n\t\treturn this.formatter.fromString(this.unformatState(formattedState).value)\n\t}\n}\n","@import \"./shared.css\";\n\n:host {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tfont-weight: var(--smoothly-font-weight);\n\toverflow: hidden;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tcolor: rgb(var(--smoothly-input-foreground));\n}\n\n:host[hidden] {\n\tdisplay: none;\n}\n\n:host>div {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n}\n\n:host>div>label {\n\tleft: var(--input-padding-side);\n}\n\n:host:not([show-label])>div>input {\n\tpadding: 0 var(--input-padding-side);\n}\n\n:host>div>div.ghost {\n\tposition: absolute;\n box-sizing: border-box;\n align-content: center;\n\theight: 100%;\n\tpadding: \n\t\tvar(--input-value-padding-top) \n\t\tvar(--input-padding-side) \n\t\tvar(--input-value-padding-bottom) \n\t\tvar(--input-padding-side);\n}\n:host>div>div.ghost>div.value {\n\tdisplay: inline;\n\tpointer-events: none;\n\topacity: 0;\n}\n:host>div>div.ghost>div.remainder {\n\tdisplay: inline;\n\tpointer-events: none;\n\topacity: 0.5;\n}\n\n:host>div>input {\n\tpadding: \n\t\tvar(--input-value-padding-top) \n\t\tvar(--input-padding-side) \n\t\tvar(--input-value-padding-bottom) \n\t\tvar(--input-padding-side);\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\tborder: 0;\n\tz-index: 1;\n\tposition: relative;\n\tfont-size: 1rem;\n\tfont-family: var(--smoothly-font-family);\n}\n\n:host>div>smoothly-icon {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 0.2em;\n\ttop: 0.6em;\n}\n\n:host[invalid]>div>smoothly-icon {\n\tdisplay: block;\n\tz-index: 2;\n\tcursor: pointer;\n}\n\n:host>div>label {\n\tz-index: 1;\n\tpointer-events: none;\n}\n\n:host>div>input:focus {\n\toutline: none;\n}\n\n:host::slotted([slot=end]) button {\n\tpadding: 0;\n}\n\n:host>div>input:-webkit-autofill,\n:host>div>input:-webkit-autofill:hover,\n:host>div>input:-webkit-autofill:focus,\n:host>div>input:-webkit-autofill:active {\n\tbox-shadow: 0 0 0 40em rgb(var(--smoothly-input-background)) inset;\n\t-webkit-box-shadow: 0 0 0 40em rgb(var(--smoothly-input-background)) inset;\n}\n\n:host>div>input:-webkit-autofill,\n:host>div>input:-webkit-autofill+label {\n\t-webkit-text-fill-color: rgb(var(--smoothly-input-foreground));\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { tidily } from \"tidily\"\nimport { Color } from \"../../model\"\nimport { getLocale } from \"../../model/getLocale\"\nimport { Clearable } from \"./Clearable\"\nimport { Deep } from \"./Deep\"\nimport { Editable } from \"./Editable\"\nimport { Input } from \"./Input\"\nimport { InputStateHandler } from \"./InputStateHandler\"\nimport { Looks } from \"./Looks\"\n\n@Component({\n\ttag: \"smoothly-input\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInput implements Clearable, Input, Editable {\n\t@Element() element: HTMLSmoothlyInputElement\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) value: any\n\t@Prop({ reflect: true }) type: tidily.Type = \"text\"\n\t@Prop({ reflect: true }) required = false\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop() autocomplete?: Exclude<tidily.Settings[\"autocomplete\"], undefined>\n\t@Prop({ reflect: true }) placeholder: string | undefined\n\t@Prop() disabled = false\n\t@Prop({ mutable: true, reflect: true }) readonly = false\n\t@Prop() toInteger?: boolean\n\t@Prop({ reflect: true }) currency?: isoly.Currency\n\t@Prop({ reflect: true }) invalid?: boolean = false\n\t@Prop({ mutable: true }) changed = false\n\t@Prop() errorMessage?: string\n\t@State() initialValue?: any\n\t@State() state: Readonly<tidily.State> & Readonly<tidily.Settings>\n\tparent: Editable | undefined\n\tprivate stateHandler: InputStateHandler\n\tprivate inputElement: HTMLInputElement | undefined\n\tprivate uneditable = this.readonly\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyBlur: EventEmitter<void>\n\t@Event() smoothlyChange: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\n\t@Method()\n\tasync getValue(): Promise<any | undefined> {\n\t\treturn this.stateHandler.getValue(this.state)\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\t!this.uneditable && (this.value = undefined)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\t!this.uneditable && (this.readonly = !editable)\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\t!this.uneditable && (this.value = this.initialValue)\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.changed = false\n\t\tthis.initialValue = this.value\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInput) => void>): Promise<void> {\n\t\tif (!(event.target && \"name\" in event.target && event.target.name == this.name)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this)\n\t\t}\n\t}\n\t@Watch(\"currency\")\n\t@Watch(\"type\")\n\ttypeChange(): void {\n\t\tswitch (this.type) {\n\t\t\tcase \"price\":\n\t\t\t\tthis.stateHandler = InputStateHandler.create(\"price\", {\n\t\t\t\t\tcurrency: this.currency,\n\t\t\t\t\ttoInteger: this.toInteger,\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tthis.stateHandler = InputStateHandler.create(this.type, getLocale())\n\t\t\t\tbreak\n\t\t}\n\t\tthis.state = this.stateHandler.initialState(this.value ?? this.state?.value)\n\t}\n\t@Watch(\"state\")\n\tstateChange() {\n\t\tthis.smoothlyInput.emit({ [this.name]: this.stateHandler.getValue(this.state) })\n\t}\n\t@Watch(\"value\")\n\tvalueChange(value: any) {\n\t\tconst lastValue = this.stateHandler.getValue(this.state)\n\t\tif (Deep.notEqual(lastValue, value) && this.inputElement) {\n\t\t\tthis.state = this.stateHandler.setValue(this.inputElement, this.state, value)\n\t\t\tthis.smoothlyInput.emit({ [this.name]: this.stateHandler.getValue(this.state) })\n\t\t}\n\t}\n\t@Watch(\"readonly\")\n\treadonlyChange() {\n\t\tthis.listener.changed?.(this)\n\t}\n\tcomponentWillLoad() {\n\t\tthis.typeChange()\n\t\tthis.initialValue = this.value\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.listener.changed?.(this)\n\t}\n\tcomponentDidLoad() {\n\t\tif (this.inputElement)\n\t\t\tthis.inputElement.value = this.state.value\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected)\n\t\t\tawait this.unregister()\n\t}\n\t@Listen(\"input\")\n\t@Listen(\"beforeinput\")\n\tonEvent(event: InputEvent) {\n\t\tthis.state = this.stateHandler.onInputEvent(event, this.state)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{ \"has-value\": this.state?.value != undefined && this.state?.value != \"\" }}\n\t\t\t\tonclick={() => this.inputElement?.focus()}>\n\t\t\t\t<slot name=\"start\" />\n\t\t\t\t<div>\n\t\t\t\t\t<div class={\"ghost\"}>\n\t\t\t\t\t\t<div class={\"value\"}>{this.state?.value}</div>\n\t\t\t\t\t\t<div class={\"remainder\"}>{this.state?.remainder}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={(el: HTMLInputElement) => (this.inputElement = el)}\n\t\t\t\t\t\tcolor={this.color}\n\t\t\t\t\t\tname={this.name}\n\t\t\t\t\t\ttype={this.state?.type}\n\t\t\t\t\t\tinputmode={this.state?.inputmode}\n\t\t\t\t\t\tplaceholder={this.placeholder}\n\t\t\t\t\t\trequired={this.required}\n\t\t\t\t\t\tautocomplete={this.autocomplete ?? this.state?.autocomplete}\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\treadOnly={this.readonly}\n\t\t\t\t\t\tpattern={this.state?.pattern && this.state?.pattern.source}\n\t\t\t\t\t\tonKeyDown={event => {\n\t\t\t\t\t\t\tthis.state = this.stateHandler.onKeyDown(event, this.state)\n\t\t\t\t\t\t\tif (event.key == \"Enter\")\n\t\t\t\t\t\t\t\tthis.smoothlyBlur.emit() // TODO: this should be replaced by a smoothlyKeydown event\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonFocus={event => !this.readonly && (this.state = this.stateHandler.onFocus(event, this.state))}\n\t\t\t\t\t\tonBlur={event => {\n\t\t\t\t\t\t\tif (!this.readonly) {\n\t\t\t\t\t\t\t\tconst lastValue = this.stateHandler.getValue(this.state)\n\t\t\t\t\t\t\t\tthis.state = this.stateHandler.onBlur(event, this.state)\n\t\t\t\t\t\t\t\tthis.smoothlyBlur.emit()\n\t\t\t\t\t\t\t\tthis.smoothlyInput.emit({ [this.name]: this.stateHandler.getValue(this.state) })\n\t\t\t\t\t\t\t\tif (Deep.notEqual(lastValue, this.stateHandler.getValue(this.state)))\n\t\t\t\t\t\t\t\t\tthis.smoothlyChange.emit({ [this.name]: this.stateHandler.getValue(this.state) })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<label class={\"label float-on-focus\"} htmlFor={this.name}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</label>\n\t\t\t\t\t<smoothly-icon name=\"alert-circle\" color=\"danger\" fill=\"clear\" size=\"small\" toolTip={this.errorMessage} />\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"end\" />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-direction: row;\n\tposition: relative;\n\tgap: .5rem;\n\tpadding: 0 var(--input-padding-side);\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tbox-sizing: border-box;\n}\n\n:host>smoothly-icon {\n\tposition: absolute;\n\tz-index: 1;\n}\n\n:host>input {\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\tappearance: none;\n\theight: 1.25rem;\n\twidth: 1.25rem;\n\tborder: 1px solid black;\n\tdisplay: block;\n}\n\n:host:not([readonly]),\n:host:not([readonly])>* {\n\tcursor: pointer;\n}\n\n:host([readonly]),\n:host([readonly])>* {\n\tcursor: not-allowed;\n}\n\n\n:host[disabled]>input,\n:host[disabled]>smoothly-icon {\n\tcursor: not-allowed;\n\tborder-color: rgb(var(--smoothly-color-contrast), 0.3);\n\tcolor: rgb(var(--smoothly-color-contrast), 0.4);\n}\n\n:host[looks=\"transparent\"] {\n\tbackground-color: transparent;\n}\n/* overwrite shared.css styling */\n:host[looks=\"transparent\"]:not([readonly]):focus-within {\n\toutline-color: transparent;\n}\n","import { Component, ComponentWillLoad, Element, Event, EventEmitter, h, Host, Method, Prop, Watch } from \"@stencil/core\"\nimport { Color, Data } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-checkbox\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputCheckbox implements Input, Clearable, Editable, ComponentWillLoad {\n\t@Element() element: HTMLSmoothlyInputCheckboxElement\n\tparent: Editable | undefined\n\tprivate initialValue?: any\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\tprivate mouseDownPosition?: { x: number; y: number }\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ mutable: true }) checked = false\n\t@Prop() value = this.checked\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true }) disabled: boolean\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.initialValue = this.checked\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\tthis.listener.changed?.(this)\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected)\n\t\t\tawait this.unregister()\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<boolean> {\n\t\treturn this.checked\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\t!this.disabled && !this.readonly && (this.checked = false)\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.checked = this.initialValue\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.checked\n\t\tthis.changed = false\n\t}\n\t@Watch(\"checked\")\n\tasync elementCheck() {\n\t\tthis.changed = this.initialValue !== this.checked\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.listener.changed?.(this)\n\t}\n\tclick() {\n\t\t!this.disabled && !this.readonly && (this.checked = !this.checked)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tonMouseDown={(e: MouseEvent) => (this.mouseDownPosition = { x: e.clientX, y: e.clientY })}\n\t\t\t\tonMouseUp={(e: MouseEvent) =>\n\t\t\t\t\tthis.mouseDownPosition?.x == e.clientX && this.mouseDownPosition.y == e.clientY && this.click()\n\t\t\t\t}>\n\t\t\t\t<input type=\"checkbox\" checked={this.checked} />\n\t\t\t\t{this.checked && <smoothly-icon name=\"checkmark-outline\" size=\"tiny\" />}\n\t\t\t\t<label>\n\t\t\t\t\t<slot />\n\t\t\t\t</label>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../button/style.css\";\n\n:host {\n\tdisplay: flex;\n}\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host([type=\"input\"])::slotted(smoothly-button>button) {\n\tcursor: pointer;\n\tfilter: opacity(60%);\n\t--smoothly-button-foreground: var(--smoothly-input-foreground);\n\tbackground-color: transparent;\n}\n\n:host::slotted(smoothly-button>button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n\n:host([disabled]) {\n\tcursor: not-allowed\n}\n\n:host([type=\"input\"]):hover ::slotted(smoothly-icon) {\n\tcursor: pointer;\n\tfilter: opacity(100%);\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\nimport { SmoothlyForm } from \"../../form\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\n\n@Component({\n\ttag: \"smoothly-input-clear\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputClear {\n\t@Prop() color?: Color\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill = \"clear\"\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true }) size: \"small\" | \"large\" | \"icon\" | \"flexible\" = \"icon\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true, mutable: true }) display = true\n\t@Prop({ reflect: true }) type: \"form\" | \"input\" = \"input\"\n\t@Prop() tooltip = \"Clear\"\n\tprivate parent?: Clearable | (Clearable & Editable)\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\n\tasync componentWillLoad() {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Clearable.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tif (Editable.Element.is(parent)) {\n\t\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\t\tif (Input.is(p)) {\n\t\t\t\t\t\t\tthis.display = !p.readonly && (typeof p.defined == \"boolean\" ? p.defined : Boolean(p.value))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (p instanceof SmoothlyForm) {\n\t\t\t\t\t\t\tthis.disabled = p.readonly || Object.values(p.value).filter(val => val).length < 1\n\t\t\t\t\t\t\tthis.display = !p.readonly\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\t@Listen(\"click\")\n\tclickHandler() {\n\t\tthis.parent?.clear()\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host title={this.tooltip}>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\ttype={\"button\"}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tfill={this.fill ?? (this.type == \"input\" ? \"clear\" : undefined)}>\n\t\t\t\t\t<slot />\n\t\t\t\t\t<smoothly-icon name=\"close\" size=\"tiny\" />\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\tposition: relative;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\talign-items: center;\n\tjustify-content: center;\n\tpadding-right: .5em;\n}\n:host>smoothly-input {\n\twidth: 100%;\n\t--input-min-height: calc(var(--input-min-height) - 2px);\n}\n:host div.color-sample {\n\theight: 2em;\n\twidth: 3em;\n\tmargin-right: 0.5rem;\n\tbackground-color: var(--hexCode);\n\toutline: 1px solid rgb(var(--smoothly-input-border));\n\tborder-radius: 3px;\n}\n:host[readonly] smoothly-icon[name=options-outline] {\n\tfilter: opacity(60%)\n}\n:host>div.rgb-sliders {\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tposition: absolute;\n\tpadding: 1em 1em 1em 0;\n\ttop: calc(var(--element-height) + .8em);\n\tleft: 0;\n\tbox-sizing: border-box;\n\tz-index: 10;\n\tborder: 1px solid rgb(var(--smoothly-input-border));\n}\n:host>div.rgb-sliders::before {\n\tcontent: \"\";\n\ttransform: translate(2em, -0.55em) rotate(45deg);\n\twidth: 1em;\n\theight: 1em;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tborder-top: 1px solid rgb(var(--smoothly-input-border));\n\tborder-left: 1px solid rgb(var(--smoothly-input-border));\n\tposition: absolute;\n\tz-index: 100;\n\ttop: 0em\n}\n:host>div.rgb-sliders>smoothly-toggle-switch {\n\tmargin-left: auto;\n\tmargin-right: 1em;\n\tmargin-bottom: 1em;\n}\ndiv.rgb-sliders smoothly-input-range {\n\tpadding: .5em 0\n}\ndiv.rgb-sliders smoothly-input-range label {\n\twidth: 4em;\n}\n\n/* -------------RGB SLIDERS------------------- */\n\n/* --------------------R------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=r]::-webkit-slider-runnable-track {\n\tbackground: linear-gradient(to left, rgb(255, var(--rgb-g), var(--rgb-b)), rgb(0, var(--rgb-g), var(--rgb-b)))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=r]::-moz-range-track {\n\tbackground: linear-gradient(to left, rgb(255, var(--rgb-g), var(--rgb-b)), rgb(0, var(--rgb-g), var(--rgb-b)))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=r]::-moz-range-thumb {\n\tbackground-color: red;\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=r]::-webkit-slider-thumb {\n\tbackground-color: red;\n}\n\n/* --------------------G------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=g]::-webkit-slider-runnable-track {\n\tbackground: linear-gradient(to left, rgb(var(--rgb-r), 255, var(--rgb-b)), rgb(var(--rgb-r), 0, var(--rgb-b)))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=g]::-moz-range-track {\n\tbackground: linear-gradient(to left, rgb(var(--rgb-r), 255, var(--rgb-b)), rgb(var(--rgb-r), 0, var(--rgb-b)))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=g]::-moz-range-thumb {\n\tbackground-color: green;\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=g]::-webkit-slider-thumb {\n\tbackground-color: green;\n}\n\n/* --------------------B------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=b]::-webkit-slider-runnable-track {\n\tbackground: linear-gradient(to left, rgb(var(--rgb-r), var(--rgb-g), 255), rgb(var(--rgb-r), var(--rgb-g), 0))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=b]::-moz-range-track {\n\tbackground: linear-gradient(to left, rgb(var(--rgb-r), var(--rgb-g), 255), rgb(var(--rgb-r), var(--rgb-g), 0))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=b]::-moz-range-thumb { \n\tbackground-color: blue;\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=b]::-webkit-slider-thumb {\n\tbackground-color: blue;\n}\n\n/* -------------HSL SLIDERS------------------- */\n\n/* --------------------H------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=h]::-webkit-slider-runnable-track {\n\tbackground: linear-gradient(to right in hsl longer hue, red, red)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=h]::-moz-range-track {\n\tbackground: linear-gradient(to right in hsl longer hue, red, red)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=h]::-webkit-slider-thumb {\n\tbackground-color: hsl(var(--hsl-h), 100%, 50%)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=h]::-moz-range-thumb {\n\tbackground-color: hsl(var(--hsl-h), 100%, 50%)\n}\n\n\n/* --------------------S------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=s]::-webkit-slider-runnable-track { \n\tbackground: linear-gradient(to right, hsl(var(--hsl-h), 0%, 50%), hsl(var(--hsl-h), 100%, 50%)); \n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=s]::-moz-range-track {\n\tbackground: linear-gradient(to right, hsl(var(--hsl-h), 0%, 50%), hsl(var(--hsl-h), 100%, 50%)); \n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=s]::-moz-range-thumb {\n\tbackground-color: hsl(var(--hsl-h), var(--hsl-s), 50%)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=s]::-webkit-slider-thumb {\n\tbackground-color: hsl(var(--hsl-h), var(--hsl-s), 50%)\n}\n\n/* --------------------L------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=l]::-moz-range-track {\n\tbackground: linear-gradient(to right, black, white)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=l]::-webkit-slider-runnable-track {\n\tbackground: linear-gradient(to right, black, white)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=l]::-moz-range-thumb {\n\tbackground-color: #777;\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=l]::-webkit-slider-thumb {\n\tbackground-color: #777;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tState,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Color, Data } from \"../../../model\"\nimport { HSL } from \"../../../model/Color/HSL\"\nimport { RGB } from \"../../../model/Color/RGB\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { SmoothlyInput } from \"../index\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-color\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputColor implements Input, Clearable, Editable, ComponentWillLoad {\n\tparent: Editable | undefined\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\tprivate rgb: RGB = { r: undefined, g: undefined, b: undefined }\n\tprivate hsl: HSL = { h: undefined, s: undefined, l: undefined }\n\tprivate initialValue: string | undefined\n\t@Prop({ mutable: true }) value: string | undefined = undefined\n\t@Prop({ mutable: true, reflect: true }) looks?: Looks\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop() output: \"rgb\" | \"hex\" = \"rgb\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ reflect: true }) showLabel = true\n\t@Element() element: HTMLSmoothlyInputColorElement\n\t@State() open = false\n\t@State() sliderMode: \"rgb\" | \"hsl\" = \"rgb\"\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tasync componentWillLoad(): Promise<void> {\n\t\tthis.value && this.setInitialValue()\n\t\tthis.value && (this.rgb = Color.Hex.toRGB(this.value))\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = this.looks ?? looks), (this.color = color)))\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>): void {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tsmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInput) => void>): void {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tonWindowClick(event: Event): void {\n\t\t!event.composedPath().includes(this.element) && this.open && (this.open = !this.open)\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected)\n\t\t\tawait this.unregister()\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<RGB | string | undefined> {\n\t\treturn this.output === \"rgb\"\n\t\t\t? {\n\t\t\t\t\tr: this.rgb.r === undefined ? undefined : Math.round(this.rgb.r),\n\t\t\t\t\tg: this.rgb.g === undefined ? undefined : Math.round(this.rgb.g),\n\t\t\t\t\tb: this.rgb.b === undefined ? undefined : Math.round(this.rgb.b),\n\t\t\t }\n\t\t\t: this.value\n\t\t\t? this.value\n\t\t\t: undefined\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.rgb = { r: undefined, g: undefined, b: undefined }\n\t\tthis.hsl = { h: undefined, s: undefined, l: undefined }\n\t\tthis.value = undefined\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t\tthis.open = false\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.value = this.initialValue\n\t\tthis.open = false\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.value\n\t\tthis.open = false\n\t}\n\t@Watch(\"value\")\n\tasync valueChanged(): Promise<void> {\n\t\tthis.changed = this.initialValue !== this.value\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.listener.changed?.(this)\n\t}\n\thandleSwitchMode(event: CustomEvent): void {\n\t\tevent.stopPropagation()\n\t\tthis.sliderMode = event.detail ? \"hsl\" : \"rgb\"\n\t\tif (this.sliderMode === \"rgb\") {\n\t\t\tthis.value && (this.rgb = Color.Hex.toRGB(this.value))\n\t\t} else {\n\t\t\tthis.value && (this.hsl = Color.RGB.toHSL(Color.Hex.toRGB(this.value)))\n\t\t}\n\t}\n\thexInputHandler(value: string): void {\n\t\tif (value !== this.value) {\n\t\t\tif (value && Color.Hex.type.is(value)) {\n\t\t\t\tif (this.sliderMode === \"hsl\" || this.rgb.r === undefined) {\n\t\t\t\t\tthis.rgb = Color.Hex.toRGB(value)\n\t\t\t\t}\n\t\t\t\tif (this.sliderMode === \"rgb\" || this.hsl.h === undefined) {\n\t\t\t\t\tthis.hsl = Color.RGB.toHSL(Color.Hex.toRGB(value))\n\t\t\t\t}\n\t\t\t} else if (!value || !Color.Hex.type.is(value)) {\n\t\t\t\tthis.rgb = { r: undefined, g: undefined, b: undefined }\n\t\t\t\tthis.hsl = { h: undefined, s: undefined, l: undefined }\n\t\t\t}\n\t\t\tthis.value = value\n\t\t}\n\t}\n\tsliderInputHandler(event: CustomEvent<Data>): void {\n\t\tevent.stopPropagation()\n\t\tconst color = Object.keys(event.detail)[0]\n\t\tlet temporaryColor = this.sliderMode === \"rgb\" ? this.rgb : this.hsl\n\t\ttype ColorType = HSL | RGB\n\t\tif (!(event.detail[color] === undefined)) {\n\t\t\tfor (const key of Object.keys(temporaryColor))\n\t\t\t\tif (key === color)\n\t\t\t\t\ttemporaryColor = {\n\t\t\t\t\t\t...temporaryColor,\n\t\t\t\t\t\t[key]: key === \"s\" || key === \"l\" ? +(event.detail[color] ?? 0) * 100 : event.detail[color],\n\t\t\t\t\t}\n\t\t\t\telse if (temporaryColor[key as keyof ColorType] === undefined)\n\t\t\t\t\ttemporaryColor = { ...temporaryColor, [key]: 0 }\n\t\t\tif (this.sliderMode === \"rgb\") {\n\t\t\t\tthis.rgb = { ...temporaryColor } as RGB\n\t\t\t\tthis.hsl = Color.RGB.toHSL(this.rgb)\n\t\t\t\tthis.hexInputHandler(Color.RGB.toHex(this.rgb))\n\t\t\t} else {\n\t\t\t\tthis.hsl = { ...temporaryColor } as HSL\n\t\t\t\tthis.rgb = Color.HSL.toRGB(this.hsl)\n\t\t\t\tthis.hexInputHandler(Color.RGB.toHex(Color.HSL.toRGB(this.hsl)))\n\t\t\t}\n\t\t}\n\t}\n\topenDropdown(): void {\n\t\tthis.open = !this.open\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--hexCode\": this.value,\n\t\t\t\t\t\"--rgb-r\": `${Math.round(this.rgb.r ?? 0)}`,\n\t\t\t\t\t\"--rgb-g\": `${Math.round(this.rgb.g ?? 0)}`,\n\t\t\t\t\t\"--rgb-b\": `${Math.round(this.rgb.b ?? 0)}`,\n\t\t\t\t\t\"--hsl-h\": `${Math.round(this.hsl.h ?? 0)}`,\n\t\t\t\t\t\"--hsl-s\": `${Math.round(this.hsl.s ?? 0)}%`,\n\t\t\t\t\t\"--hsl-l\": `${Math.round(this.hsl.l ?? 0)}%`,\n\t\t\t\t\t\"--element-height\": `${this.element.clientHeight}px`,\n\t\t\t\t}}>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tvalue={this.value}\n\t\t\t\t\tname={this.name}\n\t\t\t\t\tlooks={undefined}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\ttype={\"hex-color\"}\n\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tonSmoothlyInput={event => (event?.stopPropagation(), this.hexInputHandler(event.detail[this.name]))}>\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-input>\n\t\t\t\t<div class=\"color-sample\" />\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tname=\"options-outline\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tonClick={() => !this.readonly && this.openDropdown()}\n\t\t\t\t/>\n\t\t\t\t{this.open && !this.readonly && (\n\t\t\t\t\t<div class=\"rgb-sliders\">\n\t\t\t\t\t\t<smoothly-toggle-switch\n\t\t\t\t\t\t\ttitle={`${this.sliderMode === \"rgb\" ? \"To HSL\" : \"To RGB\"}`}\n\t\t\t\t\t\t\tonSmoothlyToggleSwitchChange={event => this.handleSwitchMode(event)}\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tcheckmark={false}\n\t\t\t\t\t\t\tselected={this.sliderMode === \"hsl\"}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{Object.entries(this.rgb).map(([key, value]) => (\n\t\t\t\t\t\t\t<smoothly-input-range\n\t\t\t\t\t\t\t\tstyle={this.sliderMode != \"rgb\" ? { display: \"none\" } : {}}\n\t\t\t\t\t\t\t\tname={key}\n\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\tmax={255}\n\t\t\t\t\t\t\t\tcolor={undefined}\n\t\t\t\t\t\t\t\ttype={\"text\"}\n\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\toutputSide=\"right\"\n\t\t\t\t\t\t\t\tonSmoothlyInput={event => this.sliderInputHandler(event)}\n\t\t\t\t\t\t\t\tlabel={key.toUpperCase()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{Object.entries(this.hsl).map(([key, value]) => (\n\t\t\t\t\t\t\t<smoothly-input-range\n\t\t\t\t\t\t\t\tstyle={this.sliderMode != \"hsl\" ? { display: \"none\" } : {}}\n\t\t\t\t\t\t\t\tname={key}\n\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\tmax={key === \"h\" ? 359 : 1}\n\t\t\t\t\t\t\t\tcolor={undefined}\n\t\t\t\t\t\t\t\ttype={key === \"s\" || key === \"l\" ? \"percent\" : \"text\"}\n\t\t\t\t\t\t\t\tvalue={(key === \"s\" || key === \"l\") && value ? value / 100 : value}\n\t\t\t\t\t\t\t\tstep={key === \"s\" || key === \"l\" ? 0.01 : 1}\n\t\t\t\t\t\t\t\toutputSide=\"right\"\n\t\t\t\t\t\t\t\tonSmoothlyInput={event => this.sliderInputHandler(event)}\n\t\t\t\t\t\t\t\tlabel={key.toUpperCase()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-input-color-demo\",\n\tstyles: \"style.css\",\n})\nexport class SmoothlyInputColorDemo {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Color</h2>\n\t\t\t\t<smoothly-input-color name=\"color\">Choose color</smoothly-input-color>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\tposition: relative;\n\tmax-width: 100vw;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tbox-sizing: border-box;\n\tmin-height: var(--input-min-height);\n}\n\n:host>smoothly-input {\n\twidth: 100%;\n\t--input-min-height: calc(var(--input-min-height) - 2px);\n}\n\n:host>smoothly-input>div>input {\n\tcursor: pointer;\n}\n\n:host[readonly],\n:host[readonly]>smoothly-input>div>input {\n\tcursor: not-allowed;\n}\n\n:host[looks=transparent] smoothly-input {\n\toutline: none;\n}\n\n:host>nav {\n\tposition: absolute;\n\tz-index: 10;\n\ttop: 4em;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tmin-width: 18em;\n}\n\n:host>nav>smoothly-calendar::before {\n\tcontent: \"\";\n\tbox-sizing: border-box;\n\tposition: absolute;\n\ttop: 1px;\n\tz-index: 9;\n\ttransform: translate(2em, -0.55em) rotate(45deg);\n\twidth: 1em;\n\theight: 1em;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tborder-top: 1px solid rgb(var(--smoothly-input-border));\n\tborder-left: 1px solid rgb(var(--smoothly-input-border));\n}\n\n:host>span.icons {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-right: .2em;\n}\n\n@media screen and (min-width: 400px) {\n\t:host>nav {\n\t\tposition: absolute;\n\t\tz-index: 10;\n\t\ttop: 4em;\n\t\tbackground-color: rgb(var(--smoothly-input-background));\n\t\tmax-width: 22em;\n\t}\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tWatch,\n} from \"@stencil/core\"\nimport { Date } from \"isoly\"\nimport { Color } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-date\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDate implements ComponentWillLoad, Clearable, Input, Editable {\n\t@Element() element: HTMLElement\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop() invalid?: boolean = false\n\tparent: Editable | undefined\n\tprivate initialValue?: Date\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\t@Prop({ mutable: true }) value?: Date\n\t@Prop({ mutable: true }) open: boolean\n\t@Prop({ mutable: true }) max: Date\n\t@Prop({ mutable: true }) min: Date\n\t@Prop({ reflect: true }) showLabel = true\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyValueChange: EventEmitter<Date>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\n\tcomponentWillLoad(): void {\n\t\tthis.setInitialValue()\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.listener.changed?.(this)\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected)\n\t\t\tawait this.unregister()\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<Date | undefined> {\n\t\treturn this.value\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>) {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Watch(\"value\")\n\tonStart(next: Date) {\n\t\tthis.smoothlyValueChange.emit(next)\n\t\tthis.smoothlyInput.emit({ [this.name]: next })\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Listen(\"smoothlyInput\")\n\tsmoothlyInputHandler(event: CustomEvent<Record<string, any>>) {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>) {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tSmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputDate) => void>): void {\n\t\tif (!(event.target && \"name\" in event.target && event.target.name === this.name)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this)\n\t\t}\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tonWindowClick(event: Event): void {\n\t\t!event.composedPath().includes(this.element) && this.open && (this.open = !this.open)\n\t}\n\t@Method()\n\tasync edit(editable: boolean) {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset() {\n\t\tthis.value = this.initialValue\n\t}\n\t@Method()\n\tasync setInitialValue() {\n\t\tthis.initialValue = this.value\n\t\tthis.changed = false\n\t}\n\t@Listen(\"smoothlyDateSet\")\n\tdateSetHandler(event: CustomEvent<Date>) {\n\t\tthis.open = false\n\t\tevent.stopPropagation()\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tlooks={this.looks == \"transparent\" ? this.looks : undefined}\n\t\t\t\t\tname={this.name}\n\t\t\t\t\tonFocus={() => !this.readonly && (this.open = !this.open)}\n\t\t\t\t\tonClick={() => !this.readonly && (this.open = !this.open)}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tinvalid={this.invalid}\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\tvalue={this.value}\n\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tthis.value = e.detail[this.name]\n\t\t\t\t\t}}>\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-input>\n\t\t\t\t<span class=\"icons\">\n\t\t\t\t\t<slot name={\"end\"} />\n\t\t\t\t</span>\n\t\t\t\t{this.open && !this.readonly && (\n\t\t\t\t\t<nav>\n\t\t\t\t\t\t<smoothly-calendar\n\t\t\t\t\t\t\tdoubleInput={false}\n\t\t\t\t\t\t\tvalue={this.value}\n\t\t\t\t\t\t\tonSmoothlyValueChange={event => {\n\t\t\t\t\t\t\t\tthis.value = event.detail\n\t\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tmax={this.max}\n\t\t\t\t\t\t\tmin={this.min}>\n\t\t\t\t\t\t\t<div slot={\"year-label\"}>\n\t\t\t\t\t\t\t\t<slot name={\"year-label\"} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div slot={\"month-label\"}>\n\t\t\t\t\t\t\t\t<slot name={\"month-label\"} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</smoothly-calendar>\n\t\t\t\t\t</nav>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../shared.css\";\n\n:host {\n\tposition: relative;\n\tdisplay: flex;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\n\t&:focus-within smoothly-input {\n\t\toutline: none;\n\t}\n}\n\n:host>section>smoothly-input>div>input {\n\tcursor: pointer;\n}\n\n:host[readonly],\n:host[readonly]>section>smoothly-input>div>input {\n\tcursor: not-allowed;\n}\n\n:host>nav {\n\tposition: absolute;\n\tz-index: 10;\n\ttop: 4em;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tmax-width: 22em;\n\tmin-width: 18em;\n}\n\n:host>nav>smoothly-calendar::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tbox-sizing: border-box;\n\ttop: 1px;\n\tleft: -7em;\n\tz-index: 9;\n\ttransform: translate(10em, -0.55em) rotate(45deg);\n\twidth: 1em;\n\theight: 1em;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tborder-top: 1px solid rgb(var(--smoothly-input-border));\n\tborder-left: 1px solid rgb(var(--smoothly-input-border));\n}\n\n:host>section {\n\tdisplay: flex;\n\twidth: 100%;\n\tbackground-color: var(--smoothly-input-background);\n\tborder-radius: 0.25rem;\n\tcursor: pointer;\n}\n\n:host>section>smoothly-input {\n\tmin-width: 15rem;\n\tbackground-color: transparent;\n\t--input-min-height: calc(var(--input-min-height) - 2px);\n}\n\n:host>section>span {\n\tpadding: 0.5em 0.2em 0.5em 0.2em;\n\talign-self: center;\n}\n\n:host>span.icons {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-right: .4em;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { tidily } from \"tidily\"\nimport { Clearable } from \"../../Clearable\"\nimport { Editable } from \"../../Editable\"\nimport { Input } from \"../../Input\"\nimport { Looks } from \"../../Looks\"\nimport { Color, Data } from \"./../../../../model\"\n\n@Component({\n\ttag: \"smoothly-input-date-range\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyInputDateRange implements Clearable, Input, Editable {\n\t@Element() element: HTMLElement\n\t@Prop({ reflect: true }) name: string = \"dateRange\"\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop({ mutable: true }) start: isoly.Date | undefined\n\t@Prop({ mutable: true }) end: isoly.Date | undefined\n\t@Prop() placeholder = \"from — to\"\n\t@Prop() invalid?: boolean = false\n\t@Prop() max?: isoly.Date\n\t@Prop() min?: isoly.Date\n\t@Prop({ mutable: true }) changed = false\n\tparent: Editable | undefined\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\tprivate initialStart?: isoly.Date\n\tprivate initialEnd?: isoly.Date\n\t@State() value?: isoly.DateRange\n\t@State() open: boolean\n\t@Event() smoothlyInput: EventEmitter<{ [name: string]: isoly.DateRange | undefined }>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\n\tcomponentWillLoad() {\n\t\tthis.setInitialValue()\n\t\tthis.updateValue()\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\tthis.start && this.end && this.smoothlyInput.emit({ [this.name]: { start: this.start, end: this.end } })\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.listener.changed?.(this)\n\t}\n\t// TODO: disable search fields in month selectors so that the input becomes typeable and then fix input handler\n\tinputHandler(data: Data) {\n\t\tconst split = \"dateRangeInput\" in data && typeof data.dateRangeInput == \"string\" && data.dateRangeInput.split(\" - \")\n\t\tif (split && split.length == 2 && isoly.Date.is(split[0]) && isoly.Date.is(split[1])) {\n\t\t\tthis.start = split[0]\n\t\t\tthis.end = split[1]\n\t\t}\n\t}\n\t@Watch(\"start\")\n\t@Watch(\"end\")\n\tupdateValue() {\n\t\tthis.value = this.start && this.end ? { start: this.start, end: this.end } : undefined\n\t}\n\t@Watch(\"value\")\n\tvalueChanged() {\n\t\tthis.changed = this.initialStart != this.start || this.initialEnd != this.end\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tSmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputDateRange) => void>): void {\n\t\tif (!(event.target && \"name\" in event.target && event.target.name === this.name)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this)\n\t\t}\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>) {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tonWindowClick(event: Event): void {\n\t\t!event.composedPath().includes(this.element) && this.open && (this.open = !this.open)\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected)\n\t\t\tawait this.unregister()\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<isoly.DateRange | undefined> {\n\t\treturn this.start && this.end ? { start: this.start, end: this.end } : undefined\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>) {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync edit(editable: boolean) {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset() {\n\t\tthis.start = this.initialStart\n\t\tthis.end = this.initialEnd\n\t}\n\t@Method()\n\tasync setInitialValue() {\n\t\tthis.initialStart = this.start\n\t\tthis.initialEnd = this.end\n\t\tthis.changed = false\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.start = undefined\n\t\tthis.end = undefined\n\t\tthis.smoothlyInput.emit({ [this.name]: undefined })\n\t}\n\trender() {\n\t\tconst locale = navigator.language as isoly.Locale\n\t\treturn (\n\t\t\t<Host tabindex={0}>\n\t\t\t\t<section onClick={() => !this.readonly && (this.open = !this.open)}>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\ttype=\"text\" // TODO: date-range tidily thing\n\t\t\t\t\t\tname=\"dateRangeInput\"\n\t\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tthis.start && this.end\n\t\t\t\t\t\t\t\t? `${tidily.format(this.start, \"date\", locale)} — ${tidily.format(this.end, \"date\", locale)}`\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid={this.invalid}\n\t\t\t\t\t\tplaceholder={this.placeholder}\n\t\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\tthis.inputHandler(e.detail)\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t</section>\n\t\t\t\t<span class={\"icons\"}>\n\t\t\t\t\t<slot name={\"end\"}></slot>\n\t\t\t\t</span>\n\t\t\t\t{this.open && (\n\t\t\t\t\t<nav>\n\t\t\t\t\t\t<smoothly-calendar\n\t\t\t\t\t\t\tdoubleInput={true}\n\t\t\t\t\t\t\tonSmoothlyValueChange={e => e.stopPropagation()}\n\t\t\t\t\t\t\tonSmoothlyStartChange={e => {\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\tthis.start = e.detail\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonSmoothlyEndChange={e => {\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\tthis.end = e.detail\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonSmoothlyDateSet={e => e.stopPropagation()}\n\t\t\t\t\t\t\tonSmoothlyDateRangeSet={e => {\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\t\t\tthis.smoothlyInput.emit({ [this.name]: e.detail })\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tvalue={this.start}\n\t\t\t\t\t\t\tstart={this.start}\n\t\t\t\t\t\t\tend={this.end}\n\t\t\t\t\t\t\tmax={this.max}\n\t\t\t\t\t\t\tmin={this.min}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</nav>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-top: 2em;\n\tmargin-bottom: 10rem;\n}\n\nsmoothly-input-demo-standard {\n\tmargin-bottom: 2rem;\n}\n\ndiv.inputs {\n\tmargin: auto;\n\twidth: 50%;\n}\n\ndiv.inputs>h2:not(:first-child) {\n\tpadding-top: 3em;\n\tmargin-top: 3em;\n\tborder-top: 1px solid black;\n}\n\n.checkbox-group {\n\tdisplay: flex;\n\tgap: 1.5em;\n\talign-items: center;\n\tbackground-color: rgb(var(--smoothly-input-background));\n}\n\n.select-div {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tgap: 1em;\n\tflex-wrap: wrap;\n}\n\n.select-div>smoothly-color>*,\n.select-div>* {\n\tflex-basis: 49%;\n}\n","import { Component, h, Host, State } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\n\n@Component({\n\ttag: \"smoothly-input-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDemo {\n\t@State() duration: isoly.TimeSpan = { hours: 8 }\n\t@State() alphanumeric: string = \"!@##\"\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-input-demo-standard />\n\t\t\t\t<div class=\"inputs\">\n\t\t\t\t\t<h2>Calendar</h2>\n\t\t\t\t\t<smoothly-input-date name=\"some-date\">Calendar</smoothly-input-date>\n\t\t\t\t\t<h2>Date Range</h2>\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tname=\"testing\"\n\t\t\t\t\t\tstart={isoly.Date.now()}\n\t\t\t\t\t\tend={isoly.Date.nextMonth(isoly.Date.now())}\n\t\t\t\t\t\tmin=\"2021-10-01\"\n\t\t\t\t\t\tmax=\"2025-01-31\"></smoothly-input-date-range>\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tname=\"testing\"\n\t\t\t\t\t\tstart={isoly.Date.now()}\n\t\t\t\t\t\tend={isoly.Date.nextMonth(isoly.Date.now())}\n\t\t\t\t\t\tmin=\"2021-10-10\"\n\t\t\t\t\t\tmax=\"2024-12-30\">\n\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" size=\"icon\"></smoothly-input-reset>\n\t\t\t\t\t</smoothly-input-date-range>\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tlooks=\"grid\"\n\t\t\t\t\t\tstart={isoly.Date.now()}\n\t\t\t\t\t\tend={isoly.Date.nextMonth(isoly.Date.now())}\n\t\t\t\t\t\tmin=\"2021-10-10\"\n\t\t\t\t\t\tmax=\"2025-12-30\"\n\t\t\t\t\t\tshowLabel={false}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\"--smoothly-input-border-radius\": \"0.5rem\",\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" size=\"icon\"></smoothly-input-clear>\n\t\t\t\t\t</smoothly-input-date-range>\n\t\t\t\t\t<h2>Date</h2>\n\t\t\t\t\t<smoothly-input-date>Date</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-date showLabel={false} value=\"2021-10-28\" max=\"2021-12-30\" min=\"2021-10-10\">\n\t\t\t\t\t\tDate\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-date value=\"2021-10-28\">\n\t\t\t\t\t\tDate\n\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" size=\"icon\"></smoothly-input-reset>\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-date value=\"2021-10-28\">\n\t\t\t\t\t\tDate\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" size=\"icon\"></smoothly-input-clear>\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<h2>Select</h2>\n\t\t\t\t\t<div class=\"select-div\">\n\t\t\t\t\t\t<smoothly-input-select name=\"select-dessert\" looks=\"border\">\n\t\t\t\t\t\t\t<label slot=\"label\">Select with clear button</label>\n\t\t\t\t\t\t\t<smoothly-item value=\"1\">Ice cream</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"2\">Sponge cake</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"3\">Cookie</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"4\">Croissant</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"5\">Chocolate fondue</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\"></smoothly-input-clear>\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-select multiple name=\"select-dessert-multiple\" looks=\"border\">\n\t\t\t\t\t\t\t<label slot=\"label\">Select multiple with reset button</label>\n\t\t\t\t\t\t\t<smoothly-item value=\"ice cream\">Ice cream</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"sponge cake\">Sponge cake</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item selected value=\"cookie\">\n\t\t\t\t\t\t\t\tCookie\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"croissant\">Croissant</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item selected value=\"chocolate fondue\">\n\t\t\t\t\t\t\t\tChocolate fondue\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-input-reset size=\"icon\" slot=\"end\"></smoothly-input-reset>\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-select name=\"spirit-animals\" looks=\"border\" mutable>\n\t\t\t\t\t\t\t<label slot=\"label\">Select or add new options</label>\n\t\t\t\t\t\t\t<smoothly-item value=\"manatee\">Manatee</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item selected value=\"cthulu\">\n\t\t\t\t\t\t\t\tCthulu\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-select name=\"select-icon\" clearable={false} showSelected={false}>\n\t\t\t\t\t\t\t<smoothly-item value=\"folder\" selected>\n\t\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"folder-outline\" />\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"camera\">\n\t\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"camera-outline\" />\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-select ordered menuHeight=\"7.5items\" placeholder=\"Select...\" name=\"select-month\">\n\t\t\t\t\t\t\t<label slot=\"label\">Alphabet ordered select</label>\n\t\t\t\t\t\t\t{Array.from({ length: 26 })\n\t\t\t\t\t\t\t\t.map((_, i) => String.fromCharCode(i + 65))\n\t\t\t\t\t\t\t\t.map(char => (\n\t\t\t\t\t\t\t\t\t<smoothly-item value={char} selected={char == \"H\"}>\n\t\t\t\t\t\t\t\t\t\t{char}\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-select multiple menuHeight=\"7.5items\" placeholder=\"Select...\" name=\"select-month\">\n\t\t\t\t\t\t\t<label slot=\"label\">Month multiple select</label>\n\t\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h2>Duration</h2>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tname=\"duration\"\n\t\t\t\t\t\ttype=\"duration\"\n\t\t\t\t\t\tplaceholder=\"hh:mm\"\n\t\t\t\t\t\tvalue={this.duration}\n\t\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\t\tconst duration = e.detail.duration\n\t\t\t\t\t\t\tthis.duration = duration\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tDuration\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tname=\"duration\"\n\t\t\t\t\t\ttype=\"duration\"\n\t\t\t\t\t\tvalue={this.duration}\n\t\t\t\t\t\tplaceholder=\"-hh:mm\"\n\t\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\t\tconst duration = e.detail.duration\n\t\t\t\t\t\t\tthis.duration = duration\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tDuration\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<h2>Invalid text with warning icon and tooltip</h2>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tname=\"alphanumeric\"\n\t\t\t\t\t\tinvalid={!/^[a-zA-Z0-9]+$/.test(this.alphanumeric)}\n\t\t\t\t\t\terrorMessage={\"Only alphanumeric allowed\"}\n\t\t\t\t\t\tvalue={this.alphanumeric}\n\t\t\t\t\t\tonSmoothlyInput={e => (this.alphanumeric = e.detail.alphanumeric)}>\n\t\t\t\t\t\tAlphanumeric\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<h2>Identifiers</h2>\n\t\t\t\t\t<smoothly-input type=\"identifier-code\">Code</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-attribute\">Attribute</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-snake\">Snake</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-pascal\">Pascal</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-camel\">Camel</smoothly-input>\n\t\t\t\t\t<h2>Input Alternatives</h2>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.last\" onSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tFirst Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\" onSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"end\"></smoothly-icon>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tname=\"name.first\"\n\t\t\t\t\t\tplaceholder=\"Smith\"\n\t\t\t\t\t\tonSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"end\"></smoothly-icon>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input placeholder=\"test\"></smoothly-input>\n\t\t\t\t\t<smoothly-input-submit\n\t\t\t\t\t\tslot=\"submit\"\n\t\t\t\t\t\tfill=\"solid\"\n\t\t\t\t\t\tonSubmit={(e: Event) => alert(e)}\n\t\t\t\t\t\tcolor=\"success\"></smoothly-input-submit>\n\t\t\t\t\t<h4>Smoothly checkboxes</h4>\n\t\t\t\t\t<div class=\"checkbox-group\">\n\t\t\t\t\t\t<smoothly-input-checkbox disabled name=\"first-checkbox\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" size=\"tiny\" />\n\t\t\t\t\t\t\tFirst\n\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"second-checkbox\" checked>\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" size=\"tiny\" />\n\t\t\t\t\t\t\tsecond\n\t\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\"></smoothly-input-clear>\n\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"third-checkbox\">3rd</smoothly-input-checkbox>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h4>Smoothly Radio Buttons</h4>\n\t\t\t\t\t<smoothly-input-radio clearable name=\"radioFirstInput\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t\t<label slot=\"label\">Clearable</label>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"first\"}>Label 1</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected value={\"second\"}>\n\t\t\t\t\t\t\tLabel 2\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"third\"}>Label 3</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\" />\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-radio name=\"radioSecondInput\">\n\t\t\t\t\t\t<label slot=\"label\">Not clearable</label>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"first\"}>Label 1</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"second\"}>Label 2</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"third\"}>Label 3</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"fourth\"}>Label 4</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"fifth\"}>Label 5</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"sixth\"}>Label 6</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-range-demo />\n\t\t\t\t\t<smoothly-input-color-demo />\n\t\t\t\t\t<smoothly-input-price-demo />\n\t\t\t\t\t<smoothly-back-to-top />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\twidth: 50%;\n\tmargin: auto;\n}\n\n:host h2,\n:host p {\n\tmargin: .5rem 0;\n}\ndiv.input-wrapper {\n\tdisplay: grid;\n\tmargin-top: 1rem;\n\tgrid-template-columns: 2fr 1fr;\n\tgap: 1rem;\n\tposition: relative;\n\tjustify-content: space-around;\n}\ndiv.input-wrapper > [name] {\n\tgrid-column: 1 / 2;\n}\ndiv.input-wrapper > .width {\n\twidth: 100%;\n\ttext-align: center;\n\tborder-bottom: 1px dashed black;\n}\ndiv.input-wrapper > .height {\n\talign-content: center;\n\tgrid-column: 2 / 3;\n\tborder-left: 1px dashed black;\n\tpadding-left: 1rem;\n\tcontent: \"hello\";\n}\ndiv.input-wrapper > .left-padding {\n\twidth: 0.5rem;\n\tgrid-column: 1 / 2;\n\twhite-space: nowrap;\n\toverflow: visible;\n\tposition: relative;\n\tcursor: default;\n}\ndiv.input-wrapper > .left-padding::before {\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: 100%;\n\ttop: 1.5rem;\n\tbottom: -1rem;\n\tborder: 1px dashed black;\n\tz-index: 2;\n}\ndiv.input-wrapper > .left-padding:hover::before { \n\tbottom: -100vh;\n}\n\n\n/* --- vertical --- */\n\n:host.vertical {\n\twidth: 100%;\n\trow-gap: 0;\n\tposition: relative;\n}\n:host.vertical > div.input-wrapper {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(auto-fill, 14rem);\n\tgap: .5rem;\n}\n:host.vertical > div.input-wrapper > .width,\n:host.vertical > div.input-wrapper > .height,\n:host.vertical > div.input-wrapper > .left-padding {\n\tdisplay: none;\n}\n\n\n:host.vertical > div.input-wrapper > .guide-lines::before,\n:host.vertical > div.input-wrapper > .guide-lines::after {\n\tcontent: \"\";\n\tpointer-events: none;\n\tright: 0;\n\twidth: 100vw;\n\tposition: absolute;\n\tz-index: 2;\n\tborder-top: 1px dotted black;\n}\n\n:host:not(.vertical) .guide-lines {\n\tdisplay: none;\n}\n\n.guide-lines {\n\ttext-align: end;\n\tjustify-self: center;\n align-content: center;\n}\n\n.guide-lines::before {\n\ttop: 1rem;\n}\n.guide-lines::after {\n\ttop: 2rem;\n}\n.guide-lines.show-label::before {\n\ttop: 1.05rem;\n}\n.guide-lines.show-label::after {\n\ttop: 2.3rem;\n}\n","import { Component, Element, h, Host, State } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { Color } from \"../../../../model\"\nimport { Looks } from \"../../Looks\"\n\ntype Options = {\n\tlooks?: Looks\n\treadonly?: boolean\n\tcolor?: Color\n\tvertical?: boolean\n\tshowLabel?: boolean\n\tplaceholder?: boolean\n\tborderRadius?: number\n}\n\n@Component({\n\ttag: \"smoothly-input-demo-standard\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDemoStandard {\n\t@Element() element: HTMLElement\n\t@State() duration: isoly.TimeSpan = { hours: 8 }\n\t@State() options: Options = { showLabel: true }\n\n\tconnectedCallback() {\n\t\tthis.updateInputHeightText()\n\t}\n\tcomponentDidRender() {\n\t\tthis.updateInputHeightText()\n\t}\n\n\tupdateInputHeightText() {\n\t\tconst rootFontSize = Number(getComputedStyle(document.documentElement).fontSize.replace(\"px\", \"\"))\n\t\tthis.element.querySelectorAll(\".height\").forEach((el: HTMLDivElement) => {\n\t\t\tconst height = el.clientHeight\n\t\t\tel.innerHTML = `<b>${height / rootFontSize}rem</b> (${height}pixels)`\n\t\t})\n\t}\n\n\trender() {\n\t\tconst placeholder = this.options.placeholder ? \"placeholder\" : undefined\n\t\treturn (\n\t\t\t<Host class={{ vertical: !!this.options.vertical }}>\n\t\t\t\t<div class=\"description\">\n\t\t\t\t\t<h2>Input Standard</h2>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tHeight of input should be <code>3rem</code> including border. This is should result in a 48 pixel height at\n\t\t\t\t\t\t100% zoom, assuming a root font-size of 16 pixels.\n\t\t\t\t\t</p>\n\t\t\t\t\t<smoothly-form looks={\"grid\"} onSmoothlyFormInput={(e: CustomEvent<Options>) => (this.options = e.detail)}>\n\t\t\t\t\t\t<smoothly-input-select name=\"looks\">\n\t\t\t\t\t\t\t<span slot=\"label\">Looks</span>\n\t\t\t\t\t\t\t{Looks.types.map(l => (\n\t\t\t\t\t\t\t\t<smoothly-item value={l}>{l}</smoothly-item>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"readonly\">Readonly</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-select name=\"color\">\n\t\t\t\t\t\t\t<span slot=\"label\">Color</span>\n\t\t\t\t\t\t\t{Color.types.map(c => (\n\t\t\t\t\t\t\t\t<smoothly-item value={c}>\n\t\t\t\t\t\t\t\t\t<span color={c}>{c}</span>\n\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"vertical\">Vertical Layout</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"showLabel\" checked={this.options.showLabel}>\n\t\t\t\t\t\t\tShow Label\n\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"placeholder\" checked={this.options.placeholder}>\n\t\t\t\t\t\t\tPlaceholder\n\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-range\n\t\t\t\t\t\t\tlabel={\"Border Radius (rem)\"}\n\t\t\t\t\t\t\tname={\"borderRadius\"}\n\t\t\t\t\t\t\tvalue={this.options.borderRadius}\n\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\tmax={2}\n\t\t\t\t\t\t\tstep={0.25}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</smoothly-form>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"input-wrapper\" style={{ \"--smoothly-input-border-radius\": `${this.options.borderRadius}rem` }}>\n\t\t\t\t\t<div class=\"width\">100%</div>\n\t\t\t\t\t<div class=\"left-padding\">0.5rem - left padding</div>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tname=\"text\"\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tshowLabel={this.options.showLabel}>\n\t\t\t\t\t\t{this.options.showLabel && <span>Text</span>}\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<div class=\"height\"></div>\n\n\t\t\t\t\t<smoothly-input-select\n\t\t\t\t\t\tname=\"month\"\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tcolor={this.options.color}>\n\t\t\t\t\t\t{this.options.showLabel && <label slot=\"label\">Select</label>}\n\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<div class=\"height\"></div>\n\n\t\t\t\t\t<smoothly-input-checkbox\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tcolor={this.options.color}>\n\t\t\t\t\t\tCheck\n\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t<div class=\"height\"></div>\n\n\t\t\t\t\t<smoothly-input-radio\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tshowLabel={this.options.showLabel}>\n\t\t\t\t\t\t{this.options.showLabel && <label slot=\"label\">Radio</label>}\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"first\"}>Label 1</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected value={\"second\"}>\n\t\t\t\t\t\t\tLabel 2\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"third\"}>Label 3</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<div class=\"height\"></div>\n\n\t\t\t\t\t<smoothly-input-file\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tshowLabel={this.options.showLabel}>\n\t\t\t\t\t\t{this.options.showLabel && <span slot={\"label\"}>File</span>}\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<div class=\"height\"></div>\n\n\t\t\t\t\t<smoothly-input-range\n\t\t\t\t\t\tlabel={this.options.showLabel ? \"Range\" : undefined}\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tcolor={this.options.color}>\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t<div class=\"height\"></div>\n\n\t\t\t\t\t<smoothly-input-color\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tshowLabel={this.options.showLabel}>\n\t\t\t\t\t\t{this.options.showLabel && <span>Color</span>}\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-color>\n\t\t\t\t\t<div class=\"height\"></div>\n\n\t\t\t\t\t<smoothly-input-date\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tshowLabel={this.options.showLabel}>\n\t\t\t\t\t\t{this.options.showLabel && <span>Date</span>}\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<div class=\"height\"></div>\n\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tshowLabel={this.options.showLabel}>\n\t\t\t\t\t\t{this.options.showLabel && <span>Date Range</span>}\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-date-range>\n\t\t\t\t\t<div class=\"height\"></div>\n\t\t\t\t\t<div class={{ \"guide-lines\": true, \"show-label\": !!this.options.showLabel }}>\n\t\t\t\t\t\t{this.options.showLabel ? \"Aligned labels & values\" : \"Center values\"}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../button/style.css\";\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host([editable]){\n\topacity: 0.5;\n}\n\n:host([type=\"input\"])::slotted(smoothly-button>button) {\n\tcursor: pointer;\n\tfilter: opacity(60%);\n\t--smoothly-button-foreground: var(--smoothly-input-foreground);\n\tbackground-color: transparent;\n}\n\n:host smoothly-icon.default {\n\ttransform: translate(.1em, -.1em);\n}\n\n:host::slotted(button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n","import { Component, ComponentWillLoad, Event, EventEmitter, h, Host, Listen, Prop, VNode } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\nimport { Editable } from \"../Editable\"\n\n@Component({\n\ttag: \"smoothly-input-edit\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputEdit implements ComponentWillLoad {\n\tprivate parent?: Editable\n\t@Prop() color?: Color = \"tertiary\"\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true, mutable: true }) display = true\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true }) type: \"form\" | \"input\" = \"input\"\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\"\n\t@Prop() toolTip = \"Edit\"\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Editable.type.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\tthis.display = p.readonly\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\t@Listen(\"click\")\n\tclickHandler() {\n\t\tthis.parent?.edit(true)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host title={this.toolTip}>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\ttype={\"button\"}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tfill={this.fill ?? (this.type == \"input\" ? \"clear\" : undefined)}>\n\t\t\t\t\t<slot />\n\t\t\t\t\t<smoothly-icon class=\"default\" name=\"create-outline\" size=\"tiny\" />\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\toverflow: hidden;\n\tposition: relative;\n\twidth: 100%;\n\tpadding-left: 0.5rem;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tbox-sizing: border-box;\n}\n\n:host>div>div.mask {\n\tposition: absolute;\n\tinset: 0;\n\tcolor: rgb(var(--smoothly-hover-contrast));\n\tbackground-color: rgb(var(--smoothly-input-hover-background));\n}\n\n:host:not(.dragging)>div>div.mask {\n\tdisplay: none;\n}\n\n:host>div>input {\n\toverflow: hidden;\n\theight: 0;\n\twidth: 0;\n\tpadding: 0;\n}\n\n:host:not([show-label])>div.input {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding-bottom: 0.2rem;\n}\n\n:host:not([show-label])>smoothly-button:not(:empty) {\n\tmargin-right: 1ch;\n}\n\n:host([show-label]) > div.input {\n\tdisplay: flex;\n\tpadding: var(--input-value-padding-top) 0 var(--input-value-padding-bottom) 0;\n\theight: 100%;\n\tbox-sizing: border-box;\n}\n\n:host>div>smoothly-button {\n\tmargin: 0;\n\tborder: none;\n}\n\n:host>label {\n\tleft: var(--input-padding-side);\n}\n\n:host,\n:host * {\n\tcursor: pointer;\n}\n\n:host[readonly],\n:host[readonly] * {\n\tcursor: not-allowed;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tMethod,\n\tProp,\n\tState,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Color } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-file\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputFile implements ComponentWillLoad, Input, Clearable, Editable {\n\t@Element() element: HTMLSmoothlyInputFileElement\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop() accept?: string\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true }) camera: \"front\" | \"back\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop({ mutable: true }) value?: File\n\t@Prop({ mutable: true, reflect: true }) placeholder: string | undefined\n\t@State() dragging = false\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tparent: Editable | undefined\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> }\n\tprivate transfer: DataTransfer = new DataTransfer()\n\tprivate input?: HTMLInputElement\n\tprivate initialValue: SmoothlyInputFile[\"value\"]\n\n\tprivate get files(): FileList {\n\t\tthis.transfer.items.clear()\n\t\tthis.value && this.transfer.items.add(this.value)\n\t\treturn this.transfer.files\n\t}\n\n\tasync componentWillLoad(): Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected)\n\t\t\tawait this.unregister()\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<File | undefined> {\n\t\treturn this.value\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.value = this.initialValue\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.value\n\t\tthis.valueChanged()\n\t}\n\t@Method()\n\tasync binary(): Promise<boolean> {\n\t\treturn true\n\t}\n\n\t@Watch(\"value\")\n\tasync valueChanged(): Promise<void> {\n\t\tthis.changed = this.initialValue !== this.value\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t}\n\n\tinputHandler(event: Event): void {\n\t\tevent.stopPropagation()\n\t\tif (this.input?.files?.length)\n\t\t\tthis.value = this.input?.files[0]\n\t}\n\tdropHandler(event: DragEvent): void {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tthis.dragging = false\n\t\tif (event.dataTransfer?.files.length)\n\t\t\tthis.value = event.dataTransfer.files[0]\n\t}\n\tclickHandler(event: MouseEvent): void {\n\t\tif (!this.readonly && !event.composedPath().find(target => target == this.input)) {\n\t\t\tthis.input?.click()\n\t\t}\n\t}\n\tdragOverHandler(event: DragEvent): void {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t}\n\tdragEnterHandler(event: DragEvent): void {\n\t\tevent.preventDefault()\n\t\t!this.readonly && (this.dragging = true)\n\t}\n\tdragLeaveHandler(event: DragEvent): void {\n\t\tevent.stopPropagation()\n\t\tthis.dragging = false\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{ dragging: this.dragging, \"has-value\": !!this.value }}\n\t\t\t\ttabindex={0}\n\t\t\t\tonClick={(e: MouseEvent) => this.clickHandler(e)}\n\t\t\t\tonDragOver={(e: DragEvent) => this.dragOverHandler(e)}\n\t\t\t\tonDragEnter={(e: DragEvent) => this.dragEnterHandler(e)}>\n\t\t\t\t<label>\n\t\t\t\t\t<slot name={\"label\"} />\n\t\t\t\t</label>\n\t\t\t\t<div class=\"input\">\n\t\t\t\t\t<smoothly-button color={this.color} fill={\"clear\"} size=\"flexible\">\n\t\t\t\t\t\t<slot name={\"button\"} />\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<span>{this.value?.name ?? this.placeholder}</span>\n\t\t\t\t\t<div class={\"mask\"} onDrop={e => this.dropHandler(e)} onDragLeave={e => this.dragLeaveHandler(e)} />\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={element => (this.input = element)}\n\t\t\t\t\t\ttype={\"file\"}\n\t\t\t\t\t\tcapture={this.camera == \"back\" ? \"environment\" : \"user\"}\n\t\t\t\t\t\taccept={this.accept ?? (!this.camera ? undefined : \"image/jpeg\")}\n\t\t\t\t\t\tfiles={this.files}\n\t\t\t\t\t\tonInput={e => this.inputHandler(e)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-between;\n\tbackground-color: rgb(var(--smoothly-input-background));\n}\n\n:host:not([in-calendar])>smoothly-input-select {\n\tdisplay: flex;\n\tflex: 1;\n}\n\n:host[looks=line],\n:host[looks=border],\n:host[looks=transparent] {\n\tgap: 2em;\n}\n\n:host:not([previous])>smoothly-icon:first-of-type,\n:host:not([next])>smoothly-icon:last-of-type {\n\tdisplay: none;\n}\n:host>smoothly-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tcursor: pointer;\n}\n:host>smoothly-icon.disabled {\n\topacity: 0.5;\n\tcursor: not-allowed;\n}\n\n\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tState,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { Data } from \"../../../model\"\nimport { Color } from \"../../../model\"\nimport * as generate from \"../../calendar/generate\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-month\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputMonth implements ComponentWillLoad, Input, Editable {\n\tchanged: boolean\n\tparent: Editable | undefined\n\t@Element() element: HTMLSmoothlyInputMonthElement\n\t@Prop({ reflect: true, mutable: true }) readonly: boolean\n\t@Prop({ reflect: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) value?: isoly.Date = isoly.Date.now()\n\t@Prop({ mutable: true }) max?: isoly.Date\n\t@Prop({ mutable: true }) min?: isoly.Date\n\t@Prop({ reflect: true }) next = false\n\t@Prop({ reflect: true }) previous = false\n\t@Prop({ reflect: true }) inCalendar = false\n\t@Prop({ reflect: true }) showLabel = true\n\t@State() allowPreviousMonth = true\n\t@State() allowNextMonth = true\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\tprivate year?: HTMLSmoothlyInputSelectElement\n\tprivate month?: HTMLSmoothlyInputSelectElement\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = this.looks ?? looks))\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.valueChanged()\n\t}\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t}\n\tprivate adjustMonth(delta: number): void {\n\t\tif (!this.readonly) {\n\t\t\tconst date = isoly.Date.parse(this.value ?? isoly.Date.now())\n\t\t\tdate.setMonth(date.getMonth() + delta)\n\t\t\tthis.value = isoly.Date.create(date)\n\t\t}\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected)\n\t\t\tawait this.unregister()\n\t}\n\t@Watch(\"value\")\n\t@Watch(\"min\")\n\tsetAllowPreviousMonth() {\n\t\tconst previousMonth = isoly.Date.previousMonth(this.value ?? isoly.Date.now()).substring(0, 7)\n\t\tconst minMonth = this.min?.substring(0, 7)\n\t\tthis.allowPreviousMonth = !minMonth || previousMonth >= minMonth\n\t}\n\t@Watch(\"value\")\n\t@Watch(\"max\")\n\tsetAllowNextMonth() {\n\t\tconst nextMonth = isoly.Date.nextMonth(this.value ?? isoly.Date.now()).substring(0, 7)\n\t\tconst maxMonth = this.max?.substring(0, 7)\n\t\tthis.allowNextMonth = !maxMonth || nextMonth <= maxMonth\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<isoly.Date | undefined> {\n\t\treturn this.value\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.year?.clear()\n\t\tthis.month?.clear()\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.year?.reset()\n\t\tthis.month?.reset()\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.year?.setInitialValue()\n\t\tthis.month?.setInitialValue()\n\t}\n\tinputHandler(event: CustomEvent<Record<string, any>>): void {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t\tconst year = event.detail[`${this.name}-year`]\n\t\t\tconst month = event.detail[`${this.name}-month`]\n\t\t\tif (month && isoly.Date.is(month))\n\t\t\t\tthis.value = isoly.Date.firstOfMonth(month)\n\t\t\telse if (year && isoly.Date.is(year))\n\t\t\t\tthis.value = isoly.Date.firstOfMonth(year)\n\t\t}\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks?: Looks, color?: Color) => void>): void {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this.looks, this.color)\n\t\t}\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: Editable) => void>): Promise<void> {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={\"caret-back-outline\"}\n\t\t\t\t\tsize={\"tiny\"}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tfill={\"default\"}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\tdisabled: this.readonly || !this.allowPreviousMonth,\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={() => this.allowPreviousMonth && this.adjustMonth(-1)}\n\t\t\t\t/>\n\t\t\t\t<smoothly-input-select\n\t\t\t\t\tref={e => (this.year = e)}\n\t\t\t\t\tname={`${this.name}-year`}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tchanged={this.changed}\n\t\t\t\t\tmenuHeight=\"5.5items\"\n\t\t\t\t\trequired\n\t\t\t\t\tordered\n\t\t\t\t\tinCalendar={this.inCalendar}\n\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}\n\t\t\t\t\tsearchDisabled>\n\t\t\t\t\t<div slot={\"label\"}>\n\t\t\t\t\t\t<slot name={\"year-label\"} />\n\t\t\t\t\t</div>\n\t\t\t\t\t{generate.years(this.value ?? isoly.Date.now(), this.min, this.max).map(year => (\n\t\t\t\t\t\t<smoothly-item key={year.date} value={year.date} selected={year.selected || this.value == year.date}>\n\t\t\t\t\t\t\t{year.name}\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t))}\n\t\t\t\t</smoothly-input-select>\n\t\t\t\t<smoothly-input-select\n\t\t\t\t\tref={e => (this.month = e)}\n\t\t\t\t\tname={`${this.name}-month`}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\tchanged={this.changed}\n\t\t\t\t\tmenuHeight=\"5.5items\"\n\t\t\t\t\trequired\n\t\t\t\t\tordered\n\t\t\t\t\tinCalendar={this.inCalendar}\n\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}\n\t\t\t\t\tsearchDisabled>\n\t\t\t\t\t<div slot={\"label\"}>\n\t\t\t\t\t\t<slot name={\"month-label\"} />\n\t\t\t\t\t</div>\n\t\t\t\t\t{generate.months(this.value ?? isoly.Date.now()).map(month => (\n\t\t\t\t\t\t<smoothly-item key={month.date} value={month.date} selected={month.selected || this.value == month.date}>\n\t\t\t\t\t\t\t{month.name}\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t))}\n\t\t\t\t</smoothly-input-select>\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={\"caret-forward-outline\"}\n\t\t\t\t\tsize={\"tiny\"}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tfill={\"default\"}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\tdisabled: this.readonly || !this.allowNextMonth,\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={() => this.allowNextMonth && this.adjustMonth(1)}\n\t\t\t\t/>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, h, Host, State, VNode } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\n\n@Component({\n\ttag: \"smoothly-input-price-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputPriceDemo {\n\t@State() currencies: isoly.Currency[] = [\"EUR\", \"USD\", \"GBP\"]\n\t@State() currency?: isoly.Currency = \"USD\"\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>State demo on smoothly-input</h2>\n\t\t\t\t<p>This demo/test the internal state of the smoothly-input component.</p>\n\t\t\t\t<p>The currency of the price should update when switching between the currencies.</p>\n\t\t\t\t<smoothly-input-radio\n\t\t\t\t\tname={\"currency\"}\n\t\t\t\t\tonSmoothlyInput={e => (this.currency = isoly.Currency.is(e.detail.currency) ? e.detail.currency : undefined)}>\n\t\t\t\t\t{this.currencies.map(currency => (\n\t\t\t\t\t\t<smoothly-input-radio-item key={currency} selected={currency == this.currency} value={currency}>\n\t\t\t\t\t\t\t{currency}\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t))}\n\t\t\t\t</smoothly-input-radio>\n\t\t\t\t<smoothly-input type={\"price\"} currency={this.currency}>\n\t\t\t\t\tprice\n\t\t\t\t</smoothly-input>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0 var(--input-padding-side);\n\tbox-sizing: border-box;\n}\n:host[show-label]>div {\n\tposition: relative;\n\tpadding: var(--input-value-padding-top) 0 var(--input-value-padding-bottom) 0;\n}\n:host>div,\n:host>div>div.options {\n\tdisplay: flex;\n\tgap: 1.5rem;\n}\n:host::slotted([slot=end]) {\n\tmargin-right: 0;\n\tmargin-left: auto;\n}\n\n:host::slotted([slot=end]) button {\n\tpadding: 0;\n}\n\n:host[readonly] smoothly-input-radio-item * {\n\tcursor: not-allowed;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Color, Data } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\nimport { Selectable } from \"./Selected\"\n\n@Component({\n\ttag: \"smoothly-input-radio\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputRadio implements Input, Clearable, Editable, ComponentWillLoad {\n\t@Element() element: HTMLSmoothlyInputRadioElement\n\tparent: Editable | undefined\n\tprivate active?: Selectable\n\tprivate valueReceivedOnLoad = false\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\tinitialValue?: Selectable\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ mutable: true }) value: any = undefined\n\t@Prop({ mutable: true, reflect: true }) looks?: Looks\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop() clearable?: boolean\n\t@Prop({ mutable: true, reflect: true }) readonly = false\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ reflect: true }) showLabel = true\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = this.looks ?? looks), (this.color = color)))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.listener.changed?.(this)\n\t}\n\tcomponentDidLoad(): void | Promise<void> {\n\t\t!this.valueReceivedOnLoad && this.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\tthis.initialValue = this.active\n\t}\n\t@Listen(\"smoothlyRadioButtonRegister\")\n\thandleRegister(event: CustomEvent<(name: string) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.name)\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tSmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputRadio) => void>): void {\n\t\tif (!(event.target && \"name\" in event.target && event.target.name === this.name)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this)\n\t\t}\n\t}\n\t@Listen(\"smoothlySelect\")\n\tsmoothlyRadioInputHandler(event: CustomEvent<Selectable>): void {\n\t\tevent.stopPropagation()\n\t\tif (!this.readonly || !this.valueReceivedOnLoad) {\n\t\t\tif (this.clearable && this.active?.value === event.detail.value)\n\t\t\t\tthis.clear()\n\t\t\telse if (this.active?.value !== event.detail.value) {\n\t\t\t\tthis.active?.select(false)\n\t\t\t\tthis.active = event.detail\n\t\t\t\tthis.value = this.active.value\n\t\t\t\tthis.active.select(true)\n\t\t\t}\n\t\t}\n\t\t!this.valueReceivedOnLoad && (this.valueReceivedOnLoad = !this.valueReceivedOnLoad)\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected)\n\t\t\tawait this.unregister()\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<any | undefined> {\n\t\treturn this.value\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tif (this.clearable) {\n\t\t\tthis.active?.select(false)\n\t\t\tthis.active = undefined\n\t\t\tthis.value = undefined\n\t\t}\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.active?.select(false)\n\t\tthis.active = this.initialValue\n\t\tthis.value = this.initialValue?.value\n\t\tthis.active?.select(true)\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.active\n\t\tthis.valueChanged()\n\t}\n\t@Watch(\"value\")\n\tasync valueChanged(): Promise<void> {\n\t\tthis.valueReceivedOnLoad && (this.changed = this.initialValue?.value !== this.value)\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.listener.changed?.(this)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host class=\"floating-label\">\n\t\t\t\t<slot name=\"start\" />\n\t\t\t\t<div>\n\t\t\t\t\t<slot name=\"label\" />\n\t\t\t\t\t<div class=\"options\">\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"end\" />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\talign-items: center;\n\tposition: relative;\n}\n\n:host:hover>* {\n\tcursor: pointer;\n}\n\n:host>input:focus-visible+smoothly-icon {\n\toutline: 2px solid rgb(var(--smoothly-primary-color));\n\tborder-radius: 1px;\n}\n\n:host>input {\n\topacity: 0;\n\tz-index: 1;\n\twidth: 1.5em;\n\theight: 1.5em;\n\tposition: absolute;\n\ttransform: translateX(50%);\n}\n\n:host>label {\n\tpadding: 0 .3em;\n\twhite-space: nowrap;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, VNode } from \"@stencil/core\"\nimport { Looks } from \"../../Looks\"\nimport { Selectable } from \"../Selected\"\n\n@Component({\n\ttag: \"smoothly-input-radio-item\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputRadioItem {\n\t@Element() element: HTMLInputElement\n\t@Prop({ mutable: true }) value: any\n\t@Prop({ mutable: true }) selected = false\n\t@Prop({ mutable: true, reflect: true }) looks?: Looks\n\t@Prop({ mutable: true }) name: string\n\t@Event() smoothlySelect: EventEmitter<Selectable>\n\t@Event() smoothlyRadioButtonRegister: EventEmitter<(name: string) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyRadioButtonRegister.emit(name => (this.name = name))\n\t\tthis.selected && this.inputHandler()\n\t}\n\tinputHandler(): void {\n\t\tthis.smoothlySelect.emit({ value: this.value, selected: this.selected, select: s => (this.selected = s) })\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host onClick={() => this.inputHandler()}>\n\t\t\t\t<input name={this.name} type=\"radio\" checked={this.selected} />\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={this.selected ? \"checkmark-circle\" : \"ellipse-outline\"}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tfill=\"outline\"\n\t\t\t\t\tcolor={this.selected ? \"success\" : \"medium\"}\n\t\t\t\t\ttoolTip=\"Select\"\n\t\t\t\t/>\n\t\t\t\t<label>\n\t\t\t\t\t<slot />\n\t\t\t\t</label>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n* {\n\tbox-sizing: border-box;\n}\n:host {\n\tposition: relative;\n\twidth: 100%;\n\tjustify-content: center;\n\talign-items: center;\n\tdisplay: flex;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tpadding-right: .5em;\n\tbox-sizing: border-box;\n}\n:host>div {\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\twidth: 100%;\n}\n:host>div>smoothly-input {\n\twidth: 12em;\n\t--input-min-height: calc(3rem - 2px);\n}\n:host>div>smoothly-input:focus {\n\toutline: none;\n\tborder: none\n}\n:host>div>smoothly-input label {\n\twhite-space: nowrap;\n}\n:host.output-side-right>div {\n\tpadding: 0;\n}\n:host.output-side-right>div>smoothly-input {\n\ttext-align: center;\n\tmargin-left: var(--input-padding-side);\n\tborder: none;\n\tbox-sizing: border-box;\n\twidth: 5em;\n\torder: 3;\n\tmargin: 0;\n}\n:host.output-side-right>div>smoothly-display,\n:host:not(.output-side-right)>div>label {\n\tdisplay: none;\n}\n:host.output-side-right>div>smoothly-input input {\n\tpadding: 0;\n\ttext-align: center;\n}\n:host.output-side-right>div>smoothly-input label {\n\twidth: 100%;\n}\n:host.output-side-right>div>label {\n\tposition: static;\n\tfont-size: inherit;\n\ttext-align: center;\n\tmargin: 0 var(--input-padding-side);\n}\n\n/*--------------------Reset browserspecific CSS------------------ */\n:host>div>input[type=range] {\n\t-webkit-appearance: none;\n\t/* Hides the slider so that custom slider can be made */\n\twidth: 100%;\n\t/* Specific width is required for Firefox. */\n\tbackground: transparent;\n\t/* Otherwise white in Chrome */\n\theight: 1.5em;\n\tpadding: 0 .4em;\n}\n\n/*--------------------THUMB------------------ */\n/* WebKit/Blink */\n:host>div>input[type=range]::-webkit-slider-thumb {\n\t-webkit-appearance: none;\n\theight: 0.8em;\n\twidth: 0.8em;\n\tborder-radius: 100%;\n\tbackground-color: rgb(var(--smoothly-primary-color));\n\tcursor: pointer;\n\tmargin-top: -.25em;\n\tborder: none;\n\t/* You need to specify a margin in Chrome, but in Firefox and IE it is automatic */\n}\n\n/* Firefox */\n:host>div>input[type=range]::-moz-range-thumb {\n\theight: 0.8em;\n\twidth: 0.8em;\n\tborder-radius: 100%;\n\tbackground-color: rgb(var(--smoothly-primary-color));\n\tcursor: pointer;\n\tborder: none;\n}\n\n/*--------------------SLIDER TRACK------------------ */\n:host>div>input[type=range]::-webkit-slider-runnable-track {\n\theight: .3em;\n\tcursor: pointer;\n\tbackground-color: rgb(var(--smoothly-primary-color));\n\tborder-radius: 20px;\n}\n\n:host>div>input[type=range]::-moz-range-track {\n\twidth: 100%;\n\theight: .3em;\n\tcursor: pointer;\n\tbackground-color: rgb(var(--smoothly-primary-color));\n\tborder-radius: 20px;\n}\n\n:host(:not([value]))>div>input[type=range]::-webkit-slider-runnable-track {\n\tbackground-color: rgb(var(--smoothly-primary-tint));\n}\n\n:host(:not([value]))>dov>input[type=range]::-moz-range-track {\n\tbackground-color: rgb(var(--smoothly-primary-tint));\n}\n\n:host[readonly]>div>input[type=range]::-webkit-slider-thumb,\n:host[readonly]>div>input[type=range]::-moz-range-thumb,\n:host[readonly]>div>input[type=range]::-webkit-slider-runnable-track,\n:host[readonly]>div>input[type=range]::-moz-range-track,\n:host[readonly],\n:host[readonly] * {\n\tcursor: not-allowed\n}\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tState,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { tidily } from \"tidily\"\nimport { Color } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-range\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputRange implements Input, Clearable, Editable, ComponentWillLoad {\n\tparent: Editable | undefined\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\tprivate input?: HTMLSmoothlyInputElement\n\tprivate initialValue: number | undefined = undefined\n\t@Element() element: HTMLSmoothlyInputRangeElement\n\t@Prop({ mutable: true }) value: number | undefined = undefined\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop() type: Extract<tidily.Type, \"text\" | \"percent\"> = \"text\"\n\t@Prop() min = 0\n\t@Prop() max = 100\n\t@Prop({ reflect: true }) name = \"range\"\n\t@Prop() step?: number\n\t@Prop() outputSide: \"right\" | \"left\" = \"left\"\n\t@Prop() label: string\n\t@State() showInput = false\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = this.looks ?? looks), (this.color = color)))\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.value && (this.initialValue = this.value)\n\t\tthis.valueChanged()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tsmoothlyInputLoadHandler(event: CustomEvent<(parent: Editable) => void>) {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this)\n\t\t}\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>): void {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected)\n\t\t\tawait this.unregister()\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<number | undefined> {\n\t\treturn this.value\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.value = this.initialValue\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.value\n\t\tthis.valueChanged()\n\t}\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tconst decimals = !this.step ? undefined : this.step.toString().split(\".\")[1]?.length ?? 0\n\t\tthis.value = Number.isNaN(this.value) || this.value == undefined ? undefined : +this.value.toFixed(decimals)\n\t\tthis.changed = this.initialValue !== this.value\n\t\tthis.listener.changed?.(this)\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t}\n\tinputHandler(event: Event): void {\n\t\tevent.stopPropagation()\n\t\tconst value = !event ? this.value : event.target && \"value\" in event.target ? Number(event.target.value) : undefined\n\t\tif (value == undefined)\n\t\t\tthis.value = undefined\n\t\telse if (value < this.min)\n\t\t\tthis.value = this.min\n\t\telse if (value > this.max)\n\t\t\tthis.value = this.max\n\t\telse\n\t\t\tthis.value = value\n\t\tthis.input && (this.input.value = this.type == \"text\" ? this.value?.toString() : this.value)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{\n\t\t\t\t\t\"output-side-right\": this.outputSide === \"right\",\n\t\t\t\t\t\"show-label\": this.outputSide === \"left\" && !!this.label,\n\t\t\t\t}}>\n\t\t\t\t<slot name=\"start\" />\n\t\t\t\t<div>\n\t\t\t\t\t<label htmlFor={this.name}>{this.label}</label>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tref={e => (this.input = e)}\n\t\t\t\t\t\tlooks={undefined}\n\t\t\t\t\t\tcolor={this.color}\n\t\t\t\t\t\tshowLabel={this.outputSide === \"left\" && !!this.label}\n\t\t\t\t\t\ttype={this.type}\n\t\t\t\t\t\tonSmoothlyInputLoad={e => (e.stopPropagation(), this.inputHandler(e))}\n\t\t\t\t\t\tonSmoothlyBlur={e => this.inputHandler(e)}\n\t\t\t\t\t\tonSmoothlyInput={e => e.stopPropagation()}\n\t\t\t\t\t\tvalue={this.type == \"percent\" ? this.value : this.value?.toString()}\n\t\t\t\t\t\tplaceholder={this.outputSide === \"right\" ? \"-\" : undefined}\n\t\t\t\t\t\treadonly={this.readonly}>\n\t\t\t\t\t\t{this.label}\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-display label={(this.type == \"percent\" ? this.min * 100 : this.min).toString()}></smoothly-display>\n\t\t\t\t\t<input\n\t\t\t\t\t\tname={this.name}\n\t\t\t\t\t\tpart=\"range\"\n\t\t\t\t\t\ttype=\"range\"\n\t\t\t\t\t\tmin={this.min}\n\t\t\t\t\t\tmax={this.max}\n\t\t\t\t\t\tstep={this.step ?? \"any\"}\n\t\t\t\t\t\tdisabled={this.readonly}\n\t\t\t\t\t\tonInput={event => this.inputHandler(event)}\n\t\t\t\t\t\tvalue={this.value ?? this.min}\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-display label={(this.type == \"percent\" ? this.max * 100 : this.max).toString()}></smoothly-display>\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"end\" />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-input-range-demo\",\n})\nexport class SmoothlyInputRangeDemo {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Range</h2>\n\t\t\t\t<h3>Phone Number</h3>\n\t\t\t\t<smoothly-input-range min={700000000} max={799999999} step={1} label={\"Phone Number\"} />\n\t\t\t\t<h3>Stars out of ten</h3>\n\t\t\t\t<smoothly-input-range max={10} step={1} label={\"Stars\"} />\n\t\t\t\t<h3>Percent</h3>\n\t\t\t\t<smoothly-input-range type=\"percent\" max={1} step={0.01} label={\"Percent\"} />\n\t\t\t\t<h3>With icon at start and clear button</h3>\n\t\t\t\t<smoothly-input-range step={1} name=\"range2\" label=\"Select\">\n\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\" />\n\t\t\t\t</smoothly-input-range>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../button/style.css\";\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host([type=\"input\"])::slotted(smoothly-button>button) {\n\tcursor: pointer;\n\tfilter: opacity(60%);\n\t--smoothly-button-foreground: var(--smoothly-input-foreground);\n\tbackground-color: transparent;\n}\n\n:host::slotted(smoothly-button>button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n\n:host([disabled]) {\n\tcursor: not-allowed\n}\n\n:host([type=\"input\"]):hover ::slotted(smoothly-icon) {\n\tcursor: pointer;\n\tfilter: opacity(100%);\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\nimport { SmoothlyForm } from \"../../form\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\n\n@Component({\n\ttag: \"smoothly-input-reset\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputReset {\n\treadonlyAtLoad: boolean\n\t@Prop() color?: Color\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\" = \"icon\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true, mutable: true }) display = true\n\t@Prop({ reflect: true }) type: \"form\" | \"input\" = \"input\"\n\t@Prop() tooltip = \"Reset\"\n\tprivate parent?: Editable.Element\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\n\tasync componentWillLoad() {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Editable.Element.type.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tthis.readonlyAtLoad = parent.readonly\n\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\tif (Input.is(p)) {\n\t\t\t\t\t\tthis.display = p.readonly ? false : p.changed\n\t\t\t\t\t}\n\t\t\t\t\tif (p instanceof SmoothlyForm) {\n\t\t\t\t\t\tthis.display = !p.readonly\n\t\t\t\t\t\tthis.disabled = !this.readonlyAtLoad && !p.changed\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\t@Listen(\"click\")\n\tclickHandler(event: MouseEvent) {\n\t\tevent.stopPropagation()\n\t\tthis.parent?.reset()\n\t\tthis.parent instanceof SmoothlyForm && this.readonlyAtLoad && this.parent?.edit(false)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host title={this.tooltip}>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\ttype={\"button\"}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tfill={this.fill ?? (this.type == \"input\" ? \"clear\" : undefined)}\n\t\t\t\t\tonClick={event => this.clickHandler(event)}>\n\t\t\t\t\t<slot />\n\t\t\t\t\t<smoothly-icon flip=\"x\" name=\"refresh-outline\" size=\"tiny\" />\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { isly } from \"isly\"\n\nexport interface Item extends Item.Element {}\n\nexport namespace Item {\n\texport interface Element {\n\t\tvalue: any\n\t\tselected?: boolean\n\t\tdeselectable: boolean\n\t\tfilter: (filter: string) => Promise<void>\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tvalue: isly.any(),\n\t\t\tdeselectable: isly.boolean(),\n\t\t\tselected: isly.boolean().optional(),\n\t\t\tfilter: isly.function(),\n\t\t})\n\t\texport const is = type.is\n\t}\n\texport const type = Element.type.extend<Item>({})\n\texport const is = type.is\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tflex-direction: row;\n\tposition: relative;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tcolor: rgb(var(--smoothly-input-foreground));\n\tfill: rgb(var(--smoothly-input-foreground));\n\tstroke: rgb(var(--smoothly-input-foreground));\n\tpadding: 0 var(--input-padding-side);\n}\n\n:host.open {\n\tborder-radius: var(--smoothly-input-border-radius) var(--smoothly-input-border-radius) 0 0;\n}\n\n:host.icon {\n\twidth: fit-content;\n\tflex-direction: column;\n}\n\n:host>div.select-display {\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tcursor: pointer;\n\tpadding: var(--input-value-padding-top) 0 var(--input-value-padding-bottom) 0;\n\toverflow: hidden;\n\twidth: 100%;\n\twhite-space: nowrap;\n\tgap: 1rem;\n\ttext-overflow: ellipsis;\n}\n\n:host:not(:has([slot=label]))>div.select-display,\n:host:not([show-label])>div.select-display {\n\tpadding: .6em 0;\n\talign-items: center;\n}\n\n:host[readonly]>div.select-display {\n\tcursor: not-allowed;\n}\n\n:host>div.select-display smoothly-icon {\n\tcolor: rgb(var(--smoothly-input-foreground));\n\tfill: rgb(var(--smoothly-input-foreground));\n\tstroke: rgb(var(--smoothly-input-foreground));\n}\n\n:host>div.icons {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-right: .2em;\n}\n\n:host>div.icons::slotted(smoothly-icon):not(\"color\") {\n\tcolor: rgb(var(--smoothly-input-foreground));\n\tfill: rgb(var(--smoothly-input-foreground));\n\tstroke: rgb(var(--smoothly-input-foreground));\n\tfilter: opacity(60%);\n\n}\n\n:host:hover>div.icons::slotted(smoothly-icon) {\n\tfilter: opacity(100%);\n}\n\n:host>div.icons>smoothly-icon[name=caret-down-outline],\n:host>div.icons>smoothly-icon[name=caret-forward-outline] {\n\topacity: .7;\n\tcursor: pointer;\n}\n\n:host.invalid>div>smoothly-icon.invalid {\n\tdisplay: block;\n}\n\n:host>div>smoothly-icon.invalid {\n\tdisplay: none\n}\n\n:host>div.icons::slotted(smoothly-input-reset) {\n\tpadding-right: .2em;\n}\n\n:host .label {\n\tleft: .5rem;\n}\n\n:host.has-value:has([slot=label]:not(:empty))>div.select-display,\n:host:not(.has-value)[placeholder]>div.select-display {\n\toverflow: hidden;\n\twidth: 100%;\n}\n\n:host>.options {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: absolute;\n\ttop: var(--element-height);\n\tz-index: 10;\n\tmax-height: var(--menu-height, unset);\n\toverflow-x: hidden;\n\toverflow-y: auto;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tleft: 0;\n\tright: 0;\n\tborder-radius: 0 0 var(--smoothly-input-border-radius) var(--smoothly-input-border-radius);\n\tmin-width: fit-content;\n\tborder: rgb(var(--smoothly-input-border, var(--smoothly-color-contrast))) solid 1px;\n\tborder-top: rgba(var(--smoothly-input-border, var(--smoothly-color-contrast)), .4) solid 1px;\n}\n:host[looks=\"grid\"]>div.options,\n:host[looks=border]>div.options,\n:host[looks=\"transparent\"]>div.options {\n\tleft: -1px;\n\tright: -1px;\n}\n\n:host>div.options::slotted(smoothly-item) {\n\tpadding: .7em .7em .7em .25em;\n}\n\n:host>div.options::slotted(smoothly-item:not([selectable])) {\n\tdisplay: flex;\n\tgap: 1em;\n\tbackground-color: rgba(var(--smoothly-primary-tint), .5);\n\tcolor: var(--smoothly-color-contrast)\n}\n\n:host>div.options>smoothly-item:not([selectable])>smoothly-icon[name=\"backspace-outline\"] {\n\tmargin-left: auto;\n\tmargin-right: 0;\n}\n\n:host>div.options.hidden {\n\tdisplay: none;\n}\n\n:host.invalid>div>smoothly-icon {\n\tdisplay: block;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tState,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Color, Data } from \"../../../model\"\nimport { Item } from \"../../item/Item\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-select\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputSelect implements Input, Editable, Clearable, ComponentWillLoad {\n\tparent: Editable | undefined\n\tprivate initialValue: HTMLSmoothlyItemElement[] = []\n\tprivate initialValueHandled = false\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\tprivate displaySelectedElement?: HTMLElement\n\tprivate iconsDiv?: HTMLElement\n\tprivate toggle?: HTMLElement\n\tprivate optionsDiv?: HTMLDivElement\n\tprivate items: HTMLSmoothlyItemElement[] = []\n\tprivate itemHeight: number | undefined\n\t@Element() element: HTMLSmoothlyInputSelectElement\n\t@Prop() invalid?: boolean = false\n\t@Prop({ reflect: true }) name = \"selected\"\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop({ reflect: true, mutable: true }) showSelected?: boolean = true\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ reflect: true }) inCalendar = false\n\t@Prop({ reflect: true }) ordered?: boolean\n\t@Prop() multiple = false\n\t@Prop() clearable = true\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ mutable: true }) defined = false\n\t@Prop({ reflect: true }) placeholder?: string | any\n\t@Prop() menuHeight?: `${number}${\"items\" | \"rem\" | \"px\" | \"vh\"}`\n\t@Prop() required = false\n\t@Prop() searchDisabled = false\n\t@Prop() mutable = false\n\tprivate lastOpen = false\n\t@State() open = false\n\t@State() selected: HTMLSmoothlyItemElement[] = []\n\t@State() filter = \"\"\n\t@State() addedItems: HTMLSmoothlyItemElement[] = []\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyItemSelect: EventEmitter<HTMLSmoothlyItemElement>\n\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.listener.changed?.(this)\n\t}\n\tcomponentDidLoad(): void | Promise<void> {\n\t\tthis.selected && !this.initialValueHandled && (this.initialValue = [...this.selected])\n\t\tthis.initialValueHandled = true\n\t\tthis.onSelectedChange()\n\t}\n\tcomponentDidRender(): void | Promise<void> {\n\t\tthis.itemHeight === undefined && (this.itemHeight = this.items.find(item => item.clientHeight > 0)?.clientHeight)\n\t\tif (this.menuHeight && this.itemHeight) {\n\t\t\tthis.element?.style.setProperty(\n\t\t\t\t\"--menu-height\",\n\t\t\t\t!this.menuHeight.endsWith(\"items\") || this.items.length == 0\n\t\t\t\t\t? this.menuHeight\n\t\t\t\t\t: `${this.itemHeight * +(this.menuHeight.match(/^(\\d+(\\.\\d+)?|\\.\\d+)/g)?.[0] ?? \"10\")}px`\n\t\t\t)\n\t\t}\n\t\tthis.element?.style.setProperty(\"--element-height\", `${this.element.clientHeight}px`)\n\n\t\tif (this.ordered && !this.multiple && this.open && !this.lastOpen) {\n\t\t\tthis.scrollToSelected()\n\t\t}\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected)\n\t\t\tawait this.unregister()\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<any | any[] | undefined> {\n\t\treturn !this.multiple && this.selected[0]\n\t\t\t? this.selected[0].value\n\t\t\t: this.multiple && this.selected.length > 0\n\t\t\t? this.selected.map(item => item.value)\n\t\t\t: undefined\n\t}\n\t@Method()\n\tasync getItems(): Promise<HTMLSmoothlyItemElement[]> {\n\t\treturn this.items\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.selected.forEach(item => (item.selected = item.hidden = false))\n\t\tthis.initialValue.forEach(item => (item.selected = true))\n\t\tthis.selected = [...this.initialValue]\n\t\tthis.displaySelected()\n\t\tthis.changed = false\n\t\tthis.open && this.handleShowOptions()\n\t}\n\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tif (this.clearable) {\n\t\t\tthis.selected.forEach(item => (item.selected = item.hidden = false))\n\t\t\tthis.selected = []\n\t\t\tif (this.displaySelectedElement) {\n\t\t\t\tthis.displaySelectedElement.innerHTML = this.placeholder ?? \"\"\n\t\t\t}\n\t\t}\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.changed = false\n\t\tthis.initialValue = [...this.selected]\n\t}\n\t@Watch(\"selected\")\n\tasync onSelectedChange() {\n\t\tthis.initialValueHandled && (this.changed = !this.areValuesEqual(this.selected, this.initialValue))\n\t\tthis.defined = this.selected.length > 0\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Watch(\"required\")\n\tonRequiredChange(): void {\n\t\tthis.items.forEach(item => (item.deselectable = !this.required))\n\t}\n\t@Watch(\"filter\")\n\tasync onFilterChange(value: string): Promise<void> {\n\t\tvalue = value.toLowerCase()\n\t\tawait Promise.all(this.items.map(item => item.filter(value)))\n\t}\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputSelect) => void>): Promise<void> {\n\t\tif (\n\t\t\tevent.target &&\n\t\t\t((\"name\" in event.target && event.target.name !== this.name) ||\n\t\t\t\t(event.composedPath().some(e => e == this.iconsDiv) && !event.composedPath().some(e => e == this.toggle)))\n\t\t) {\n\t\t\tevent.stopPropagation()\n\t\t} else if (Item.Element.is(event.target)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.target.deselectable = !this.required\n\t\t\tthis.items.push(event.target as HTMLSmoothlyItemElement)\n\t\t}\n\t\tevent.detail(this)\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tonWindowClick(event: Event): void {\n\t\t!event.composedPath().includes(this.element) && this.open && this.handleShowOptions()\n\t}\n\t@Listen(\"smoothlyItemSelect\")\n\tonItemSelect(event: CustomEvent<HTMLSmoothlyItemElement>): void {\n\t\tevent.stopPropagation()\n\t\tif (this.multiple) {\n\t\t\tthis.selected = event.detail.selected\n\t\t\t\t? [...this.selected, event.detail]\n\t\t\t\t: this.selected.filter(item => item.selected)\n\t\t} else if (event.detail.selected || !this.items.some(e => e.selected)) {\n\t\t\tthis.selected[0] && (this.selected[0].hidden = this.selected[0].selected = false)\n\t\t\tthis.selected = !event.detail.selected ? this.selected.filter(item => item.selected) : [event.detail]\n\t\t\t!this.showSelected && event.detail.selected && (event.detail.hidden = true)\n\t\t}\n\t\tthis.displaySelected()\n\t}\n\t@Watch(\"open\")\n\tonClosed(open: boolean, before: boolean): void {\n\t\tthis.lastOpen = before\n\t\tif (!open) {\n\t\t\tconst markedItem = this.items.find(item => item.marked)\n\t\t\tif (markedItem) {\n\t\t\t\tmarkedItem.marked = false\n\t\t\t}\n\t\t}\n\t}\n\thandleShowOptions(event?: Event): void {\n\t\tconst wasButtonClicked =\n\t\t\tevent?.composedPath().some(e => e == this.iconsDiv) && !event.composedPath().some(e => e == this.toggle)\n\t\tconst clickedItem = event\n\t\t\t?.composedPath()\n\t\t\t.find((el): el is HTMLSmoothlyItemElement => \"tagName\" in el && el.tagName == \"SMOOTHLY-ITEM\")\n\t\t!this.readonly &&\n\t\t\t!(clickedItem && this.items.includes(clickedItem) && this.multiple) &&\n\t\t\t!wasButtonClicked &&\n\t\t\t(this.open = !this.open)\n\t\tthis.filter = \"\"\n\t}\n\tareValuesEqual(selected: HTMLSmoothlyItemElement[], initialValue: HTMLSmoothlyItemElement[]): boolean {\n\t\treturn selected.length === initialValue.length && initialValue.every(value => selected.includes(value))\n\t}\n\tdisplaySelected(): void {\n\t\tconst displayString: string = \"<div>\" + this.selected.map(option => option.innerHTML).join(\"</div><div>\") + \"</div>\"\n\t\tthis.displaySelectedElement &&\n\t\t\t(this.displaySelectedElement.innerHTML =\n\t\t\t\tthis.selected.length > 0 ? displayString : this.placeholder ? this.placeholder : \"\")\n\t}\n\t@Listen(\"keydown\")\n\tonKeyDown(event: KeyboardEvent) {\n\t\tif (!this.searchDisabled) {\n\t\t\tevent.stopPropagation()\n\t\t\tconst visibleItems = this.items.some(item => item.getAttribute(\"hidden\") === null)\n\t\t\tif (event.key != \"Tab\" && !event.ctrlKey && !event.metaKey)\n\t\t\t\tevent.preventDefault()\n\t\t\tif (this.open) {\n\t\t\t\tswitch (event.key) {\n\t\t\t\t\tcase \"ArrowUp\":\n\t\t\t\t\t\tvisibleItems && this.move(-1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"ArrowDown\":\n\t\t\t\t\t\tvisibleItems && this.move(1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"Escape\":\n\t\t\t\t\t\tif (this.filter == \"\")\n\t\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.filter = \"\"\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"Backspace\":\n\t\t\t\t\t\tthis.filter = this.filter.slice(0, -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"Enter\":\n\t\t\t\t\t\tconst result = this.items.find(item => item.marked)\n\t\t\t\t\t\tif (result?.value)\n\t\t\t\t\t\t\tresult.selected = !result.selected\n\t\t\t\t\t\tif (!this.multiple) {\n\t\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\t\tthis.filter = \"\"\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"Tab\":\n\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (event.key.length == 1)\n\t\t\t\t\t\t\tthis.filter += event.key\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (event.key) {\n\t\t\t\t\tcase \"Enter\":\n\t\t\t\t\tcase \" \":\n\t\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"ArrowDown\":\n\t\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\t\tthis.move(1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"ArrowUp\":\n\t\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\t\tthis.move(-1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase \"Tab\":\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\t\tif (event.key.length == 1)\n\t\t\t\t\t\t\tthis.filter += event.key\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tprivate scrollToSelected() {\n\t\tconst selectedItem = this.items.find(item => item.selected)\n\t\tif (selectedItem) {\n\t\t\tthis.items.map(item => (item.marked = false))\n\t\t\tselectedItem.marked = true\n\t\t\tthis.scrollTo(selectedItem, \"instant\")\n\t\t}\n\t}\n\tprivate move(direction: -1 | 1): void {\n\t\tlet markedIndex = this.items.findIndex(item => item.marked)\n\t\tif (markedIndex == -1)\n\t\t\tmarkedIndex = 0\n\t\telse {\n\t\t\tthis.items[markedIndex].marked = false\n\t\t\tmarkedIndex = (markedIndex + direction + this.items.length) % this.items.length\n\t\t}\n\t\tif (this.items.some(item => !item.hidden))\n\t\t\twhile (this.items[markedIndex].hidden) {\n\t\t\t\tmarkedIndex = (markedIndex + direction + this.items.length) % this.items.length\n\t\t\t}\n\t\tthis.items[markedIndex].marked = true\n\t\tthis.scrollTo(this.items[markedIndex], \"smooth\")\n\t}\n\tprivate scrollTo(item: HTMLSmoothlyItemElement, behavior?: \"instant\" | \"smooth\") {\n\t\tthis.optionsDiv?.scrollTo({\n\t\t\ttop: item.offsetTop + item.offsetHeight / 2 - (this.optionsDiv?.clientHeight ?? 0) / 2,\n\t\t\tbehavior,\n\t\t})\n\t}\n\tprivate addItem() {\n\t\tthis.addedItems = this.addedItems.concat(\n\t\t\t<smoothly-item value={this.filter} selected>\n\t\t\t\t{this.filter}\n\t\t\t</smoothly-item>\n\t\t)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\ttabIndex={0}\n\t\t\t\tclass={{ \"has-value\": this.selected.length !== 0, open: this.open, invalid: !!this.invalid }}\n\t\t\t\tonClick={(event: Event) => this.handleShowOptions(event)}>\n\t\t\t\t<div class=\"select-display\" ref={element => (this.displaySelectedElement = element)}>\n\t\t\t\t\t{this.placeholder}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"icons\" ref={element => (this.iconsDiv = element)}>\n\t\t\t\t\t<slot name=\"end\" />\n\t\t\t\t\t{this.looks == \"border\" && !this.readonly && (\n\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\tref={element => (this.toggle = element)}\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tname={this.open ? \"caret-down-outline\" : \"caret-forward-outline\"}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<smoothly-icon class=\"invalid\" name=\"alert-circle\" color=\"danger\" fill=\"clear\" size=\"small\" />\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"label\" />\n\t\t\t\t<div class={{ hidden: !this.open, options: true }} ref={(el: HTMLDivElement) => (this.optionsDiv = el)}>\n\t\t\t\t\t{this.filter.length > 0 && (\n\t\t\t\t\t\t<smoothly-item selectable={false}>\n\t\t\t\t\t\t\t<smoothly-icon name=\"search-outline\" size=\"small\" />\n\t\t\t\t\t\t\t{this.filter}\n\t\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\t\tname=\"backspace-outline\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tonClick={e => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tthis.filter = \"\"\n\t\t\t\t\t\t\t\t\tthis.element.focus()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{this.mutable && (\n\t\t\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\t\t\tname=\"add\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonClick={e => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.addItem()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t)}\n\t\t\t\t\t<slot />\n\t\t\t\t\t{this.addedItems}\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","export interface Submittable {\n\tsubmit(remove?: boolean): Promise<void>\n}\nexport namespace Submittable {\n\texport function is(value: Submittable | any): value is Submittable {\n\t\treturn value && typeof value == \"object\" && typeof value.submit == \"function\"\n\t}\n}\n","@import \"../../button/style.css\"; \n\n:host {\n\tdisplay: flex;\n}\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host::slotted(smoothly-button button > * > * + smoothly-icon),\n:host::slotted(smoothly-button-confirm button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n\n:host([disabled]) {\n\tcursor: not-allowed\n}\n","import { Component, ComponentWillLoad, Event, EventEmitter, h, Host, Prop, VNode } from \"@stencil/core\"\nimport { isly } from \"isly\"\nimport { Color, Fill, Icon } from \"../../../model\"\nimport { Editable } from \"../Editable\"\nimport { Submittable } from \"../Submittable\"\n\n@Component({\n\ttag: \"smoothly-input-submit\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputSubmit implements ComponentWillLoad {\n\tprivate parent?: Submittable & Editable\n\t@Prop({ reflect: true }) delete = false\n\t@Prop() color?: Color\n\t@Prop() icon: Icon | false = \"checkmark-outline\"\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true, mutable: true }) display = false\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\" = \"icon\"\n\t@Prop() toolTip = this.delete ? \"Remove\" : \"Submit\"\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Submittable.is(parent) && Editable.type.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\tthis.display = !p.readonly\n\t\t\t\t\tthis.disabled =\n\t\t\t\t\t\t!this.delete &&\n\t\t\t\t\t\t(p.readonly ||\n\t\t\t\t\t\t\t(\"validator\" in p && p.validator instanceof isly.Type && !p.validator?.is(p.value)) ||\n\t\t\t\t\t\t\t!p.changed)\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\tclickHandler() {\n\t\tthis.parent?.submit(this.delete)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host title={this.toolTip}>\n\t\t\t\t{this.delete == true ? (\n\t\t\t\t\t<smoothly-button-confirm\n\t\t\t\t\t\tsize={this.size}\n\t\t\t\t\t\tshape={this.shape}\n\t\t\t\t\t\texpand={this.expand}\n\t\t\t\t\t\tcolor={this.color ?? \"danger\"}\n\t\t\t\t\t\tfill={this.fill}\n\t\t\t\t\t\tonSmoothlyConfirm={() => this.clickHandler()}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t\t<smoothly-icon name=\"trash-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t) : (\n\t\t\t\t\t<smoothly-button\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\tsize={this.size}\n\t\t\t\t\t\ttype={\"button\"}\n\t\t\t\t\t\tshape={this.shape}\n\t\t\t\t\t\texpand={this.expand}\n\t\t\t\t\t\tcolor={this.color ?? \"success\"}\n\t\t\t\t\t\tfill={this.fill}\n\t\t\t\t\t\tonClick={() => this.clickHandler()}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t\t{this.icon && <smoothly-icon name={this.icon} fill=\"solid\" size=\"tiny\" />}\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host([selected]) {\n\tbackground-color: rgb(var(--smoothly-input-selected-background));\n\tcolor: rgb(var(--smoothly-input-selected-foreground));\n\tborder-left: .3em solid rgb(var(--smoothly-input-selected-border));\n}\n\n:host {\n\tpadding: 0.5em;\n\tcursor: pointer;\n\tborder-left: .3em solid transparent;\n\tcolor: rgb(var(--smoothly-input-foreground));\n\tfill: rgb(var(--smoothly-input-foreground));\n\tstroke: rgb(var(--smoothly-input-foreground));\n\tbox-sizing: border-box;\n\tmin-height: 3rem;\n}\n\n:host::slotted(*) {\n\tcolor: rgb(var(--smoothly-input-foreground));\n\tfill: rgb(var(--smoothly-input-foreground));\n\tstroke: rgb(var(--smoothly-input-foreground));\n}\n\n:host([marked]),\n:host:hover {\n\tbackground-color: rgb(var(--smoothly-input-hover-background));\n\tcolor: rgb(var(--smoothly-input-hover-foreground));\n\tfill: rgb(var(--smoothly-input-hover-foreground));\n\tstroke: rgb(var(--smoothly-input-hover-foreground));\n}\n\n:host([marked])::slotted(*),\n:host:hover::slotted(*) {\n\tcolor: rgb(var(--smoothly-input-hover-foreground));\n\tfill: rgb(var(--smoothly-input-hover-foreground));\n\tstroke: rgb(var(--smoothly-input-hover-foreground));\n}\n","import {\n\tComponent,\n\tComponentDidLoad,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Editable } from \"../input/Editable\"\nimport { Item } from \"./Item\"\n\n@Component({\n\ttag: \"smoothly-item\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyItem implements Item, ComponentWillLoad, ComponentDidLoad {\n\t@Element() element: HTMLSmoothlyItemElement\n\t@Prop() value: any\n\t@Prop({ reflect: true, mutable: true }) selected: boolean = false\n\t@Prop({ reflect: true, mutable: true }) marked: boolean\n\t@Prop({ reflect: true }) selectable = true\n\t@Prop() deselectable = true\n\t@Event() smoothlyItemSelect: EventEmitter<HTMLSmoothlyItemElement>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\n\t@Listen(\"click\")\n\tclickHandler(): void {\n\t\tif (this.selectable && (!this.selected || this.deselectable))\n\t\t\tthis.selected = !this.selected\n\t}\n\t@Watch(\"selected\")\n\tselectedWatcher(): void {\n\t\tthis.smoothlyItemSelect.emit(this.element)\n\t}\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLoad.emit(() => {})\n\t}\n\tcomponentDidLoad(): void {\n\t\tif (this.selected && this.selectable)\n\t\t\tthis.smoothlyItemSelect.emit(this.element)\n\t}\n\t@Method()\n\tasync filter(filter: string): Promise<void> {\n\t\tconst value = typeof this.value === \"string\" ? this.value : JSON.stringify(this.value ?? \"\")\n\t\tthis.element.hidden =\n\t\t\tfilter && this.selectable\n\t\t\t\t? !(value.includes(filter) || this.element.innerText.toLowerCase().includes(filter))\n\t\t\t\t: false\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host tabIndex={-1}>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tposition: relative;\n\twidth: max-content;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tpadding: 0.15em 0.6em;\n\tborder-radius: 2em;\n\tcolor: rgb(var(--smoothly-default-contrast));\n\tbackground-color: hsl(var(--hue), 85%, 70%);\n}\n\n:host([shape=rectangle]) {\n\tborder-radius: 0.3em;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-label\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyLabel {\n\t@Prop() hue?: number\n\t@Prop() description?: string\n\t@Prop({ reflect: true }) shape: \"rectangle\" | \"rounded\"\n\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\ttitle={this.description}\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--hue\": this.hue?.toString(),\n\t\t\t\t}}>\n\t\t\t\t<slot></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, FunctionalComponent, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-lazy\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyLazy {\n\t@Prop({ mutable: true }) show = false\n\t@Prop() content?: VNode | FunctionalComponent\n\n\tloadMoreHandler(event: CustomEvent<string>): void {\n\t\tevent.stopPropagation()\n\t\tthis.show = true\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot name=\"before\" />\n\t\t\t\t<smoothly-load-more onSmoothlyLoadMore={e => this.loadMoreHandler(e)} />\n\t\t\t\t{this.show && (typeof this.content == \"function\" ? <this.content /> : this.content)}\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State, VNode } from \"@stencil/core\"\nimport { Scrollable } from \"../../model/Scrollable\"\n\n@Component({\n\ttag: \"smoothly-load-more\",\n\tscoped: true,\n})\nexport class LoadMore {\n\tprivate observer: IntersectionObserver\n\tprivate scrollableParent?: HTMLElement\n\t@Element() element: HTMLSmoothlyLoadMoreElement\n\t@Prop() triggerMode: \"scroll\" | \"intersection\" = \"intersection\"\n\t@Prop() name = \"\"\n\t@Prop() multiple = false\n\t@State() inView: boolean\n\t@Event() smoothlyLoadMore: EventEmitter<string>\n\n\tcheckInView() {\n\t\tif (this.inView)\n\t\t\tthis.smoothlyLoadMore.emit(this.name)\n\t}\n\n\tconnectedCallback() {\n\t\tthis.observer = new IntersectionObserver((entries, observer) => this.observationHandler(observer, entries))\n\t\tthis.observer.observe(this.element)\n\t\tif (this.triggerMode == \"scroll\") {\n\t\t\tthis.inView && this.smoothlyLoadMore.emit(this.name)\n\t\t\tif (this.multiple || (!this.multiple && !this.inView)) {\n\t\t\t\tthis.scrollableParent = Scrollable.findParent(this.element)\n\t\t\t\tthis.scrollableParent?.addEventListener(\"scroll\", this.checkInView.bind(this), { once: !this.multiple })\n\t\t\t}\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.scrollableParent?.removeEventListener(\"scroll\", this.checkInView.bind(this))\n\t\tthis.observer.disconnect()\n\t}\n\n\tobservationHandler(observer: IntersectionObserver, entries: IntersectionObserverEntry[]): void {\n\t\tthis.inView = (entries.find(entry => entry.target == this.element)?.intersectionRatio ?? 0) > 0\n\t\tif (this.inView) {\n\t\t\tthis.smoothlyLoadMore.emit(this.name)\n\t\t\t!this.multiple && (observer.unobserve(this.element), observer.disconnect())\n\t\t}\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn <Host />\n\t}\n}\n",":host {\n\tposition: fixed;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\ttop: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\tbackground-color: rgba(var(--smoothly-modal-backdrop));\n\tcolor: rgb(var(--smoothly-modal-foreground));\n}\n:host:not([open]),\n:host[hidden] {\n\tdisplay: none;\n}\n\n:host>div.modal {\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 2rem;\n\tgap: 1.5rem;\n\tmax-width: 40rem;\n\theight: fit-content;\n\tbackground: rgb(var(--smoothly-modal-background, var(--smoothly-color)));\n\tborder: 1px solid rgb(var(--smoothly-modal-border));\n\tborder-radius: var(--smoothly-modal-border-radius);\n\tbox-shadow: var(--smoothly-modal-shadow);\n}\n:host > div.modal > div.header:empty,\n:host > div.modal > div.actions:empty {\n\tdisplay: none;\n}\n:host > div.modal > div.header {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n}\n:host > div.modal > *,\n:host > div.modal > div.header > * {\n\tmargin-block: 0;\n}\n:host > div.modal > div.header:not(:has([slot=\"header\"])) {\n\tjustify-content: end;\n}\n:host > div.modal > div.header > smoothly-icon:not([slot=\"header\"]) {\n\tcursor: pointer;\n\topacity: 0.7;\n}\n:host > div.modal > div.header > smoothly-icon:not([slot=\"header\"]):hover {\n\topacity: 1;\n}\n:host > div.modal > div.actions {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tgap: 1rem;\n\tflex-wrap: wrap;\n}\n\n","import { Component, Event, EventEmitter, h, Host, Prop, Watch } from \"@stencil/core\"\nimport { Color } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-modal\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyModal {\n\t@Prop({ reflect: true }) color: Color | undefined\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Prop({ reflect: true }) closable = false\n\t@Event() smoothlyModalChange: EventEmitter<boolean>\n\n\t@Watch(\"open\")\n\topenChanged() {\n\t\tthis.smoothlyModalChange.emit(this.open)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host role=\"alertdialog\">\n\t\t\t\t<div class=\"modal\">\n\t\t\t\t\t<div class=\"header\">\n\t\t\t\t\t\t<slot name=\"header\" />\n\t\t\t\t\t\t{this.closable && (\n\t\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\t\tname=\"close-outline\"\n\t\t\t\t\t\t\t\tfill=\"solid\"\n\t\t\t\t\t\t\t\tcolor={this.color}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<slot />\n\t\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t\t<slot name=\"actions\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgap: 5rem;\n\tbox-sizing: border-box;\n\tmax-width: 80rem;\n\twidth: 100%;\n\tmargin: auto;\n\tpadding: 2rem;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemo {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-next-demo-group />\n\t\t\t\t<smoothly-next-demo-colspan />\n\t\t\t\t<smoothly-next-demo-simple />\n\t\t\t\t<smoothly-next-demo-nested />\n\t\t\t\t<smoothly-next-table-demo-filtered />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host smoothly-display {\n\tdisplay: inline;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-demo-colspan\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemoColspan {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-next-table columns={3}>\n\t\t\t\t\t<smoothly-next-table-head>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Date</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Skip</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Total</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-head>\n\t\t\t\t\t<smoothly-next-table-body>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell span={2}>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-01\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={120} currency={\"EUR\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell span={2}>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-02\"} />\n\t\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\t\tcontent={<smoothly-display type={\"date-time\"} value={\"2024-01-02T13:37:00.000Z\"} />}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={220} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={120} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t\t\t\t{\" + \"}\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={100} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-02\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Not Skipped</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={320} currency={\"EUR\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-body>\n\t\t\t\t</smoothly-next-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host smoothly-display {\n\tdisplay: inline;\n}\n:host fake-cell-wrapper.span-2 {\n\tgrid-column: span 2;\n}\n:host>smoothly-display {\n\tdisplay: inherit;\n\tfont-size: 2em;\n}\n:host>* {\n\tmargin-bottom: 2rem;\n}\n/* Apply these styles to your element that is \n * wrapping one of these table components\n*/\n:host fake-group-wrapper,\n:host fake-row-wrapper,\n:host fake-expandable-row-wrapper {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n}\n:host fake-cell-wrapper {\n\t/* ↓ This is the column span. only needed if span != 1 */\n\tgrid-column: span 1;\n\t/* it can be any display that is not contents */\n\tdisplay: block;\n}\n:host fake-expandable-cell-wrapper {\n\tdisplay: contents;\n}\n","import { Component, Fragment, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-demo-group\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemoGroup {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-display type=\"text\" value=\"Group\" />\n\t\t\t\t<smoothly-next-table color=\"primary\" columns={2}>\n\t\t\t\t\t<smoothly-next-table-head>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Date</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Total</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-head>\n\t\t\t\t\t<smoothly-next-table-body>\n\t\t\t\t\t\t<smoothly-next-table-row-group align>\n\t\t\t\t\t\t\t<smoothly-display slot={\"start\"} type=\"date\" value={\"2024-01-01\"} />\n\t\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={510} />\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-01T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={250} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-01T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-01T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={260} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-01T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t</smoothly-next-table-row-group>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-02\"} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={130} />\n\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t<smoothly-next-table-row-group>\n\t\t\t\t\t\t\t<smoothly-display slot={\"start\"} type={\"date\"} value={\"2024-01-03\"} />\n\t\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={720} />\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-03T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={320} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-03T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-03T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={400} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-03T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t</smoothly-next-table-row-group>\n\t\t\t\t\t\t<smoothly-next-table-row-group>\n\t\t\t\t\t\t\t<smoothly-display slot={\"start\"} type={\"date\"} value={\"2024-01-04\"} />\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-04T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={320} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-04T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-04T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={400} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-04T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t</smoothly-next-table-row-group>\n\t\t\t\t\t\t<smoothly-next-table-row-group>\n\t\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={720} />\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-05T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={320} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-05T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date-time\"} value={\"2024-01-05T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={400} />\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-05T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t</smoothly-next-table-row-group>\n\t\t\t\t\t\t<fake-group-wrapper>\n\t\t\t\t\t\t\t<smoothly-next-table-row-group>\n\t\t\t\t\t\t\t\t<smoothly-display slot={\"start\"} type={\"date\"} value={\"2024-01-06\"} />\n\t\t\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={720} />\n\t\t\t\t\t\t\t\t<fake-row-wrapper>\n\t\t\t\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t\t\t\t<fake-cell-wrapper>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-02\"} />\n\t\t\t\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t\t</fake-cell-wrapper>\n\t\t\t\t\t\t\t\t\t\t<fake-expandable-cell-wrapper>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={130} />\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={100} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\" + \"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={30} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t</fake-expandable-cell-wrapper>\n\t\t\t\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t\t\t</fake-row-wrapper>\n\t\t\t\t\t\t\t\t<fake-expandable-row-wrapper>\n\t\t\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t\t\t<fake-cell-wrapper class=\"span-2\">\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-next-table-cell span={2}>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-07\"} />\n\t\t\t\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t\t</fake-cell-wrapper>\n\t\t\t\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\t\t\t\tcontent={<smoothly-display type={\"date-time\"} value={\"2024-01-07T13:37:00.000Z\"} />}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t</fake-expandable-row-wrapper>\n\t\t\t\t\t\t\t</smoothly-next-table-row-group>\n\t\t\t\t\t\t</fake-group-wrapper>\n\t\t\t\t\t\t<smoothly-next-table-row-group>\n\t\t\t\t\t\t\t<smoothly-display slot={\"start\"} type={\"date\"} value={\"2024-01-08\"} />\n\t\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={720} />\n\t\t\t\t\t\t</smoothly-next-table-row-group>\n\t\t\t\t\t</smoothly-next-table-body>\n\t\t\t\t</smoothly-next-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","export const data = [\n\t{\n\t\tid: \"667d329f9f4934ecdc4bf9eb\",\n\t\tbalance: 1450.03,\n\t\tage: 35,\n\t\teyeColor: \"blue\",\n\t\tname: \"Glenda Ballard\",\n\t\tgender: \"female\",\n\t\tcompany: \"ZENTIA\",\n\t\tregistered: \"2022-06-13T12:39:15.908\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Manning Hunter\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 1922.25,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Mcmillan Oliver\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 2440.53,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Graham Garza\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 3712.59,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Gabrielle Neal\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 2519.25,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Dotson Duncan\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 3274.11,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f4e07097167ef92a2\",\n\t\tbalance: 2488.91,\n\t\tage: 21,\n\t\teyeColor: \"blue\",\n\t\tname: \"Delaney Haley\",\n\t\tgender: \"male\",\n\t\tcompany: \"COMTOURS\",\n\t\tregistered: \"2018-05-11T08:58:36.197\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Elsa Cochran\",\n\t\t\t\tage: 28,\n\t\t\t\tbalance: 2009.45,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Willis Acevedo\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 2198.01,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Slater Fowler\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 2888.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Ashley Wilkerson\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1863.65,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Ola Lynch\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3649.29,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f14a0aeea0d70d5e7\",\n\t\tbalance: 1660.91,\n\t\tage: 36,\n\t\teyeColor: \"brown\",\n\t\tname: \"Riddle Reilly\",\n\t\tgender: \"male\",\n\t\tcompany: \"OPTIQUE\",\n\t\tregistered: \"2016-09-15T09:46:07.962\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Hazel Steele\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 3129.64,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Golden Chapman\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 2491,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Solomon Lopez\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1382.71,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Castro Booth\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 1991.6,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Hernandez Bartlett\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2842.85,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Lindsay Wagner\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 3636.6,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f953aaaba19bea98b\",\n\t\tbalance: 1381.34,\n\t\tage: 24,\n\t\teyeColor: \"brown\",\n\t\tname: \"Diana Burns\",\n\t\tgender: \"female\",\n\t\tcompany: \"CODACT\",\n\t\tregistered: \"2023-06-02T09:07:46.478\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Tamika Merritt\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2401.06,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Ballard Buckner\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 1986.13,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Stokes Ramirez\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 3521.75,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Wood Aguirre\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 1186.13,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Sophia Bowen\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2750.95,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Wilkinson Gordon\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 3864.91,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f6a753976e21e23b5\",\n\t\tbalance: 3054.74,\n\t\tage: 22,\n\t\teyeColor: \"brown\",\n\t\tname: \"Jackson Burnett\",\n\t\tgender: \"male\",\n\t\tcompany: \"COMCUR\",\n\t\tregistered: \"2019-06-05T09:17:31.312\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Atkinson Alston\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 1025.72,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Delia Ford\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 3061.87,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Marylou Hanson\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 3255.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Kelly Ray\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 3671.73,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Valdez Weeks\",\n\t\t\t\tage: 38,\n\t\t\t\tbalance: 3911.29,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Hayes Crawford\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 3194.97,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329fc4805cafac37861e\",\n\t\tbalance: 1173.94,\n\t\tage: 20,\n\t\teyeColor: \"green\",\n\t\tname: \"Stephenson Mcleod\",\n\t\tgender: \"male\",\n\t\tcompany: \"POLARAX\",\n\t\tregistered: \"2015-12-10T07:36:10.267\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Kristine Newton\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 2713.9,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Craft Patel\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 3822.36,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Cochran French\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 1535.91,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Bowen Vinson\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 2787.01,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Adrian Ewing\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 2319.14,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Jimmie Mathews\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 2869.09,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Dixon Daugherty\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1496.25,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f76318162fe27b208\",\n\t\tbalance: 2977.01,\n\t\tage: 24,\n\t\teyeColor: \"blue\",\n\t\tname: \"Claudette Christensen\",\n\t\tgender: \"female\",\n\t\tcompany: \"PIVITOL\",\n\t\tregistered: \"2021-08-08T07:08:00.936\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Parker Lamb\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 3409.27,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Kennedy Bryan\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 3904.27,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Johanna Barton\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 3613.79,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Vazquez Melendez\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 3692.31,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Mendoza Wooten\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 2175.64,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Kelli Hicks\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 1326.46,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Jill Sanchez\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 3214.36,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329ff80a953b7f0a73d2\",\n\t\tbalance: 1993.09,\n\t\tage: 20,\n\t\teyeColor: \"green\",\n\t\tname: \"Buckley Gutierrez\",\n\t\tgender: \"male\",\n\t\tcompany: \"HOUSEDOWN\",\n\t\tregistered: \"2015-04-02T04:53:42.985\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Leanne Pennington\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 3111.48,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Juarez Hoover\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 2000.62,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Navarro Mccormick\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 3083.93,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Berry Curry\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 3181.41,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Josefa Howard\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 3744.56,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f4f53eb59f0512361\",\n\t\tbalance: 2374.56,\n\t\tage: 34,\n\t\teyeColor: \"brown\",\n\t\tname: \"Sallie Mccoy\",\n\t\tgender: \"female\",\n\t\tcompany: \"REALYSIS\",\n\t\tregistered: \"2018-05-11T05:26:36.604\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Martina Kirby\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1278.07,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Macias Lyons\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2991.44,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Alta Chaney\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1032.71,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"White Manning\",\n\t\t\t\tage: 39,\n\t\t\t\tbalance: 3103.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Mason Rosa\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 1384.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Meghan Martin\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 1982.09,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f8a6cf9319bfdbd30\",\n\t\tbalance: 3220.94,\n\t\tage: 23,\n\t\teyeColor: \"blue\",\n\t\tname: \"Huff Hull\",\n\t\tgender: \"male\",\n\t\tcompany: \"GADTRON\",\n\t\tregistered: \"2023-02-14T01:58:56.938\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Rochelle Maldonado\",\n\t\t\t\tage: 28,\n\t\t\t\tbalance: 1548.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Diann Conrad\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 1721.33,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Hope Jarvis\",\n\t\t\t\tage: 38,\n\t\t\t\tbalance: 1265.24,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Dixie Huffman\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 3764.23,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Erickson Porter\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 2958.59,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Christensen Thomas\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 1233.2,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f1415ecb1efb216cc\",\n\t\tbalance: 2907.83,\n\t\tage: 26,\n\t\teyeColor: \"brown\",\n\t\tname: \"Hancock Eaton\",\n\t\tgender: \"male\",\n\t\tcompany: \"POLARIUM\",\n\t\tregistered: \"2018-02-25T01:03:11.860\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Flynn Gilmore\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 2582.57,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Kline Hickman\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 3853.99,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Hatfield Owens\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 2016.57,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Michael Carson\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 1293.03,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Strickland Lowery\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 1367.06,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Georgia Chavez\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 2957.48,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Alma Berry\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 2357.01,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f722eb89c82b56dec\",\n\t\tbalance: 1602.02,\n\t\tage: 35,\n\t\teyeColor: \"brown\",\n\t\tname: \"Lorrie Mcpherson\",\n\t\tgender: \"female\",\n\t\tcompany: \"PYRAMIA\",\n\t\tregistered: \"2018-12-07T05:18:34.223\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Bridgett Everett\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 1438.53,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Carlene Farley\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 1410.54,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Phoebe Mendez\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1979.36,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Louella Cox\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 3430.55,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Velez Pugh\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 3436.5,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329ff853efe8c4e0a454\",\n\t\tbalance: 2654.19,\n\t\tage: 36,\n\t\teyeColor: \"brown\",\n\t\tname: \"Luann Jennings\",\n\t\tgender: \"female\",\n\t\tcompany: \"NAXDIS\",\n\t\tregistered: \"2014-02-18T04:25:50.302\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Walton Gentry\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1328.43,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Lucy Koch\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 2134.54,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Toni Meyers\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 2572.29,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Vicki Frost\",\n\t\t\t\tage: 39,\n\t\t\t\tbalance: 3299.36,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Meadows Baker\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 2323.75,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f84f3bfbfcc763674\",\n\t\tbalance: 2528.48,\n\t\tage: 28,\n\t\teyeColor: \"brown\",\n\t\tname: \"Michelle Carey\",\n\t\tgender: \"female\",\n\t\tcompany: \"IDEGO\",\n\t\tregistered: \"2016-10-01T04:25:07.187\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Roman Sanders\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 3551.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Amanda Herman\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 3928.02,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Kay Montgomery\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 3241.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Valentine Wilder\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 1413.31,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Brigitte Nixon\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 3113.39,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f4359ec766055a765\",\n\t\tbalance: 3732.65,\n\t\tage: 30,\n\t\teyeColor: \"brown\",\n\t\tname: \"Beach Maddox\",\n\t\tgender: \"male\",\n\t\tcompany: \"GEEKETRON\",\n\t\tregistered: \"2021-03-24T11:55:31.135\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Candy Gibbs\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2602.28,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Alissa Rosario\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 1958.84,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Imelda Harmon\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3817.79,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Addie Serrano\",\n\t\t\t\tage: 35,\n\t\t\t\tbalance: 3154.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Jordan Shields\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 3566.08,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f9ef3817d307e2583\",\n\t\tbalance: 2151.52,\n\t\tage: 32,\n\t\teyeColor: \"brown\",\n\t\tname: \"Whitney Hood\",\n\t\tgender: \"male\",\n\t\tcompany: \"EVENTAGE\",\n\t\tregistered: \"2021-06-17T12:11:56.473\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Noel Walsh\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 2790.49,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Barlow Rodriquez\",\n\t\t\t\tage: 35,\n\t\t\t\tbalance: 1664.23,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Nash Keith\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 2285.17,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Chavez Webster\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3381.55,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Herminia Chen\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1064.96,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Susana Glass\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 2749.35,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f9bd581700cac2dbc\",\n\t\tbalance: 2209.77,\n\t\tage: 40,\n\t\teyeColor: \"blue\",\n\t\tname: \"Tasha Mosley\",\n\t\tgender: \"female\",\n\t\tcompany: \"QUIZKA\",\n\t\tregistered: \"2014-05-11T11:44:55.071\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Larsen Wall\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1523.28,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Holmes Hopkins\",\n\t\t\t\tage: 35,\n\t\t\t\tbalance: 1112.68,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Giles Espinoza\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 2550.95,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Aimee Rosales\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 2195.06,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Karin Little\",\n\t\t\t\tage: 28,\n\t\t\t\tbalance: 2896.23,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Angelita Mcfadden\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 1051.15,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f6e2dbb2002be4b9e\",\n\t\tbalance: 3298.23,\n\t\tage: 31,\n\t\teyeColor: \"brown\",\n\t\tname: \"Schneider Walker\",\n\t\tgender: \"male\",\n\t\tcompany: \"BLEENDOT\",\n\t\tregistered: \"2020-02-11T08:57:29.025\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Helena William\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 2579.69,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Silva Ware\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 2683.79,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Enid Oconnor\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1816.46,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Knowles Goff\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1675.75,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Carolina Greer\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 3337.27,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f8c548510c5d4f5ce\",\n\t\tbalance: 2823.51,\n\t\tage: 35,\n\t\teyeColor: \"green\",\n\t\tname: \"Mayo Shepard\",\n\t\tgender: \"male\",\n\t\tcompany: \"KIOSK\",\n\t\tregistered: \"2024-02-24T12:45:57.463\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Olga Hester\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 3878.21,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Rogers Sampson\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 2669.62,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Myra Johnson\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 3489.32,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Mcfadden Phillips\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2758.8,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Park Moody\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3519.08,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f6574ada6f090fd54\",\n\t\tbalance: 2631.69,\n\t\tage: 40,\n\t\teyeColor: \"blue\",\n\t\tname: \"Avis Carlson\",\n\t\tgender: \"female\",\n\t\tcompany: \"LINGOAGE\",\n\t\tregistered: \"2016-08-08T08:59:54.752\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Mcdonald Dyer\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2262.39,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Irene Baldwin\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 1291.1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Rollins Anderson\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1437.04,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Juliana Larson\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 3492.22,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Michele Gardner\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2003.15,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Vang Cardenas\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 1855.52,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Puckett Hubbard\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 1659.92,\n\t\t\t},\n\t\t],\n\t},\n]\n",":host {\n\tdisplay: block;\n}\n:host>smoothly-display {\n\tfont-size: 2em;\n}\n:host>* {\n\tmargin-bottom: 2rem;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\nimport { data } from \"./data\"\n\n@Component({\n\ttag: \"smoothly-next-demo-nested\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemoNested {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-display type=\"text\" value=\"Nested\" />\n\t\t\t\t<smoothly-next-table color=\"primary\" columns={8}>\n\t\t\t\t\t<smoothly-next-table-head>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Id</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Registered</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Name</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Age</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Balance</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>EyeColor</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Gender</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Company</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-head>\n\t\t\t\t\t<smoothly-next-table-body>\n\t\t\t\t\t\t{data.map(entry => (\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-next-demo-nested-inner color=\"secondary\" data={entry.friends} slot={\"detail\"} />\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.id}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.registered}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.name}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.age}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.balance}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.eyeColor}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.gender}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.company}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-next-table-body>\n\t\t\t\t\t<smoothly-next-table-foot>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Footer Cell</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Footer Cell</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-foot>\n\t\t\t\t</smoothly-next-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tmargin: 1em auto;\n\twidth: 60%;\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-demo-nested-inner\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemoNestedInner {\n\t@Prop() data?: {\n\t\tid: number\n\t\tname: string\n\t\tage: number\n\t\tbalance: number\n\t}[]\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-next-table columns={4}>\n\t\t\t\t\t<smoothly-next-table-head>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Id</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Name</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Age</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Balance</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-head>\n\t\t\t\t\t<smoothly-next-table-body>\n\t\t\t\t\t\t{this.data?.map(entry => (\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.id}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.name}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.age}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{entry.balance}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-next-table-body>\n\t\t\t\t</smoothly-next-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host>smoothly-display {\n\tfont-size: 2em;\n}\n:host>* {\n\tmargin-bottom: 2rem;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-demo-simple\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextDemoSimple {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-display type=\"text\" value=\"Simple\" />\n\t\t\t\t<smoothly-next-table color=\"primary\" columns={2}>\n\t\t\t\t\t<smoothly-next-table-head>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Breed</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Coat</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-head>\n\t\t\t\t\t<smoothly-next-table-body>\n\t\t\t\t\t\t{cats.map(cat => (\n\t\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.breed}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t\t\tCountry:\n\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t{cat.country}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.coat}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">Pattern: {cat.pattern}</div>\n\t\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<smoothly-next-table-expandable-row>\n\t\t\t\t\t\t\t<div slot={\"detail\"}>\n\t\t\t\t\t\t\t\tContent\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\tof\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\tthe\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\texpandable\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\trow\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Cell1 in expandable row</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Cell2 in expandable row</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-expandable-row>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Cell5</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\tExpandable Cell\n\t\t\t\t\t\t\t\t<div slot={\"detail\"}>Content of the expandable cell</div>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\tExpandable Cell 1<div slot={\"detail\"}>Content of the expandable cell 1</div>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\tExpandable Cell 2<div slot={\"detail\"}>Content of the expandable cell 2</div>\n\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-body>\n\t\t\t\t\t<smoothly-next-table-foot>\n\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Footer Cell</smoothly-next-table-cell>\n\t\t\t\t\t\t\t<smoothly-next-table-cell>Footer Cell</smoothly-next-table-cell>\n\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t</smoothly-next-table-foot>\n\t\t\t\t</smoothly-next-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\nexport interface Cat {\n\tbreed: string\n\tcountry: string\n\torigin: string\n\tcoat: string\n\tpattern: string\n}\nconst cats: Cat[] = [\n\t{\n\t\tbreed: \"Abyssinian\",\n\t\tcountry: \"Ethiopia\",\n\t\torigin: \"Natural/Standard\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"Ticked\",\n\t},\n\t{\n\t\tbreed: \"Aegean\",\n\t\tcountry: \"Greece\",\n\t\torigin: \"Natural/Standard\",\n\t\tcoat: \"Semi-long\",\n\t\tpattern: \"Bi- or tri-colored\",\n\t},\n\t{\n\t\tbreed: \"American Curl\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Mutation\",\n\t\tcoat: \"Short/Long\",\n\t\tpattern: \"All\",\n\t},\n\t{\n\t\tbreed: \"American Bobtail\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Mutation\",\n\t\tcoat: \"Short/Long\",\n\t\tpattern: \"All\",\n\t},\n\t{\n\t\tbreed: \"American Shorthair\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Natural\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"All but colorpoint\",\n\t},\n\t{\n\t\tbreed: \"American Wirehair\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Mutation\",\n\t\tcoat: \"Rex\",\n\t\tpattern: \"All but colorpoint\",\n\t},\n\t{\n\t\tbreed: \"Arabian Mau\",\n\t\tcountry: \"Arabian Peninsula\",\n\t\torigin: \"Natural\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"\",\n\t},\n\t{\n\t\tbreed: \"Australian Mist\",\n\t\tcountry: \"Australia\",\n\t\torigin: \"Crossbreed\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"Spotted and Classic tabby\",\n\t},\n\t{\n\t\tbreed: \"Asian\",\n\t\tcountry: \"developed in the United Kingdom (founding stock from Asia)\",\n\t\torigin: \"\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"Evenly solid\",\n\t},\n\t{\n\t\tbreed: \"Asian Semi-longhair\",\n\t\tcountry: \"United Kingdom\",\n\t\torigin: \"Crossbreed\",\n\t\tcoat: \"Semi-long\",\n\t\tpattern: \"Solid\",\n\t},\n]\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(var(--columns), auto);\n\tcolor: rgb(var(--smoothly-table-foreground));\n\tstroke: rgb(var(--smoothly-table-foreground));\n\tfill: rgb(var(--smoothly-table-foreground));\n}\n","import { Component, h, Host, Listen, Prop, VNode } from \"@stencil/core\"\nimport { SmoothlyNextTableExpandableCellCustomEvent } from \"../../../components\"\n\n@Component({\n\ttag: \"smoothly-next-table\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTable {\n\t@Prop() columns = 1\n\n\t@Listen(\"smoothlyNextTableExpandableCellChange\")\n\tsmoothlyNextTableExpandableCellChange(event: SmoothlyNextTableExpandableCellCustomEvent<boolean>): void {\n\t\tevent.stopPropagation()\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host style={{ \"--columns\": this.columns.toString() }}>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tcolor: rgb(var(--smoothly-table-foreground));\n\tbackground-color: rgb(var(--smoothly-table-background));\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-body\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableBody {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: span var(--smoothly-table-cell-span, 1);\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0.3rem 1.1rem;\n\twhite-space: nowrap;\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-cell\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableCell {\n\t@Prop({ reflect: true }) span?: number = 1\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host style={{ \"--smoothly-table-cell-span\": this.span?.toString(10) }}>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { h } from \"@stencil/core\"\n\nexport class Selector<T> {\n\t#selected?: T[]\n\tget selected(): T[] {\n\t\treturn (this.#selected ??= Object.values(this.data))\n\t}\n\tprivate constructor(private readonly key: keyof T, private data: Readonly<Record<string, T>> = {}) {}\n\thandle(data: Record<string, T>): Selector<T> {\n\t\treturn new Selector(\n\t\t\tthis.key,\n\t\t\t\"check-all\" in data\n\t\t\t\t? data[\"check-all\"] ?? {}\n\t\t\t\t: Object.fromEntries(Object.entries({ ...this.data, ...data }).filter(([_, value]) => value != undefined))\n\t\t)\n\t}\n\trender(item: T | T[]): HTMLSmoothlyCheckboxElement {\n\t\treturn Array.isArray(item) ? (\n\t\t\t<smoothly-checkbox\n\t\t\t\tname=\"check-all\"\n\t\t\t\tvalue={Object.fromEntries(item.map(i => [i[this.key], i]))}\n\t\t\t\tintermediate={this.selected.length > 0 && this.selected.length < item.length}\n\t\t\t\tchecked={this.selected.length == item.length ? true : this.selected.length == 0 && false}\n\t\t\t/>\n\t\t) : (\n\t\t\t<smoothly-checkbox\n\t\t\t\tname={item[this.key]?.toString()}\n\t\t\t\tvalue={item}\n\t\t\t\tchecked={!!this.data[item[this.key]?.toString() ?? \"\"]}\n\t\t\t/>\n\t\t)\n\t}\n\tstatic create<T>(key: keyof T): Selector<T> {\n\t\treturn new Selector(key)\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: auto auto;\n\tgrid-template-areas:\n\t\t\"header filter\"\n\t\t\"main main\";\n\tmargin-bottom: 50em;\n}\n\n:host>smoothly-display {\n\tfont-size: 2em;\n\tgrid-area: header;\n}\n\n:host>smoothly-filter {\n\tmargin-left: auto;\n\tgrid-area: filter;\n\theight: fit-content;\n}\n\n:host>* {\n\tmargin-bottom: 2rem;\n\tgrid-area: main;\n}\n\n:host>smoothly-next-table {\n\tgrid-template-columns: min-content repeat(calc(var(--columns) - 1), auto);\n}\n\nsmoothly-next-table>smoothly-next-table-row>smoothly-next-table-cell:nth-of-type(2),\n:host>smoothly-next-table>smoothly-next-table-head>smoothly-next-table-row>smoothly-next-table-cell:nth-of-type(4) {\n\tjustify-content: end;\n}\n","import { Component, ComponentWillLoad, h, Host, Listen, State } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { http } from \"cloudly-http\"\nimport { Selector } from \"../../../table/Selector\"\nimport { Cat } from \"./Root\"\n\n@Component({\n\ttag: \"smoothly-next-table-demo-filtered\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableDemoFiltered implements ComponentWillLoad {\n\t@State() criteria: selectively.Criteria = {}\n\t@State() cats?: Cat[] | false\n\t@State() selector: Selector<Cat> = Selector.create(\"breed\")\n\t@Listen(\"smoothlyFilter\")\n\tonFilterUpdate(event: CustomEvent<selectively.Criteria>) {\n\t\tevent.stopPropagation()\n\t\tthis.criteria = event.detail\n\t}\n\t@Listen(\"smoothlyInput\")\n\tsmoothlyInputHandler(event: CustomEvent<Record<string, any>>) {\n\t\tevent.stopPropagation()\n\t\tthis.selector = this.selector.handle(event.detail)\n\t}\n\n\tasync componentWillLoad(): Promise<void> {\n\t\tconst response = await http.fetch(\"https://catfact.ninja/breeds?limit=15\")\n\t\tthis.cats =\n\t\t\tresponse.status == 200 &&\n\t\t\t(await response.body).data.map((cat: any) => ({\n\t\t\t\t...cat,\n\t\t\t\tprice: [...cat.breed].reduce((r, c) => r + c.charCodeAt(0), 0),\n\t\t\t\tnested: { ...cat, names: names[cat.country] ?? [] },\n\t\t\t\tnames: names[cat.country] ?? [],\n\t\t\t}))\n\t}\n\n\trender() {\n\t\tconst cats = this.cats && selectively.filter(this.criteria, this.cats)\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-display type=\"text\" value=\"Filtered\" />\n\t\t\t\t<smoothly-filter>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ [\"nested.pattern\"]: \"Ticked\", breed: \"\" }}\n\t\t\t\t\t\ticon=\"add\"\n\t\t\t\t\t\ttoolTip=\"Nested Ticked\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ pattern: \"Ticked\", breed: \"\" }}\n\t\t\t\t\t\ticon=\"paw\"\n\t\t\t\t\t\ttoolTip=\"Ticked cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ breed: \"Bombay\", pattern: \"Solid\" }}\n\t\t\t\t\t\ticon=\"radio-button-on\"\n\t\t\t\t\t\ttoolTip=\"Solid bombay cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ pattern: \"Colorpoint\" }}\n\t\t\t\t\t\tnot\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon=\"alert\"\n\t\t\t\t\t\ttoolTip=\"Colored cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-select menuHeight=\"5items\" label=\"coat\" property=\"nested.coat\" slot=\"bar\" multiple={false}>\n\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\tObject.values(\n\t\t\t\t\t\t\t\tthis.cats.reduce<Record<string, Cat>>(\n\t\t\t\t\t\t\t\t\t(r, cat) => (cat.nested ? { ...r, [cat.nested.coat]: cat } : r),\n\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t).map(\n\t\t\t\t\t\t\t\tcat =>\n\t\t\t\t\t\t\t\t\tcat.nested?.coat && (\n\t\t\t\t\t\t\t\t\t\t<smoothly-item slot=\"items\" value={cat.nested.coat}>\n\t\t\t\t\t\t\t\t\t\t\t{cat.nested.coat}\n\t\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t</smoothly-filter-select>\n\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t\t\t<smoothly-filter-select menuHeight=\"5items\" label=\"coat\" property=\"nested.coat\" multiple>\n\t\t\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\t\t\tObject.values(\n\t\t\t\t\t\t\t\t\t\tthis.cats.reduce<Record<string, Cat>>(\n\t\t\t\t\t\t\t\t\t\t\t(r, cat) => (cat.nested ? { ...r, [cat.nested.coat]: cat } : r),\n\t\t\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t).map(\n\t\t\t\t\t\t\t\t\t\tcat =>\n\t\t\t\t\t\t\t\t\t\t\tcat.nested?.coat && (\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-item slot=\"items\" value={cat.nested.coat}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cat.nested.coat}\n\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-filter-select>\n\t\t\t\t\t\t\t<smoothly-filter-select menuHeight=\"5items\" label=\"breed\" property=\"breed\" multiple={false}>\n\t\t\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\t\t\tObject.values(\n\t\t\t\t\t\t\t\t\t\tthis.cats.reduce<Record<string, Cat>>((r, cat) => (cat.breed ? { ...r, [cat.breed]: cat } : r), {})\n\t\t\t\t\t\t\t\t\t).map(\n\t\t\t\t\t\t\t\t\t\tcat =>\n\t\t\t\t\t\t\t\t\t\t\tcat.breed && (\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-item slot=\"items\" value={cat.breed}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cat.breed}\n\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-filter-select>\n\t\t\t\t\t\t\t<smoothly-filter-select\n\t\t\t\t\t\t\t\tmenuHeight=\"5items\"\n\t\t\t\t\t\t\t\tlabel=\"names\"\n\t\t\t\t\t\t\t\tproperty=\"nested.names\"\n\t\t\t\t\t\t\t\tmultiple={true}\n\t\t\t\t\t\t\t\ttype=\"array\">\n\t\t\t\t\t\t\t\t{Object.keys(\n\t\t\t\t\t\t\t\t\tObject.values(names)\n\t\t\t\t\t\t\t\t\t\t.flat()\n\t\t\t\t\t\t\t\t\t\t.reduce((r, name) => ({ ...r, [name]: true }), {})\n\t\t\t\t\t\t\t\t).flatMap(name => (\n\t\t\t\t\t\t\t\t\t<smoothly-item slot=\"items\" value={name}>\n\t\t\t\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-filter-select>\n\t\t\t\t\t\t\t<smoothly-filter-input label=\"Coat\" property=\"coat\" />\n\t\t\t\t\t\t\t<smoothly-filter-input label=\"Nested Coat\" property=\"nested.coat\" />\n\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t</div>\n\t\t\t\t</smoothly-filter>\n\t\t\t\t{!cats ? (\n\t\t\t\t\t\"Failed to load data.\"\n\t\t\t\t) : (\n\t\t\t\t\t<smoothly-next-table columns={4}>\n\t\t\t\t\t\t<smoothly-next-table-head>\n\t\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{this.selector.render(cats)}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>Breed</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>Coat</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>Price</smoothly-next-table-cell>\n\t\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t</smoothly-next-table-head>\n\t\t\t\t\t\t{cats.map(cat => (\n\t\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>{this.selector.render(cat)}</smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.breed}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">Country: {cat.country}</div>\n\t\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.coat}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">Pattern: {cat.pattern}</div>\n\t\t\t\t\t\t\t\t</smoothly-next-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type=\"price\" value={cat.price} currency=\"SEK\"></smoothly-display>\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<smoothly-next-table-foot>\n\t\t\t\t\t\t\t<smoothly-next-table-row>\n\t\t\t\t\t\t\t\t<smoothly-next-table-cell span={3}>\n\t\t\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\tvalue={`Selected: ${\n\t\t\t\t\t\t\t\t\t\t\tthis.selector.selected.length != 0 ? this.selector.selected.length : cats ? cats.length : \"?\"\n\t\t\t\t\t\t\t\t\t\t}`}></smoothly-display>\n\t\t\t\t\t\t\t\t</smoothly-next-table-cell>\n\t\t\t\t\t\t\t</smoothly-next-table-row>\n\t\t\t\t\t\t</smoothly-next-table-foot>\n\t\t\t\t\t</smoothly-next-table>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\nconst names: Record<string, string[]> = {\n\t\"United States\": [\"bill\", \"bob\", \"brad\", \"joe\", \"molly\"],\n\tAustralia: [\"nigel\", \"bruce\", \"sheila\", \"brad\", \"shane\"],\n\t\"United Kingdom\": [\"nigel\", \"james\", \"molly\", \"shane\", \"bob\"],\n\tGreece: [\"dionysius\", \"demetrius\", \"polikarpos\"],\n}\n","@import \"../arrow.scss\";\n\n:host {\n\tdisplay: contents;\n}\n\n:host>div {\n\tpadding: 0.3rem 1.1rem;\n}\n\n:host>div.content {\n\tgrid-column: span var(--smoothly-table-cell-span, 1);\n\tdisplay: flex;\n\tbox-sizing: border-box;\n\talign-items: center;\n\twhite-space: nowrap;\n\t@include arrow;\n\n\t&:hover {\n\t\t@include arrow-hover;\n\t}\n}\n\n:host[open]>div.content {\n\t@include arrow-open;\n}\n\n:host>div.content:hover {\n\tbackground-color: rgb(var(--smoothly-table-hover-background));\n\tcolor: rgb(var(--smoothly-table-hover-foreground));\n\tstroke: rgb(var(--smoothly-table-hover-foreground));\n\tfill: rgb(var(--smoothly-table-hover-foreground));\n}\n\n:host>div:first-child {\n\tcursor: pointer;\n}\n\n:host>div.detail {\n\tgrid-column: 1 / -1;\n\tgrid-row: 2;\n\tposition: relative;\n}\n\n:host[open]>div.content {\n\tbox-shadow: 1px 1px 1px -1px rgb(var(--smoothly-table-border)) inset,\n\t\t-3px -1px 1px -3px rgb(var(--smoothly-table-border)) inset;\n}\n\n:host[open]>div {\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tcolor: rgb(var(--smoothly-table-expanded-foreground));\n\tstroke: rgb(var(--smoothly-table-expanded-foreground));\n\tfill: rgb(var(--smoothly-table-expanded-foreground));\n}\n\n:host:not([open])>div.detail {\n\tdisplay: none;\n}\n\n:host>div.detail::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\tbox-sizing: border-box;\n\ttop: 0;\n\tbottom: 0;\n\tleft: -1em;\n\twidth: 1em;\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tborder-left: 0.3em solid rgb(var(--smoothly-table-detail-border, var(--smoothly-table-border)));\n\tbox-shadow: 2px 0px 0px 0px rgb(var(--smoothly-table-expanded-background)),\n\t\t0px 0px 1px 0px rgb(var(--smoothly-table-border));\n}\n\n:host>div.detail::after {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: 0;\n\tbottom: 0;\n\tright: -1em;\n\twidth: 1em;\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tbox-shadow: -2px 0px 0px 0px rgb(var(--smoothly-table-expanded-background)),\n\t\t0px 0px 1px 0px rgb(var(--smoothly-table-border));\n}\n","import { Component, Event, EventEmitter, h, Host, Method, Prop, VNode, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-expandable-cell\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableExpandableCell {\n\t@Prop({ reflect: true }) span?: number = 1\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Event() smoothlyNextTableExpandableCellChange: EventEmitter<boolean>\n\t@Event() smoothlyNextTableExpandableCellRegister: EventEmitter<void>\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyNextTableExpandableCellRegister.emit()\n\t}\n\t@Method()\n\tasync close(): Promise<void> {\n\t\tthis.open = false\n\t}\n\tclickHandler(): void {\n\t\tthis.open = !this.open\n\t}\n\t@Watch(\"open\")\n\topenChange() {\n\t\tthis.smoothlyNextTableExpandableCellChange.emit(this.open)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host style={{ \"--smoothly-table-cell-span\": this.span?.toString(10) }}>\n\t\t\t\t<div onClick={() => this.clickHandler()} class={\"content\"}>\n\t\t\t\t\t<slot />\n\t\t\t\t</div>\n\t\t\t\t<div class={\"detail\"}>\n\t\t\t\t\t<slot name={\"detail\"} />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../arrow.scss\";\n\n:host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tgrid-template-rows: auto 0fr;\n\tbox-shadow: 0px 1px 1px -1px rgb(var(--smoothly-table-border));\n}\n\n:host::slotted(*) {\n\tcursor: pointer;\n}\n\n:host:has(>:not(:last-child):hover)> :not(:last-child) {\n\tbackground-color: rgb(var(--smoothly-table-hover-background));\n\tcolor: rgb(var(--smoothly-table-hover-foreground));\n}\n\n:host[open] {\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tcolor: rgb(var(--smoothly-table-expanded-foreground));\n\tgrid-template-rows: auto 1fr;\n\tbox-shadow: 0px 1px 1px -1px rgb(var(--smoothly-table-border)),\n\t\t0px 0px 1px rgb(var(--smoothly-table-border)) inset;\n\tgrid-template-rows: 0fr 1fr;\n}\n\n:host>div:last-child {\n\tgrid-column: 1 / -1;\n\tcursor: default;\n\tposition: relative;\n\toverflow: hidden;\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tcolor: rgb(var(--smoothly-table-expanded-foreground));\n}\n\n:host> :first-child:not(:last-child) {\n\t@include arrow;\n}\n\n:host:has(>:not(:last-child):hover)> :first-child:not(:last-child) {\n\t@include arrow-hover;\n\n}\n\n:host[open]> :first-child:not(:last-child) {\n\t@include arrow-open;\n}\n\n:host[open]>div:last-child {\n\toverflow: visible;\n\tpadding: 0.3rem 1.1rem;\n}\n\n:host>div:last-child::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\tbox-sizing: border-box;\n\ttop: 0;\n\tbottom: 0;\n\tleft: -1em;\n\twidth: 1em;\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tborder-left: 0.3em solid rgb(var(--smoothly-table-detail-border, var(--smoothly-table-border)));\n\tbox-shadow: 2px 0px 0px 0px rgb(var(--smoothly-table-expanded-background)),\n\t\t0px 0px 1px 0px rgb(var(--smoothly-table-border));\n}\n\n:host>div:last-child::after {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: 0;\n\tbottom: 0;\n\tright: -1em;\n\twidth: 1em;\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tbox-shadow: -2px 0px 0px 0px rgb(var(--smoothly-table-expanded-background)),\n\t\t0px 0px 1px 0px rgb(var(--smoothly-table-border));\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, VNode, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-expandable-row\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableExpandableRow {\n\tprivate div?: HTMLDivElement\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Event() smoothlyNextTableExpandableRowChange: EventEmitter<boolean>\n\n\tclickHandler(event: MouseEvent): void {\n\t\t;(this.div && event.composedPath().includes(this.div)) || (this.open = !this.open)\n\t}\n\t@Watch(\"open\")\n\topenChange() {\n\t\tthis.smoothlyNextTableExpandableRowChange.emit(this.open)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host onClick={(e: MouseEvent) => this.clickHandler(e)}>\n\t\t\t\t<slot></slot>\n\t\t\t\t<div ref={e => (this.div = e)}>\n\t\t\t\t\t<slot name=\"detail\" />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tposition: sticky;\n\tz-index: 1;\n\tbottom: 0;\n\tbackground-color: rgb(var(--smoothly-table-footer-background));\n\tcolor: rgb(var(--smoothly-table-footer-foreground));\n\tstroke: rgb(var(--smoothly-table-footer-foreground));\n\tfill: rgb(var(--smoothly-table-footer-foreground));\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-foot\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableFoot {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\ttop: 0;\n\tposition: sticky;\n\tz-index: 1;\n\t--smoothly-color: var(--smoothly-table-header-background);\n\t--smoothly-color-contrast: var(--smoothly-table-header-foreground);\n\tbackground-color: rgb(var(--smoothly-table-header-background));\n\tcolor: rgb(var(--smoothly-table-header-foreground));\n\tstroke: rgb(var(--smoothly-table-header-foreground));\n\tfill: rgb(var(--smoothly-table-header-foreground));\n\tfont-weight: bold;\n\ttransition: box-shadow 0.3s ease;\n}\n\n:host.scrolled {\n\tbox-shadow: var(--smoothly-table-header-shadow);\n}\n","import { Component, Element, h, Host, State, VNode } from \"@stencil/core\"\nimport { Scrollable } from \"../../../../model\"\n\n@Component({\n\ttag: \"smoothly-next-table-head\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableHead {\n\t@Element() element: HTMLSmoothlyNextTableElement\n\t@State() scrolled?: boolean\n\tprivate scrollParent?: HTMLElement\n\tprivate onScroll = (event: Event) => {\n\t\tif (event.target instanceof HTMLElement) {\n\t\t\tthis.scrollParent = event.target\n\t\t\tconst parentRect = this.scrollParent.getBoundingClientRect()\n\t\t\tconst elementRect = this.element.getBoundingClientRect()\n\t\t\tthis.scrolled = parentRect.top == elementRect.top\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tthis.scrollParent = Scrollable.findParent(this.element)\n\t\tthis.scrollParent?.addEventListener(\"scroll\", this.onScroll)\n\t}\n\tdisconnectedCallback() {\n\t\tthis.scrollParent?.removeEventListener(\"scroll\", this.onScroll)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host class={{ scrolled: !!this.scrolled }}>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tbox-sizing: border-box;\n\tbox-shadow: 0px 1px 1px -1px rgb(var(--smoothly-table-border));\n}\n\n:host:has(smoothly-next-table-expandable-cell) {\n\tgrid-template-rows: auto 0fr 0fr;\n}\n\n:host:has(smoothly-next-table-expandable-cell[open]) {\n\tgrid-template-rows: auto 1fr 0fr;\n}\n\n","import { Component, h, Host, Listen, VNode } from \"@stencil/core\"\nimport { SmoothlyNextTableExpandableCellCustomEvent } from \"../../../../components\"\n\n@Component({\n\ttag: \"smoothly-next-table-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableRow {\n\tprivate expandableCells = new Set<HTMLSmoothlyNextTableExpandableCellElement>()\n\t@Listen(\"smoothlyNextTableExpandableCellRegister\")\n\tsmoothlyNextTableExpandableCellRegisterHandler(event: SmoothlyNextTableExpandableCellCustomEvent<void>): void {\n\t\tevent.stopPropagation()\n\t\tthis.expandableCells.add(event.target)\n\t}\n\t@Listen(\"smoothlyNextTableExpandableCellChange\")\n\tsmoothlyNextTableExpandableCellChangeHandler(event: SmoothlyNextTableExpandableCellCustomEvent<boolean>): void {\n\t\tif (event.detail)\n\t\t\tfor (const cell of this.expandableCells)\n\t\t\t\tevent.target != cell && cell.close()\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tmargin-top: 1px;\n}\n:host > div:first-child {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tposition: relative;\n\tcursor: pointer;\n}\n:host > div:last-child {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n}\n\n:host[align] > div:first-child {\n\tgrid-template-columns: subgrid;\n}\n:host[align] > div:first-child > div {\n\tdisplay: contents;\n}\n:host[align] > div:first-child > div > * {\n\tpadding: 0.3rem 1.1rem;\n}\n\n:host:not([align]) > div:first-child {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, auto);\n\tjustify-content: space-between;\n\tpadding: 0.3rem 1.1rem;\n}\n:host:not([align]) > div:first-child > div:first-child {\n\tjustify-self: start;\n\tdisplay: flex;\n\tgap: 1rem;\n}\n:host:not([align]) > div:first-child > div:last-child {\n\tjustify-self: end;\n\tdisplay: flex;\n\tgap: 1rem;\n}\n\n:host:not([open]) {\n\tgrid-template-rows: auto 0fr;\n}\n:host:not([open]) > div:last-child {\n\tgrid-row: 2;\n\toverflow: hidden;\n}\n\n:host > div:first-child > div:first-child::before {\n\tcontent: '';\n\tdisplay: flex;\n\tposition: absolute;\n\ttop: 50%;\n\ttranslate: 0 -50%;\n\tleft: 0.3em;\n\theight: 0.4em;\n\twidth: 0.4em;\n\tborder-bottom: 1px solid rgb(var(--smoothly-default-contrast));\n\tborder-right: 1px solid rgb(var(--smoothly-default-contrast));\n\ttransition: rotate 200ms ease-in-out;\n\trotate: -45deg;\n\topacity: 0.3;\n}\n:host > div:first-child:hover > div:first-child::before {\n\topacity: 1;\n}\n:host[open] > div:first-child > div:first-child::before {\n\trotate: 45deg;\n}\n\n:host > div:first-child {\n\tbackground-color: rgb(var(--smoothly-default-tint));\n}\n:host > div:first-child {\n\tborder-bottom: 1px solid rgb(var(--smoothly-default-shade));\n}\n:host > div:first-child:hover {\n\tbackground-color: rgb(var(--smoothly-default-shade));\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-next-table-row-group\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyNextTableRowGroup {\n\t@Prop({ reflect: true }) align = false\n\t@Prop({ reflect: true, mutable: true }) open = false\n\t@Event() smoothlyNextTableRowGroupChange: EventEmitter<boolean>\n\n\tclickHandler(): void {\n\t\tthis.open = !this.open\n\t\tthis.smoothlyNextTableRowGroupChange.emit(this.open)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div onClick={() => this.clickHandler()}>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name={\"start\"} />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name={\"end\"} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<slot />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tposition: relative;\n\tmin-width: 30em;\n\tmin-height: 3em;\n\tborder-radius: 5px;\n\tmargin: 0.5em;\n}\n:host > span.icon > smoothly-icon,\n:host > span.clean {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-self: center;\n}\n:host > span {\n\tmargin: 0 2rem 0 1rem;\n}\n:host > span.icon {\n\tdisplay: flex;\n\twidth: 100%;\n\tjustify-content: center;\n}\n:host > span.icon > p {\n\tpadding-right: 1em;\n}\n:host > span > p {\n\ttext-align: left;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > span.icon > smoothly-icon {\n\tmargin: 0 0.5rem;\n}\n:host > smoothly-trigger {\n\tfont-size: 0.7em;\n\tposition: absolute;\n\tright: 0;\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Component, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\"\nimport { Color, Notice, Trigger } from \"../../model\"\nimport { Icon } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-notification\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Notification {\n\t@Prop() notice: Notice\n\t@Prop() closable = true\n\t@Prop() icon: boolean\n\t@State() tick = {}\n\t@Event() remove: EventEmitter<Notice>\n\tprivate listener: Notice.Listener = notice => {\n\t\tif (notice.state == \"closed\")\n\t\t\tthis.remove.emit(notice)\n\t\telse\n\t\t\tthis.tick = {}\n\t}\n\tprivate get properties(): [Color, Icon | undefined] {\n\t\tlet result: [Color, Icon | undefined]\n\t\tswitch (this.notice.state) {\n\t\t\tcase \"delayed\":\n\t\t\tcase \"warning\":\n\t\t\t\tresult = [\"warning\", \"warning-outline\"]\n\t\t\t\tbreak\n\t\t\tcase \"success\":\n\t\t\t\tresult = [\"success\", \"checkmark-circle\"]\n\t\t\t\tbreak\n\t\t\tcase \"executing\":\n\t\t\t\tresult = [\"light\", \"hourglass-outline\"]\n\t\t\t\tbreak\n\t\t\tcase \"failed\":\n\t\t\t\tresult = [\"danger\", \"alert-circle\"]\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tresult = [\"light\", undefined]\n\t\t\t\tbreak\n\t\t}\n\t\treturn result\n\t}\n\n\t@Listen(\"trigger\")\n\tonTrigger(event: CustomEvent<Trigger>) {\n\t\tif (event.detail.name == \"close\") {\n\t\t\tevent.stopPropagation()\n\t\t\tthis.notice.close()\n\t\t}\n\t}\n\n\t@Watch(\"notice\")\n\tonUpdatedNotice(newValue: Notice, oldValue?: Notice) {\n\t\tif (oldValue)\n\t\t\toldValue.unlisten(this.listener)\n\t\tnewValue.listen(this.listener)\n\t}\n\tcomponentDidLoad() {\n\t\tthis.onUpdatedNotice(this.notice)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host color={this.properties[0]} fill=\"solid\">\n\t\t\t\t{this.closable && (\n\t\t\t\t\t<smoothly-trigger fill=\"clear\" name=\"close\">\n\t\t\t\t\t\t<smoothly-icon name=\"close-circle-outline\"></smoothly-icon>\n\t\t\t\t\t</smoothly-trigger>\n\t\t\t\t)}\n\t\t\t\t<span class={this.icon ? \"icon\" : \"clean\"}>\n\t\t\t\t\t{this.icon && <smoothly-icon name={this.properties[1]}></smoothly-icon>}\n\t\t\t\t\t<p>{this.notice.message}</p>\n\t\t\t\t</span>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > aside {\n\tdisplay: flex;\n\tflex-wrap: wrap-reverse;\n\talign-content: stretch;\n\tposition: fixed;\n\tbottom: 3rem;\n\tleft: 0;\n\ttext-align: center;\n\tz-index: 100;\n}\n","import { Component, h, Listen, Prop, State } from \"@stencil/core\"\nimport { Notice } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-notifier\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Notifier {\n\t@Prop() icon = false\n\t@State() notices: Notice[] = []\n\n\t@Listen(\"notice\")\n\tonNotice(event: CustomEvent<Notice>) {\n\t\tthis.notices = [...this.notices, event.detail]\n\t}\n\t@Listen(\"remove\")\n\tonRemove(event: CustomEvent<Notice>) {\n\t\tthis.notices = [...this.notices.filter(n => n != event.detail)]\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<slot></slot>,\n\t\t\t<aside>\n\t\t\t\t{this.notices.map(n => (\n\t\t\t\t\t<smoothly-notification notice={n} icon={this.icon}></smoothly-notification>\n\t\t\t\t))}\n\t\t\t</aside>,\n\t\t]\n\t}\n}\n",":host[hidden] {\n\tdisplay: none;\n}\n\n:host {\n\tcursor: wait;\n\t--spinner-time: 1.4s;\n\t--spinner-color: var(--smoothly-color-contrast);\n\t--spinner-background: var(--smoothly-color);\n\t--spinner-background-opacity: var(--smoothly-semitransparent, 0.8);\n\tdisplay: block;\n\tstroke: rgb(var(--spinner-color));\n\tbackground-color: rgba(var(--spinner-background), var(--spinner-background-opacity));\n}\n\n:host:not([overlay]) {\n\twidth: var(--spinner-size);\n\theight: var(--spinner-size);\n}\n\n:host[overlay] {\n\tposition: absolute;\n\tinset: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 4;\n\tbackground-color: rgba(var(--spinner-background), var(--spinner-background-opacity));\n}\n\n:host[color]:not([overlay]),\n:host[color][overlay] {\n\tbackground-color: rgba(var(--spinner-background), var(--spinner-background-opacity));\n\tstroke: rgb(var(--spinner-color));\n}\n\n:host[overlay]>svg {\n\tposition: absolute;\n\twidth: var(--spinner-size);\n\tleft: calc(50% - var(--spinner-size) / 2);\n\ttop: calc(50% - var(--spinner-size) / 2);\n}\n\n:host>svg {\n\tanimation: SPIN-SVG var(--spinner-time) linear infinite;\n}\n\n:host>svg>circle {\n\ttransform-origin: center;\n\tanimation: SPIN-CIRCLE var(--spinner-time) ease-in-out infinite;\n\tstroke-dasharray: 187;\n\tstroke-dashoffset: 0;\n}\n\n@keyframes SPIN-SVG {\n\t0% {\n\t\ttransform: rotate(0deg);\n\t}\n\n\t100% {\n\t\ttransform: rotate(270deg);\n\t}\n}\n\n@keyframes SPIN-CIRCLE {\n\t0% {\n\t\tstroke-dashoffset: 187;\n\t}\n\n\t50% {\n\t\tstroke-dashoffset: 46.75;\n\t\ttransform: rotate(135deg);\n\t}\n\n\t100% {\n\t\tstroke-dashoffset: 187;\n\t\ttransform: rotate(450deg);\n\t}\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-spinner\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySpinner {\n\t@Prop({ reflect: true }) size: \"small\" | \"icon\" | \"medium\" | \"large\" = \"large\"\n\t@Prop({ reflect: true }) overlay: boolean\n\n\trender() {\n\t\tconst strokeWidth = this.size == \"large\" ? 6 : this.size == \"medium\" ? 8 : this.size == \"icon\" ? 8 : 12\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--spinner-size\":\n\t\t\t\t\t\tthis.size == \"large\" ? \"5em\" : this.size == \"medium\" ? \"3em\" : this.size == \"icon\" ? \"1.8em\" : \"1.2em\",\n\t\t\t\t}}>\n\t\t\t\t<svg class=\"spinner\" viewBox={`0 0 ${60 + strokeWidth} ${60 + strokeWidth}`} xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t<circle\n\t\t\t\t\t\tclass=\"path\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke-width={strokeWidth}\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tcx={`${30 + strokeWidth / 2}`}\n\t\t\t\t\t\tcy={`${30 + strokeWidth / 2}`}\n\t\t\t\t\t\tr=\"30\"></circle>\n\t\t\t\t</svg>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../button/style.css\";\n\n:host() {\n\tmargin: 1em 0em;\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\nimport { Button } from \"../button/Button\"\nimport { Editable } from \"../input/Editable\"\nimport { Submittable } from \"../input/Submittable\"\n\n@Component({\n\ttag: \"smoothly-submit\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlySubmit {\n\t@Prop({ reflect: true }) color?: Color = \"success\"\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) type: \"link\" | \"button\" = \"button\"\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop() prevent = true\n\tprivate parent?: Submittable\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\n\tasync componentWillLoad() {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Submittable.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t}\n\t\t})\n\t}\n\n\t@Listen(\"click\")\n\tclickHandler() {\n\t\tthis.parent?.submit()\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Button disabled={this.disabled} type={this.type}>\n\t\t\t\t<slot />\n\t\t\t</Button>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: auto 1fr;\n\tcolumn-gap: 0.3rem;\n}\n\n:host>details {\n\tdisplay: contents;\n}\n\n:host>details>summary {\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tgrid-column: 1/-1;\n\tlist-style: none;\n\talign-items: center;\n\tcursor: pointer;\n}\n\n:host>details>summary>smoothly-icon {\n\ttransition: transform 0.2s, opacity 0.1s;\n\topacity: 0.3;\n}\n\n:host>details>summary:hover>smoothly-icon {\n\topacity: 1;\n}\n\n:host>details[open]>summary>smoothly-icon {\n\ttransform: rotate(90deg);\n}\n\n:host>details::slotted([slot=content]) {\n\tgrid-column: 2;\n}\n\n@media (prefers-reduced-motion) { \n\t:host>details>summary>smoothly-icon {\n\t\ttransition: none;\n\t}\n}\n /* chromium specific */\n@supports selector(details::details-content) {\n\t:host>details::details-content {\n\t\tgrid-column: 2;\n\t}\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\nimport { Input } from \"../input/Input\"\n@Component({\n\ttag: \"smoothly-summary\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySummary {\n\tprivate inputs: Record<string, Input.Element> = {}\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Prop() color: Color\n\t@Prop() fill: Fill = \"solid\"\n\t@Prop() size: \"tiny\" | \"small\" | \"medium\" | \"large\" = \"tiny\"\n\t@Event() smoothlySummaryOpen: EventEmitter<boolean>\n\n\tasync toggleHandler(event: Event) {\n\t\tif (event.target instanceof HTMLDetailsElement) {\n\t\t\tthis.open = event.target.open\n\t\t\tthis.smoothlySummaryOpen.emit(this.open)\n\t\t\tthis.open\n\t\t\t\t? await Promise.all(Object.values(this.inputs).map(input => input.register()))\n\t\t\t\t: await Promise.all(Object.values(this.inputs).map(input => input.unregister()))\n\t\t}\n\t}\n\n\t@Listen(\"smoothlyInputLoad\")\n\t@Listen(\"smoothlyInput\")\n\tonInputLoad(event: CustomEvent) {\n\t\tif (Input.Element.is(event.target)) {\n\t\t\tthis.inputs[event.target.name] = event.target\n\t\t\tif (!this.open)\n\t\t\t\tevent.stopPropagation()\n\t\t}\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<details onToggle={e => this.toggleHandler(e)} open={this.open}>\n\t\t\t\t<summary>\n\t\t\t\t\t<smoothly-icon name=\"caret-forward\" color={this.color} fill={this.fill} size={this.size} />\n\t\t\t\t\t<slot name=\"summary\" />\n\t\t\t\t</summary>\n\t\t\t\t<slot name=\"content\" />\n\t\t\t</details>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n\t--line-width: 3px;\n}\n:host > div:first-child {\n\tgrid-column: span 1;\n\tbackground-color: transparent;\n\tborder-bottom-color: rgb(var(--smoothly-default-shade));\n\tborder-bottom-width: var(--line-width);\n\tborder-bottom-style: solid;\n}\n:host > div:first-child > label {\n\tdisplay: block;\n\tpadding: .5rem;\n\twidth: fit-content;\n margin: auto;\n\tcursor: pointer;\n}\n:host([open]) > div:first-child > label {\n\tborder-bottom: var(--line-width) solid rgb(var(--smoothly-primary-color));\n\tmargin-bottom: calc(-1 * var(--line-width));\n\tposition: relative;\n}\n\n:host > div:nth-child(2) {\n\tgrid-row: 2 / 3;\n\tgrid-column: 1 / -1;\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Prop, Watch } from \"@stencil/core\"\nimport { Input } from \"../../input/Input\"\n\n@Component({\n\ttag: \"smoothly-tab\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTab {\n\tprivate inputs: Record<string, Input.Element> = {}\n\t@Prop() label: string\n\t@Prop({ mutable: true, reflect: true }) open: boolean\n\t@Event() smoothlyTabOpen: EventEmitter<string>\n\t@Event() smoothlyTabLoad: EventEmitter<void>\n\n\t@Watch(\"open\")\n\tasync openHandler() {\n\t\tif (this.open)\n\t\t\tthis.smoothlyTabOpen.emit(this.label)\n\t\tthis.open\n\t\t\t? await Promise.all(Object.values(this.inputs).map(input => input.register()))\n\t\t\t: await Promise.all(Object.values(this.inputs).map(input => input.unregister()))\n\t}\n\t@Listen(\"click\")\n\tonClick(e: UIEvent) {\n\t\te.stopPropagation()\n\t\tthis.open = true\n\t}\n\tconnectedCallback() {\n\t\tthis.smoothlyTabLoad.emit()\n\t}\n\tasync componentDidLoad() {\n\t\tawait this.openHandler()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\t@Listen(\"smoothlyInput\")\n\tonInputLoad(event: CustomEvent) {\n\t\tif (Input.Element.is(event.target)) {\n\t\t\tthis.inputs[event.target.name] = event.target\n\t\t\tif (!this.open)\n\t\t\t\tevent.stopPropagation()\n\t\t}\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<label>{this.label}</label>\n\t\t\t\t</div>\n\t\t\t\t<div hidden={!this.open}>\n\t\t\t\t\t<slot />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: table;\n\twidth: var(--table-width, 80%);\n\tbox-sizing: border-box;\n\tbackground-color: rgb(var(--smoothly-default-color));\n}\n:host[root] {\n\tmargin-left: 1.5rem;\n\tmargin-right: 1.5rem;\n}\n:host:not([root]) {\n\tmargin: 0;\n\twidth: 100%;\n}\n","import { Component, ComponentWillLoad, Element, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-table\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Table implements ComponentWillLoad {\n\tprivate owner?: EventTarget\n\tprivate expandable: WeakMap<EventTarget, { allowSpotlight: (allowed: boolean) => void } | undefined> = new WeakMap()\n\tprivate expanded: Set<EventTarget> = new Set()\n\t@Element() element: HTMLSmoothlyTableElement\n\t@Prop({ mutable: true, reflect: true }) root = true\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true }) align: \"middle\" | \"bottom\" | \"top\" = \"middle\"\n\t@Prop({ reflect: true, mutable: true }) open = false\n\t@Event() smoothlyNestedTable: EventEmitter<() => void>\n\t@Event() smoothlySpotlightChange: EventEmitter<{ allowSpotlight: boolean; owner?: EventTarget }>\n\t@Event() smoothlyTableLoad: EventEmitter<(owner: EventTarget) => void>\n\tcomponentWillLoad() {\n\t\tthis.smoothlyNestedTable.emit(() => (this.root = false))\n\t\tthis.smoothlyTableLoad.emit((owner: EventTarget) => (this.owner = owner))\n\t}\n\t@Listen(\"smoothlyExpandableLoad\")\n\thandleExpandableLoaded(event: CustomEvent<{ allowSpotlight: (allowed: boolean) => void }>) {\n\t\tevent.stopPropagation()\n\t\tevent.target && this.expandable.set(event.target, event.detail)\n\t}\n\t@Listen(\"smoothlyExpandableChange\")\n\thandleExpandableState(event: CustomEvent<boolean>) {\n\t\tevent.stopPropagation()\n\t\tevent.target && (event.detail ? this.expanded.add(event.target) : this.expanded.delete(event.target))\n\t\tthis.smoothlySpotlightChange.emit({ allowSpotlight: !this.expanded.size, owner: this.owner })\n\t}\n\t@Listen(\"smoothlySpotlightChange\")\n\thandleSpotlightState(event: CustomEvent<{ allowSpotlight: boolean; owner?: EventTarget }>) {\n\t\tthis.open = !!this.expanded.size\n\t\tevent.target != this.element &&\n\t\t\t(event.stopPropagation(),\n\t\t\tevent.detail.owner && this.expandable.get(event.detail.owner)?.allowSpotlight(event.detail.allowSpotlight))\n\t}\n\t@Listen(\"smoothlyNestedTable\")\n\thandleNestedTable(event: CustomEvent<() => void>) {\n\t\tevent.target != this.element && (event.stopPropagation(), event.detail())\n\t}\n\t@Listen(\"smoothlyExpansionLoad\")\n\t@Listen(\"smoothlyExpansionOpen\")\n\thandleEvents(event: CustomEvent) {\n\t\tevent.stopPropagation()\n\t}\n\trender() {\n\t\treturn [<slot></slot>]\n\t}\n}\n",":host {\n\tdisplay: table-cell;\n\tline-height: 1.5rem;\n\twhite-space: nowrap;\n\tpadding: 0.3rem .5rem;\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade));\n}\n:host > div > smoothly-icon {\n\tdisplay: none;\n\twidth: 1em;\n\theight: auto;\n\taspect-ratio: 1 / 1;\n\tmargin: 0 0.3rem;\n\ttransition: transform 0.2s, opacity 0.1s;\n\topacity: 0.3;\n}\n:host:hover > div > smoothly-icon {\n\topacity: 1;\n}\nsmoothly-table-expandable-row > div :host:last-of-type > div > smoothly-icon {\n\tdisplay: flex;\n}\nsmoothly-table-expandable-row[open] > div > :host:last-of-type > div > smoothly-icon {\n\ttransform: rotate(90deg);\n}\n:host > div {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto;\n\talign-items: center;\n}\n:host > div > div {\n\twidth: 100%;\n}\nsmoothly-table[align=bottom] :host {\n\tvertical-align: bottom;\n}\nsmoothly-table[align=middle] :host {\n\tvertical-align: middle;\n}\nsmoothly-table[align=top] :host {\n\tvertical-align: top;\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-cell\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableCell {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</div>\n\t\t\t\t\t<smoothly-icon name=\"caret-forward-outline\" size=\"tiny\" />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 3rem;\n\tpadding-bottom: 10rem;\n\tmargin-left: 2rem;\n\tmargin-right: 2rem;\n}\n\n.content {\n\tdisplay: contents;\n}\n\nsmoothly-lazy {\n\twidth: 80%;\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableDemo {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h4>Demo table 1: Filtered & Checked Table</h4> <smoothly-lazy content={<smoothly-table-demo-filtered />} />\n\t\t\t\t<h4>Demo table 2</h4> <smoothly-table-testing></smoothly-table-testing> <h4>Demo table 3</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Header A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Header B</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Header C</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Header D</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tnormal row (exp.cell)\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 1 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 2 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 3 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 4 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>normal row (nor.cell)\"</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell details.</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell details.</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>expandable row (nor.cell)</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">expandable row content</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 4</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Header A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tHeader expansion\n\t\t\t\t\t\t\t<div slot=\"detail\">Expansion content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>A Content</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Expansion cell</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<smoothly-tab-switch>\n\t\t\t\t\t\t\t\t<smoothly-tab label=\"innertable 1\" open={true}>\n\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>Header B</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>B Content</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t\t\t<smoothly-tab label=\"innertable 2\">\n\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>Header C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-cell>C Content</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t\t</smoothly-tab-switch>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>A Content</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tExpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">Expansion content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 5</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>B</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>nested expandable row</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>b row</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>c</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>d</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>E</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>F</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-cell>e row</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-cell>f row</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable row expansion e f</div>\n\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t<span>one</span>\n\t\t\t\t\t\t\t<span>two</span>\n\t\t\t\t\t\t\t<span>three</span>\n\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\tfive<smoothly-icon name=\"paper-plane-sharp\" size=\"small\"></smoothly-icon>\n\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">four</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t<span>nested expandable cells</span>\n\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>E</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>F</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\te cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>G</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>H</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tg cell\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion g</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\th cell\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion h</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\tf cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion f</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tb cell\n\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\tc cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion c</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\td cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion d</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 6</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>display</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>contents</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<div class={\"content\"}>\n\t\t\t\t\t\t\t<smoothly-table-cell>A</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>B</smoothly-table-cell>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div slot=\"detail\">expansion</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 7</h4> <span>nested 1 then normal</span>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>B</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>a</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>b</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>c</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>d</smoothly-table-cell>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>cccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>dddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">CONTENT</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ccccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>cccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>dddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">CONTENT</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 8</h4> <span>not nested</span>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>c</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>d</smoothly-table-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>cc</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>dd</smoothly-table-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>ccc</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>ddd</smoothly-table-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 9</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>First name</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Last name</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header style={{ width: \"1px\" }}>\n\t\t\t\t\t\t\t<smoothly-icon name=\"alert-outline\" />\n\t\t\t\t\t\t</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>Jessie</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Doe</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell></smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<p>This is Jessie</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 9 - Lazy expansion rows</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Company</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>Proquse</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\tcontent={<img src={\"https://brand.proquse.com/logo/proquse-black.svg\"} alt={\"Proquse Logotype.\"} />}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>Pax2Pay</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\tcontent={() => (\n\t\t\t\t\t\t\t\t<img src={\"https://dash.pax2pay.app/assets/pax2pay-dark-horizontal.svg\"} alt={\"Pax2Pay Logotype.\"} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 10 - Lazy expansion cells</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Company</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tProquse\n\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\tcontent={<img src={\"https://brand.proquse.com/logo/proquse-black.svg\"} alt={\"Proquse Logotype.\"} />}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tPax2Pay\n\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\tcontent={() => (\n\t\t\t\t\t\t\t\t\t<img src={\"https://dash.pax2pay.app/assets/pax2pay-dark-horizontal.svg\"} alt={\"Pax2Pay Logotype.\"} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 11 - expandable cells</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Name</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Age</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Location</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tJessie\n\t\t\t\t\t\t\t<div slot={\"detail\"}>Doe</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t{new Date().getFullYear() - 2000}\n\t\t\t\t\t\t\t<div slot={\"detail\"}>2000-01-01</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tUK\n\t\t\t\t\t\t\t<div slot={\"detail\"}>London</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\twidth: 80%;\n}\n\nsmoothly-table-cell:nth-of-type(2) {\n\ttext-align: right;\n}\n\ntd {\n\tpadding-left: 1.5em;\n}\n","import { Component, ComponentWillLoad, h, Host, Listen, State } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { http } from \"cloudly-http\"\nimport { Selector } from \"../../Selector\"\nimport { Cat } from \"./Root\"\n\n@Component({\n\ttag: \"smoothly-table-demo-filtered\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableDemoFiltered implements ComponentWillLoad {\n\t@State() criteria: selectively.Criteria = {}\n\t@State() cats?: Cat[] | false\n\t@State() selector: Selector<Cat> = Selector.create(\"breed\")\n\t@Listen(\"smoothlyFilter\")\n\tonFilterUpdate(event: CustomEvent<selectively.Criteria>) {\n\t\tevent.stopPropagation()\n\t\tthis.criteria = event.detail\n\t}\n\t@Listen(\"smoothlyInput\")\n\tsmoothlyInputHandler(event: CustomEvent<Record<string, any>>) {\n\t\tevent.stopPropagation()\n\t\tthis.selector = this.selector.handle(event.detail)\n\t}\n\n\tasync componentWillLoad(): Promise<void> {\n\t\tconst response = await http.fetch(\"https://catfact.ninja/breeds?limit=15\")\n\t\tthis.cats =\n\t\t\tresponse.status == 200 &&\n\t\t\t(await response.body).data.map((cat: any) => ({\n\t\t\t\t...cat,\n\t\t\t\tprice: [...cat.breed].reduce((r, c) => r + c.charCodeAt(0), 0),\n\t\t\t\tnested: { ...cat, names: names[cat.country] ?? [] },\n\t\t\t\tnames: names[cat.country] ?? [],\n\t\t\t}))\n\t}\n\n\trender() {\n\t\tconst cats = this.cats && selectively.filter(this.criteria, this.cats)\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-filter>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ [\"nested.pattern\"]: \"Ticked\", breed: \"\" }}\n\t\t\t\t\t\ticon=\"add\"\n\t\t\t\t\t\ttoolTip=\"Nested Ticked\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ pattern: \"Ticked\", breed: \"\" }}\n\t\t\t\t\t\ticon=\"paw\"\n\t\t\t\t\t\ttoolTip=\"Ticked cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ breed: \"Bombay\", pattern: \"Solid\" }}\n\t\t\t\t\t\ticon=\"radio-button-on\"\n\t\t\t\t\t\ttoolTip=\"Solid bombay cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ pattern: \"Colorpoint\" }}\n\t\t\t\t\t\tnot\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon=\"alert\"\n\t\t\t\t\t\ttoolTip=\"Colored cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-select label=\"coat\" property=\"nested.coat\" slot=\"bar\" multiple={false}>\n\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\tObject.values(\n\t\t\t\t\t\t\t\tthis.cats.reduce<Record<string, Cat>>(\n\t\t\t\t\t\t\t\t\t(r, cat) => (cat.nested ? { ...r, [cat.nested.coat]: cat } : r),\n\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t).map(\n\t\t\t\t\t\t\t\tcat =>\n\t\t\t\t\t\t\t\t\tcat.nested?.coat && (\n\t\t\t\t\t\t\t\t\t\t<smoothly-item slot=\"items\" value={cat.nested.coat}>\n\t\t\t\t\t\t\t\t\t\t\t{cat.nested.coat}\n\t\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t</smoothly-filter-select>\n\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t\t\t<smoothly-filter-select label=\"coat\" property=\"nested.coat\" multiple>\n\t\t\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\t\t\tObject.values(\n\t\t\t\t\t\t\t\t\t\tthis.cats.reduce<Record<string, Cat>>(\n\t\t\t\t\t\t\t\t\t\t\t(r, cat) => (cat.nested ? { ...r, [cat.nested.coat]: cat } : r),\n\t\t\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t).map(\n\t\t\t\t\t\t\t\t\t\tcat =>\n\t\t\t\t\t\t\t\t\t\t\tcat.nested?.coat && (\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-item slot=\"items\" value={cat.nested.coat}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cat.nested.coat}\n\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-filter-select>\n\t\t\t\t\t\t\t<smoothly-filter-select label=\"breed\" property=\"breed\" multiple={false}>\n\t\t\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\t\t\tObject.values(\n\t\t\t\t\t\t\t\t\t\tthis.cats.reduce<Record<string, Cat>>((r, cat) => (cat.breed ? { ...r, [cat.breed]: cat } : r), {})\n\t\t\t\t\t\t\t\t\t).map(\n\t\t\t\t\t\t\t\t\t\tcat =>\n\t\t\t\t\t\t\t\t\t\t\tcat.breed && (\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-item slot=\"items\" value={cat.breed}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cat.breed}\n\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-filter-select>\n\t\t\t\t\t\t\t<smoothly-filter-select label=\"names\" property=\"nested.names\" multiple={true} type=\"array\">\n\t\t\t\t\t\t\t\t{Object.keys(\n\t\t\t\t\t\t\t\t\tObject.values(names)\n\t\t\t\t\t\t\t\t\t\t.flat()\n\t\t\t\t\t\t\t\t\t\t.reduce((r, name) => ({ ...r, [name]: true }), {})\n\t\t\t\t\t\t\t\t).flatMap(name => (\n\t\t\t\t\t\t\t\t\t<smoothly-item slot=\"items\" value={name}>\n\t\t\t\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-filter-select>\n\t\t\t\t\t\t\t<smoothly-filter-input label=\"Coat\" property=\"coat\" />\n\t\t\t\t\t\t\t<smoothly-filter-input label=\"Nested Coat\" property=\"nested.coat\" />\n\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t</div>\n\t\t\t\t</smoothly-filter>\n\t\t\t\t{!cats ? (\n\t\t\t\t\t\"Failed to load data.\"\n\t\t\t\t) : (\n\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-header>{this.selector.render(cats)}</smoothly-table-header>\n\t\t\t\t\t\t\t<smoothly-table-header>Breed</smoothly-table-header>\n\t\t\t\t\t\t\t<smoothly-table-header>Coat</smoothly-table-header>\n\t\t\t\t\t\t\t<smoothly-table-header>Price</smoothly-table-header>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t{cats.map(cat => (\n\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-cell>{this.selector.render(cat)}</smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.breed}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">Country: {cat.country}</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.coat}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">Pattern: {cat.pattern}</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type=\"price\" value={cat.price} currency=\"SEK\"></smoothly-display>\n\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<smoothly-table-footer>\n\t\t\t\t\t\t\t<td colSpan={5}>\n\t\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\tvalue={`Selected: ${\n\t\t\t\t\t\t\t\t\t\tthis.selector.selected.length != 0 ? this.selector.selected.length : cats ? cats.length : \"?\"\n\t\t\t\t\t\t\t\t\t}`}></smoothly-display>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</smoothly-table-footer>\n\t\t\t\t\t</smoothly-table>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\nconst names: Record<string, string[]> = {\n\t\"United States\": [\"bill\", \"bob\", \"brad\", \"joe\", \"molly\"],\n\tAustralia: [\"nigel\", \"bruce\", \"sheila\", \"brad\", \"shane\"],\n\t\"United Kingdom\": [\"nigel\", \"james\", \"molly\", \"shane\", \"bob\"],\n\tGreece: [\"dionysius\", \"demetrius\", \"polikarpos\"],\n}\n",":host {\n\tdisplay: table-cell;\n\tpadding: 0.3rem 0.5rem 0.3rem 0.2rem;\n\tcursor: pointer;\n\tline-height: 1.5rem;\n}\n:host:not([open]) {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)), 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host[open] {\n\tposition: relative;\n\tz-index: 3;\n\tbackground-color: rgb(var(--smoothly-color));\n\tbox-shadow: 1px 0 0 0 rgb(var(--smoothly-color-shade)) inset, -1px 0 0 0 rgb(var(--smoothly-color-shade)) inset, 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host > div > smoothly-icon {\n\twidth: 1em;\n\tpadding-right: 0.3rem;\n\ttransition: transform 0.2s, opacity 0.1s;\n\tdisplay: flex;\n\theight: auto;\n\taspect-ratio: 1 / 1;\n\talign-self: center;\n\topacity: 0.3;\n}\n:host:hover > div > smoothly-icon {\n\topacity: 1;\n}\n:host[open] > div > smoothly-icon {\n\ttransform: rotate(90deg) translateX(3px);\n}\n:host > div {\n\tdisplay: grid;\n\tgrid-template-columns: auto 1fr;\n\talign-items: center;\n}\n:host:not([open]) > tr > td {\n\tdisplay: none;\n}\nsmoothly-table-row > tr > td::slotted(*) {\n\t--expansion-width: 1.5rem;\n\t--expansion-border-width: 3px;\n\tposition: relative;\n\tbackground-color: rgb(var(--smoothly-color));\n\twidth: calc(100% + 3rem - 1px);\n\ttop: 1px;\n\tleft: calc(-1 * var(--expansion-width) + 1px);\n\tbox-sizing: border-box;\n\tpadding: 0.5rem calc(var(--expansion-width) - 1px);\n\tborder-bottom: 1px solid rgb(var(--smoothly-color-shade));\n}\nsmoothly-table-row > tr.spotlight > td::slotted(*) {\n\tbox-shadow: calc(var(--expansion-border-width)) 0 0 0 rgb(var(--smoothly-tertiary-color)) inset;\n}\nsmoothly-table-row > tr:not(.spotlight) > td::slotted(*) {\n\tbox-shadow: -1px 0 0 0 rgb(var(--smoothly-tertiary-color)), 1px 0 0 0 rgb(var(--smoothly-tertiary-color));\n}\nsmoothly-table-row > tr > td::slotted(*)::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: -1px;\n\tbottom: 0;\n\tleft: -1px;\n\twidth: calc(var(--expansion-width) + 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n}\nsmoothly-table-row > tr > td::slotted(*)::after {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: -1px;\n\tbottom: 0;\n\tright: 0;\n\twidth: calc(var(--expansion-width) - 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n\tborder-right: 1px solid rgb(var(--smoothly-color-shade));\n}\n\nsmoothly-table[align=bottom] :host {\n\tvertical-align: bottom;\n}\nsmoothly-table[align=middle] :host {\n\tvertical-align: middle;\n}\nsmoothly-table[align=top] :host {\n\tvertical-align: top;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tProp,\n\tState,\n\tWatch,\n} from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-expandable-cell\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableExpandableCell implements ComponentWillLoad {\n\tprivate expansionElement?: HTMLTableRowElement\n\tprivate beginOpen: boolean\n\t@Element() element: HTMLSmoothlyTableExpandableCellElement\n\t@State() allowSpotlight = true\n\t@State() spotlight = true\n\t@Prop({ mutable: true, reflect: true }) open: boolean\n\t@Event() smoothlyExpansionOpen: EventEmitter<HTMLElement>\n\t@Event() smoothlyExpansionLoad: EventEmitter<void>\n\t@Event() smoothlyExpandableChange: EventEmitter<boolean>\n\t@Event() smoothlyExpandableLoad: EventEmitter<{ allowSpotlight: (allowed: boolean) => void }>\n\t@Watch(\"open\")\n\topenChanged(value: boolean) {\n\t\tif (this.expansionElement)\n\t\t\tif (value)\n\t\t\t\tthis.beginOpen = true\n\t\t\telse\n\t\t\t\tthis.element.append(this.expansionElement)\n\t\tthis.smoothlyExpandableChange.emit(this.open)\n\t}\n\t@Watch(\"open\")\n\t@Watch(\"allowSpotlight\")\n\thandleSpotlight() {\n\t\tthis.spotlight = this.open && this.allowSpotlight\n\t}\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyExpansionLoad.emit()\n\t\tthis.smoothlyExpandableLoad.emit({\n\t\t\tallowSpotlight: (allowed: boolean) => (this.allowSpotlight = allowed),\n\t\t})\n\t}\n\tcomponentDidRender(): void {\n\t\tif (this.beginOpen) {\n\t\t\tthis.beginOpen = false\n\t\t\tthis.smoothlyExpansionOpen.emit(this.expansionElement)\n\t\t}\n\t}\n\t@Listen(\"click\")\n\tonClick() {\n\t\tthis.open = !this.open\n\t}\n\t@Listen(\"smoothlyTableLoad\")\n\thandleTableLoaded(event: CustomEvent<(owner: EventTarget) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.element)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-icon name=\"caret-forward-outline\"></smoothly-icon>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t\t<tr class={{ spotlight: this.spotlight }} ref={e => (this.expansionElement = e)}>\n\t\t\t\t\t<td colSpan={999}>\n\t\t\t\t\t\t<slot name=\"detail\"></slot>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n:host > div {\n\tdisplay: table-row;\n\tcursor: pointer;\n\tline-height: 1.5rem;\n}\n:host[open] > div {\n\tposition: relative;\n\tz-index: 3;\n\tbackground-color: rgb(var(--smoothly-color));\n}\n:host[open] > div::slotted(*) smoothly-table-cell,\n:host[open] > div::slotted(smoothly-table-cell) {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset;\t\n}\n:host[open] > div::slotted(*) smoothly-table-cell:first-child {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset, 1px 0 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host[open] > div::slotted(*) smoothly-table-cell:last-child {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset, -1px 0 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host[open] > div::slotted(*) smoothly-table-cell:last-child:first-child {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset, 1px 0 0 0 rgb(var(--smoothly-color-shade)) inset, -1px 0 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n\n:host:not([open]) > tr > td {\n\tdisplay: none;\n}\n:host > tr > td {\n\tposition: relative;\n}\n:host > tr > td::slotted(*) {\n\t--expansion-width: 1.5rem;\n\t--expansion-border-width: 3px;\n\tposition: relative;\n\tbackground-color: rgb(var(--smoothly-color));\n\twidth: calc(100% + 3rem - 2px);\n\tleft: calc(-1 * var(--expansion-width) + 1px);\n\tbox-sizing: border-box;\n\tpadding: 0.5rem calc(var(--expansion-width) - 1px);\n\tborder-bottom: 1px solid rgb(var(--smoothly-color-shade));\n}\n:host > tr.spotlight > td::slotted(*) {\n\tbox-shadow: calc(var(--expansion-border-width)) 0px 0px 0px rgb(var(--smoothly-tertiary-color)) inset;\n}\n:host > tr:not(.spotlight) > td::slotted(*) {\n\tbox-shadow: -1px 0 0 0 rgb(var(--smoothly-tertiary-color)), 1px 0 0 0 rgb(var(--smoothly-tertiary-color));\n}\n:host > tr > td::slotted(*)::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: 0;\n\tbottom: 0;\n\tleft: -1px;\n\twidth: calc(var(--expansion-width) + 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n}\n:host > tr > td::slotted(*)::after {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: 0;\n\tbottom: 0;\n\tright: 0;\n\twidth: calc(var(--expansion-width) - 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n\tborder-right: 1px solid rgb(var(--smoothly-color-shade));\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tProp,\n\tState,\n\tWatch,\n} from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-expandable-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableExpandableRow implements ComponentWillLoad {\n\t@Element() element: HTMLSmoothlyTableRowElement\n\t@State() allowSpotlight = true\n\t@State() spotlight = true\n\t@Prop({ mutable: true, reflect: true }) open: boolean\n\t@Event() smoothlyExpansionOpen: EventEmitter<HTMLElement>\n\t@Event() smoothlyExpandableChange: EventEmitter<boolean>\n\t@Event() smoothlyExpandableLoad: EventEmitter<{ allowSpotlight: (allowed: boolean) => void }>\n\n\t@Watch(\"open\")\n\t@Watch(\"allowSpotlight\")\n\thandleSpotlight() {\n\t\tthis.spotlight = this.open && this.allowSpotlight\n\t}\n\tcomponentWillLoad() {\n\t\tthis.smoothlyExpandableLoad.emit({\n\t\t\tallowSpotlight: (allowed: boolean) => (this.allowSpotlight = allowed),\n\t\t})\n\t}\n\t@Listen(\"smoothlyTableLoad\")\n\thandleTableLoaded(event: CustomEvent<(owner: EventTarget) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.element)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div onClick={() => (this.open = !this.open)}>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t\t<tr class={{ spotlight: this.spotlight }}>\n\t\t\t\t\t<td colSpan={999}>\n\t\t\t\t\t\t<slot name=\"detail\"></slot>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: table-footer-group;\n\tposition: sticky;\n\tbottom: 0;\n\tbackground-color: rgb(var(--smoothly-color));\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)),\n\t\tinset 0 1px 0 rgb(var(--smoothly-color-shade));\n\tline-height: 2.5rem;\n\tfont-weight: bold;\n}\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-footer\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableFooter {\n\trender() {\n\t\treturn <slot />\n\t}\n}\n",":host {\n\tdisplay: table-cell;\n\tline-height: 2.5rem;\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade));\n\tpadding: 0 .5rem;\n\tfont-weight: bold;\n}\n\nsmoothly-table[align=bottom] :host {\n\tvertical-align: bottom;\n}\nsmoothly-table[align=middle] :host {\n\tvertical-align: middle;\n}\nsmoothly-table[align=top] :host {\n\tvertical-align: top;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-header\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableHeader {\n\t@Prop({ reflect: true }) name: string\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: table-row-group;\n\tcursor: default;\n\tline-height: 1.5rem;\n}\n.hide {\n\tdisplay: none;\n}\n:host > div {\n\tdisplay: contents;\n}\n","import { Component, h, Listen, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableRow {\n\tprivate element?: HTMLElement\n\t@Prop({ reflect: true, mutable: true }) open = false\n\texpansions: HTMLSmoothlyTableExpandableCellElement[] = []\n\t@Listen(\"smoothlyExpansionLoad\")\n\tonExpansionLoad(event: CustomEvent<void>) {\n\t\tthis.expansions.push(event.target as HTMLSmoothlyTableExpandableCellElement)\n\t}\n\t@Listen(\"smoothlyExpandableChange\")\n\tonExpansionChange() {\n\t\tthis.open = this.expansions.some(expansion => expansion.open)\n\t}\n\t@Listen(\"smoothlyExpansionOpen\")\n\tonExpansionOpen(event: CustomEvent<HTMLElement | undefined>) {\n\t\tthis.expansions.forEach(cell => {\n\t\t\tif (cell != event.target)\n\t\t\t\tcell.open = false\n\t\t})\n\t\tif (event.detail)\n\t\t\tthis.element?.after(event.detail)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<div ref={e => (this.element = e)}>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t)\n\t}\n}\n","export const data = [\n\t{\n\t\ttype: \"cat\",\n\t\tname: \"Lazie\",\n\t\tage: 3,\n\t},\n\t{\n\t\ttype: \"dog\",\n\t\tname: \"Jessie\",\n\t\tage: 8,\n\t},\n\t{\n\t\ttype: \"cat\",\n\t\tname: \"Snooz\",\n\t\tage: 5,\n\t},\n\t{\n\t\ttype: \"bird\",\n\t\tname: \"Squeak\",\n\t\tage: 1,\n\t},\n\t{\n\t\ttype: \"bird\",\n\t\tname: \"Quirk\",\n\t\tage: 2,\n\t},\n]\n",":host {\n\twidth: 100%;\n\tdisplay: flex;\n\tjustify-content: center;\n}\n\nsmoothly-table {\n\twidth: 80%;\n}\n\n.tableCell {\n\theight: 3rem;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.tableCell>div {\n\tmargin-left: 3rem;\n\tmargin-right: 3rem;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: 2rem;\n}\n\ntd>div.footer {\n\tdisplay: flex;\n\tpadding-left: 1.5em;\n\tflex-direction: row;\n\tgap: 1em;\n}\n","import { Component, h, Host, State } from \"@stencil/core\"\nimport { data } from \"./data\"\n@Component({\n\ttag: \"smoothly-table-testing\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableTesting {\n\t@State() counter = 0\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-table color=\"dark\">\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Type</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Name</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Age</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\n\t\t\t\t\t{data.map(animal => (\n\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.type}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.name}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.age}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-form slot=\"detail\" onSmoothlyFormSubmit={() => this.counter++} looks=\"line\">\n\t\t\t\t\t\t\t\t<smoothly-input value={animal.type}>Type</smoothly-input>\n\t\t\t\t\t\t\t\t<smoothly-input value={animal.name}>Name</smoothly-input>\n\t\t\t\t\t\t\t\t<smoothly-input>{animal.age}</smoothly-input>\n\t\t\t\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit!</smoothly-submit>\n\t\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t))}\n\t\t\t\t\t{data.map(animal => (\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.type}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t{animal.name}\n\t\t\t\t\t\t\t\t<smoothly-form slot=\"detail\" onSmoothlyFormSubmit={() => this.counter++} looks=\"line\">\n\t\t\t\t\t\t\t\t\t<smoothly-input value={animal.name}>Name</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit!</smoothly-submit>\n\t\t\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t{animal.age}\n\t\t\t\t\t\t\t\t<smoothly-form slot=\"detail\" onSmoothlyFormSubmit={() => this.counter++} looks=\"line\">\n\t\t\t\t\t\t\t\t\t<smoothly-input value={animal.type}>Type</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-input value={animal.name}>Name</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-input>{animal.age}</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit!</smoothly-submit>\n\t\t\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t))}\n\t\t\t\t\t<smoothly-table-footer>\n\t\t\t\t\t\t<td colSpan={2}>\n\t\t\t\t\t\t\t<div class=\"footer\">\n\t\t\t\t\t\t\t\tCurrently viewing content from:\n\t\t\t\t\t\t\t\t<smoothly-display type=\"date\" value=\"2023-10-12\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<smoothly-table-header>{\"Total age: \" + data.reduce((r, a) => r + a.age, 0)}</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-footer>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(var(--tabs), auto);\n\tgrid-template-rows: auto auto;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, State, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-tabs\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTabs {\n\t@Element() element: HTMLSmoothlyTabsElement\n\t@State() tabs: HTMLElement[] = []\n\t@State() selectedElement: HTMLSmoothlyTabElement\n\t@Event() smoothlyTabOpen: EventEmitter<string>\n\n\t@Listen(\"smoothlyTabLoad\")\n\tonInputLoad(event: CustomEvent) {\n\t\tif (event.target instanceof HTMLElement && !this.tabs.includes(event.target)) {\n\t\t\tthis.tabs = [...this.tabs, event.target]\n\t\t}\n\t}\n\n\t@Listen(\"smoothlyTabOpen\")\n\topenChanged(event: CustomEvent) {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t\tthis.selectedElement = event.target as HTMLSmoothlyTabElement\n\t\t\tthis.smoothlyTabOpen.emit(event.detail)\n\t\t}\n\t}\n\t@Watch(\"selectedElement\")\n\tonSelectedChange(value: HTMLSmoothlyTabElement, old: HTMLSmoothlyTabElement) {\n\t\tif (old)\n\t\t\told.open = false\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host style={{ \"--tabs\": `${this.tabs.length}` }}>\n\t\t\t\t<slot></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > * {\n\tmargin: auto;\n\tmax-width: 1200px;\n\twidth: 100%;\n}\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-tabs-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTabsDemo {\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-tabs>\n\t\t\t\t<smoothly-tab label=\"test1\" open>\n\t\t\t\t\tHello world!\n\t\t\t\t</smoothly-tab>\n\t\t\t\t<smoothly-tab label=\"test2\">this is a test message!</smoothly-tab>\n\t\t\t\t<smoothly-tab label=\"test3\">this is a test message again!</smoothly-tab>\n\t\t\t</smoothly-tabs>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n:host > :first-child {\n\tmargin-top: 0.2rem;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\nimport { Color } from \"../../../model\"\n\n@Component({\n\ttag: \"smoothly-theme-color\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeColor {\n\t@Prop() color: Color\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t{this.color}\n\t\t\t\t{([\"tint\", \"color\", \"shade\"] as const).map(variant => (\n\t\t\t\t\t<smoothly-theme-color-variant\n\t\t\t\t\t\ttitle={`${this.color} ${variant}`}\n\t\t\t\t\t\tcolor={this.color}\n\t\t\t\t\t\tvariant={variant}></smoothly-theme-color-variant>\n\t\t\t\t))}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\twidth: 3em;\n\theight: 3em;\n\tfont-weight: 900;\n}\n\n:host[color][variant=color] {\n\tbackground: rgb(var(--smoothly-color));\n}\n:host[color][variant=tint] {\n\tbackground: rgb(var(--smoothly-color-tint));\n}\n:host[color][variant=shade] {\n\tbackground: rgb(var(--smoothly-color-shade));\n}\n","import { Component, Prop } from \"@stencil/core\"\nimport { Color } from \"../../../../model\"\n\n@Component({\n\ttag: \"smoothly-theme-color-variant\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeColorVariant {\n\t@Prop({ reflect: true }) color: Color\n\t@Prop({ reflect: true }) variant: \"shade\" | \"tint\" | \"color\" = \"color\"\n\trender() {\n\t\treturn \"Aa\"\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(3, 1fr);\n\trow-gap: 1em;\n\tcolumn-gap: 1em;\n\twidth: fit-content;\n}\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-theme-colors\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeColors {\n\trender() {\n\t\treturn (\n\t\t\t[\n\t\t\t\t\"primary\",\n\t\t\t\t\"secondary\",\n\t\t\t\t\"tertiary\",\n\t\t\t\t\"success\",\n\t\t\t\t\"warning\",\n\t\t\t\t\"danger\",\n\t\t\t\t\"light\",\n\t\t\t\t\"medium\",\n\t\t\t\t\"dark\",\n\t\t\t\t\"default\",\n\t\t\t] as const\n\t\t).map(color => <smoothly-theme-color color={color}></smoothly-theme-color>)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\twidth: 50%;\n\tmargin: auto;\n\tflex-direction: column;\n\tgap: 2em;\n\tmargin-top: 2em;\n}\n\n:host>smoothly-theme-picker {\n\twidth: 20em;\n}\n\n:host>span {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: 10em;\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-theme-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeDemo {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Theme</h2>\n\t\t\t\t<smoothly-theme-picker>\n\t\t\t\t\t<smoothly-item selected value=\"assets/style/smoothly.css\">\n\t\t\t\t\t\tSmoothly\n\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t<smoothly-item value=\"https://app.issuefab.com/assets/style/index.css\">Issuefab</smoothly-item>\n\t\t\t\t\t<smoothly-item value=\"https://app.proquse.com/assets/style/index.css\">Proquse</smoothly-item>\n\t\t\t\t\t<smoothly-item value=\"https://app.weekmeter.com/assets/style/index.css\">Weekmeter</smoothly-item>\n\t\t\t\t\t<smoothly-item value=\"https://dash.pax2pay.app/p2pdash.css\">Pax2Pay Dashboard</smoothly-item>\n\t\t\t\t\t<smoothly-item value=\"https://ui.pax2pay.app/assets/style/pax2pay.css\">Pax2Pay Portal</smoothly-item>\n\t\t\t\t\t<smoothly-item value=\"https://theme.payfunc.com/intergiro/index.css\">Intergiro Monitor</smoothly-item>\n\t\t\t\t\t<smoothly-item value=\"https://theme.payfunc.com/light/index.css\">Payfunc Light</smoothly-item>\n\t\t\t\t\t<smoothly-item value=\"https://theme.payfunc.com/dark/index.css\">Payfunc Dark</smoothly-item>\n\t\t\t\t</smoothly-theme-picker>\n\t\t\t\t<span>\n\t\t\t\t\t<smoothly-theme-colors />\n\t\t\t\t\t<smoothly-theme-guide />\n\t\t\t\t</span>\n\t\t\t\t<smoothly-button type=\"link\" link=\"/redirect\">\n\t\t\t\t\tTo redirect\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button type=\"link\" link=\"/redirect\">\n\t\t\t\t\tTo /redirect\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button type=\"link\" link={new URL(\"/redirect\", window.location.origin).href}>\n\t\t\t\t\tTo new URL(\"redirect\")\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button type=\"link\" link=\"redirect/nested\">\n\t\t\t\t\tTo redirect nested\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",null,"import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-theme-guide\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeColors {\n\trender() {\n\t\treturn [\n\t\t\t<smoothly-display>\n\t\t\t\tTint is used as background to highlight, for example hovering an item in the select menu.\n\t\t\t</smoothly-display>,\n\t\t\t<br />,\n\t\t\t<smoothly-display>\n\t\t\t\tColor is used as a normal background or as a background to show that something is selected, for example a\n\t\t\t\tselected item in the select menu.\n\t\t\t</smoothly-display>,\n\t\t\t<br />,\n\t\t\t<smoothly-display>\n\t\t\t\tShade is used as border and for symbols in buttons. It works as a semi-low contrast against color and tint.\n\t\t\t</smoothly-display>,\n\t\t\t<br />,\n\t\t\t<smoothly-display>\n\t\t\t\tOne can use the {\"<smoothly-color>\"} component to switch between what color set is used.{\" \"}\n\t\t\t</smoothly-display>,\n\t\t\t<br />,\n\t\t]\n\t}\n}\n",null,"import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-theme-picker\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemePicker {\n\t@Prop() element = \"smoothly-css\"\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-input-select\n\t\t\t\t\tname=\"theme\"\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\tconst element = document.querySelector(`#${this.element}`)\n\t\t\t\t\t\tif (element instanceof HTMLLinkElement && typeof e.detail.theme == \"string\")\n\t\t\t\t\t\t\telement.href = e.detail.theme\n\t\t\t\t\t}}>\n\t\t\t\t\t<label slot=\"label\">Select theme</label>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</smoothly-input-select>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host{\n\tdisplay: inline-block;\n\tborder: none;\n}\n:host > button {\n\tborder: solid white 0.5px;\n\tdisplay: flex;\n\tpadding: 0.6em;\n\tjustify-content: center;\n\tfont-size: 110%;\n\tfont-weight: 400;\n\tcolor: rgb(var(--smoothly-default-tint));\n\tbackground-color: rgb(var(--smoothly-default-shade));\n}\n:host([shape=rounded]) {\n\tborder-radius: 0.6em;\n}\n:host([shape=rounded]) > button {\n\tborder-radius: 0.5em;\n}\n:host([selected]) > button {\n\tcolor: rgb(var(--smoothly-light-contrast));\n}\n::slotted(smoothly-icon) {\n\tstroke: rgb(var(--smoothly-default-contrast));\n\tfill: rgb(var(--smoothly-default-contrast));\n\tfont-size: 110%;\n}\n:host(:not([selected])) > ::slotted(smoothly-icon) {\n\tcolor: rgb(var(--smoothly-default-tint));\n\tfill:rgb(var(--smoothly-default-tint));\n}\n:host([disabled]) {\n\topacity: 0.5;\n\tpointer-events: none;\n}\n","import { Component, h, Listen, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-toggle\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyToggle {\n\t@Prop({ mutable: true, reflect: true }) selected = false\n\t@Prop({ reflect: true }) shape: \"rounded\"\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop() name: string\n\t@Prop() value?: any\n\n\t@Listen(\"click\")\n\tonClick(e: UIEvent) {\n\t\tthis.selected = !this.selected\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<button>\n\t\t\t\t<slot name=\"icon-slot\"></slot>\n\t\t\t\t<slot>{this.name}</slot>\n\t\t\t</button>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\twidth: 3.6em;\n\theight: 1.8em;\n}\n:host > button {\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tposition: relative;\n\tcursor: pointer;\n\tborder: none;\n\tborder-radius: 3em;\n\tbackground-color: rgb(var(--smoothly-color));\n}\n:host > button:hover {\n\tbackground-color: rgb(var(--smoothly-color-tint));\n}\n:host > button > smoothly-icon {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\talign-items: center;\n\tposition: absolute;\n\tleft: 0;\n\tfill: rgb(var(--smoothly-color-contrast));\n\tstroke: rgb(var(--smoothly-color-contrast));\n\tfont-size: 1.2em;\n\ttransition: 100ms ease-in-out;\n}\n:host([selected][checkmark]) > button > smoothly-icon{\n\tfill: rgb(var(--smoothly-success-contrast));\n\tstroke: rgb(var(--smoothly-success-contrast));\n}\n:host([selected][checkmark]) > button {\n\tbackground-color: rgb(var(--smoothly-success-color));\n}\n:host([selected][checkmark]) > button:hover{\n\tbackground-color: rgb(var(--smoothly-success-tint));\n}\n:host([selected]) > button > smoothly-icon {\n\ttransform: translateX(100%);\n}\n:host([size=tiny]) {\n\twidth: 2.4em;\n\theight: 1.2em;\n}\n:host([size=small]) {\n\twidth: 3.05em;\n\theight: 1.5em;\n}\n:host([size=large]) {\n\twidth: 5.2em;\n\theight: 2.5em;\n}\n:host([size=tiny]) > button > smoothly-icon {\n\tfont-size: .8em;\n}\n:host([size=small]) > button > smoothly-icon {\n\tfont-size: 1em;\n}\n:host([size=large]) > button > smoothly-icon {\n\tfont-size: 1.75em;\n}\n","import { Component, Event, EventEmitter, h, Host, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-toggle-switch\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyToggleSwitch {\n\t@Prop({ reflect: true }) checkmark = true\n\t@Prop({ mutable: true, reflect: true }) selected = false\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) size: \"tiny\" | \"small\" | \"default\" | \"large\" = \"default\"\n\t@Prop({ reflect: true }) color: Color = \"medium\"\n\t@Prop({ reflect: true }) fill: Fill = \"clear\"\n\t@Event() smoothlyToggleSwitchChange: EventEmitter<boolean>\n\n\thandleClick() {\n\t\tthis.selected = !this.selected\n\t\tthis.smoothlyToggleSwitchChange.emit(this.selected)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<button disabled={this.disabled} onClick={() => this.handleClick()}>\n\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\tcolor={this.color}\n\t\t\t\t\t\tname={!this.checkmark ? \"ellipse\" : this.selected ? \"checkmark-circle\" : \"close-circle\"}\n\t\t\t\t\t\tfill=\"clear\"\n\t\t\t\t\t\tclass={{ selected: this.selected }}></smoothly-icon>\n\t\t\t\t</button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host>div {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(5, max-content);\n\tgap: 1em;\n}\n\n:host>div>span>p {\n\tmargin: 0;\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-toggle-switch-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyToggleSwitchDemo {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h4>Toggle switches</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<p>Checkmark</p>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Tiny</p>\n\t\t\t\t\t\t<smoothly-toggle-switch disabled={false} size=\"tiny\"></smoothly-toggle-switch>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Small</p>\n\t\t\t\t\t\t<smoothly-toggle-switch disabled={false} size=\"small\"></smoothly-toggle-switch>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Standard</p>\n\t\t\t\t\t\t<smoothly-toggle-switch disabled={false}></smoothly-toggle-switch>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Large</p>\n\t\t\t\t\t\t<smoothly-toggle-switch disabled={false} size=\"large\"></smoothly-toggle-switch>\n\t\t\t\t\t</span>\n\t\t\t\t\t<p>Colors checkmark</p>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Danger</p>\n\t\t\t\t\t\t<smoothly-toggle-switch color=\"danger\" disabled={false} size=\"small\"></smoothly-toggle-switch>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Primary color</p>\n\t\t\t\t\t\t<smoothly-toggle-switch color=\"primary\" disabled={false} size=\"small\"></smoothly-toggle-switch>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Secondary color</p>\n\t\t\t\t\t\t<smoothly-toggle-switch color=\"secondary\" disabled={false} size=\"small\"></smoothly-toggle-switch>\n\t\t\t\t\t</span>\n\t\t\t\t\t<p></p>\n\t\t\t\t\t<p>Colors no checkmark</p>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Danger</p>\n\t\t\t\t\t\t<smoothly-toggle-switch\n\t\t\t\t\t\t\tcheckmark={false}\n\t\t\t\t\t\t\tcolor=\"danger\"\n\t\t\t\t\t\t\tdisabled={false}\n\t\t\t\t\t\t\tsize=\"small\"></smoothly-toggle-switch>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Primary color</p>\n\t\t\t\t\t\t<smoothly-toggle-switch\n\t\t\t\t\t\t\tcheckmark={false}\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\tdisabled={false}\n\t\t\t\t\t\t\tsize=\"small\"></smoothly-toggle-switch>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Secondary color</p>\n\t\t\t\t\t\t<smoothly-toggle-switch\n\t\t\t\t\t\t\tcheckmark={false}\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\tdisabled={false}\n\t\t\t\t\t\t\tsize=\"small\"></smoothly-toggle-switch>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tborder-radius: 3px;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host[disabled] {\n\topacity: 0.5;\n}\n:host > button {\n\tborder-color: transparent;\n\tbackground-color: transparent;\n\tpadding: 0.2em 0.3em;\n\tfont-size: 110%;\n\tfont-weight: 400;\n}\n:host:not([disabled]):hover,\n:host:not([disabled]):focus,\n:host:not([disabled]):active {\n\tborder-color: var(--smoothly-trigger-border);\n}\n:host[expand=full] > button,\n:host[expand=block] > button {\n\twidth: 100%;\n}\n:host[expand=full] {\n\tborder-left: none;\n\tborder-right: none;\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill, Trigger } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-trigger\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTrigger {\n\t@Prop({ reflect: true }) color: Color | undefined\n\t@Prop({ reflect: true }) fill: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) type: \"link\" | \"button\" = \"button\"\n\t@Prop() name: string\n\t@Prop() value?: any\n\t@Event() trigger: EventEmitter<Trigger>\n\n\t@Listen(\"click\")\n\tonClick(e: UIEvent) {\n\t\tthis.trigger.emit({ name: this.name, value: this.value })\n\t\te.stopPropagation()\n\t\te.preventDefault()\n\t}\n\trender() {\n\t\tlet result: HTMLElement\n\t\tswitch (this.type) {\n\t\t\tcase \"link\":\n\t\t\t\tresult = this.disabled ? (\n\t\t\t\t\t<slot></slot>\n\t\t\t\t) : (\n\t\t\t\t\t<a onClick={e => this.onClick(e)}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</a>\n\t\t\t\t)\n\t\t\t\tbreak\n\t\t\tcase \"button\":\n\t\t\t\tresult = (\n\t\t\t\t\t<button disabled={this.disabled} name={this.name}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</button>\n\t\t\t\t)\n\t\t\t\tbreak\n\t\t}\n\t\treturn result\n\t}\n}\n"],"mappings":"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CA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MA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","ignoreList":[]}
|