@ethlete/contentful 3.2.1 → 3.4.0

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGZ1bC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGVudGZ1bC9zcmMvbGliL3R5cGVzL2NvbnRlbnRmdWwudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IElucHV0U2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCbG9jaywgTm9kZURhdGEgfSBmcm9tICdAY29udGVudGZ1bC9yaWNoLXRleHQtdHlwZXMnO1xuaW1wb3J0IHsgQ29udGVudGZ1bEluY2x1ZGVNYXAgfSBmcm9tICcuLi9jb21wb25lbnRzL3JpY2gtdGV4dC1yZW5kZXJlcic7XG5cbmV4cG9ydCB0eXBlIENvbnRlbnRmdWxJbWFnZVJlc2l6ZUJlaGF2aW9yID0gJ3BhZCcgfCAnY3JvcCcgfCAnZmlsbCcgfCAnc2NhbGUnIHwgJ3RodW1iJyB8ICdmaXQnO1xuZXhwb3J0IHR5cGUgQ29udGVudGZ1bEltYWdlRm9jdXNBcmVhID1cbiAgfCAndG9wJ1xuICB8ICdib3R0b20nXG4gIHwgJ2xlZnQnXG4gIHwgJ3JpZ2h0J1xuICB8ICdjZW50ZXInXG4gIHwgJ3RvcF9sZWZ0J1xuICB8ICd0b3BfcmlnaHQnXG4gIHwgJ2JvdHRvbV9sZWZ0J1xuICB8ICdib3R0b21fcmlnaHQnXG4gIHwgJ2ZhY2UnXG4gIHwgJ2ZhY2VzJztcblxudHlwZSBDb21wb25lbnRMaWtlV2l0aEFzc2V0ID0gQ29tcG9uZW50VHlwZTx7IGFzc2V0OiBJbnB1dFNpZ25hbDxDb250ZW50ZnVsQXNzZXQgfCBudWxsIHwgdW5kZWZpbmVkPiB9PjtcbnR5cGUgQ29tcG9uZW50TGlrZVdpdGhDb250ZW50ZnVsUmVuZGVyZXJJbnB1dHMgPSBDb21wb25lbnRUeXBlPHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgZmllbGRzPzogSW5wdXRTaWduYWw8YW55PjtcblxuICBpbmNsdWRlcz86IElucHV0U2lnbmFsPENvbnRlbnRmdWxJbmNsdWRlTWFwPjtcblxuICBtZXRhZGF0YT86IElucHV0U2lnbmFsPENvbnRlbnRmdWxNZXRhZGF0YT47XG5cbiAgc3lzPzogSW5wdXRTaWduYWw8Q29udGVudGZ1bFN5cz47XG59PjtcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsQXNzZXRDb21wb25lbnRzIHtcbiAgZmlsZTogQ29tcG9uZW50TGlrZVdpdGhBc3NldDtcbiAgaW1hZ2U6IENvbXBvbmVudExpa2VXaXRoQXNzZXQ7XG4gIHZpZGVvOiBDb21wb25lbnRMaWtlV2l0aEFzc2V0O1xuICBhdWRpbzogQ29tcG9uZW50TGlrZVdpdGhBc3NldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsQ29uZmlnIHtcbiAgLyoqXG4gICAqIERlZmF1bHQgY29tcG9uZW50cyBmb3IgcmVuZGVyaW5nIGNvbnRlbnRmdWwgYXNzZXRzXG4gICAqL1xuICBjb21wb25lbnRzOiBDb250ZW50ZnVsQXNzZXRDb21wb25lbnRzO1xuXG4gIC8qKlxuICAgKiBDb21wb25lbnQgZm9yIHJlbmRlcmluZyBlbWJlZGRlZCBlbnRyaWVzXG4gICAqL1xuICBjdXN0b21Db21wb25lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDb21wb25lbnRMaWtlV2l0aENvbnRlbnRmdWxSZW5kZXJlcklucHV0cz47XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGNvbnRlbnRmdWwgcmljaCB0ZXh0IHJlbmRlcmVyIHNob3VsZCByZW5kZXIgdGhlIGNvbnRlbnRmdWwgcmljaCB0ZXh0IHdpdGggdGFpbHdpbmQgY3NzIGNsYXNzZXNcbiAgICovXG4gIHVzZVRhaWx3aW5kQ2xhc3NlczogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVmYXVsdCBvcHRpb25zIGZvciB0aGUgY29udGVudGZ1bCBpbWFnZSBhcGlcbiAgICovXG4gIGltYWdlT3B0aW9uczoge1xuICAgIC8qKlxuICAgICAqIFNvdXJjZSBzZXQgc2l6ZXMuIEVnLlxuICAgICAqIC0gYFwiNDAwXCJgIC0gNDAwcHggd2lkdGhcbiAgICAgKiAtIGBcIjQwMHgzMDBcImAgLSA0MDBweCB3aWR0aCBhbmQgMzAwcHggaGVpZ2h0XG4gICAgICogLSBgXCI0MDB3XCJgIC0gNDAwcHggd2lkdGhcbiAgICAgKiAtIGBcIjQwMGhcImAgLSA0MDBweCBoZWlnaHRcbiAgICAgKiAtIGBcIjQwMHd4MzAwaFwiYCAtIDQwMHB4IHdpZHRoIGFuZCAzMDBweCBoZWlnaHRcbiAgICAgKiovXG4gICAgc3Jjc2V0U2l6ZXM6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogU2l6ZXMgZm9yIHRoZSBpbWFnZS4gRWcuXG4gICAgICogIC0gYFwiMTAwdndcImAgLSAxMDAlIG9mIHRoZSB2aWV3cG9ydCB3aWR0aFxuICAgICAqICAtIGBcIjUwdndcImAgLSA1MCUgb2YgdGhlIHZpZXdwb3J0IHdpZHRoXG4gICAgICogIC0gYChtaW4td2lkdGg6IDMwZW0pIDMwZW1cImAgLSAzMGVtIGlmIHRoZSB2aWV3cG9ydCBpcyBhdCBsZWFzdCAzMGVtIHdpZGVcbiAgICAgKi9cbiAgICBzaXplczogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgaW1hZ2UgaW4gaGV4LiBFZy4gYFwiMDAwMDAwXCJgXG4gICAgICovXG4gICAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCBudWxsO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBDb250ZW50ZnVsTGlua1R5cGUgPSAnU3BhY2UnIHwgJ0NvbnRlbnRUeXBlJyB8ICdFbnZpcm9ubWVudCcgfCAnRW50cnknIHwgJ0Fzc2V0JyB8ICdUYWcnO1xuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsTGluazxUIGV4dGVuZHMgQ29udGVudGZ1bExpbmtUeXBlPiB7XG4gIHR5cGU6ICdMaW5rJztcbiAgbGlua1R5cGU6IFQ7XG4gIGlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENvbnRlbnRmdWxTcGFjZUxpbmsgPSBDb250ZW50ZnVsTGluazwnU3BhY2UnPjtcbmV4cG9ydCB0eXBlIENvbnRlbnRmdWxFbnZpcm9ubWVudExpbmsgPSBDb250ZW50ZnVsTGluazwnRW52aXJvbm1lbnQnPjtcbmV4cG9ydCB0eXBlIENvbnRlbnRmdWxDb250ZW50VHlwZUxpbmsgPSBDb250ZW50ZnVsTGluazwnQ29udGVudFR5cGUnPjtcbmV4cG9ydCB0eXBlIENvbnRlbnRmdWxFbnRyeUxpbmsgPSBDb250ZW50ZnVsTGluazwnRW50cnknPjtcbmV4cG9ydCB0eXBlIENvbnRlbnRmdWxBc3NldExpbmsgPSBDb250ZW50ZnVsTGluazwnQXNzZXQnPjtcbmV4cG9ydCB0eXBlIENvbnRlbnRmdWxUYWdMaW5rID0gQ29udGVudGZ1bExpbms8J1RhZyc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxUYWdMaW5rSXRlbSB7XG4gIHN5czogQ29udGVudGZ1bFRhZ0xpbms7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bEVudHJ5TGlua0l0ZW0ge1xuICBzeXM6IENvbnRlbnRmdWxFbnRyeUxpbms7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bEFzc2V0TGlua0l0ZW0ge1xuICBzeXM6IENvbnRlbnRmdWxBc3NldExpbms7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bE1ldGFkYXRhIHtcbiAgdGFnczogQ29udGVudGZ1bFRhZ0xpbmtJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bFN5cyB7XG4gIHR5cGU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xuICBsb2NhbGU6IHN0cmluZztcbiAgcmV2aXNpb24/OiBudW1iZXI7XG4gIHNwYWNlPzoge1xuICAgIHN5czogQ29udGVudGZ1bFNwYWNlTGluaztcbiAgfTtcbiAgZW52aXJvbm1lbnQ/OiB7XG4gICAgc3lzOiBDb250ZW50ZnVsRW52aXJvbm1lbnRMaW5rO1xuICB9O1xuICBjb250ZW50VHlwZToge1xuICAgIHN5czogQ29udGVudGZ1bENvbnRlbnRUeXBlTGluaztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsQXNzZXRJbWFnZURhdGEge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsQXNzZXRGaWxlRGF0YSB7XG4gIHVybDogc3RyaW5nO1xuICBkZXRhaWxzOiB7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIGltYWdlPzogQ29udGVudGZ1bEFzc2V0SW1hZ2VEYXRhO1xuICB9O1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBjb250ZW50VHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxBc3NldCB7XG4gIHN5czogQ29udGVudGZ1bFN5cztcbiAgZmllbGRzOiB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGZpbGU6IENvbnRlbnRmdWxBc3NldEZpbGVEYXRhO1xuICB9O1xuICBtZXRhZGF0YTogQ29udGVudGZ1bE1ldGFkYXRhO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsRW50cnk8VCA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+IHtcbiAgc3lzOiBDb250ZW50ZnVsU3lzO1xuICBmaWVsZHM6IFQ7XG4gIG1ldGFkYXRhOiBDb250ZW50ZnVsTWV0YWRhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bENvbGxlY3Rpb24ge1xuICBpbmNsdWRlczoge1xuICAgIEFzc2V0OiBDb250ZW50ZnVsQXNzZXRbXTtcbiAgICBFbnRyeTogQ29udGVudGZ1bEVudHJ5W107XG4gIH07XG4gIGl0ZW1zOiBDb250ZW50ZnVsRW50cnlbXTtcbiAgbGltaXQ6IG51bWJlcjtcbiAgc2tpcDogbnVtYmVyO1xuICB0b3RhbDogbnVtYmVyO1xuICBzeXM6IHtcbiAgICB0eXBlOiAnQXJyYXknO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJpY2hUZXh0UmVzcG9uc2Uge1xuICBub2RlVHlwZTogJ2RvY3VtZW50JztcbiAgZGF0YTogTm9kZURhdGE7XG4gIGNvbnRlbnQ6IEJsb2NrW107XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGZ1bC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGVudGZ1bC9zcmMvbGliL3R5cGVzL2NvbnRlbnRmdWwudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IElucHV0U2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCbG9jaywgTm9kZURhdGEgfSBmcm9tICdAY29udGVudGZ1bC9yaWNoLXRleHQtdHlwZXMnO1xuaW1wb3J0IHsgQ29udGVudGZ1bEluY2x1ZGVNYXAgfSBmcm9tICcuLi9jb21wb25lbnRzL3JpY2gtdGV4dC1yZW5kZXJlcic7XG5pbXBvcnQgeyBDb250ZW50ZnVsR3FsQXNzZXQgfSBmcm9tICcuLi9ncWwnO1xuXG5leHBvcnQgdHlwZSBDb250ZW50ZnVsSW1hZ2VSZXNpemVCZWhhdmlvciA9ICdwYWQnIHwgJ2Nyb3AnIHwgJ2ZpbGwnIHwgJ3NjYWxlJyB8ICd0aHVtYicgfCAnZml0JztcbmV4cG9ydCB0eXBlIENvbnRlbnRmdWxJbWFnZUZvY3VzQXJlYSA9XG4gIHwgJ3RvcCdcbiAgfCAnYm90dG9tJ1xuICB8ICdsZWZ0J1xuICB8ICdyaWdodCdcbiAgfCAnY2VudGVyJ1xuICB8ICd0b3BfbGVmdCdcbiAgfCAndG9wX3JpZ2h0J1xuICB8ICdib3R0b21fbGVmdCdcbiAgfCAnYm90dG9tX3JpZ2h0J1xuICB8ICdmYWNlJ1xuICB8ICdmYWNlcyc7XG5cbnR5cGUgQ29tcG9uZW50TGlrZVdpdGhBc3NldCA9IENvbXBvbmVudFR5cGU8e1xuICBhc3NldDogSW5wdXRTaWduYWw8Q29udGVudGZ1bFJlc3RBc3NldCB8IENvbnRlbnRmdWxHcWxBc3NldCB8IG51bGwgfCB1bmRlZmluZWQ+O1xufT47XG50eXBlIENvbXBvbmVudExpa2VXaXRoQ29udGVudGZ1bFJlbmRlcmVySW5wdXRzID0gQ29tcG9uZW50VHlwZTx7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGZpZWxkcz86IElucHV0U2lnbmFsPGFueT47XG5cbiAgaW5jbHVkZXM/OiBJbnB1dFNpZ25hbDxDb250ZW50ZnVsSW5jbHVkZU1hcD47XG5cbiAgbWV0YWRhdGE/OiBJbnB1dFNpZ25hbDxDb250ZW50ZnVsTWV0YWRhdGE+O1xuXG4gIHN5cz86IElucHV0U2lnbmFsPENvbnRlbnRmdWxTeXM+O1xufT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bEFzc2V0Q29tcG9uZW50cyB7XG4gIGZpbGU6IENvbXBvbmVudExpa2VXaXRoQXNzZXQ7XG4gIGltYWdlOiBDb21wb25lbnRMaWtlV2l0aEFzc2V0O1xuICB2aWRlbzogQ29tcG9uZW50TGlrZVdpdGhBc3NldDtcbiAgYXVkaW86IENvbXBvbmVudExpa2VXaXRoQXNzZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bENvbmZpZyB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IGNvbXBvbmVudHMgZm9yIHJlbmRlcmluZyBjb250ZW50ZnVsIGFzc2V0c1xuICAgKi9cbiAgY29tcG9uZW50czogQ29udGVudGZ1bEFzc2V0Q29tcG9uZW50cztcblxuICAvKipcbiAgICogQ29tcG9uZW50IGZvciByZW5kZXJpbmcgZW1iZWRkZWQgZW50cmllc1xuICAgKi9cbiAgY3VzdG9tQ29tcG9uZW50czogUmVjb3JkPHN0cmluZywgQ29tcG9uZW50TGlrZVdpdGhDb250ZW50ZnVsUmVuZGVyZXJJbnB1dHM+O1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBjb250ZW50ZnVsIHJpY2ggdGV4dCByZW5kZXJlciBzaG91bGQgcmVuZGVyIHRoZSBjb250ZW50ZnVsIHJpY2ggdGV4dCB3aXRoIHRhaWx3aW5kIGNzcyBjbGFzc2VzXG4gICAqL1xuICB1c2VUYWlsd2luZENsYXNzZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIGNvbnRlbnRmdWwgaW1hZ2UgYXBpXG4gICAqL1xuICBpbWFnZU9wdGlvbnM6IHtcbiAgICAvKipcbiAgICAgKiBTb3VyY2Ugc2V0IHNpemVzLiBFZy5cbiAgICAgKiAtIGBcIjQwMFwiYCAtIDQwMHB4IHdpZHRoXG4gICAgICogLSBgXCI0MDB4MzAwXCJgIC0gNDAwcHggd2lkdGggYW5kIDMwMHB4IGhlaWdodFxuICAgICAqIC0gYFwiNDAwd1wiYCAtIDQwMHB4IHdpZHRoXG4gICAgICogLSBgXCI0MDBoXCJgIC0gNDAwcHggaGVpZ2h0XG4gICAgICogLSBgXCI0MDB3eDMwMGhcImAgLSA0MDBweCB3aWR0aCBhbmQgMzAwcHggaGVpZ2h0XG4gICAgICoqL1xuICAgIHNyY3NldFNpemVzOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIFNpemVzIGZvciB0aGUgaW1hZ2UuIEVnLlxuICAgICAqICAtIGBcIjEwMHZ3XCJgIC0gMTAwJSBvZiB0aGUgdmlld3BvcnQgd2lkdGhcbiAgICAgKiAgLSBgXCI1MHZ3XCJgIC0gNTAlIG9mIHRoZSB2aWV3cG9ydCB3aWR0aFxuICAgICAqICAtIGAobWluLXdpZHRoOiAzMGVtKSAzMGVtXCJgIC0gMzBlbSBpZiB0aGUgdmlld3BvcnQgaXMgYXQgbGVhc3QgMzBlbSB3aWRlXG4gICAgICovXG4gICAgc2l6ZXM6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGltYWdlIGluIGhleC4gRWcuIGBcIjAwMDAwMFwiYFxuICAgICAqL1xuICAgIGJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgbnVsbDtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGVudGZ1bExpbmtUeXBlID0gJ1NwYWNlJyB8ICdDb250ZW50VHlwZScgfCAnRW52aXJvbm1lbnQnIHwgJ0VudHJ5JyB8ICdBc3NldCcgfCAnVGFnJztcbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bExpbms8VCBleHRlbmRzIENvbnRlbnRmdWxMaW5rVHlwZT4ge1xuICB0eXBlOiAnTGluayc7XG4gIGxpbmtUeXBlOiBUO1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBDb250ZW50ZnVsU3BhY2VMaW5rID0gQ29udGVudGZ1bExpbms8J1NwYWNlJz47XG5leHBvcnQgdHlwZSBDb250ZW50ZnVsRW52aXJvbm1lbnRMaW5rID0gQ29udGVudGZ1bExpbms8J0Vudmlyb25tZW50Jz47XG5leHBvcnQgdHlwZSBDb250ZW50ZnVsQ29udGVudFR5cGVMaW5rID0gQ29udGVudGZ1bExpbms8J0NvbnRlbnRUeXBlJz47XG5leHBvcnQgdHlwZSBDb250ZW50ZnVsRW50cnlMaW5rID0gQ29udGVudGZ1bExpbms8J0VudHJ5Jz47XG5leHBvcnQgdHlwZSBDb250ZW50ZnVsQXNzZXRMaW5rID0gQ29udGVudGZ1bExpbms8J0Fzc2V0Jz47XG5leHBvcnQgdHlwZSBDb250ZW50ZnVsVGFnTGluayA9IENvbnRlbnRmdWxMaW5rPCdUYWcnPjtcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsVGFnTGlua0l0ZW0ge1xuICBzeXM6IENvbnRlbnRmdWxUYWdMaW5rO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxFbnRyeUxpbmtJdGVtIHtcbiAgc3lzOiBDb250ZW50ZnVsRW50cnlMaW5rO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxBc3NldExpbmtJdGVtIHtcbiAgc3lzOiBDb250ZW50ZnVsQXNzZXRMaW5rO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxNZXRhZGF0YSB7XG4gIHRhZ3M6IENvbnRlbnRmdWxUYWdMaW5rSXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxTeXMge1xuICB0eXBlOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbiAgbG9jYWxlOiBzdHJpbmc7XG4gIHJldmlzaW9uPzogbnVtYmVyO1xuICBzcGFjZT86IHtcbiAgICBzeXM6IENvbnRlbnRmdWxTcGFjZUxpbms7XG4gIH07XG4gIGVudmlyb25tZW50Pzoge1xuICAgIHN5czogQ29udGVudGZ1bEVudmlyb25tZW50TGluaztcbiAgfTtcbiAgY29udGVudFR5cGU6IHtcbiAgICBzeXM6IENvbnRlbnRmdWxDb250ZW50VHlwZUxpbms7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bEFzc2V0SW1hZ2VEYXRhIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudGZ1bEFzc2V0RmlsZURhdGEge1xuICB1cmw6IHN0cmluZztcbiAgZGV0YWlsczoge1xuICAgIHNpemU6IG51bWJlcjtcbiAgICBpbWFnZT86IENvbnRlbnRmdWxBc3NldEltYWdlRGF0YTtcbiAgfTtcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgY29udGVudFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsUmVzdEFzc2V0IHtcbiAgc3lzOiBDb250ZW50ZnVsU3lzO1xuICBmaWVsZHM6IHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgZmlsZTogQ29udGVudGZ1bEFzc2V0RmlsZURhdGE7XG4gIH07XG4gIG1ldGFkYXRhOiBDb250ZW50ZnVsTWV0YWRhdGE7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRmdWxFbnRyeTxUID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4ge1xuICBzeXM6IENvbnRlbnRmdWxTeXM7XG4gIGZpZWxkczogVDtcbiAgbWV0YWRhdGE6IENvbnRlbnRmdWxNZXRhZGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50ZnVsQ29sbGVjdGlvbiB7XG4gIGluY2x1ZGVzOiB7XG4gICAgQXNzZXQ6IENvbnRlbnRmdWxSZXN0QXNzZXRbXTtcbiAgICBFbnRyeTogQ29udGVudGZ1bEVudHJ5W107XG4gIH07XG4gIGl0ZW1zOiBDb250ZW50ZnVsRW50cnlbXTtcbiAgbGltaXQ6IG51bWJlcjtcbiAgc2tpcDogbnVtYmVyO1xuICB0b3RhbDogbnVtYmVyO1xuICBzeXM6IHtcbiAgICB0eXBlOiAnQXJyYXknO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJpY2hUZXh0UmVzcG9uc2Uge1xuICBub2RlVHlwZTogJ2RvY3VtZW50JztcbiAgZGF0YTogTm9kZURhdGE7XG4gIGNvbnRlbnQ6IEJsb2NrW107XG59XG4iXX0=
@@ -1,12 +1,31 @@
1
1
  import { NgClass, DOCUMENT } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { input, Component, ChangeDetectionStrategy, ViewEncapsulation, InjectionToken, inject, numberAttribute, booleanAttribute, computed, ViewContainerRef, Renderer2, ElementRef, isDevMode } from '@angular/core';
3
+ import { input, computed, Component, ChangeDetectionStrategy, ViewEncapsulation, InjectionToken, inject, numberAttribute, booleanAttribute, isDevMode, ViewContainerRef, Renderer2, ElementRef } from '@angular/core';
4
+ import { gql } from '@ethlete/query';
4
5
  import { normalizePictureSizes, PictureComponent } from '@ethlete/cdk';
5
6
  import { toSignal, toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
7
  import { INLINES, BLOCKS } from '@contentful/rich-text-types';
7
8
  import { RuntimeError, isObject, getObjectProperty } from '@ethlete/core';
8
9
  import { startWith, pairwise, tap } from 'rxjs';
9
- import { gql } from '@ethlete/query';
10
+
11
+ const GQL_FRAGMENT_CONTENTFUL_ASSET = gql `
12
+ fragment AssetData on Asset {
13
+ sys {
14
+ id
15
+ }
16
+ url
17
+ title
18
+ width
19
+ height
20
+ description
21
+ contentType
22
+ size
23
+ }
24
+ `;
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ const isContentfulGqlAsset = (asset) => {
27
+ return asset?.sys?.id && asset?.url && typeof asset?.size === 'number';
28
+ };
10
29
 
11
30
  class ContentfulAudioComponent {
12
31
  constructor() {
@@ -14,26 +33,42 @@ class ContentfulAudioComponent {
14
33
  this.audioClass = input(null);
15
34
  this.figureClass = input(null);
16
35
  this.figcaptionClass = input(null);
36
+ this.data = computed(() => {
37
+ const asset = this.asset();
38
+ if (!asset) {
39
+ return null;
40
+ }
41
+ if (isContentfulGqlAsset(asset)) {
42
+ return {
43
+ url: asset.url,
44
+ title: asset.title,
45
+ };
46
+ }
47
+ return {
48
+ url: asset.fields.file.url,
49
+ title: asset.fields.title,
50
+ };
51
+ });
17
52
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ContentfulAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: ContentfulAudioComponent, isStandalone: true, selector: "et-contentful-audio", inputs: { asset: { classPropertyName: "asset", publicName: "asset", isSignal: true, isRequired: true, transformFunction: null }, audioClass: { classPropertyName: "audioClass", publicName: "audioClass", isSignal: true, isRequired: false, transformFunction: null }, figureClass: { classPropertyName: "figureClass", publicName: "figureClass", isSignal: true, isRequired: false, transformFunction: null }, figcaptionClass: { classPropertyName: "figcaptionClass", publicName: "figcaptionClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
20
- @if (asset(); as data) {
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ContentfulAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ContentfulAudioComponent, isStandalone: true, selector: "et-contentful-audio", inputs: { asset: { classPropertyName: "asset", publicName: "asset", isSignal: true, isRequired: true, transformFunction: null }, audioClass: { classPropertyName: "audioClass", publicName: "audioClass", isSignal: true, isRequired: false, transformFunction: null }, figureClass: { classPropertyName: "figureClass", publicName: "figureClass", isSignal: true, isRequired: false, transformFunction: null }, figcaptionClass: { classPropertyName: "figcaptionClass", publicName: "figcaptionClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
55
+ @if (data(); as data) {
21
56
  <figure [ngClass]="figureClass()">
22
- <figcaption [ngClass]="figcaptionClass()">{{ data.fields.title }}</figcaption>
23
- <audio [ngClass]="audioClass()" controls src="{{ data.fields.file.url }}"></audio>
57
+ <figcaption [ngClass]="figcaptionClass()">{{ data.title }}</figcaption>
58
+ <audio [ngClass]="audioClass()" controls src="{{ data.url }}"></audio>
24
59
  </figure>
25
60
  }
26
61
  `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
27
62
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ContentfulAudioComponent, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ContentfulAudioComponent, decorators: [{
29
64
  type: Component,
30
65
  args: [{
31
66
  selector: 'et-contentful-audio',
32
67
  template: `
33
- @if (asset(); as data) {
68
+ @if (data(); as data) {
34
69
  <figure [ngClass]="figureClass()">
35
- <figcaption [ngClass]="figcaptionClass()">{{ data.fields.title }}</figcaption>
36
- <audio [ngClass]="audioClass()" controls src="{{ data.fields.file.url }}"></audio>
70
+ <figcaption [ngClass]="figcaptionClass()">{{ data.title }}</figcaption>
71
+ <audio [ngClass]="audioClass()" controls src="{{ data.url }}"></audio>
37
72
  </figure>
38
73
  }
39
74
  `,
@@ -48,24 +83,44 @@ class ContentfulFileComponent {
48
83
  constructor() {
49
84
  this.asset = input.required();
50
85
  this.fileClass = input(null);
86
+ this.data = computed(() => {
87
+ const asset = this.asset();
88
+ if (!asset) {
89
+ return null;
90
+ }
91
+ if (isContentfulGqlAsset(asset)) {
92
+ return {
93
+ url: asset.url,
94
+ contentType: asset.contentType,
95
+ size: asset.size,
96
+ title: asset.title,
97
+ };
98
+ }
99
+ return {
100
+ url: asset.fields.file.url,
101
+ contentType: asset.fields.file.contentType,
102
+ size: asset.fields.file.details.size,
103
+ title: asset.fields.title,
104
+ };
105
+ });
51
106
  }
52
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ContentfulFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
53
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: ContentfulFileComponent, isStandalone: true, selector: "et-contentful-file", inputs: { asset: { classPropertyName: "asset", publicName: "asset", isSignal: true, isRequired: true, transformFunction: null }, fileClass: { classPropertyName: "fileClass", publicName: "fileClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
54
- @if (asset(); as data) {
55
- <a [href]="data.fields.file.url" [ngClass]="fileClass()" class="underline" target="_blank">
56
- {{ data.fields.title }} ({{ data.fields.file.details.size }} Bytes)
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ContentfulFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ContentfulFileComponent, isStandalone: true, selector: "et-contentful-file", inputs: { asset: { classPropertyName: "asset", publicName: "asset", isSignal: true, isRequired: true, transformFunction: null }, fileClass: { classPropertyName: "fileClass", publicName: "fileClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
109
+ @if (data(); as data) {
110
+ <a [href]="data.url" [ngClass]="fileClass()" class="underline" target="_blank">
111
+ {{ data.title }} ({{ data.size }} Bytes)
57
112
  </a>
58
113
  }
59
114
  `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
60
115
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ContentfulFileComponent, decorators: [{
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ContentfulFileComponent, decorators: [{
62
117
  type: Component,
63
118
  args: [{
64
119
  selector: 'et-contentful-file',
65
120
  template: `
66
- @if (asset(); as data) {
67
- <a [href]="data.fields.file.url" [ngClass]="fileClass()" class="underline" target="_blank">
68
- {{ data.fields.title }} ({{ data.fields.file.details.size }} Bytes)
121
+ @if (data(); as data) {
122
+ <a [href]="data.url" [ngClass]="fileClass()" class="underline" target="_blank">
123
+ {{ data.title }} ({{ data.size }} Bytes)
69
124
  </a>
70
125
  }
71
126
  `,
@@ -79,10 +134,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
79
134
  const CONTENTFUL_CONFIG = new InjectionToken('ContentfulConfig');
80
135
 
81
136
  const generateDefaultContentfulImageSource = (data) => {
82
- const file = data.fields.file;
137
+ if (isContentfulGqlAsset(data)) {
138
+ return {
139
+ type: data.contentType,
140
+ srcset: data.url,
141
+ };
142
+ }
83
143
  return {
84
- type: file.contentType,
85
- srcset: file.url,
144
+ type: data.fields.file.contentType,
145
+ srcset: data.fields.file.url,
86
146
  };
87
147
  };
88
148
  /**
@@ -120,7 +180,7 @@ const generateContentfulImageSources = (data, srcsetSizes, backgroundColor, qual
120
180
  const sources = [];
121
181
  const SOURCE_TYPES = ['image/avif', 'image/webp', 'image/png', 'image/jpg'];
122
182
  for (const type of SOURCE_TYPES) {
123
- const baseUrl = assetData.fields.file.url;
183
+ const baseUrl = isContentfulGqlAsset(assetData) ? assetData.url : assetData.fields.file.url;
124
184
  const sourceSets = [];
125
185
  const queryParams = [];
126
186
  // Set the format (e.g. 'fm=webp')
@@ -177,6 +237,25 @@ class ContentfulImageComponent {
177
237
  this.sizes = input(normalizePictureSizes(this._contentfulConfig.imageOptions.sizes), {
178
238
  transform: (v) => normalizePictureSizes(v),
179
239
  });
240
+ this.normalizedAsset = computed(() => {
241
+ const asset = this.asset();
242
+ if (isContentfulGqlAsset(asset)) {
243
+ return {
244
+ alt: asset.title || null,
245
+ figcaption: asset.description || null,
246
+ width: asset.width,
247
+ height: asset.height,
248
+ };
249
+ }
250
+ else {
251
+ return {
252
+ alt: asset?.fields?.title || null,
253
+ figcaption: asset?.fields?.description || null,
254
+ width: asset?.fields?.file?.details?.image?.width ?? null,
255
+ height: asset?.fields?.file?.details?.image?.height ?? null,
256
+ };
257
+ }
258
+ });
180
259
  this._sources = computed(() => {
181
260
  const asset = this.asset();
182
261
  const backgroundColor = this.backgroundColor();
@@ -194,8 +273,8 @@ class ContentfulImageComponent {
194
273
  return asset ? generateDefaultContentfulImageSource(asset) : null;
195
274
  });
196
275
  }
197
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ContentfulImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
198
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.3", type: ContentfulImageComponent, isStandalone: true, selector: "et-contentful-image", inputs: { asset: { classPropertyName: "asset", publicName: "asset", isSignal: true, isRequired: true, transformFunction: null }, backgroundColor: { classPropertyName: "backgroundColor", publicName: "backgroundColor", isSignal: true, isRequired: false, transformFunction: null }, srcsetSizes: { classPropertyName: "srcsetSizes", publicName: "srcsetSizes", isSignal: true, isRequired: false, transformFunction: null }, quality: { classPropertyName: "quality", publicName: "quality", isSignal: true, isRequired: false, transformFunction: null }, focusArea: { classPropertyName: "focusArea", publicName: "focusArea", isSignal: true, isRequired: false, transformFunction: null }, resizeBehavior: { classPropertyName: "resizeBehavior", publicName: "resizeBehavior", isSignal: true, isRequired: false, transformFunction: null }, hasPriority: { classPropertyName: "hasPriority", publicName: "hasPriority", isSignal: true, isRequired: false, transformFunction: null }, imgClass: { classPropertyName: "imgClass", publicName: "imgClass", isSignal: true, isRequired: false, transformFunction: null }, figureClass: { classPropertyName: "figureClass", publicName: "figureClass", isSignal: true, isRequired: false, transformFunction: null }, figcaptionClass: { classPropertyName: "figcaptionClass", publicName: "figcaptionClass", isSignal: true, isRequired: false, transformFunction: null }, pictureClass: { classPropertyName: "pictureClass", publicName: "pictureClass", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "et-contentful-image" }, ngImport: i0, template: `
276
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ContentfulImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
277
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.5", type: ContentfulImageComponent, isStandalone: true, selector: "et-contentful-image", inputs: { asset: { classPropertyName: "asset", publicName: "asset", isSignal: true, isRequired: true, transformFunction: null }, backgroundColor: { classPropertyName: "backgroundColor", publicName: "backgroundColor", isSignal: true, isRequired: false, transformFunction: null }, srcsetSizes: { classPropertyName: "srcsetSizes", publicName: "srcsetSizes", isSignal: true, isRequired: false, transformFunction: null }, quality: { classPropertyName: "quality", publicName: "quality", isSignal: true, isRequired: false, transformFunction: null }, focusArea: { classPropertyName: "focusArea", publicName: "focusArea", isSignal: true, isRequired: false, transformFunction: null }, resizeBehavior: { classPropertyName: "resizeBehavior", publicName: "resizeBehavior", isSignal: true, isRequired: false, transformFunction: null }, hasPriority: { classPropertyName: "hasPriority", publicName: "hasPriority", isSignal: true, isRequired: false, transformFunction: null }, imgClass: { classPropertyName: "imgClass", publicName: "imgClass", isSignal: true, isRequired: false, transformFunction: null }, figureClass: { classPropertyName: "figureClass", publicName: "figureClass", isSignal: true, isRequired: false, transformFunction: null }, figcaptionClass: { classPropertyName: "figcaptionClass", publicName: "figcaptionClass", isSignal: true, isRequired: false, transformFunction: null }, pictureClass: { classPropertyName: "pictureClass", publicName: "pictureClass", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "et-contentful-image" }, ngImport: i0, template: `
199
278
  <et-picture
200
279
  [imgClass]="imgClass()"
201
280
  [hasPriority]="hasPriority()"
@@ -203,16 +282,16 @@ class ContentfulImageComponent {
203
282
  [pictureClass]="pictureClass()"
204
283
  [figcaptionClass]="figcaptionClass()"
205
284
  [defaultSrc]="_defaultSrc()"
206
- [alt]="asset()?.fields?.title ?? null"
207
- [figcaption]="asset()?.fields?.description ?? null"
208
- [width]="asset()?.fields?.file?.details?.image?.width ?? null"
209
- [height]="asset()?.fields?.file?.details?.image?.height ?? null"
285
+ [alt]="normalizedAsset().alt ?? null"
286
+ [figcaption]="normalizedAsset().figcaption ?? null"
287
+ [width]="normalizedAsset().width ?? null"
288
+ [height]="normalizedAsset().height ?? null"
210
289
  [sizes]="sizes()"
211
290
  [sources]="_sources()"
212
291
  />
213
292
  `, isInline: true, dependencies: [{ kind: "component", type: PictureComponent, selector: "et-picture", inputs: ["sources", "hasPriority", "imgClass", "figureClass", "figcaptionClass", "pictureClass", "defaultSrc", "alt", "figcaption", "width", "height", "sizes"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
214
293
  }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ContentfulImageComponent, decorators: [{
294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ContentfulImageComponent, decorators: [{
216
295
  type: Component,
217
296
  args: [{
218
297
  selector: 'et-contentful-image',
@@ -224,10 +303,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
224
303
  [pictureClass]="pictureClass()"
225
304
  [figcaptionClass]="figcaptionClass()"
226
305
  [defaultSrc]="_defaultSrc()"
227
- [alt]="asset()?.fields?.title ?? null"
228
- [figcaption]="asset()?.fields?.description ?? null"
229
- [width]="asset()?.fields?.file?.details?.image?.width ?? null"
230
- [height]="asset()?.fields?.file?.details?.image?.height ?? null"
306
+ [alt]="normalizedAsset().alt ?? null"
307
+ [figcaption]="normalizedAsset().figcaption ?? null"
308
+ [width]="normalizedAsset().width ?? null"
309
+ [height]="normalizedAsset().height ?? null"
231
310
  [sizes]="sizes()"
232
311
  [sources]="_sources()"
233
312
  />
@@ -246,24 +325,40 @@ class ContentfulVideoComponent {
246
325
  constructor() {
247
326
  this.asset = input.required();
248
327
  this.videoClass = input(null);
328
+ this.data = computed(() => {
329
+ const asset = this.asset();
330
+ if (!asset) {
331
+ return null;
332
+ }
333
+ if (isContentfulGqlAsset(asset)) {
334
+ return {
335
+ url: asset.url,
336
+ contentType: asset.contentType,
337
+ };
338
+ }
339
+ return {
340
+ url: asset.fields.file.url,
341
+ contentType: asset.fields.file.contentType,
342
+ };
343
+ });
249
344
  }
250
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ContentfulVideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
251
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: ContentfulVideoComponent, isStandalone: true, selector: "et-contentful-video", inputs: { asset: { classPropertyName: "asset", publicName: "asset", isSignal: true, isRequired: true, transformFunction: null }, videoClass: { classPropertyName: "videoClass", publicName: "videoClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
252
- @if (asset(); as data) {
345
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ContentfulVideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
346
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ContentfulVideoComponent, isStandalone: true, selector: "et-contentful-video", inputs: { asset: { classPropertyName: "asset", publicName: "asset", isSignal: true, isRequired: true, transformFunction: null }, videoClass: { classPropertyName: "videoClass", publicName: "videoClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
347
+ @if (data(); as data) {
253
348
  <video [ngClass]="videoClass()" controls>
254
- <source src="{{ data.fields.file.url }}" type="{{ data.fields.file.contentType }}" />
349
+ <source src="{{ data.url }}" type="{{ data.contentType }}" />
255
350
  </video>
256
351
  }
257
352
  `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
258
353
  }
259
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ContentfulVideoComponent, decorators: [{
354
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ContentfulVideoComponent, decorators: [{
260
355
  type: Component,
261
356
  args: [{
262
357
  selector: 'et-contentful-video',
263
358
  template: `
264
- @if (asset(); as data) {
359
+ @if (data(); as data) {
265
360
  <video [ngClass]="videoClass()" controls>
266
- <source src="{{ data.fields.file.url }}" type="{{ data.fields.file.contentType }}" />
361
+ <source src="{{ data.url }}" type="{{ data.contentType }}" />
267
362
  </video>
268
363
  }
269
364
  `,
@@ -474,6 +569,57 @@ const isExecutedTextCommandCacheItem = (cache) => {
474
569
  return isTextRenderCommand(cache.command);
475
570
  };
476
571
  const ET_CONTENTFUL_ANY_ENTRY_CONTENT_TYPE_SYS_ID = '$$$_et-contentful-any-entry-content-type-sys-id';
572
+ /**
573
+ * Create a contentful include map using the provided entries and assets.
574
+ */
575
+ const createContentfulIncludeMap = (config) => {
576
+ const { entries, assets } = config;
577
+ const assetMap = new Map(assets.map((asset) => [asset.sys.id, asset]));
578
+ const entryMap = new Map(entries.map((entry) => [entry.sys.id, entry]));
579
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
580
+ const getEntry = (id, contentTypeId) => {
581
+ const entry = entryMap.get(id);
582
+ if (!entry) {
583
+ if (isDevMode()) {
584
+ console.warn('Entry not found! Will return null. Is the include query param to low?', { id, entryMap });
585
+ }
586
+ return null;
587
+ }
588
+ if (contentTypeId === ET_CONTENTFUL_ANY_ENTRY_CONTENT_TYPE_SYS_ID) {
589
+ return entry;
590
+ }
591
+ if (entry.sys.contentType.sys.id !== contentTypeId) {
592
+ if (isDevMode()) {
593
+ console.warn('Entry sys ID does not match the provided sys ID! Will return null.', {
594
+ entry,
595
+ sysId: contentTypeId,
596
+ });
597
+ }
598
+ return null;
599
+ }
600
+ return entry;
601
+ };
602
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
603
+ const getEntries = (ids, contentTypeId) => {
604
+ const entries = ids
605
+ .map((id) => (typeof id === 'string' ? id : id.sys.id))
606
+ .map((id) => getEntry(id, contentTypeId))
607
+ .filter((entry) => entry !== null);
608
+ return entries;
609
+ };
610
+ const getAsset = (id) => {
611
+ return assetMap.get(id) ?? null;
612
+ };
613
+ const getAssets = (ids) => {
614
+ return ids.map((id) => getAsset(id)).filter((asset) => asset !== null);
615
+ };
616
+ return {
617
+ getEntry,
618
+ getEntries,
619
+ getAsset,
620
+ getAssets,
621
+ };
622
+ };
477
623
  class ContentfulRichTextRendererComponent {
478
624
  constructor() {
479
625
  this._viewContainerRef = inject(ViewContainerRef);
@@ -505,51 +651,7 @@ class ContentfulRichTextRendererComponent {
505
651
  const content = this.content();
506
652
  const assets = content?.includes.Asset;
507
653
  const entries = content?.includes.Entry;
508
- const assetMap = new Map(assets?.map((asset) => [asset.sys.id, asset]) ?? []);
509
- const entryMap = new Map(entries?.map((entry) => [entry.sys.id, entry]) ?? []);
510
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
511
- const getEntry = (id, contentTypeId) => {
512
- const entry = entryMap.get(id);
513
- if (!entry) {
514
- if (isDevMode()) {
515
- console.warn('Entry not found! Will return null. Is the include query param to low?', { id, entryMap });
516
- }
517
- return null;
518
- }
519
- if (contentTypeId === ET_CONTENTFUL_ANY_ENTRY_CONTENT_TYPE_SYS_ID) {
520
- return entry;
521
- }
522
- if (entry.sys.contentType.sys.id !== contentTypeId) {
523
- if (isDevMode()) {
524
- console.warn('Entry sys ID does not match the provided sys ID! Will return null.', {
525
- entry,
526
- sysId: contentTypeId,
527
- });
528
- }
529
- return null;
530
- }
531
- return entry;
532
- };
533
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
534
- const getEntries = (ids, contentTypeId) => {
535
- const entries = ids
536
- .map((id) => (typeof id === 'string' ? id : id.sys.id))
537
- .map((id) => getEntry(id, contentTypeId))
538
- .filter((entry) => entry !== null);
539
- return entries;
540
- };
541
- const getAsset = (id) => {
542
- return assetMap.get(id) ?? null;
543
- };
544
- const getAssets = (ids) => {
545
- return ids.map((id) => getAsset(id)).filter((asset) => asset !== null);
546
- };
547
- return {
548
- getEntry,
549
- getEntries,
550
- getAsset,
551
- getAssets,
552
- };
654
+ return createContentfulIncludeMap({ assets: assets ?? [], entries: entries ?? [] });
553
655
  });
554
656
  /**
555
657
  * The rich text data that should be rendered.
@@ -1084,10 +1186,10 @@ class ContentfulRichTextRendererComponent {
1084
1186
  const command = this._stringifyRenderCommand(instruction[RENDER_INSTRUCTION_POSITION.COMMAND]);
1085
1187
  return `${translatedType}: ${command}`;
1086
1188
  }
1087
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ContentfulRichTextRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1088
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.3", type: ContentfulRichTextRendererComponent, isStandalone: true, selector: "et-contentful-rich-text-renderer", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, richTextPath: { classPropertyName: "richTextPath", publicName: "richTextPath", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "et-contentful-rich-text-renderer" }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1189
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ContentfulRichTextRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1190
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.5", type: ContentfulRichTextRendererComponent, isStandalone: true, selector: "et-contentful-rich-text-renderer", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, richTextPath: { classPropertyName: "richTextPath", publicName: "richTextPath", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "et-contentful-rich-text-renderer" }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1089
1191
  }
1090
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ContentfulRichTextRendererComponent, decorators: [{
1192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ContentfulRichTextRendererComponent, decorators: [{
1091
1193
  type: Component,
1092
1194
  args: [{
1093
1195
  selector: 'et-contentful-rich-text-renderer',
@@ -1123,21 +1225,6 @@ const ContentfulImports = [
1123
1225
  ContentfulRichTextRendererComponent,
1124
1226
  ];
1125
1227
 
1126
- const GQL_FRAGMENT_CONTENTFUL_ASSET = gql `
1127
- fragment AssetData on Asset {
1128
- sys {
1129
- id
1130
- }
1131
- url
1132
- title
1133
- width
1134
- height
1135
- description
1136
- contentType
1137
- size
1138
- }
1139
- `;
1140
-
1141
1228
  const provideContentfulConfig = (contentfulConfig = {}) => {
1142
1229
  return { provide: CONTENTFUL_CONFIG, useValue: createContentfulConfig(contentfulConfig) };
1143
1230
  };
@@ -1148,5 +1235,5 @@ const provideContentfulConfig = (contentfulConfig = {}) => {
1148
1235
  * Generated bundle index. Do not edit.
1149
1236
  */
1150
1237
 
1151
- export { COMPONENT_RENDER_COMMAND_POSITION, CONTENTFUL_CONFIG, ContentfulAudioComponent, ContentfulFileComponent, ContentfulImageComponent, ContentfulImports, ContentfulRichTextRendererComponent, ContentfulVideoComponent, ET_CONTENTFUL_ANY_ENTRY_CONTENT_TYPE_SYS_ID, GQL_FRAGMENT_CONTENTFUL_ASSET, HTML_CLOSE_RENDER_COMMAND_POSITION, HTML_OPEN_RENDER_COMMAND_POSITION, RENDER_COMMAND_POSITION, RENDER_COMMAND_TYPE, RENDER_INSTRUCTION_POSITION, RENDER_INSTRUCTION_TYPE, TEXT_RENDER_COMMAND_POSITION, createContentfulConfig, generateContentfulImageSources, generateDefaultContentfulImageSource, getRenderCommandId, isComponentRenderCommand, isExecutedComponentCommandCacheItem, isExecutedHtmlOrTextCommandCacheItem, isExecutedTextCommandCacheItem, isHtmlCloseRenderCommand, isHtmlOpenRenderCommand, isRichTextRootNode, isTextRenderCommand, marksToClass, parseContentfulImageSize, provideContentfulConfig, translateContentfulNodeTypeToHtmlTag };
1238
+ export { COMPONENT_RENDER_COMMAND_POSITION, CONTENTFUL_CONFIG, ContentfulAudioComponent, ContentfulFileComponent, ContentfulImageComponent, ContentfulImports, ContentfulRichTextRendererComponent, ContentfulVideoComponent, ET_CONTENTFUL_ANY_ENTRY_CONTENT_TYPE_SYS_ID, GQL_FRAGMENT_CONTENTFUL_ASSET, HTML_CLOSE_RENDER_COMMAND_POSITION, HTML_OPEN_RENDER_COMMAND_POSITION, RENDER_COMMAND_POSITION, RENDER_COMMAND_TYPE, RENDER_INSTRUCTION_POSITION, RENDER_INSTRUCTION_TYPE, TEXT_RENDER_COMMAND_POSITION, createContentfulConfig, createContentfulIncludeMap, generateContentfulImageSources, generateDefaultContentfulImageSource, getRenderCommandId, isComponentRenderCommand, isContentfulGqlAsset, isExecutedComponentCommandCacheItem, isExecutedHtmlOrTextCommandCacheItem, isExecutedTextCommandCacheItem, isHtmlCloseRenderCommand, isHtmlOpenRenderCommand, isRichTextRootNode, isTextRenderCommand, marksToClass, parseContentfulImageSize, provideContentfulConfig, translateContentfulNodeTypeToHtmlTag };
1152
1239
  //# sourceMappingURL=ethlete-contentful.mjs.map