{"_id":"@believablecreations/ngx-focus-point","_rev":"25-8909067ba9981dd22ca2a73d798e958e","name":"@believablecreations/ngx-focus-point","dist-tags":{"latest":"22.1.0"},"versions":{"15.0.0":{"name":"@believablecreations/ngx-focus-point","version":"15.0.0","author":{"url":"Leo Creer","name":"Believable Creations, Inc"},"license":"MIT","_id":"@believablecreations/ngx-focus-point@15.0.0","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://github.com/believablecreations/believablecreations#readme","bugs":{"url":"https://github.com/believablecreations/believablecreations/issues"},"dist":{"shasum":"efa50b9b33d957c50e462b6a0afea848d1671676","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-15.0.0.tgz","fileCount":22,"integrity":"sha512-A8DMlLRUOPi78mOt1tZLcflwHugKu5RvFZ5eg69HAJbAdgwg/blRC1R7gjtXmwKTErR4+iJYruGKsdEDNk6BFA==","signatures":[{"sig":"MEUCIAjAdWBHqm8t2Ndv8DDQia6fweb+hK4RlBdiJqGiH5L1AiEAo7/JkPBzfaoKG4UgzC2dn3QTAn3nidC9ST+OoIDPJFs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjeuTWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoxWQ//SckHUpMnQ+ZjJ1+IxkdJmnj4uV3UkRq7ycl4w1850ZJy9+83\r\n/yJuk1sXPMG/NdLYPFwGaNIaz03dvsaqIk2CrOsDZ6A6tpj5/hrFOmTT8Mt7\r\nW58iz/7zEX0CV8bH/3Qej0m4Rp9CmhPViN0hIBxC6KgbrTf5AaslJC/GaB03\r\nDmiV2SLKoOwuDxUSv4kWKzioZXxLOgF+42H/zxEUIiUs+nzYP4QAnxt38AkI\r\n/ZZy99ok3txzLiaUcLrfKkqYNJ8zyIb/QRvxJP+j92ad/hjhoTyiPgJL91Yx\r\n2ooToVE8icz0RuQ+feLa8dSnO5ZJwHXjcy362rgrw5AQYMdxDBSdQhOJ3Sj5\r\nSF1xSmTPRwn4Ipsai6CL5ROicTY10Bh4B1A9SmCG64Y+7TPT1BxsSk1Fgphg\r\naCfIVtIwF+coYYv4VR11oaKM0DhOrLDewKN5DtndNvnCJ5MaCcnCy+teqsFy\r\ndc2l1sVKuE0hW4X5BxpHFEBexmaO1sPbHHluaJBIEUsCwLpVBH5sQceiKtGF\r\nt9ZYYhQ+rwB/JjMRS7yBAG3rCgEAeKe7/o+S+TTPC+NavMqIYWfkWm49+MOD\r\nX4d9NviL4ThHkPvFfV5V5Qqgj+bE0sJD0D7vfNoVtE2EWBErCgQA1UWCL92C\r\nKcFdR/qK7d6K7rB5TRifv3pme9KOSdMlgwo=\r\n=rVhz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","es2020":"fesm2020/believablecreations-ngx-focus-point.mjs","module":"fesm2015/believablecreations-ngx-focus-point.mjs","esm2020":"esm2020/believablecreations-ngx-focus-point.mjs","exports":{".":{"node":"./fesm2015/believablecreations-ngx-focus-point.mjs","types":"./index.d.ts","es2015":"./fesm2015/believablecreations-ngx-focus-point.mjs","es2020":"./fesm2020/believablecreations-ngx-focus-point.mjs","default":"./fesm2020/believablecreations-ngx-focus-point.mjs","esm2020":"./esm2020/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"e7c4f9960ae83039f8b95fb40e008413df2fb0cb","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"fesm2015":"fesm2015/believablecreations-ngx-focus-point.mjs","fesm2020":"fesm2020/believablecreations-ngx-focus-point.mjs","repository":{"url":"git+https://github.com/believablecreations/believablecreations.git","type":"git"},"_npmVersion":"8.19.2","description":"Websites don't have a single layout anymore. The space you have for an image may be portrait on a laptop, landscape on a tablet, and square on a mobile - particularly if you're using a full-screen image.","directories":{"lib":"lib"},"sideEffects":false,"_nodeVersion":"18.12.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.5.7","@angular/core":"^14.0.0","@angular/common":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_15.0.0_1668998358090_0.8070843639502836","host":"s3://npm-registry-packages"}},"15.0.1":{"name":"@believablecreations/ngx-focus-point","version":"15.0.1","_id":"@believablecreations/ngx-focus-point@15.0.1","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://github.com/believablecreations/believablecreations#readme","bugs":{"url":"https://github.com/believablecreations/believablecreations/issues"},"dist":{"shasum":"a10c3771229a6c44d7ed6e8f5f13396fdb443549","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-15.0.1.tgz","fileCount":22,"integrity":"sha512-eBwpmyUe4cNGMKftlP/P+QIND2jjOxVyk1VE5EGzSP+dBXu7i3UR+iEvQWgyRCVZ+CXQB2bE9XN68m6vRATY7Q==","signatures":[{"sig":"MEUCIQCx2DeFPv0uHS5ZfzgSwLt+72ts35GGo+2K5aAWhpZ9+wIgWxMphYGg7rrrhEZN9qIWxQFuHU9W9oHb3KgAmlq59p4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjeucEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWPBAAnvRJ2S2LMF5OcIqo2Caz24f23mNaw8ZN/DYR+XWi3cNTGgWX\r\n4nmpEBhshsHCjEklmqJ16e+nqtM1Ev17FvPzU3Kj1W/bYV2CDN17el64pN4l\r\nPf7hRHVuHi4J5vqWQO9EXndW55rkD84FlmgDOjPIEiXkNJQeObANjwQYP3de\r\nMpEJxLZvFMBecWUr3BcBCz4j/w5dadRk82fcwAxJmVYIpGBgGEjeojjCN8gA\r\nLg1zszW9WdOyORqZYQCkxXv5Xodbz9gMfO2IKw6y0IxC6pimEJzjPOLJiUsH\r\ntErB2JlZp+YaXeDjli6SnHeE1Tn+272VQotQCc/UYUF6/fQYltqJ40ezTlVJ\r\nXIyhbWCMDAl8YTKYyIZykvbGjtxKdLIOdsoDLCddMJhJzpg+2kmTwOO0PM27\r\naMcYyJVeOfT1kWFJPYEjJIR/rWcRVqwViIZXcLRV+FDQPt7wmvxi2BO1D1Ls\r\nQ6mlzJEGCiGxP5fvZfFH9VD2Plj03cOx0asWYCASB4IpbbM/JNtNi+iHktVQ\r\nlnCL8OQeIMNBj1kOHtuO8vceQISb250XJquV8ywwVqkEYEfUh3ZhawoNvUQG\r\nC1UNVvlhGWWcp6c567FjttstiiN1WQ3rBcZWVMTrdpa28yiBPeZPygUUIh8e\r\n1b35bVUD4G5W+5uvK1ZIbEHOJLGvBshAGGs=\r\n=5nhy\r\n-----END PGP SIGNATURE-----\r\n"},"es2020":"fesm2020/believablecreations-ngx-focus-point.mjs","module":"fesm2015/believablecreations-ngx-focus-point.mjs","esm2020":"esm2020/believablecreations-ngx-focus-point.mjs","exports":{".":{"node":"./fesm2015/believablecreations-ngx-focus-point.mjs","types":"./index.d.ts","es2015":"./fesm2015/believablecreations-ngx-focus-point.mjs","es2020":"./fesm2020/believablecreations-ngx-focus-point.mjs","default":"./fesm2020/believablecreations-ngx-focus-point.mjs","esm2020":"./esm2020/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"e7c4f9960ae83039f8b95fb40e008413df2fb0cb","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"fesm2015":"fesm2015/believablecreations-ngx-focus-point.mjs","fesm2020":"fesm2020/believablecreations-ngx-focus-point.mjs","repository":{"url":"git+https://github.com/believablecreations/believablecreations.git","type":"git"},"_npmVersion":"8.19.2","description":"Websites don't have a single layout anymore. The space you have for an image may be portrait on a laptop, landscape on a tablet, and square on a mobile - particularly if you're using a full-screen image.","directories":{},"sideEffects":false,"_nodeVersion":"18.12.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.5.7","@angular/core":"^14.0.0","@angular/common":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_15.0.1_1668998916490_0.7764788326984366","host":"s3://npm-registry-packages"}},"16.0.1":{"name":"@believablecreations/ngx-focus-point","version":"16.0.1","_id":"@believablecreations/ngx-focus-point@16.0.1","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://github.com/believablecreations/believablecreations#readme","bugs":{"url":"https://github.com/believablecreations/believablecreations/issues"},"dist":{"shasum":"1b41d7cb0291ec003e77f731891bbad8b7d05703","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-16.0.1.tgz","fileCount":18,"integrity":"sha512-D3aTV3ab/CWZ4sNP/An6erO5bwFdap0Xesw0b7hBXCtmOCLOx6E2ueYE+XvnwxYT5f/n1mjRfHq+TsAdoVg5gA==","signatures":[{"sig":"MEQCIDS8Krmk+zJDCpFrIJcd5Y8uqEZViUouHFfk3v/OFQfDAiBedEAXEvdKTONqnlseTUTmnW/F13VKx1/pXa6XzieREA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134933},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"esm":"./esm2022/believablecreations-ngx-focus-point.mjs","types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs","esm2022":"./esm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"a501a14248764f7d1c5e05ba4ad76094247c4c73","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"repository":{"url":"git+https://github.com/believablecreations/believablecreations.git","type":"git"},"_npmVersion":"9.3.1","description":"Websites don't have a single layout anymore. The space you have for an image may be portrait on a laptop, landscape on a tablet, and square on a mobile - particularly if you're using a full-screen image.","directories":{},"sideEffects":false,"_nodeVersion":"18.13.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.5.7","@angular/core":"^15.0.1","@angular/forms":"^15.0.1","@angular/common":"^15.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_16.0.1_1688001218176_0.856951628357532","host":"s3://npm-registry-packages"}},"16.0.2":{"name":"@believablecreations/ngx-focus-point","version":"16.0.2","_id":"@believablecreations/ngx-focus-point@16.0.2","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://github.com/believablecreations/believablecreations#readme","bugs":{"url":"https://github.com/believablecreations/believablecreations/issues"},"dist":{"shasum":"8a1442a75350db65bb9974e03736408f7a74b685","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-16.0.2.tgz","fileCount":18,"integrity":"sha512-XXgL7GUT3MkJwr6YvOQksnxh9NjERHLRekdLmhh8X51pUlaqcAIIyRJoBAhYhL8LdIXEpsoRq2kmD9s0re3Emw==","signatures":[{"sig":"MEUCIG9glao+eXxhMpG338ztXKxErZKQ0yW9N62460ohigxYAiEA9q9Fsp2gd/vZ7w5k+3oKzrjHggI4rF8a73BQfbxXvVs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135138},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"esm":"./esm2022/believablecreations-ngx-focus-point.mjs","types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs","esm2022":"./esm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"a501a14248764f7d1c5e05ba4ad76094247c4c73","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"repository":{"url":"git+https://github.com/believablecreations/believablecreations.git","type":"git"},"_npmVersion":"9.3.1","description":"Websites don't have a single layout anymore. The space you have for an image may be portrait on a laptop, landscape on a tablet, and square on a mobile - particularly if you're using a full-screen image.","directories":{},"sideEffects":false,"_nodeVersion":"18.13.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.5.7","@angular/core":"^15.0.1","@angular/forms":"^15.0.1","@angular/common":"^15.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_16.0.2_1688013224380_0.4861494666639852","host":"s3://npm-registry-packages"}},"16.1.1":{"name":"@believablecreations/ngx-focus-point","version":"16.1.1","_id":"@believablecreations/ngx-focus-point@16.1.1","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://github.com/believablecreations/believablecreations#readme","bugs":{"url":"https://github.com/believablecreations/believablecreations/issues"},"dist":{"shasum":"79a2933eff09b71acbd850c21401d18f7667c402","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-16.1.1.tgz","fileCount":18,"integrity":"sha512-XE8n7C8kMiLKOtL7rd463YWmwqqPg/6Pd08Txx0JSULGanPhOd7p544nbh7kHpTktWeoecCWamwQtlex6q+/Cw==","signatures":[{"sig":"MEUCIQDs6M08dDR/XN1Qjb6WGpM8dS1CbtXpCoMU7dNLyhEsVgIganunPTWls+VQsH8vJShnpcJwfwpJ9SC2Qm6OINEigHM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135138},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"esm":"./esm2022/believablecreations-ngx-focus-point.mjs","types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs","esm2022":"./esm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"a501a14248764f7d1c5e05ba4ad76094247c4c73","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"repository":{"url":"git+https://github.com/believablecreations/believablecreations.git","type":"git"},"_npmVersion":"9.3.1","description":"Websites don't have a single layout anymore. The space you have for an image may be portrait on a laptop, landscape on a tablet, and square on a mobile - particularly if you're using a full-screen image.","directories":{},"sideEffects":false,"_nodeVersion":"18.13.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.5.0","@angular/core":"^16.1.3","@angular/forms":"^16.1.3","@angular/common":"^16.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_16.1.1_1688014960151_0.9690062307384095","host":"s3://npm-registry-packages"}},"16.1.2":{"name":"@believablecreations/ngx-focus-point","version":"16.1.2","_id":"@believablecreations/ngx-focus-point@16.1.2","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://github.com/believablecreations/believablecreations#readme","bugs":{"url":"https://github.com/believablecreations/believablecreations/issues"},"dist":{"shasum":"f34c6317e23e873fa7e1d8a0548df9320ae14675","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-16.1.2.tgz","fileCount":18,"integrity":"sha512-3HfQVb+imXkd4B/z44wWUfvxT577daLEY363tdxrsK3fs7uqDFRSOWzF+93MNJmyPHNSBh5fxf9Ak3I7uP+UQQ==","signatures":[{"sig":"MEUCIA5dj5a8x97b1rMFX9zsK6bJ1LnT4ntdNPL3vlSWeLS+AiEAxQXzizHTNyekUIfgSaMeQMMVoprZttZ7BVINREKpFGc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":136511},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"esm":"./esm2022/believablecreations-ngx-focus-point.mjs","types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs","esm2022":"./esm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f7eec3b4819d6ec2781675873f600bdeb077cc06","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"repository":{"url":"git+https://github.com/believablecreations/believablecreations.git","type":"git"},"_npmVersion":"9.3.1","description":"Websites don't have a single layout anymore. The space you have for an image may be portrait on a laptop, landscape on a tablet, and square on a mobile - particularly if you're using a full-screen image.","directories":{},"sideEffects":false,"_nodeVersion":"18.13.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.5.0","@angular/core":"^16.1.3","@angular/forms":"^16.1.3","@angular/common":"^16.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_16.1.2_1688018681140_0.3531977960201409","host":"s3://npm-registry-packages"}},"17.0.0":{"name":"@believablecreations/ngx-focus-point","version":"17.0.0","_id":"@believablecreations/ngx-focus-point@17.0.0","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://github.com/believablecreations/believablecreations#readme","bugs":{"url":"https://github.com/believablecreations/believablecreations/issues"},"dist":{"shasum":"bf344c2174c6fce649bcd792a6d8f9f830824d73","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-17.0.0.tgz","fileCount":16,"integrity":"sha512-nAyqxK1Ala35WPm77bTKLTrMInpoJqcA3TLG4CuZvDA9WV6kvrw47MGzvn6jbhMf07hBoLVtx1y4dOkL7vhyWw==","signatures":[{"sig":"MEYCIQCFC7823hp4LTL5ugK1wyeSbRhBXAq/B9hMhg1mCwQ20gIhAJUDU/YoibJFxgTZ0BTWkBc5cngME6iT/Kt9yIi47IU9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":138164},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"esm":"./esm2022/believablecreations-ngx-focus-point.mjs","types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs","esm2022":"./esm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"d9bc64b970788c7e2d3a96f1ea780edd78be3e5a","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"repository":{"url":"git+https://github.com/believablecreations/believablecreations.git","type":"git"},"_npmVersion":"9.5.0","description":"Websites don't have a single layout anymore. The space you have for an image may be portrait on a laptop, landscape on a tablet, and square on a mobile - particularly if you're using a full-screen image.","directories":{},"sideEffects":false,"_nodeVersion":"18.15.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.5.0","@angular/core":"^16.0.0","@angular/forms":"^16.0.0","@angular/common":"^16.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_17.0.0_1704844223736_0.8808855570252889","host":"s3://npm-registry-packages"}},"17.0.1":{"name":"@believablecreations/ngx-focus-point","version":"17.0.1","_id":"@believablecreations/ngx-focus-point@17.0.1","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://github.com/believablecreations/believablecreations#readme","bugs":{"url":"https://github.com/believablecreations/believablecreations/issues"},"dist":{"shasum":"6475ec18ecd82b91d0d51e7eba153f009d4f0a4f","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-17.0.1.tgz","fileCount":16,"integrity":"sha512-w5k0sUGNcxfcEnfEfPQtbAJhW4TR7d26k2z8AdxGWkya2qpU3tXMztKZsRf2IFGbFTA7fhd+dt+3Qb6y0DVR2w==","signatures":[{"sig":"MEYCIQDDxAkvX9LpnOADQlu5muuKZBqBUICoRXWqIAgX1cDVoQIhAN/zhFarRp2ESCnAcSjhLzFZAyqAaDADVVfa5GUmGnNK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":145268},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"esm":"./esm2022/believablecreations-ngx-focus-point.mjs","types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs","esm2022":"./esm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"3df5086bac892c2cd6e02690d979f1be3319bdbe","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"repository":{"url":"git+https://github.com/believablecreations/believablecreations.git","type":"git"},"_npmVersion":"9.5.0","description":"This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.0.0.","directories":{},"sideEffects":false,"_nodeVersion":"18.15.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.5.0","@angular/core":"^17.0.0","@angular/forms":"^17.0.0","@angular/common":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_17.0.1_1709273541519_0.21702020118467158","host":"s3://npm-registry-packages"}},"17.0.2":{"name":"@believablecreations/ngx-focus-point","version":"17.0.2","_id":"@believablecreations/ngx-focus-point@17.0.2","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://github.com/believablecreations/believablecreations#readme","bugs":{"url":"https://github.com/believablecreations/believablecreations/issues"},"dist":{"shasum":"e0b09674dc495575ab4eced540f68d2bf0cd917a","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-17.0.2.tgz","fileCount":16,"integrity":"sha512-ZvMwj8j6HJItrhqgHouSN30Igq9qKAX92CS3erfMoA3tjPLifTgkQOtNQgP84ta2eaaArs3f0/lSZ0MTRL5wQQ==","signatures":[{"sig":"MEYCIQD2TBdyjNFAmGdoZX7UsoYDVYhiKI5lPVHRM8H7ic1zYAIhANobbXgH5hwLhCQnsQJd47OQ6x7WavonQVh/+7BH46FD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146358},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"esm":"./esm2022/believablecreations-ngx-focus-point.mjs","types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs","esm2022":"./esm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"3535bd3a88abf9aa8b29b275904e36a23a99a641","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"repository":{"url":"git+https://github.com/believablecreations/believablecreations.git","type":"git"},"_npmVersion":"9.8.1","description":"This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.0.0.","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.5.0","@angular/core":"^17.0.0","@angular/forms":"^17.0.0","@angular/common":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_17.0.2_1711641410119_0.10920370029793713","host":"s3://npm-registry-packages"}},"19.0.0":{"name":"@believablecreations/ngx-focus-point","version":"19.0.0","_id":"@believablecreations/ngx-focus-point@19.0.0","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://github.com/believablecreations/believablecreations#readme","bugs":{"url":"https://github.com/believablecreations/believablecreations/issues"},"dist":{"shasum":"74ebea21fc766ee45872d3da0b634e988c0e8692","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-19.0.0.tgz","fileCount":10,"integrity":"sha512-vgqbNLjeNf3b3db1EaIfV3EHht8vcFZsQfeXS3vbY/mwJqOhFdMU03ZU2MFNv/PYDddd2a1eM1yHGMs0Uz45XQ==","signatures":[{"sig":"MEQCIFIaXOFYmaoCRRyM9c5MHDAWDQNgz8rkPoduPmR5RkSFAiAVT96CCk9lg6mlRogdOpMxxBv52Mh/rvm8IC0/U/Ztog==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":72763},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"438567011a42d3dc514e1ec6834443403599cf42","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"repository":{"url":"git+https://github.com/believablecreations/believablecreations.git","type":"git"},"_npmVersion":"11.0.0","description":"**ngx-focus-point** is the ultimate Angular package for keeping your images (and soon videos!) looking flawless on any screen. With the power to **define a focus point, zoom, and crop** your images, ngx-focus-point ensures that your content always stays i","directories":{},"sideEffects":false,"_nodeVersion":"23.5.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","@angular/core":"^19.0.0","@angular/forms":"^19.0.0","@angular/common":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_19.0.0_1735263464855_0.8449612965131612","host":"s3://npm-registry-packages-npm-production"}},"19.0.1":{"name":"@believablecreations/ngx-focus-point","version":"19.0.1","keywords":["Angular Package","software packages","Angular image tools","ngx-focus-point","image cropping","image resizing","responsive design tools","YouTube iframe"],"author":{"name":"Believable Creaitons Authors"},"license":"MIT","_id":"@believablecreations/ngx-focus-point@19.0.1","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://believablecreations.com/blog/article/ngx-focus-point","dist":{"shasum":"70030fd8c38ced88348bce92a417ea5521990c0d","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-19.0.1.tgz","fileCount":10,"integrity":"sha512-Ajv+b9auClg3CC1CXzg5cO/W+ZjYb+w7mv2bqJGUCcBG3xXQwf2XsrAPWirwQXxJ+xF4P0x/pqMUYjAePEROow==","signatures":[{"sig":"MEUCIQCs4TEyF7iHn9vyoTMgO+5Zhp+Mwbuyecax9z0JeOppowIgfLo+K5u/ET7u/iWUeSF7N/ba8kpsutD6zd3sFectEA0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73197},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"41cc6faeeb41a111169eefb048ad3a6c54bdea01","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"_npmVersion":"11.0.0","description":"ngx-focus-point is a powerful Angular package for image focus, zoom, crop, and resizing. Perfect for building responsive web apps with YouTube iframe support coming soon!","directories":{},"sideEffects":false,"_nodeVersion":"23.5.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","@angular/core":"^19.0.0","@angular/forms":"^19.0.0","@angular/common":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_19.0.1_1736711195516_0.7208006315999651","host":"s3://npm-registry-packages-npm-production"}},"19.0.4":{"name":"@believablecreations/ngx-focus-point","version":"19.0.4","keywords":["responsive videos","responsive images","ai responsive videos","ai responsive images","ai crop","dynamic crop images","dynamic crop videos","responsive images on any device","ready for any aspect ratio","angular image focus","angular zoom","ngx-focus-point","video resizing over time","video timeline tool","video-select component","ngx-focus-point-video-timeline","ngx-focus-point-video-select","responsive design media tools","save storage costs with dynamic cropping","e-commerce image tools","social media video optimization"],"author":{"name":"Believable Creaitons Authors"},"license":"MIT","_id":"@believablecreations/ngx-focus-point@19.0.4","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://believablecreations.com/blog/article/ngx-focus-point","dist":{"shasum":"fc2c72f49edcf8ab123939d83dee7b4df1df169a","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-19.0.4.tgz","fileCount":18,"integrity":"sha512-j7hshT5kH2OUfvsZkuYruYLJ7n51WU3KahxpjhQ2zS4MJIz06bKfJfuQKmb8D8D2o7EzYD2wUr4xt0b7k7UnQg==","signatures":[{"sig":"MEYCIQCaqEXdYBxxLPW4hl/ROSzcriX1YVfaB90lCAfmukYF9QIhAM8nLyLkqOQ32tqUieOGGoktU5cujmwrRdWC10dp1LXo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170153},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f91e05494e5c54ea443fd9c892011833b0fb5746","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"_npmVersion":"11.0.0","description":"ngx-focus-point is a powerful Angular package for image focus, zoom, crop, and resizing. Perfect for building responsive web apps with YouTube iframe support coming soon!","directories":{},"sideEffects":false,"_nodeVersion":"23.5.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","@angular/core":"^19.0.0","@angular/forms":"^19.0.0","@angular/common":"^19.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_19.0.4_1737430601910_0.3332993272950011","host":"s3://npm-registry-packages-npm-production"}},"19.3.1":{"name":"@believablecreations/ngx-focus-point","version":"19.3.1","keywords":["focus","angular","video focus","image focus","ngx-focus-point","Angular Package","software packages","Angular image tools","image cropping","image resizing","responsive design tools","YouTube iframe"],"author":{"name":"Believable Creaitons Authors"},"license":"MIT","_id":"@believablecreations/ngx-focus-point@19.3.1","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://believablecreations.com/blog/article/ngx-focus-point","dist":{"shasum":"8f8f4d8c0db94ec593aa6eb4ecb6f2e2fa851df2","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-19.3.1.tgz","fileCount":18,"integrity":"sha512-uwe8b7pfhXJ46Ru4KVThb7nveGpMBJHCSXfHH9Krfj3ylxJqt0KV6DS3onVEGbnARbMBaRI2ZJeS9Gs1Q0fiYA==","signatures":[{"sig":"MEUCIQCQV6XezfitODFJwMQ2n6QnfSzeaoPqCRUH8PhxmxmW/gIgVu8m2qnq8V91dXk4Dew7wo0I4NTjixKIKdtGZle1go4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169814},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"b122029d1ef9ff128ab611777f07240d7b9d7eaa","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"_npmVersion":"10.9.2","description":"ngx-focus-point is a powerful Angular package for image focus, zoom, crop, and resizing. Perfect for building responsive web apps with YouTube iframe support coming soon!","directories":{},"sideEffects":false,"_nodeVersion":"22.13.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":">=6.0.0 <8.0.0","@angular/core":">=17.0.0 <21.0.0","@angular/forms":">=17.0.0 <21.0.0","@angular/common":">=17.0.0 <21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_19.3.1_1754675424539_0.889972433575291","host":"s3://npm-registry-packages-npm-production"}},"20.0.0":{"name":"@believablecreations/ngx-focus-point","version":"20.0.0","keywords":["focus","angular","video focus","image focus","ngx-focus-point","Angular Package","software packages","Angular image tools","image cropping","image resizing","responsive design tools","YouTube iframe"],"author":{"name":"Believable Creaitons Authors"},"license":"MIT","_id":"@believablecreations/ngx-focus-point@20.0.0","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://believablecreations.com/blog/article/ngx-focus-point","dist":{"shasum":"0856b3a7d76e96dc032eecfbfc3c99dac96425da","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-20.0.0.tgz","fileCount":5,"integrity":"sha512-0yyepVTR8C9sZs1QI1sUWeZgCnaJMn2CGeAL65TuEcelTfZ9t7+kEMt905WgqumLV7uM7qupUYx7iF3SmRr+/A==","signatures":[{"sig":"MEUCIQDyoXo3ZrxzqdwJKMtVj8ACLguSB8Pc6zlTJ3e2V3bNcgIgHSAbxhVM4QkqJg0BGLbSsDPGDvZnJkggLzeokWO6zew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222175},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"375986225f9bad158361c731d42d054bf0b1e08f","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"_npmVersion":"11.1.0","description":"ngx-focus-point is a powerful Angular package for image focus, zoom, crop, and resizing. Perfect for building responsive web apps with YouTube iframe support coming soon!","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":">=6.0.0 <8.0.0","@angular/core":">=17.0.0 <21.0.0","@angular/forms":">=17.0.0 <21.0.0","@angular/common":">=17.0.0 <21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_20.0.0_1762071861989_0.8228486766809353","host":"s3://npm-registry-packages-npm-production"}},"20.0.1":{"name":"@believablecreations/ngx-focus-point","version":"20.0.1","keywords":["focus","angular","video focus","image focus","ngx-focus-point","Angular Package","software packages","Angular image tools","image cropping","image resizing","responsive design tools","YouTube iframe"],"author":{"name":"Believable Creaitons Authors"},"license":"MIT","_id":"@believablecreations/ngx-focus-point@20.0.1","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://believablecreations.com/blog/article/ngx-focus-point","dist":{"shasum":"3b481a3a62ba8defa26b88f13b11560670d316bd","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-20.0.1.tgz","fileCount":6,"integrity":"sha512-fkTBIOaaudxVUjAk7Ga0zw8X20PD/iEmzAAha1CQ/og2+vUhd0myopmFZ0Wbc6OSdps8Fi+tgmMhnYRTGRK7jQ==","signatures":[{"sig":"MEUCIQD/cU+6C/yf9aEBmCpjAovk02DXn96tRhLhSuEr28LXQgIgYabexp/UOpm1OnG5PZ+Tt27UhfLXjtbxyZAMhBHwMLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244951},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"7cc8bfd0b32849a1b49670ee6ea9a307aabb4604","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"_npmVersion":"11.1.0","description":"ngx-focus-point is a powerful Angular package for image focus, zoom, crop, and resizing. Perfect for building responsive web apps with YouTube iframe support coming soon!","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":">=6.0.0 <8.0.0","@angular/core":">=17.0.0 <21.0.0","@angular/forms":">=17.0.0 <21.0.0","@angular/common":">=17.0.0 <21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_20.0.1_1762084890587_0.5329124442819753","host":"s3://npm-registry-packages-npm-production"}},"20.0.2":{"name":"@believablecreations/ngx-focus-point","version":"20.0.2","keywords":["focus","angular","video focus","image focus","ngx-focus-point","Angular Package","software packages","Angular image tools","image cropping","image resizing","responsive design tools","YouTube iframe"],"author":{"name":"Believable Creaitons Authors"},"license":"MIT","_id":"@believablecreations/ngx-focus-point@20.0.2","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://believablecreations.com/blog/article/ngx-focus-point","dist":{"shasum":"75171123e4b26cddf0691f7efc3671f9178bb602","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-20.0.2.tgz","fileCount":6,"integrity":"sha512-+lAO8xMDx56V9Wm5n9yvJZjVTz7uynwf94ii6fY5J8wMbgGR0YX+f8+2KyE3bVvlUBP8k3nlnowVFgJHIv3jeQ==","signatures":[{"sig":"MEUCIEFbvVlVivocxAg9RBuCragL+a/2CUgvLGxv7MUTAh1lAiEArCsqjW0ARgK0YCVBynvWoVnaRfFbK380T3p+0UC8GwQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":611558},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f9cbd6fb46b2dc202af64dca306b3078527c07b4","typings":"index.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"_npmVersion":"11.9.0","description":"Angular 20+ media focus components for responsive image crops, video focus over time, timeline editing, and YouTube iframe focus.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"tslib":"^2.8.1"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.8.0","@angular/core":">=20.0.0","@angular/forms":">=20.0.0","@angular/common":">=20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_20.0.2_1779325530915_0.7553767594680798","host":"s3://npm-registry-packages-npm-production"}},"21.0.0":{"name":"@believablecreations/ngx-focus-point","version":"21.0.0","keywords":["focus","angular","video focus","image focus","ngx-focus-point","Angular Package","software packages","Angular image tools","image cropping","image resizing","responsive design tools","YouTube iframe"],"author":{"name":"Believable Creaitons Authors"},"license":"MIT","_id":"@believablecreations/ngx-focus-point@21.0.0","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://believablecreations.com/blog/article/ngx-focus-point","dist":{"shasum":"f70746aa87f32648b2129014dfb871a52a7737f3","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-21.0.0.tgz","fileCount":6,"integrity":"sha512-1WNp5xNi5mmIdfM2ys/lvBoJyqgq+tYbTVDs5TDrSVtBteGRfoCbghedTiR5iXGydSUZPN9znIm526VKy+92yQ==","signatures":[{"sig":"MEUCIBv7khT3faTl6zXPfY+8UoZ7tsAZXGfri4UsqgX1n/BsAiEAyWjtTUbCdi24P6BBmpE7fZP+YQVq4etnxacV5YfNQp0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":612510},"type":"module","module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"types":"./types/believablecreations-ngx-focus-point.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"1481f4f738175d2b01ac6559927c22c32bafd783","typings":"types/believablecreations-ngx-focus-point.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"_npmVersion":"11.11.0","description":"Angular 21 media focus components for responsive image crops, video focus over time, timeline editing, and YouTube iframe focus.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","dependencies":{"tslib":"^2.8.1"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.8.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_21.0.0_1779326659305_0.02916309317336352","host":"s3://npm-registry-packages-npm-production"}},"21.0.1":{"name":"@believablecreations/ngx-focus-point","version":"21.0.1","keywords":["focus","angular","video focus","image focus","ngx-focus-point","Angular Package","software packages","Angular image tools","image cropping","image resizing","responsive design tools","YouTube iframe"],"author":{"name":"Believable Creaitons Authors"},"license":"MIT","_id":"@believablecreations/ngx-focus-point@21.0.1","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://believablecreations.com/blog/article/ngx-focus-point","dist":{"shasum":"52c702a881b294d5a687dbb1b5a934728d357412","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-21.0.1.tgz","fileCount":6,"integrity":"sha512-DSy0PpuMotBI4lKSDTN3CSFm3lfREhjkwc4G6t9/k27Jo3fGmz+A2mOkDkRdMu4RMJCPmiVX5HhfAJ0i9UjtpQ==","signatures":[{"sig":"MEUCIFFw/lLYlvAxmPD1T+ZYtTeorNWL06rxm9+m1ajzlWESAiEA32BAaMlu9oZbJP67FYAxvm6TAaxpgn3f8xRo3SnvnNU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":613984},"type":"module","module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"types":"./types/believablecreations-ngx-focus-point.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"1481f4f738175d2b01ac6559927c22c32bafd783","typings":"types/believablecreations-ngx-focus-point.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"_npmVersion":"11.11.0","description":"Angular 21 media focus components for responsive image crops, video focus over time, timeline editing, and YouTube iframe focus.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","dependencies":{"tslib":"^2.8.1"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.8.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_21.0.1_1779327251627_0.1120001953310561","host":"s3://npm-registry-packages-npm-production"}},"22.0.0":{"name":"@believablecreations/ngx-focus-point","version":"22.0.0","keywords":["focus","angular","video focus","image focus","ngx-focus-point","Angular Package","software packages","Angular image tools","image cropping","image resizing","responsive design tools","YouTube iframe"],"author":{"name":"Believable Creaitons Authors"},"license":"MIT","_id":"@believablecreations/ngx-focus-point@22.0.0","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"homepage":"https://believablecreations.com/blog/article/ngx-focus-point","dist":{"shasum":"562ae2c89b550689300dfd48b4c6db79971303dc","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-22.0.0.tgz","fileCount":6,"integrity":"sha512-MRmWodJvphLSfs1HfeHHNhq+CfQ9Y6na8eNvXh7FZiBfS20Lb0I/U72e5LYk9HrAY0xgZjtyfU+Oo2k805On+Q==","signatures":[{"sig":"MEUCIQC0yLiEpbP7iWQLZl6XnoR1clL3bRf/d7pakYg+sVF44QIgf7BAZWQ6jEbZRf+wHgxFOKIaUCZyFjOcFqZkOcTSQxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":611084},"type":"module","module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"types":"./types/believablecreations-ngx-focus-point.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"c55de1b2368a65ea1aec831124a129c9857da938","typings":"types/believablecreations-ngx-focus-point.d.ts","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"_npmVersion":"11.11.0","description":"Angular media focus components (compatible with Angular 20–23) for responsive image crops, video focus over time, timeline editing, and YouTube iframe focus.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","dependencies":{"tslib":"^2.8.1"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.8.0","@angular/core":">=20.0.0 <24.0.0","@angular/forms":">=20.0.0 <24.0.0","@angular/common":">=20.0.0 <24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-focus-point_22.0.0_1784229795258_0.3802077005540323","host":"s3://npm-registry-packages-npm-production"}},"22.1.0":{"_id":"@believablecreations/ngx-focus-point@22.1.0","dist":{"shasum":"4e711cff16b806dca9bfdbf934e1c6f9ac8e15bd","tarball":"https://registry.npmjs.org/@believablecreations/ngx-focus-point/-/ngx-focus-point-22.1.0.tgz","fileCount":6,"integrity":"sha512-ZUwo3fU+uXpnuXlEsciDhYP8cJEK5FdG466UHJLij568neJ2N02K37C9/A6CSSCR97QB2Xi8lio6d0k3QZqnXQ==","signatures":[{"sig":"MEYCIQDXWOpevkkJnu0nR4NGewn+4wVr99GoPED7bwjD9V+kKQIhAPxrYunKFZTUml4jyp66KFLl4QCrDXXlWPVL0c0IE15s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDUX8yKRt+tJ4rnj+xNUwdXWwSZG7/I5/4E8wLmolCqlQIhAMO957QeEHEuQC9A5D0XAB9GTf90HF3tsXhsiiOlvprv"}],"unpackedSize":922433},"name":"@believablecreations/ngx-focus-point","type":"module","_from":"file:/tmp/bc-cms-release-0.8.0/believablecreations-ngx-focus-point-22.1.0.tgz","author":{"name":"Believable Creaitons Authors"},"module":"fesm2022/believablecreations-ngx-focus-point.mjs","exports":{".":{"types":"./types/believablecreations-ngx-focus-point.d.ts","default":"./fesm2022/believablecreations-ngx-focus-point.mjs"},"./package.json":{"default":"./package.json"}},"license":"MIT","typings":"types/believablecreations-ngx-focus-point.d.ts","version":"22.1.0","_npmUser":{"name":"leocreer","email":"leo.creer@gmail.com"},"homepage":"https://believablecreations.com/blog/article/ngx-focus-point","keywords":["focus","angular","video focus","image focus","ngx-focus-point","Angular Package","software packages","Angular image tools","image cropping","image resizing","responsive design tools","YouTube iframe"],"_resolved":"/tmp/bc-cms-release-0.8.0/believablecreations-ngx-focus-point-22.1.0.tgz","_integrity":"sha512-ZUwo3fU+uXpnuXlEsciDhYP8cJEK5FdG466UHJLij568neJ2N02K37C9/A6CSSCR97QB2Xi8lio6d0k3QZqnXQ==","_npmVersion":"11.11.0","description":"Angular media focus components (compatible with Angular 20–23) for responsive image crops, video focus over time, timeline editing, and YouTube iframe focus.","directories":{},"maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"sideEffects":false,"_nodeVersion":"25.8.1","dependencies":{"tslib":"^2.8.1"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.8.0","@angular/core":">=20.0.0 <24.0.0","@angular/forms":">=20.0.0 <24.0.0","@angular/common":">=20.0.0 <24.0.0","@angular/platform-browser":">=20.0.0 <24.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ngx-focus-point_22.1.0_1789011273150_0.5548617929190274"}}},"time":{"created":"2022-11-21T02:39:18.089Z","modified":"2026-09-10T03:34:33.578Z","15.0.0":"2022-11-21T02:39:18.291Z","15.0.1":"2022-11-21T02:48:36.673Z","16.0.1":"2023-06-29T01:13:38.421Z","16.0.2":"2023-06-29T04:33:44.567Z","16.1.1":"2023-06-29T05:02:40.445Z","16.1.2":"2023-06-29T06:04:41.320Z","17.0.0":"2024-01-09T23:50:23.892Z","17.0.1":"2024-03-01T06:12:21.677Z","17.0.2":"2024-03-28T15:56:50.290Z","19.0.0":"2024-12-27T01:37:45.035Z","19.0.1":"2025-01-12T19:46:35.708Z","19.0.4":"2025-01-21T03:36:42.085Z","19.3.1":"2025-08-08T17:50:24.749Z","20.0.0":"2025-11-02T08:24:22.211Z","20.0.1":"2025-11-02T12:01:30.787Z","20.0.2":"2026-05-21T01:05:31.072Z","21.0.0":"2026-05-21T01:24:19.466Z","21.0.1":"2026-05-21T01:34:11.841Z","22.0.0":"2026-07-16T19:23:15.399Z","22.1.0":"2026-09-10T03:34:33.291Z"},"author":{"name":"Believable Creaitons Authors"},"license":"MIT","homepage":"https://believablecreations.com/blog/article/ngx-focus-point","keywords":["focus","angular","video focus","image focus","ngx-focus-point","Angular Package","software packages","Angular image tools","image cropping","image resizing","responsive design tools","YouTube iframe"],"description":"Angular media focus components (compatible with Angular 20–23) for responsive image crops, video focus over time, timeline editing, and YouTube iframe focus.","maintainers":[{"name":"leocreer","email":"leo.creer@gmail.com"}],"readme":"# ngx-focus-point\n\nAngular components (compatible with Angular 20–23) for responsive image focus, video focus over time, focus timeline editing, and YouTube iframe crops.\n\n`@believablecreations/ngx-focus-point` lets you upload one media source and store small focus metadata beside it. The components then crop, pan, zoom, and clamp the media at runtime so the important subject stays visible across wide, square, portrait, and custom containers.\n\n## Compatibility\n\n- Angular: `>=20.0.0 <24.0.0` (Angular 20, 21, 22, and 23)\n- RxJS: `^7.8.0`\n- Package style: standalone Angular components\n- Runtime dependency: `tslib`\n\nAngular 19 and earlier are not supported by this package line.\n\n## Documentation and Live Tools\n\n- Technical documentation: https://believablecreations.com/ngx-focus-point/technical-document\n- Image focus tool: https://believablecreations.com/ngx-focus-point\n- Video focus tool: https://believablecreations.com/ngx-focus-point/video\n- YouTube focus demo: https://believablecreations.com/ngx-focus-point/youtube\n\n## Installation\n\n```bash\nnpm i @believablecreations/ngx-focus-point\n```\n\n```bash\nyarn add @believablecreations/ngx-focus-point\n```\n\n## Exports\n\n```ts\nimport {\n  NgxFocusPointComponent,\n  NgxFocusPointSelectComponent,\n  NgxFocusPointVideoComponent,\n  NgxFocusPointVideoSelectComponent,\n  NgxFocusPointVideoTimelineComponent,\n  NgxFocusListComponent,\n  FocusPositionModel,\n  VideoPosition,\n  VideoPositions,\n  NgxFocusPointWorkerOptions,\n} from '@believablecreations/ngx-focus-point';\n```\n\n## Main Features\n\n- Responsive image and video focus with strict cover behavior.\n- Pixel-based positioning with clamped `translate3d(px, px, 0) scale(s)` transforms.\n- Static focus with `focusX`, `focusY`, and `scale`.\n- Video focus over time with timestamped focus points.\n- Animated video keyframes with `jump`, `from-previous`, and `to-next` modes.\n- Timeline tooling with waveform display, draggable focus points, timeline zoom, pan, JSON copy and paste, and style controls.\n- Video selector tooling for clicking or dragging the subject on a video or YouTube iframe.\n- Focus list tooling for reviewing, selecting, copying, and pasting focus point JSON.\n- YouTube iframe support with automatic 16:9 source-ratio handling.\n- Web Worker focus math with timeout and inline fallback options.\n- SSR-safe browser checks around DOM, video, canvas, and worker APIs.\n\n## Why It Saves Money\n\nResponsive media workflows often create and store multiple exports of the same asset: one image for wide desktop, another for square cards, another for portrait mobile, plus extra hand-cropped versions for campaigns or product listings. `ngx-focus-point` lets teams keep one high-quality source image or video and store focus metadata instead.\n\nThat can reduce:\n\n- Design and content-production time spent manually cropping assets for every breakpoint.\n- Storage costs from duplicated image and video variants.\n- Bandwidth waste from maintaining parallel renditions that only differ by crop.\n- QA time spent checking whether the subject is cut off in each aspect ratio.\n- Rework when layouts change, because the same source asset can be reframed dynamically.\n\nThe package also supports zoom through the `scale`/`s` value. That means a team can use one source asset, focus on the important subject, zoom in for tighter compositions, and still let the component clamp the crop so the container stays fully covered.\n\n## Coordinate Model\n\nFocus coordinates are normalized from `-1` to `1`.\n\n```ts\nexport interface FocusPositionModel {\n  x: number;\n  y: number;\n  w: number;\n  h: number;\n  s?: number;\n  animationMode?: 'jump' | 'from-previous' | 'to-next';\n  animationEasing?: 'linear' | 'ease-in' | 'ease-out' | 'ease-in-out';\n}\n\nexport interface VideoPosition {\n  x: number;\n  y: number;\n  w?: number;\n  h?: number;\n  s?: number;\n  time?: number;\n  animationMode?: 'jump' | 'from-previous' | 'to-next';\n  animationEasing?: 'linear' | 'ease-in' | 'ease-out' | 'ease-in-out';\n}\n```\n\n- `x: -1` is left, `x: 0` is center, and `x: 1` is right.\n- `y: -1` is bottom, `y: 0` is center, and `y: 1` is top.\n- `s` is scale. `1` is the normal cover crop; values above `1` zoom in.\n- `time` is video playback time in seconds.\n\n## Basic Image Usage\n\n```ts\nimport { Component } from '@angular/core';\nimport { NgxFocusPointComponent } from '@believablecreations/ngx-focus-point';\n\n@Component({\n  selector: 'app-hero-media',\n  standalone: true,\n  imports: [NgxFocusPointComponent],\n  template: `\n    <ngx-focus-point\n      class=\"hero-media\"\n      [focusX]=\"0.32\"\n      [focusY]=\"0.18\"\n      [scale]=\"1.16\"\n      animationSpeed=\"220ms\">\n      <img src=\"/assets/hero.jpg\" alt=\"Featured product\">\n    </ngx-focus-point>\n  `,\n})\nexport class HeroMediaComponent {}\n```\n\nGive the host component a real rendered size with CSS, layout, or aspect ratio:\n\n```css\n.hero-media {\n  display: block;\n  width: 100%;\n  aspect-ratio: 16 / 9;\n  overflow: hidden;\n}\n```\n\n## Video Focus Over Time\n\nPass focus keyframes with `time` values in seconds. The component listens to the nested video element's playback time and applies the correct point as the video plays.\n\n```ts\nimport { FocusPositionModel } from '@believablecreations/ngx-focus-point';\n\ntype VideoFocusPoint = FocusPositionModel & { time: number; id?: string };\n\nfocusKeyframes: VideoFocusPoint[] = [\n  {\n    x: -0.36,\n    y: 0.2,\n    w: 0,\n    h: 0,\n    s: 1.08,\n    time: 0,\n    animationMode: 'to-next',\n    animationEasing: 'ease-in-out',\n  },\n  {\n    x: 0.04,\n    y: 0.02,\n    w: 0,\n    h: 0,\n    s: 1.22,\n    time: 4.5,\n    animationMode: 'from-previous',\n    animationEasing: 'ease-out',\n  },\n  {\n    x: 0.52,\n    y: -0.18,\n    w: 0,\n    h: 0,\n    s: 1,\n    time: 9.8,\n  },\n];\n```\n\n```html\n<ngx-focus-point\n  class=\"video-crop\"\n  [focus]=\"focusKeyframes\"\n  [scale]=\"1\"\n  [debounceResizeUpdate]=\"15\"\n  animationSpeed=\"180ms\">\n  <video\n    src=\"/assets/product-demo.mp4\"\n    controls\n    muted\n    playsinline\n    preload=\"metadata\">\n  </video>\n</ngx-focus-point>\n```\n\nUse `[time]` when an external timeline or scrubber should seek the nested video:\n\n```html\n<ngx-focus-point\n  [focus]=\"focusKeyframes\"\n  [time]=\"playbackTime\"\n  [syncMediaTime]=\"true\">\n  <video src=\"/assets/product-demo.mp4\" controls playsinline></video>\n</ngx-focus-point>\n```\n\nSet `[syncMediaTime]=\"false\"` when another player controller owns seeking.\n\n## Focus Video Tool Components\n\nThe package includes building blocks for an authoring workflow:\n\n- `NgxFocusPointVideoSelectComponent`: wraps a video or YouTube iframe and emits normalized focus points from pointer input.\n- `NgxFocusPointVideoTimelineComponent`: renders waveform, playhead, time markers, draggable keyframes, keyframe settings, timeline zoom and pan, and timeline style controls.\n- `NgxFocusListComponent`: renders saved focus points and provides JSON copy and paste.\n\n```ts\nimport {\n  NgxFocusListComponent,\n  NgxFocusPointVideoSelectComponent,\n  NgxFocusPointVideoTimelineComponent,\n} from '@believablecreations/ngx-focus-point';\n```\n\n```html\n<section class=\"focus-editor\">\n  <ngx-focus-point-video-select\n    [time]=\"playbackTime\"\n    [focusPoints]=\"points\"\n    [selectedFocusPoint]=\"selectedPoint\"\n    (onFocus)=\"upsertPoint($event)\">\n    <video\n      src=\"/assets/source-video.mp4\"\n      controls\n      playsinline\n      preload=\"metadata\">\n    </video>\n  </ngx-focus-point-video-select>\n\n  <ngx-focus-list\n    [points]=\"points\"\n    [activePointId]=\"selectedPointId\"\n    (pointSelect)=\"selectPoint($event)\"\n    (pointsPaste)=\"replacePoints($event)\">\n  </ngx-focus-list>\n\n  <ngx-focus-point-video-timeline\n    [audioBuffer]=\"audioBuffer\"\n    [currentTime]=\"playbackTime\"\n    [duration]=\"duration\"\n    [playing]=\"playing\"\n    [selectionPoints]=\"points\"\n    [activeSelectionPointId]=\"selectedPointId\"\n    (play)=\"play()\"\n    (pause)=\"pause()\"\n    (timeUpdate)=\"setPlaybackTime($event)\"\n    (selectionPointSelect)=\"selectPoint($event)\"\n    (selectionPointUpdate)=\"updatePoint($event)\"\n    (selectionPointDelete)=\"deletePoint($event)\">\n  </ngx-focus-point-video-timeline>\n</section>\n```\n\n## YouTube Iframe Support\n\nYouTube embeds are detected when an iframe has a `youtube` class or a `youtube.com`, `youtube-nocookie.com`, or `youtu.be` source. The iframe is treated as a 16:9 source before focus and crop math runs.\n\n```html\n<ngx-focus-point [focusX]=\"0.18\" [focusY]=\"0.05\" [scale]=\"1.12\">\n  <iframe\n    class=\"youtube\"\n    src=\"https://www.youtube-nocookie.com/embed/VIDEO_ID?rel=0&controls=0&disablekb=1&fs=0&iv_load_policy=3&mute=1&autoplay=1&loop=1&playlist=VIDEO_ID&playsinline=1\"\n    title=\"YouTube video player\"\n    allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\">\n  </iframe>\n</ngx-focus-point>\n```\n\nYouTube still controls some overlays, branding, ads, context menus, and end-screen behavior. Deprecated params such as `modestbranding` and `showinfo` no longer remove that UI.\n\n## Worker Options\n\n`NgxFocusPointComponent` calculates image crops synchronously when the image loads or its container resizes, including offscreen slides. It uses intrinsic image dimensions and applies the first crop without a transition; `animationSpeed` controls subsequent focus and zoom changes. Lazy-loaded images remain supported without preloading every slide.\n\nVideo and iframe focus calculations can run in a Web Worker, with local compute as a fallback if the worker is unavailable, blocked, or too slow.\n\n```ts\nimport { NgxFocusPointWorkerOptions } from '@believablecreations/ngx-focus-point';\n\nworkerOptions: NgxFocusPointWorkerOptions = {\n  timeoutMs: 300,\n  allowInlineFallback: true,\n};\n```\n\n```html\n<ngx-focus-point\n  [focusX]=\"0\"\n  [focusY]=\"0\"\n  [scale]=\"1\"\n  [workerOptions]=\"workerOptions\">\n  <img src=\"/assets/hero.jpg\" alt=\"\">\n</ngx-focus-point>\n```\n\nOptions:\n\n- `timeoutMs`: max time to wait for a worker response before computing locally for that frame. Default: `300`.\n- `allowInlineFallback`: creates an inline Blob worker when the packaged worker cannot load. Default: `true`. Set to `false` for strict CSP environments.\n\n## Main Component API\n\n### `ngx-focus-point`\n\n| Input or output | Type | Description |\n| --- | --- | --- |\n| `[focus]` | `FocusPositionModel[]` | Keyframed focus data. Add `time` fields for video focus over time. |\n| `[focusX]`, `[focusY]` | `number` | Static focus coordinates from `-1` to `1`. |\n| `[scale]` | `number` | Zoom multiplier. |\n| `[time]` | `number` | External playback time used to seek nested videos. |\n| `[syncMediaTime]` | `boolean` | Syncs nested video current time to `[time]`. |\n| `[animationSpeed]` | `string` | CSS transform transition duration. Use `''` to disable. |\n| `[debounceResizeUpdate]` | `number` | Resize debounce in milliseconds. |\n| `[preservePanOnZoom]` | `boolean` | Preserves pan memory while zoom changes for the same focus. |\n| `[debug]` | `boolean` | Logs sizing and transform information. |\n| `[workerOptions]` | `NgxFocusPointWorkerOptions` | Configures worker timeout and inline fallback behavior. |\n| `(error)` | `Event` | Emits nested media load errors. |\n\n### `ngx-focus-point-video-select`\n\n| Input or output | Description |\n| --- | --- |\n| `[time]` | Playback time used to align the selector target. |\n| `[focusPoints]` | Existing points to display and animate between. |\n| `[selectedFocusPoint]` | Active point shown in the selector. |\n| `[scale]` | Scale stored on emitted focus points. |\n| `(onFocus)` | Emits normalized focus data with `x`, `y`, `w`, `h`, `s`, and `time`. |\n\n### `ngx-focus-point-video-timeline`\n\n| Input or output | Description |\n| --- | --- |\n| `[audioBuffer]` | Optional audio data for waveform rendering. |\n| `[currentTime]` | Current playback time in seconds. |\n| `[duration]` | Total media duration in seconds. |\n| `[zoom]` | Timeline zoom level. |\n| `[selectionPoints]` | Focus keyframes displayed on the timeline. |\n| `[activeSelectionPointId]` | Active keyframe id. |\n| `[frameRate]` | Keyboard frame-step rate. |\n| `[playing]` | Playback state. |\n| `(timeUpdate)` | Emits timeline seek changes. |\n| `(selectionPointSelect)` | Emits the selected keyframe. |\n| `(selectionPointUpdate)` | Emits edited or moved keyframe data. |\n| `(selectionPointDelete)` | Emits an id to delete. |\n| `(selectionPointClose)` | Emits when the keyframe settings panel closes. |\n| `(play)`, `(pause)` | Emits playback commands. |\n\n### `ngx-focus-list`\n\n| Input or output | Description |\n| --- | --- |\n| `[points]` | Focus point list. |\n| `[activePointId]` | Active focus point id. |\n| `(pointSelect)` | Emits the selected point. |\n| `(pointsPaste)` | Emits parsed replacement points from pasted JSON. |\n\n## Migration Notes\n\nCurrent package docs should use the pixel-mode API. Older examples that reference these inputs are obsolete:\n\n- `[actions]`\n- `[translateMode]`\n- `[edgeMode]`\n- `[panScaleMultiplier]`\n- `[panClampMultiplier]`\n- `[focusW]`\n- `[focusH]`\n- `[resetPanOnScaleChange]`\n\nUse `focusX`, `focusY`, `scale`, and `focus` keyframes instead.\n\n## Quick Links\n\n- Technical documentation: https://believablecreations.com/ngx-focus-point/technical-document\n- Image focus tool: https://believablecreations.com/ngx-focus-point\n- Video focus tool: https://believablecreations.com/ngx-focus-point/video\n- YouTube focus demo: https://believablecreations.com/ngx-focus-point/youtube\n\n## Build and Test\n\nFrom the Angular workspace:\n\n```bash\nnpm run build:ngx-focus-point:library\nnpm run test:ngx-focus-point:library\n```\n\n## Complete video focus editor (22.1.0)\n\nImport the standalone editor to embed the video tool's selector, synchronized\n16:9 / 1:1 / 9:16 / 21:9 previews, mobile preview, zoom, focus list with JSON\ncopy/paste, and timeline with timestamp, scale and animation controls:\n\n```ts\nimport {Component, signal} from '@angular/core';\nimport {\n  NgxFocusPointVideoEditorComponent,\n  VideoFocusPoint,\n} from '@believablecreations/ngx-focus-point';\n\n@Component({\n  selector: 'app-video-focus',\n  standalone: true,\n  imports: [NgxFocusPointVideoEditorComponent],\n  template: `\n    <ngx-focus-point-video-editor\n      [src]=\"videoUrl\"\n      [points]=\"points()\"\n      (pointsChange)=\"points.set($event)\"\n    />\n  `,\n})\nexport class VideoFocusEditor {\n  videoUrl = '/media/video.mp4';\n  points = signal<VideoFocusPoint[]>([]);\n}\n```\n\n- `src`: native video URL or YouTube URL. The caller owns source selection.\n- `points`: saved focus points (`x`, `y`, `time`, optional `w`, `h`, `s`,\n  `animationMode`, `animationEasing`, `id`). Coordinates use -1…1, with positive\n  Y upwards. Legacy points without IDs or dimensions are supported.\n- `pointsChange`: a complete `VideoFocusEditorPoint[]` after user edits, deletion,\n  clear, or JSON paste. Loading inputs does not emit or mark a host form dirty.\n  IDs are editor identity and may be omitted when saving to an existing API.\n- `muted`: defaults to `true`.\n- `waveform`: defaults to `true`; set `false` to avoid decoding audio for large\n  files. Missing/unavailable audio does not prevent timeline editing. The waveform\n  service currently fetches same-origin, blob, and data URLs only.\n- `playbackChange`: `{time, duration}` when seeking and periodically during playback.\n\nThe editor owns temporary UI state only. It does not read routes, localStorage,\napplication stores, or save to a server. Bind changes to your form and persist them\nthrough your existing save action. Save both animation fields to retain transitions.\nNative videos share one decoded playback source across all canvas previews;\nYouTube iframe video cannot be drawn into canvas previews.\n\nUse `--ngx-focus-editor-height` (default `820px`) and\n`--ngx-focus-editor-background` to customize the embedded workspace. Its layout\nadapts to its container width. The existing low-level\n`NgxFocusPointVideoSelectComponent`, `NgxFocusPointVideoTimelineComponent`, and\n`NgxFocusListComponent` remain exported for custom compositions.\n\nBefore publishing this version, build with the isolated `build-v20` toolchain to\npreserve Angular 20–23 compatibility. App CMS's media editor requires Focus Point\n22.1.0 or newer and API CMS support for the optional animation fields.\n\n### Smooth recorded video motion\n\nThe video editor's **Smooth motion** action filters hand jitter and reduces the\nrecording to keyframes connected by linear tweens. Choose Gentle, Balanced, or\nStrong; preview playback and use **Undo smoothing** to restore the last original\nrecording before making further edits. The action emits `pointsChange`; persistence\nstill belongs to the host's Save action. Existing jump/easing settings are replaced\nwhen smoothing is explicitly applied. It does not automatically alter saved media.\n\nThe pure utility is also available independently:\n\n```ts\nimport {smoothVideoFocus} from '@believablecreations/ngx-focus-point';\nconst keyframes = smoothVideoFocus(media.focus, {\n  windowSeconds: 0.3,\n  tolerance: 0.025,\n});\n```\n\nBind `keyframes` to `<ngx-focus-point [focus]=\"keyframes\">` around the video.\nThe renderer follows the native media clock on animation frames, including when\nthere is a poster image before the video. CSS transitions are disabled for timed\npoints to avoid adding lag to the interpolated motion.\n\nThe filter weights samples by time, then uses temporal Douglas–Peucker reduction\nin x, y, and scale. It retains endpoint positions/times and preserves significant\npauses, turns, and zoom changes within the chosen tolerance. Tolerance bounds the\nsimplification error relative to the filtered path, not the original shaky path.\n`windowSeconds: 0` disables filtering. Linear tweens avoid stopping at every\nretained point. Larger settings remove more detail; very rapid intentional motion\ncan also be softened. Inputs are copied, invalid samples omitted, and the last\nsample wins at duplicate timestamps. Coordinates use the package's -1..1 range.\n\n### Fullscreen and global edits\n\n**Fullscreen** expands the entire editor, including previews, selector and timeline.\nUse **Exit fullscreen** or the browser's Escape key to return to the page.\n\n**Select all points** opens global Zoom, Transition, and Easing controls. Leave a\nfield **Unchanged** to preserve its per-point values. **Apply to all points** sets\nan absolute zoom (0.1–4) and/or transition settings on every current point while\npreserving IDs, timestamps and positions. The editor emits one `pointsChange`\narray; the host's Save action persists it. **Deselect all points** closes global\nediting. Smoothing Undo is disabled after a global edit to protect those edits.\n\n### Editor appearance\n\nThe editor follows the nearest ancestor's `dark-theme` / `light-theme` class or\n`data-theme=\"dark\"` / `data-theme=\"light\"` attribute, falling back to the system\ncolor preference. Changes are observed live. Hosts can also bind `[theme]` to\n`'auto'`, `'light'`, or `'dark'` without importing a CMS theme service.\n\nThe top-right sun/moon icon overrides appearance for this editor instance only.\n**Use global theme** clears that override. Overrides are not stored or emitted as\nmedia changes. The palette covers editor controls, the point list, and timeline;\ncustom timeline colors remain intact. Fullscreen keeps the same appearance.\n","readmeFilename":"README.md"}