├── .amp-by-example.json.enc ├── .eslintrc ├── .github └── ISSUE_TEMPLATE │ └── bug_report.md ├── .gitignore ├── .npmignore ├── .well-known └── assetlinks.json ├── AUTHORS ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── api ├── app.yaml ├── img │ └── loader.gif ├── server.go └── src │ ├── iframe │ ├── amp-url-api.html │ ├── amp-url-converter.html │ ├── external-consent-iframe.html │ ├── payments.html │ └── resizable-iframe.html │ ├── scripts │ └── amp_url_converter.js │ └── third_party │ ├── linkify-element.min.js │ └── linkify.min.js ├── app.yaml ├── backend ├── amp-access.go ├── amp-analytics.go ├── amp-cache.go ├── amp-consent.go ├── amp-form.go ├── amp-inputmask.go ├── amp-live-list.go ├── amp-story-auto-ads.go ├── amphtml-email.go ├── autosuggest.go ├── checkout.go ├── comment-section.go ├── config.go ├── cookie │ └── cookie.go ├── datastore │ └── datastore.go ├── echo.go ├── favorite.go ├── form.go ├── hotel.go ├── housing.go ├── lru-cache.go ├── oauth.go ├── oauth │ ├── facebook.go │ ├── github.go │ ├── google.go │ └── oauth.go ├── packager.go ├── paged-list.go ├── poll.go ├── product-browse.go ├── rating.go ├── redirects-amp.dev.json ├── redirects.go ├── redirects.json ├── redirects │ ├── generate.js │ ├── manual.json │ ├── redirects.csv │ ├── sitemap.xml │ ├── source.json │ └── test.js ├── request.go ├── seatmap.go ├── slow-response.go ├── static.go ├── template.go ├── time.go └── util │ └── strings.go ├── boilerplate-generator ├── .gitignore ├── build.js ├── data │ ├── categories.json │ └── formats.json ├── lib │ ├── io.js │ └── templates.js └── templates │ ├── files │ ├── amp4ads.html │ ├── amp4email.html │ ├── amp4stories.html │ ├── amphtml.html │ ├── bookend.json │ ├── serviceworkerIframe.html │ └── serviceworkerJs.js │ ├── index.html │ ├── partials │ ├── analytics │ │ ├── adobe.html │ │ ├── amp-analytics-import.html │ │ └── google.html │ ├── fonts │ │ ├── google-import.html │ │ └── google-preconnect.html │ ├── media │ │ ├── amp-video-import.html │ │ ├── hero-image-amp4stories.html │ │ ├── hero-image-amphtml.html │ │ ├── hero-image-preload.html │ │ ├── hero-video-amp4stories.html │ │ ├── hero-video-amphtml.html │ │ └── hero-video-preload.html │ ├── pwa │ │ ├── amp-install-serviceworker-import.html │ │ ├── amp-install-serviceworker.html │ │ └── manifest.html │ ├── render-delaying │ │ ├── amp-dynamic-css-classes-import.html │ │ ├── amp-dynamic-css-classes-preload.html │ │ ├── amp-experiment-import.html │ │ └── amp-experiment-preload.html │ └── structured-data │ │ ├── article.html │ │ ├── recipe.html │ │ ├── video.html │ │ └── webpage.html │ └── styles.css ├── bower.json ├── client-secret.json.enc ├── data └── index.json ├── deploy.sh ├── gulpfile.js ├── index.html ├── lib ├── CodeSection.js ├── Document.js ├── DocumentParser.js ├── ElementSorting.js ├── ExampleFile.js ├── FileName.js ├── Metadata.js ├── README.md ├── Standalone.js ├── Templates.js ├── examples │ ├── .gitignore │ ├── src │ │ └── responsive.html │ └── standalone.js └── index.js ├── package-lock.json ├── package.json ├── packager ├── Dockerfile ├── README.md ├── amppackager.diff ├── amppkg.toml ├── app.yaml ├── certs │ └── .gitignore └── decrypt.sh ├── playground ├── .eslintrc.json ├── .gitignore ├── README.md ├── package-lock.json ├── package.json ├── serve.go ├── spec │ ├── run.js │ └── support │ │ └── jasmine.json ├── src │ ├── analytics │ │ └── base.js │ ├── app.critical.css │ ├── app.js │ ├── auto-importer │ │ └── auto-importer.js │ ├── button │ │ ├── button.hbs │ │ └── button.js │ ├── components-provider │ │ └── components-provider.js │ ├── debounce │ │ └── debounce.js │ ├── dialog │ │ ├── base.css │ │ ├── base.js │ │ └── dialog-container.html │ ├── document │ │ ├── controller.js │ │ └── document.js │ ├── editor │ │ ├── editor.css │ │ ├── editor.js │ │ ├── hints.css │ │ └── icons │ │ │ ├── error.svg │ │ │ └── warning.svg │ ├── error-list │ │ ├── error-list.css │ │ ├── error-list.js │ │ └── icons │ │ │ ├── close.svg │ │ │ ├── error.svg │ │ │ └── warning.svg │ ├── event-listener-options │ │ └── base.js │ ├── events │ │ ├── events.js │ │ └── events_spec.js │ ├── fab │ │ ├── fab.css │ │ └── fab.js │ ├── filter │ │ └── filter.js │ ├── formatter │ │ └── index.js │ ├── index.hbs │ ├── lazy-load │ │ └── base.js │ ├── loader │ │ ├── base.critical.css │ │ ├── base.js │ │ └── loader.hbs │ ├── menu │ │ ├── base.css │ │ └── base.js │ ├── navigation-warning │ │ └── navigation-warning.js │ ├── node │ │ └── base.js │ ├── params │ │ └── base.js │ ├── preview │ │ ├── dimensions.json │ │ ├── dimensions │ │ │ ├── ads.json │ │ │ └── devices.json │ │ ├── preview.critical.css │ │ └── preview.js │ ├── request-idle-callback │ │ └── base.js │ ├── runtime │ │ ├── detector.js │ │ ├── runtimes.js │ │ └── templates │ │ │ ├── a4a.template.html │ │ │ ├── amphtml.template.html │ │ │ ├── email.template.html │ │ │ └── story.template.html │ ├── selector │ │ └── selector.js │ ├── service-worker │ │ └── base.js │ ├── snackbar │ │ ├── base.css │ │ └── base.js │ ├── split-pane │ │ └── base.js │ ├── sw.js │ ├── template-dialog │ │ ├── base.css │ │ ├── base.js │ │ └── header.html │ ├── title-updater │ │ └── base.js │ └── validator │ │ └── validator.js ├── static │ ├── amphtml-hint.json │ ├── images │ │ ├── icons │ │ │ ├── icon-128x128.png │ │ │ ├── icon-144x144.png │ │ │ ├── icon-152x152.png │ │ │ ├── icon-192x192.png │ │ │ ├── icon-384x384.png │ │ │ ├── icon-512x512.png │ │ │ ├── icon-72x72.png │ │ │ └── icon-96x96.png │ │ └── logo.svg │ └── manifest.json └── webpack.config.js ├── renovate.json ├── scripts └── deploy-to-appengine.sh ├── server.go ├── spec ├── compiler │ ├── CodeSectionSpec.js │ ├── DocumentParserSpec.js │ ├── DocumentSpec.js │ ├── ElementSortingSpec.js │ ├── ExampleFileSpec.js │ ├── FileNameSpec.js │ └── FileNameSpecFiles │ │ ├── a.html │ │ └── b.html └── support │ └── jasmine.json ├── src ├── 10_Introduction │ ├── AMP_for_E-Commerce_Getting_Started.html │ ├── Internationalization.html │ ├── _Hello_World.html │ ├── _How_to_publish_AMPs.html │ └── index.json ├── 20_Components │ ├── amp-3d-gltf.html │ ├── amp-access-laterpay.html │ ├── amp-access.html │ ├── amp-accordion.html │ ├── amp-ad.html │ ├── amp-addthis.html │ ├── amp-analytics.html │ ├── amp-anim.html │ ├── amp-app-banner.html │ ├── amp-audio.html │ ├── amp-bind.html │ ├── amp-bodymovin-animation.html │ ├── amp-brid-player.html │ ├── amp-brightcove.html │ ├── amp-call-tracking.html │ ├── amp-carousel.html │ ├── amp-dailymotion.html │ ├── amp-date-countdown.html │ ├── amp-date-display.html │ ├── amp-date-picker.html │ ├── amp-dynamic-css-classes.html │ ├── amp-experiment.html │ ├── amp-facebook-comments.html │ ├── amp-facebook-like.html │ ├── amp-facebook-page.html │ ├── amp-facebook.html │ ├── amp-fit-text.html │ ├── amp-font.html │ ├── amp-form.html │ ├── amp-fx-collection.html │ ├── amp-fx-flying-carpet.html │ ├── amp-geo.html │ ├── amp-gfycat.html │ ├── amp-gist.html │ ├── amp-google-document-embed.html │ ├── amp-google-vrview-image.html │ ├── amp-hulu.html │ ├── amp-iframe.html │ ├── amp-ima-video.html │ ├── amp-image-lightbox.html │ ├── amp-image-slider.html │ ├── amp-img.html │ ├── amp-inputmask.html │ ├── amp-instagram.html │ ├── amp-install-serviceworker.html │ ├── amp-jwplayer.html │ ├── amp-kaltura-player.html │ ├── amp-lightbox-gallery.html │ ├── amp-lightbox.html │ ├── amp-list.html │ ├── amp-live-list.html │ ├── amp-mustache.html │ ├── amp-next-page.html │ ├── amp-o2-player.html │ ├── amp-pinterest.html │ ├── amp-pixel.html │ ├── amp-reach-player.html │ ├── amp-reddit.html │ ├── amp-selector.html │ ├── amp-sidebar.html │ ├── amp-social-share.html │ ├── amp-soundcloud.html │ ├── amp-springboard-player.html │ ├── amp-sticky-ad.html │ ├── amp-timeago.html │ ├── amp-twitter.html │ ├── amp-user-notification.html │ ├── amp-video-iframe.html │ ├── amp-video.html │ ├── amp-vimeo.html │ ├── amp-vine.html │ ├── amp-web-push.html │ ├── amp-youtube.html │ └── index.json ├── 30_Advanced │ ├── Advanced_Video_Docking.html │ ├── Autosuggest.html │ ├── Autosuggest_form.html │ ├── Click-to-play_overlay_for_amp-video.html │ ├── ComboBox.html │ ├── Copy_Button.html │ ├── Custom_Loading_Indicators.html │ ├── Favorite_Button.html │ ├── Geolocation_with_amp-list.html │ ├── How_to_support_Images_with_unknown_Dimensions%3F.html │ ├── Image_Galleries_with_amp-carousel.html │ ├── Integrating_Videos_in_AMP_an_Overview.html │ ├── Joining_Analytics_Sessions.html │ ├── Linked_Dropdowns.html │ ├── Long_List_of_amp-instagram_Embeds.html │ ├── OAuth2_Login.html │ ├── Paged_List.html │ ├── Payments_in_AMP.html │ ├── Rich_Media_Notifications.html │ ├── SeatMap.html │ ├── SeatMap_Multiple_Selection.html │ ├── Show_More_Button.html │ ├── Star_Rating.html │ ├── Tab_Panels_with_amp-selector.html │ ├── Using_the_AMP_URL_API.html │ ├── Using_the_Google_AMP_Cache.html │ ├── Video_Carousels_with_amp-carousel.html │ ├── Video_rotate_to_fullscreen_with_hint.html │ └── index.json ├── 40_Dynamic_AMP │ ├── Client-side_filtering.html │ ├── Dynamic_Content_After_User-Interaction.html │ ├── Mixing_Dynamic_and_Cached_Data.html │ └── Multi_Page_Flow.html ├── 50_Visual_Effects │ ├── Animated_Snackbar.html │ ├── Basics_of_orientation_effects.html │ ├── Basics_of_scrollbound_effects.html │ └── Scroll_to_top.html ├── 60_Samples_%26_Templates │ ├── Checkout_Flow.html │ ├── Comment_Section.html │ ├── Hotel.html │ ├── Housing.html │ ├── Live_Blog.html │ ├── News_Article.html │ ├── Poll.html │ ├── Product_Browse_Page.html │ ├── Product_Page.html │ ├── Recipe.html │ ├── Shopping_Cart.html │ └── index.json ├── 70_User_Consent │ ├── Advanced_User_Consent_Flow.html │ ├── External_User_Consent_Flow.html │ ├── Geolocation-based_Consent_Flow.html │ ├── _Basic_User_Consent_Flow.html │ └── index.json ├── You%27re_Offline.html ├── amp-ads │ ├── 10_Introduction │ │ ├── AMPHTML_ads_vs_non-AMP_ads.html │ │ ├── _Hello_World.html │ │ └── index.json │ ├── 20_Basic_Ads │ │ └── Banner_Ad.html │ ├── 30_Advanced_Ads │ │ ├── Carousel_Ad.html │ │ ├── Scrollbound_Animation_Ad.html │ │ ├── Scrollbound_Video_Ad.html │ │ ├── Slides_Ad.html │ │ └── Video_Ad.html │ ├── 40_Experimental_Ads │ │ ├── Lightbox_Ad.html │ │ ├── Stack_With_Bind_Ad.html │ │ └── index.json │ └── index.json ├── amp-form-input-text-error.html ├── amp-form-input-text-success.html ├── amp-form-success.html ├── amphtml-email │ ├── 10_Introduction │ │ ├── _Hello_World.html │ │ └── index.json │ ├── 20_Samples │ │ ├── Advanced_Server_Request.html │ │ ├── Bookmark_Article_Email.html │ │ └── Friend_Requests_Email.html │ └── index.json ├── fonts │ ├── ComicAMP.ttf │ ├── ComicAMP2.ttf │ └── OFL.txt ├── img │ ├── AMP-Brand-White-Icon.svg │ ├── Border_Collie.jpg │ ├── GitHub-Mark-Light-32px.png │ ├── GitHub-Mark-Light-64px.png │ ├── Hovawart.jpg │ ├── Shetland_Sheepdog.jpg │ ├── abe_device_screenshot_1x.png │ ├── abe_device_screenshot_2x.png │ ├── ad-coffee.jpg │ ├── ad-google-home.jpg │ ├── ad-hangouts.jpg │ ├── ad-youtube-tv.jpg │ ├── american-flag.png │ ├── amp-100.jpg │ ├── amp-200.jpg │ ├── amp-300.jpg │ ├── amp-300x250.jpg │ ├── amp-400.jpg │ ├── amp-500.jpg │ ├── amp-600.jpg │ ├── amp-700.jpg │ ├── amp-800.jpg │ ├── amp-900.jpg │ ├── amp-url-api-placeholder.png │ ├── amp-video-iframe-sample-placeholder.jpg │ ├── amp.jpg │ ├── amp_by_example_logo.svg │ ├── amp_cache_validation_error.png │ ├── amp_logo_black.svg │ ├── amp_logo_pink.svg │ ├── amp_logo_white.svg │ ├── arrow.svg │ ├── bird.jpg │ ├── blue-gmail.jpg │ ├── blue-stuff.jpg │ ├── buckingham_palace_building_1280x960.jpg │ ├── buckingham_palace_entrance_1280x853.jpg │ ├── bullfinch_poster.jpg │ ├── canadian-flag.png │ ├── canoe_900x600.jpg │ ├── canoe_900x600_blur.jpg │ ├── car-bg.jpg │ ├── car-engine.jpg │ ├── car-front.jpg │ ├── car-gauges.jpg │ ├── car-logo.png │ ├── car-map.png │ ├── car-mesh.jpg │ ├── car-seats.jpg │ ├── car-side-bg.jpg │ ├── car-sideview.jpg │ ├── car-sideview1.jpg │ ├── car-sideview2.jpg │ ├── car-steeringwheel.jpg │ ├── car-store.jpg │ ├── car-tunnel.jpg │ ├── car-video-poster.png │ ├── car-vr-360.jpg │ ├── carousel_preview_card.png │ ├── cat-looking-up-300x200.jpg │ ├── clean-1.jpg │ ├── clean-2.jpg │ ├── clean-3.jpg │ ├── clock.jpg │ ├── console_showing_validation_errors.png │ ├── dark-overlay.png │ ├── elephant.jpg │ ├── england-flag.png │ ├── face.png │ ├── favicon.png │ ├── favicon.svg │ ├── fidget.png │ ├── floorplan_518x340.jpg │ ├── food.jpg │ ├── forest-1280x853.jpg │ ├── forest-1920x1280.jpg │ ├── forest-3800x2533.jpg │ ├── forest-640x227.jpg │ ├── garlic.jpg │ ├── geolocation_map_skeleton.png │ ├── gist.png │ ├── golden_apple1_1024x682.jpg │ ├── gopher.gif │ ├── gopher.png │ ├── green-phone.jpg │ ├── green-stuff.jpg │ ├── green_apple_1_1024x682.jpg │ ├── green_apple_1_60x40.jpg │ ├── green_apple_2_1024x685.jpg │ ├── green_apple_2_60x40.jpg │ ├── ham-house_960x720.jpg │ ├── hotel01_2benny_640x383.jpg │ ├── hotel02_joepitha_640x383.jpg │ ├── hotel03_muffinn_640x383.jpg │ ├── hotel04_robinhawkes_640x383.jpg │ ├── ic_account_box_black_48dp_1x.png │ ├── ic_add_box_black_24dp_1x.png │ ├── ic_add_box_black_24dp_2x.png │ ├── ic_chevron_left_black_24dp_1x.png │ ├── ic_chevron_left_black_24dp_2x.png │ ├── ic_close_black_18dp_1x.png │ ├── ic_close_black_18dp_2x.png │ ├── ic_close_black_1x_web_24dp.png │ ├── ic_close_black_2x_web_24dp.png │ ├── ic_code_black_1x_web_24dp.png │ ├── ic_code_black_2x_web_24dp.png │ ├── ic_code_white_1x_web_24dp.png │ ├── ic_code_white_2x_web_24dp.png │ ├── ic_experiment_black_1x_web_18dp.png │ ├── ic_experiment_black_1x_web_24dp.png │ ├── ic_experiment_black_1x_web_36dp.png │ ├── ic_experiment_black_2x_web_18dp.png │ ├── ic_experiment_black_2x_web_24dp.png │ ├── ic_experiment_black_2x_web_36dp.png │ ├── ic_indeterminate_check_box_black_24dp_1x.png │ ├── ic_indeterminate_check_box_black_24dp_2x.png │ ├── ic_info_outline_black_24dp_1x.png │ ├── ic_info_outline_black_24dp_2x.png │ ├── ic_link_black_1x_web_18dp.png │ ├── ic_link_black_2x_web_18dp.png │ ├── ic_menu_black_1x_web_24dp.png │ ├── ic_menu_black_2x_web_24dp.png │ ├── ic_menu_white_1x_web_24dp.png │ ├── ic_menu_white_2x_web_24dp.png │ ├── ic_mode_edit_white_24dp_1x.png │ ├── ic_mode_edit_white_24dp_2x.png │ ├── ic_play_arrow_white_1x_web_24dp.png │ ├── ic_play_arrow_white_2x_web_24dp.png │ ├── ic_play_circle_filled_black_1x_web_24dp.png │ ├── ic_play_circle_filled_black_2x_web_24dp.png │ ├── ic_play_circle_filled_white_24dp_1x.png │ ├── ic_play_circle_filled_white_24dp_2x.png │ ├── ic_search_white_1x_web_24dp.png │ ├── ic_search_white_2x_web_24dp.png │ ├── ima-poster.jpg │ ├── image1.jpg │ ├── image2.jpg │ ├── image3.jpg │ ├── italy-flag.png │ ├── lamb-garlic-done.jpg │ ├── lamb-garlic-ready-for-oven.jpg │ ├── lamb-with-garlic-slivers.jpg │ ├── landscape_canyon_1280x1700.jpg │ ├── landscape_canyon_300x400.jpg │ ├── landscape_desert_1280x853.jpg │ ├── landscape_desert_300x200.jpg │ ├── landscape_desert_300x250.jpg │ ├── landscape_green_1280x853.jpg │ ├── landscape_green_300x200.jpg │ ├── landscape_houses_1280x803.jpg │ ├── landscape_houses_300x188.jpg │ ├── landscape_lake_1280x857.jpg │ ├── landscape_lake_300x201.jpg │ ├── landscape_mountains_1280x657.jpg │ ├── landscape_mountains_300x154.jpg │ ├── landscape_sea_1280x848.jpg │ ├── landscape_sea_300x199.jpg │ ├── landscape_ship_1280x853.jpg │ ├── landscape_ship_300x200.jpg │ ├── landscape_ship_300x250.jpg │ ├── landscape_trees_1280x960.jpg │ ├── landscape_trees_300x225.jpg │ ├── landscape_village_1280x853.jpg │ ├── landscape_village_300x200.jpg │ ├── landscape_village_300x250.jpg │ ├── logo.png │ ├── logo.svg │ ├── meat-silverskin-cutting.jpg │ ├── multi-page-flow.gif │ ├── news_thumb.jpg │ ├── offline.png │ ├── oscars_placeholder_1.png │ ├── oscars_placeholder_2.png │ ├── overview.jpg │ ├── pixel-f6f6f6.png │ ├── pixel-white.png │ ├── play-icon.png │ ├── poster.jpg │ ├── poster0.png │ ├── poster2.jpg │ ├── poster3.jpg │ ├── poster4.jpg │ ├── poster5.jpg │ ├── product1_640x426.jpg │ ├── product1_alt1_60x40.jpg │ ├── product2_1024x682.jpg │ ├── product2_640x426.jpg │ ├── product3_1024x682.jpg │ ├── product3_640x426.jpg │ ├── product4_1024x682.jpg │ ├── product4_640x426.jpg │ ├── product5_1024x653.jpg │ ├── product5_640x408.jpg │ ├── product6_1024x668.jpg │ ├── product6_640x424.jpg │ ├── product_hero1_1024x683.jpg │ ├── product_hero2_1024x683.jpg │ ├── product_hero3_1024x683.jpg │ ├── recipe_thumb.jpg │ ├── red_apple_1_1024x682.jpg │ ├── red_apple_1_60x40.jpg │ ├── red_apple_2_1024x793.jpg │ ├── red_apple_2_60x46.jpg │ ├── road-1.jpg │ ├── road-2.jpg │ ├── road-3.jpg │ ├── road-4.jpg │ ├── roadshow.jpg │ ├── room1.jpg │ ├── room10.jpg │ ├── room2.jpg │ ├── room3.jpg │ ├── room4.jpg │ ├── room5.jpg │ ├── room6.jpg │ ├── room7.jpg │ ├── room8.jpg │ ├── room9.jpg │ ├── screenshot-media-notification.jpg │ ├── shopping_thumb.jpg │ ├── social.png │ ├── st_james_palace_453x340.jpg │ ├── story_dog2.jpg │ ├── story_dog2_landscape.jpg │ ├── story_dog2_portrait.jpg │ ├── story_dog2_square.jpg │ ├── story_dog3.jpg │ ├── story_dog4.jpg │ ├── story_thirds_1.jpg │ ├── story_thirds_2.jpg │ ├── story_thirds_3.jpg │ ├── story_video_dog_cover.jpg │ ├── system-share.gif │ ├── system-share1.png │ ├── system-share2.png │ ├── tokyo.jpg │ ├── tomatoes-cut.jpg │ ├── tree-1920x1277.jpg │ ├── unknown-flag.png │ ├── video_thumb.jpg │ └── windsor-castle_960x642.jpg ├── index.json ├── json │ ├── addresses.json │ ├── amp-bind-data-new-state.json │ ├── amp-date-picker.json │ ├── amp-story-auto-ads-0.json │ ├── amp-story-auto-ads-1.json │ ├── amp-story-auto-ads-2.json │ ├── amp-story-auto-ads-3.json │ ├── amp-story-auto-ads-4.json │ ├── bodymovin_happy_2016.json │ ├── bodymovin_red_circle.json │ ├── call-tracking-number.json │ ├── cart.json │ ├── comments.json │ ├── consent-items.json │ ├── credit-cards.json │ ├── examples-empty.json │ ├── examples.json │ ├── examples2.json │ ├── food-options.json │ ├── friend_requests.json │ ├── linked_dropdowns.json │ ├── more_related_products_page0.json │ ├── more_related_products_page1.json │ ├── nearby_attractions.json │ ├── other_properties.json │ ├── product-single-item.json │ ├── product.json │ ├── products.json │ ├── related_articles.json │ ├── related_products.json │ ├── seatmap-neighbours.json │ ├── seats.json │ ├── shopping-cart.json │ ├── todo.json │ └── websites.json ├── stories │ ├── 10_Introduction │ │ ├── _AMP_Story_Hello_World.html │ │ └── index.json │ ├── 20_Features │ │ ├── Animations.html │ │ ├── Layouts.html │ │ ├── Media.html │ │ ├── Supporting_desktop_and_landscape_mode.html │ │ └── index.json │ ├── 30_Monetization │ │ ├── DoubleClick.html │ │ ├── Publisher_Served.html │ │ └── index.json │ ├── 30_Visual_Effects │ │ └── Ken_Burns.html │ ├── 50_User_Consent │ │ └── Story_User_Consent.html │ └── index.json └── video │ ├── ad-google-home.mp4 │ ├── amp-app-banner-android-app-installed.mp4 │ ├── amp-app-banner-android-app-not-installed.mp4 │ ├── bird-video.mp4 │ ├── bullfinch.mp4 │ ├── car-video-360p.mp4 │ ├── cat-video.mp4 │ ├── dog-video.mp4 │ ├── ecommerce.mp4 │ ├── ecommerce.vtt │ ├── gmail-animation.mp4 │ ├── gmail.mp4 │ ├── gmail.vtt │ ├── p1.mp4 │ ├── p1.vtt │ ├── stamp-animation.mp4 │ ├── stamp.mp4 │ ├── stamp.vtt │ ├── stamp_video_dog.mp4 │ ├── story_video_dog.mp4 │ ├── tokyo-no-hls.mp4 │ ├── tokyo.m3u8 │ ├── tokyo.mp4 │ ├── tokyo.webm │ ├── tokyo_240p.m3u8 │ ├── tokyo_240p_1.ts │ ├── tokyo_240p_2.ts │ ├── tokyo_240p_200.mp4 │ ├── tokyo_360p.m3u8 │ ├── tokyo_360p_1.ts │ ├── tokyo_360p_2.ts │ ├── tokyo_360p_600.mp4 │ ├── tokyo_480p.m3u8 │ ├── tokyo_480p_1.ts │ ├── tokyo_480p_1000.mp4 │ └── tokyo_480p_2.ts ├── static ├── amp-app-banner-manifest.json ├── amp-video-iframe-videojs.html ├── amp4mail │ └── gallery.html ├── copier.html ├── glTF │ └── DamagedHelmet.glb ├── googlea533f0f54d9c716a.html ├── hreflang │ ├── fr │ │ ├── index.amp.html │ │ └── index.html │ ├── index.amp.html │ └── index.html ├── humans.txt ├── internationalization │ ├── alternate │ │ ├── fr │ │ │ ├── index.amp.html │ │ │ ├── index.html │ │ │ └── index.mobile.html │ │ ├── index.amp.html │ │ ├── index.html │ │ ├── index.mobile.html │ │ └── ja │ │ │ ├── index.amp.html │ │ │ ├── index.html │ │ │ └── index.mobile.html │ ├── amp_hreflang_example_1.png │ ├── amp_hreflang_example_2.png │ ├── basic │ │ ├── fr │ │ │ ├── index.amp.html │ │ │ └── index.html │ │ ├── index.amp.html │ │ ├── index.html │ │ └── ja │ │ │ ├── index.amp.html │ │ │ └── index.html │ └── rtl.html ├── invalid_amp.html ├── linker │ ├── demo-page.html │ └── destination-page.html ├── login.html ├── manifest.json ├── sw.html ├── sw.js └── webpush │ ├── amp-web-push-helper-frame.html │ └── amp-web-push-permission-dialog.html ├── tasks ├── bookend.json ├── compile-example.js ├── compile-sitemap.js └── create-example.js └── templates ├── about-amp4email.html ├── ampstart ├── dropdown-inline.snip.html ├── dropdown.snip.html ├── footer.snip.html ├── navbar.snip.html ├── sidebar.snip.html └── social-follow.snip.html ├── analytics.html ├── consent-story.html ├── consent.html ├── css ├── ampstart.css ├── code.css ├── consent.css ├── default-styles.css ├── example.css ├── preview.css ├── product.css ├── shared.css └── styles.css ├── embed ├── embed.html ├── embed.js ├── preview.html ├── styles.css └── template.html ├── example.html ├── experiment.html ├── favicons.html ├── footer-boilerplate.html ├── get-example.html ├── head.html ├── header.html ├── icons ├── email.svg ├── facebook.svg ├── github.svg ├── gplus.svg ├── instagram.svg ├── pinterest.svg ├── slack.svg ├── twitter.svg └── wordpress.svg ├── index.html ├── menu.html ├── metadata.html ├── new-example.html ├── preview-a4a.html ├── preview-amp4email.html ├── preview.html ├── serviceworker.html └── stories ├── page-switch.html └── story-embed.html /.amp-by-example.json.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/.amp-by-example.json.enc -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the bug is. 9 | 10 | **To Reproduce** 11 | Steps to reproduce the behavior: 12 | 1. Go to '...' Please specify the link to an AMPByExample sample. 13 | 2. Click on '....' 14 | 3. Scroll down to '....' 15 | 4. See error 16 | 17 | **Expected behavior** 18 | A clear and concise description of what you expected to happen. 19 | 20 | **Screenshots** 21 | If applicable, add screenshots to help explain your problem. 22 | 23 | **Desktop (please complete the following information):** 24 | - OS: [e.g. iOS] 25 | - Browser [e.g. chrome, safari] 26 | - Version [e.g. 22] 27 | 28 | **Smartphone (please complete the following information):** 29 | - Device: [e.g. iPhone6] 30 | - OS: [e.g. iOS8.1] 31 | - Browser [e.g. stock browser, safari] 32 | - Version [e.g. 22] 33 | 34 | **Additional context** 35 | Add any other context about the problem here. 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | build 3 | dist 4 | node_modules 5 | npm-debug.log 6 | .idea 7 | tmp 8 | .vscode 9 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | api 2 | app.yaml 3 | backend 4 | bower.json 5 | client-secret.json.enc 6 | data 7 | deploy.sh 8 | dist 9 | gulpfile.js 10 | node_modules 11 | playground 12 | scripts 13 | server.go 14 | spec 15 | src 16 | static 17 | tasks 18 | -------------------------------------------------------------------------------- /.well-known/assetlinks.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "relation": ["delegate_permission/common.handle_all_urls"], 3 | "target" : { "namespace": "android_app", "package_name": "com.ampbyexample.android.aia.hello.amp", 4 | "sha256_cert_fingerprints": ["AD:AB:39:FC:6B:1B:97:98:66:16:A4:F8:8A:00:90:C1:5E:C6:B0:13:67:19:66:D7:AC:16:38:1D:86:48:B9:AB"] } 5 | }] 6 | 7 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | # This is a list of contributors to AMP HTML. 2 | 3 | # Names should be added to this file like so: 4 | # Name or Organization 5 | 6 | Google Inc. 7 | -------------------------------------------------------------------------------- /api/app.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2016, Google, Inc. 2 | # Licensed under the Apache License, Version 2.0 (the "License"); 3 | # you may not use this file except in compliance with the License. 4 | # You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software 9 | # distributed under the License is distributed on an "AS IS" BASIS, 10 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | # See the License for the specific language governing permissions and 12 | # limitations under the License. 13 | 14 | runtime: go 15 | api_version: go1.9 16 | threadsafe: yes 17 | 18 | handlers: 19 | - url: / 20 | static_dir: dist 21 | secure: always 22 | - url: /.* 23 | script: _go_app 24 | secure: always 25 | 26 | skip_files: 27 | - ^(.*/)?.*\.DS_Store$ 28 | - ^(.*/)?.*\.swp$ 29 | - ^src(/.*)? 30 | -------------------------------------------------------------------------------- /api/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/api/img/loader.gif -------------------------------------------------------------------------------- /api/server.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package api 16 | 17 | import ( 18 | "net/http" 19 | ) 20 | 21 | func init() { 22 | http.HandleFunc("/", serveNotFound) 23 | } 24 | 25 | func serveNotFound(w http.ResponseWriter, r *http.Request) { 26 | http.NotFound(w, r) 27 | } 28 | -------------------------------------------------------------------------------- /backend/amp-analytics.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package backend 16 | 17 | import ( 18 | "backend/util" 19 | 20 | "net/http" 21 | ) 22 | 23 | func InitAmpAnalytics() { 24 | //RegisterSample(CATEGORY_COMPONENTS+"/amp-analytics", renderAnalyticsSample) 25 | } 26 | 27 | func renderAnalyticsSample(w http.ResponseWriter, r *http.Request, page Page) { 28 | SetDefaultMaxAge(w) 29 | page.Render(w, clientId(r)) 30 | } 31 | 32 | func clientId(r *http.Request) string { 33 | cookie, err := r.Cookie(AMP_CLIENT_ID_COOKIE) 34 | if err != nil { 35 | return util.RandomString(8) 36 | } else { 37 | return cookie.Value 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /backend/amp-cache.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package backend 16 | 17 | import ( 18 | "net/http" 19 | "time" 20 | ) 21 | 22 | func InitAmpCache() { 23 | RegisterTemplate("/g", "", TEMPLATE_FOLDER+"/get-example.html", parameterDemoHandler) 24 | http.HandleFunc("/error", returnCode500) 25 | } 26 | 27 | func parameterDemoHandler(w http.ResponseWriter, r *http.Request, page Page) { 28 | SetMaxAge(w, 0) 29 | timestamp := time.Now().Format("Mon Jan _2 15:04:05 2006") 30 | s := timestamp + ": '" + r.URL.Query().Get("value") + "'" 31 | page.Render(w, s) 32 | } 33 | 34 | func returnCode500(w http.ResponseWriter, r *http.Request) { 35 | w.WriteHeader(http.StatusInternalServerError) 36 | w.Write([]byte("Internal Server Error")) 37 | } 38 | -------------------------------------------------------------------------------- /backend/amp-consent.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package backend 16 | 17 | import ( 18 | "net/http" 19 | ) 20 | 21 | const ( 22 | CONSENT_SAMPLE_PATH = "/" + CATEGORY_SAMPLE_TEMPLATES + "/consent/" 23 | ) 24 | 25 | func InitAmpConsent() { 26 | RegisterHandler(CONSENT_SAMPLE_PATH+"getConsent", onlyPost(submitConsentXHR)) 27 | } 28 | 29 | func submitConsentXHR(w http.ResponseWriter, r *http.Request) { 30 | SendJsonResponse(w, map[string]bool{ 31 | "promptIfUnknown": true, 32 | }) 33 | } 34 | -------------------------------------------------------------------------------- /backend/amp-story-auto-ads.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package backend 16 | 17 | import ( 18 | "fmt" 19 | "math/rand" 20 | "net/http" 21 | "path" 22 | ) 23 | 24 | const NUMBER_OF_CONFIGS = 5 25 | 26 | func InitAmpStoryAutoAds() { 27 | RegisterHandler("/json/amp-story-auto-ads/", serveRandomAdConfig) 28 | } 29 | 30 | func getConfigNumber() int { 31 | return rand.Intn(NUMBER_OF_CONFIGS) 32 | } 33 | 34 | func serveRandomAdConfig(w http.ResponseWriter, r *http.Request) { 35 | configNumber := getConfigNumber() 36 | configName := fmt.Sprintf("amp-story-auto-ads-%v.json", configNumber) 37 | filePath := path.Join(DIST_FOLDER, "json", configName) 38 | 39 | SendJsonFile(w, filePath) 40 | } 41 | -------------------------------------------------------------------------------- /backend/config.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package backend 16 | 17 | const ( 18 | DIST_FOLDER = "dist" 19 | TEMPLATE_FOLDER = "templates" 20 | 21 | AMP_CLIENT_ID_COOKIE = "AMP_ECID_GOOGLE" 22 | 23 | CATEGORY_ADVANCED = "advanced" 24 | CATEGORY_COMPONENTS = "components" 25 | CATEGORY_SAMPLE_TEMPLATES = "samples_templates" 26 | // Where to find the SXG service (i.e. host running https://github.com/ampproject/amppackager) 27 | PACKAGER_PREFIX = "https://amp-by-example-sxg.appspot.com/" 28 | ) 29 | -------------------------------------------------------------------------------- /backend/datastore/datastore.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package datastore 16 | 17 | import ( 18 | "io/ioutil" 19 | 20 | "cloud.google.com/go/storage" 21 | "golang.org/x/net/context" 22 | "google.golang.org/appengine/file" 23 | ) 24 | 25 | func ReadFile(ctx context.Context, filename string) ([]byte, error) { 26 | bucketName, err := file.DefaultBucketName(ctx) 27 | if err != nil { 28 | return nil, err 29 | } 30 | 31 | client, err := storage.NewClient(ctx) 32 | if err != nil { 33 | return nil, err 34 | } 35 | defer client.Close() 36 | 37 | bucket := client.Bucket(bucketName) 38 | 39 | rc, err := bucket.Object(filename).NewReader(ctx) 40 | if err != nil { 41 | return nil, err 42 | } 43 | defer rc.Close() 44 | 45 | data, err := ioutil.ReadAll(rc) 46 | if err != nil { 47 | return nil, err 48 | } 49 | 50 | return data, nil 51 | } 52 | -------------------------------------------------------------------------------- /backend/echo.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package backend 16 | 17 | import ( 18 | "net/http" 19 | ) 20 | 21 | const ( 22 | ECHO_ENDPOINT = "/echo" 23 | 24 | MAX_FORM_SIZE = 1024 * 100 25 | ) 26 | 27 | func InitEcho() { 28 | RegisterHandler(ECHO_ENDPOINT, echoEndpoint) 29 | } 30 | 31 | func echoEndpoint(w http.ResponseWriter, r *http.Request) { 32 | r.ParseMultipartForm(MAX_FORM_SIZE) 33 | 34 | resp := make(map[string]string) 35 | for key := range r.Form { 36 | resp[key] = r.Form.Get(key) 37 | } 38 | 39 | SendJsonResponse(w, resp) 40 | } 41 | -------------------------------------------------------------------------------- /backend/form.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package backend 16 | 17 | import ( 18 | "fmt" 19 | "strings" 20 | ) 21 | 22 | func parseFormErrors(errors []error) error { 23 | var flatErrors []string 24 | for _, value := range errors { 25 | appendError(value, flatErrors) 26 | } 27 | 28 | if flatErrors != nil { 29 | return fmt.Errorf(strings.Join(flatErrors, "\n")) 30 | } 31 | return nil 32 | } 33 | 34 | func appendError(anError error, errors []string) { 35 | if anError != nil { 36 | errors = append(errors, anError.Error()) 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /backend/rating.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package backend 16 | 17 | import ( 18 | "net/http" 19 | ) 20 | 21 | const ( 22 | RATING_SAMPLE_PATH = "/" + CATEGORY_SAMPLE_TEMPLATES + "/rating/" 23 | ) 24 | 25 | func InitRatingSample() { 26 | RegisterHandler(RATING_SAMPLE_PATH+"set", onlyPost(submitRatingXHR)) 27 | } 28 | 29 | func submitRatingXHR(w http.ResponseWriter, r *http.Request) { 30 | rating := r.FormValue("rating") 31 | SendJsonResponse(w, map[string]string{ 32 | "rating": rating, 33 | }) 34 | } 35 | -------------------------------------------------------------------------------- /backend/time.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package backend 16 | 17 | import ( 18 | "net/http" 19 | "time" 20 | ) 21 | 22 | const ( 23 | BIND_SAMPLE_PATH = "/" + CATEGORY_COMPONENTS + "/time/" 24 | ) 25 | 26 | func InitStateRefreshSection() { 27 | RegisterHandler(BIND_SAMPLE_PATH, getTime) 28 | } 29 | 30 | func getTime(w http.ResponseWriter, r *http.Request) { 31 | SendJsonResponse(w, time.Now().Format("15:04:05")) 32 | } 33 | -------------------------------------------------------------------------------- /backend/util/strings.go: -------------------------------------------------------------------------------- 1 | // Copyright Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package util 16 | 17 | import ( 18 | "math/rand" 19 | "time" 20 | ) 21 | 22 | func init() { 23 | rand.Seed(time.Now().UTC().UnixNano()) 24 | } 25 | 26 | func RandomString(strlen int) string { 27 | const chars = "abcdefghijklmnopqrstuvwxyz0123456789" 28 | result := make([]byte, strlen) 29 | for i := 0; i < strlen; i++ { 30 | result[i] = chars[rand.Intn(len(chars))] 31 | } 32 | return string(result) 33 | } 34 | -------------------------------------------------------------------------------- /boilerplate-generator/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | 3 | -------------------------------------------------------------------------------- /boilerplate-generator/data/formats.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "amphtml", 4 | "name": "Website", 5 | "default": true 6 | }, 7 | { 8 | "id": "amp4stories", 9 | "name": "Story" 10 | }, 11 | { 12 | "id": "amp4email", 13 | "name": "Email" 14 | }, 15 | { 16 | "id": "amp4ads", 17 | "name": "Ad" 18 | } 19 | ] 20 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/files/amp4ads.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {{> render-delaying/amp-experiment-preload.html }} 9 | {{> render-delaying/amp-dynamic-css-classes-preload.html }} 10 | {{> fonts/google-preconnect.html }} 11 | {{> analytics/amp-analytics-import.html }} 12 | {{> fonts/google-import.html }} 13 | 18 | 19 | 20 |

Hello, AMP for Ads world.

21 | {{> analytics/google.html }} 22 | {{> analytics/adobe.html }} 23 | 24 | 25 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/files/amp4email.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | 14 |

Hello, I am an AMP EMAIL!

15 | 16 | 17 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/files/bookend.json: -------------------------------------------------------------------------------- 1 | { 2 | "bookendVersion": "v1.0", 3 | "shareProviders": [ 4 | "email", 5 | "tumblr", 6 | { 7 | "provider": "twitter", 8 | "text": "This is custom share text that I would like for the Twitter platform" 9 | }, 10 | { 11 | "provider": "facebook", 12 | "app_id": "MY_FACEBOOK_APP_ID" 13 | } 14 | ], 15 | "components": [ 16 | { 17 | "type": "heading", 18 | "text": "More to read" 19 | }, 20 | { 21 | "type": "small", 22 | "title": "This is India an the best places you should go", 23 | "url": "http://example.com/article.html", 24 | "image": "http://placehold.it/256x128" 25 | } 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/files/serviceworkerIframe.html: -------------------------------------------------------------------------------- 1 | 2 | installing service worker 3 | 8 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/analytics/adobe.html: -------------------------------------------------------------------------------- 1 | \{{#adobeAnalytics.selected}} 2 | 3 | 35 | 36 | \{{/adobeAnalytics.selected}} 37 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/analytics/amp-analytics-import.html: -------------------------------------------------------------------------------- 1 | \{{#ampAnalytics}} 2 | 3 | \{{/ampAnalytics}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/analytics/google.html: -------------------------------------------------------------------------------- 1 | \{{#googleAnalytics.selected}} 2 | 3 | 16 | 17 | \{{/googleAnalytics.selected}} 18 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/fonts/google-import.html: -------------------------------------------------------------------------------- 1 | \{{#googleFonts.selected}} 2 | 3 | \{{/googleFonts.selected}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/fonts/google-preconnect.html: -------------------------------------------------------------------------------- 1 | \{{#googleFonts.selected}} 2 | 3 | \{{/googleFonts.selected}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/media/amp-video-import.html: -------------------------------------------------------------------------------- 1 | \{{#ampVideo}} 2 | 3 | \{{/ampVideo}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/media/hero-image-amp4stories.html: -------------------------------------------------------------------------------- 1 | \{{#heroImage.selected}} 2 | 7 | 8 | \{{/heroImage.selected}} 9 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/media/hero-image-amphtml.html: -------------------------------------------------------------------------------- 1 | \{{#heroImage.selected}} 2 | 7 | 8 | \{{/heroImage.selected}} 9 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/media/hero-image-preload.html: -------------------------------------------------------------------------------- 1 | \{{#heroImage.selected}} 2 | 3 | \{{/heroImage.selected}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/media/hero-video-amp4stories.html: -------------------------------------------------------------------------------- 1 | \{{#heroVideo.selected}} 2 | 10 | 11 | 12 |
This browser does not support the video element.
13 |
14 | \{{/heroVideo.selected}} 15 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/media/hero-video-amphtml.html: -------------------------------------------------------------------------------- 1 | \{{#heroVideo.selected}} 2 | 10 | 11 | 12 |
This browser does not support the video element.
13 |
14 | \{{/heroVideo.selected}} 15 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/media/hero-video-preload.html: -------------------------------------------------------------------------------- 1 | \{{#heroVideo.selected}} 2 | 3 | \{{/heroVideo.selected}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/pwa/amp-install-serviceworker-import.html: -------------------------------------------------------------------------------- 1 | \{{#serviceworker.selected}} 2 | 3 | \{{/serviceworker.selected}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/pwa/amp-install-serviceworker.html: -------------------------------------------------------------------------------- 1 | \{{#serviceworker.selected}} 2 | 5 | 6 | \{{/serviceworker.selected}} 7 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/pwa/manifest.html: -------------------------------------------------------------------------------- 1 | \{{#manifest.selected}} 2 | 3 | \{{/manifest.selected}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/render-delaying/amp-dynamic-css-classes-import.html: -------------------------------------------------------------------------------- 1 | \{{#ampDynamicCss.selected}} 2 | 3 | \{{/ampDynamicCss.selected}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/render-delaying/amp-dynamic-css-classes-preload.html: -------------------------------------------------------------------------------- 1 | \{{#ampDynamicCss.selected}} 2 | 3 | \{{/ampDynamicCss.selected}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/render-delaying/amp-experiment-import.html: -------------------------------------------------------------------------------- 1 | \{{#ampExperiment.selected}} 2 | 3 | \{{/ampExperiment.selected}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/render-delaying/amp-experiment-preload.html: -------------------------------------------------------------------------------- 1 | \{{#ampExperiment.selected}} 2 | 3 | \{{/ampExperiment.selected}} 4 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/structured-data/article.html: -------------------------------------------------------------------------------- 1 | \{{#jsonNewsArticle.selected}} 2 | 33 | \{{/jsonNewsArticle.selected}} 34 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/structured-data/video.html: -------------------------------------------------------------------------------- 1 | \{{#jsonVideo.selected}} 2 | 26 | \{{/jsonVideo.selected}} 27 | -------------------------------------------------------------------------------- /boilerplate-generator/templates/partials/structured-data/webpage.html: -------------------------------------------------------------------------------- 1 | \{{#jsonWebpage.selected}} 2 | 32 | \{{/jsonWebpage.selected}} 33 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "amp-by-example", 3 | "description": "AMP by example", 4 | "main": "sw.js", 5 | "authors": [ 6 | "The AMP HTML Authors" 7 | ], 8 | "license": "Apache-2.0", 9 | "homepage": "https://github.com/ampproject/amp-by-example", 10 | "private": true, 11 | "ignore": [ 12 | "**/.*", 13 | "node_modules", 14 | "dist/bower_components", 15 | "test", 16 | "tests" 17 | ], 18 | "dependencies": { 19 | "sw-toolbox": "^3.2.1" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /client-secret.json.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/client-secret.json.enc -------------------------------------------------------------------------------- /deploy.sh: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2016 Google Inc. All Rights Reserved. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS-IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | TRAVIS_PULL_REQUEST = false 18 | 19 | export CLOUDSDK_CORE_DISABLE_PROMPTS=1 20 | export CLOUDSDK_PYTHON_SITEPACKAGES=1 21 | export PATH=$PATH:${HOME}/google-cloud-sdk/bin 22 | test $TRAVIS_PULL_REQUEST == "true" && exit 0 23 | if [ ! -d ${HOME}/google-cloud-sdk ]; then 24 | curl https://sdk.cloud.google.com | bash; 25 | fi 26 | curl https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.67.zip > go_appengine_sdk_linux_amd64.zip 27 | unzip go_appengine_sdk_linux_amd64.zip 28 | gcloud auth activate-service-account --key-file client-secret.json 29 | go_appengine/appcfg.py update . --skip_sdk_update_check --oauth2_access_token=$(gcloud auth print-access-token) -A amp-by-example -V 1 30 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/index.html -------------------------------------------------------------------------------- /lib/examples/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | -------------------------------------------------------------------------------- /lib/examples/standalone.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2015 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS-IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | 'use strict' 18 | 19 | const path = require('path'); 20 | const {parseSample} = require('../'); 21 | 22 | /** 23 | * Sample demonstrating how to parse and pre-compile sample file. The result is 24 | * a document containing head, css and code sections as well as the pre-compiled 25 | * source document (e.g. with absolute paths being replaced). 26 | */ 27 | const sampleFilePath = path.join(__dirname, '../../src/20_Components/amp-video-iframe.html'); 28 | // these options are currently used 29 | const config = { 30 | host: 'https://example.com', 31 | api: { 32 | host: 'https://api.example.com' 33 | } 34 | } 35 | 36 | parseSample(sampleFilePath, config).then((sample) => { 37 | console.log(sample.document.title); 38 | console.log(sample.source); 39 | }); 40 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2015 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS-IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | "use strict"; 18 | 19 | module.exports = {}; 20 | module.exports.parseSample = require('./Standalone.js'); 21 | 22 | -------------------------------------------------------------------------------- /packager/app.yaml: -------------------------------------------------------------------------------- 1 | # https://cloud.google.com/appengine/docs/flexible/custom-runtimes/ 2 | runtime: custom 3 | env: flex 4 | # https://cloud.google.com/appengine/docs/flexible/custom-runtimes/configuring-your-app-with-app-yaml#manual-scaling 5 | manual_scaling: 6 | # Only start one instance so the OCSPCache is shared, see 7 | # https://github.com/ampproject/amppackager#redundancy 8 | instances: 1 9 | -------------------------------------------------------------------------------- /packager/certs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /packager/decrypt.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ -e /amppkg/privkey.pem && -e /amppkg/cert.pem ]]; then 4 | echo "info: /amppkg/{privkey,cert}.pem already exist, not decrypting" 5 | exit 0 6 | fi 7 | 8 | if [[ -z $PASSWORD ]]; then 9 | # To set the password, see https://cloud.google.com/compute/docs/storing-retrieving-metadata?hl=en_US#projectwide 10 | # Re security, see https://cloud.google.com/compute/docs/storing-retrieving-metadata#is_metadata_information_secure 11 | PASSWORD=$(curl -Ss -H 'Metadata-Flavor: Google' http://metadata.google.internal/computeMetadata/v1/project/attributes/password) 12 | if [[ $? -ne 0 ]]; then 13 | echo "error: can't retrieve PASSWORD from metadata store, can't decrypt keys" 14 | exit 1 15 | fi 16 | fi 17 | 18 | # Why -md md5? https://www.openssl.org/docs/faq.html#USER3 19 | openssl aes-256-cbc -d -md md5 -k "$PASSWORD" -in /amppkg/privkey.pem.enc -out /amppkg/privkey.pem 20 | 21 | if [[ $? -ne 0 ]]; then 22 | echo "error: can't decrypt /amppkg/privkey.pem.enc (wrong password?)" 23 | exit 1 24 | fi 25 | 26 | openssl aes-256-cbc -d -md md5 -k "$PASSWORD" -in /amppkg/cert.pem.enc -out /amppkg/cert.pem 27 | 28 | if [[ $? -ne 0 ]]; then 29 | echo "error: can't decrypt /amppkg/cert.pem.enc (wrong password?)" 30 | exit 1 31 | fi 32 | -------------------------------------------------------------------------------- /playground/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "babel-eslint", 3 | "extends": "google", 4 | "parserOptions": { 5 | "ecmaVersion": 2017, 6 | "sourceType": "module" 7 | }, 8 | "rules": { 9 | "max-len": [2, 100, { 10 | "ignoreComments": true, 11 | "ignoreUrls": true, 12 | "tabWidth": 2 13 | }], 14 | "no-implicit-coercion": [2, { 15 | "boolean": false, 16 | "number": true, 17 | "string": true 18 | }], 19 | "no-unused-expressions": [2, { 20 | "allowShortCircuit": true, 21 | "allowTernary": false 22 | }], 23 | "no-unused-vars": [2, { 24 | "vars": "all", 25 | "args": "after-used", 26 | "argsIgnorePattern": "(^reject$|^_$)", 27 | "varsIgnorePattern": "(^_$)" 28 | }], 29 | "quotes": [2, "single"], 30 | "require-jsdoc": 0, 31 | "valid-jsdoc": 0, 32 | "prefer-arrow-callback": 1, 33 | "no-var": 1 34 | }, 35 | "env": { 36 | "browser": true, 37 | "jasmine": true, 38 | "es6": true 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /playground/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist 3 | .cache 4 | -------------------------------------------------------------------------------- /playground/spec/run.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The AMPHTML Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | import Jasmine from 'jasmine'; 16 | 17 | let jasmine = new Jasmine(); 18 | // modify this line to point to your jasmine.json 19 | jasmine.loadConfigFile('./spec/support/jasmine.json'); 20 | jasmine.execute(); 21 | -------------------------------------------------------------------------------- /playground/spec/support/jasmine.json: -------------------------------------------------------------------------------- 1 | { 2 | "spec_dir": "src", 3 | "spec_files": [ 4 | "**/*[sS]pec.js" 5 | ], 6 | "helpers": [ 7 | "helpers/**/*.js" 8 | ], 9 | "stopSpecOnExpectationFailure": false, 10 | "random": false 11 | } 12 | -------------------------------------------------------------------------------- /playground/src/analytics/base.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The AMPHTML Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /* global ga */ 16 | // https://philipwalton.com/articles/the-google-analytics-setup-i-use-on-every-site-i-build/ 17 | export const init = () => { 18 | // Initialize the command queue in case analytics.js hasn't loaded yet. 19 | window.ga = window.ga || ((...args) => (ga.q = ga.q || []).push(args)); 20 | 21 | ga('create', 'UA-73836974-1', 'auto'); 22 | ga('set', 'transport', 'beacon'); 23 | ga('send', 'pageview'); 24 | }; 25 | -------------------------------------------------------------------------------- /playground/src/button/button.hbs: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /playground/src/debounce/debounce.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The AMPHTML Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Returns a function, that, as long as it continues to be invoked, will not 16 | // be triggered. The function will be called after it stops being called for 17 | // N milliseconds. If `immediate` is passed, trigger the function on the 18 | // leading edge, instead of the trailing. 19 | export default function(func, wait, immediate) { 20 | let timeout; 21 | return (...args) => { 22 | const later = () => { 23 | timeout = null; 24 | if (!immediate) { 25 | func(...args); 26 | } 27 | }; 28 | const callNow = immediate && !timeout; 29 | clearTimeout(timeout); 30 | timeout = setTimeout(later, wait); 31 | if (callNow) { 32 | func(...args); 33 | } 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /playground/src/dialog/base.css: -------------------------------------------------------------------------------- 1 | .dialog { 2 | position: fixed; 3 | display: flex; 4 | z-index: 20000; 5 | top: 0; 6 | bottom: 0; 7 | left: 0; 8 | right: 0; 9 | overflow-x: hidden; 10 | overflow-y: auto; 11 | background: rgba(0,0,0,0.6); 12 | animation: fadein 0.25s ease-in-out; 13 | -webkit-overflow-scrolling: touch; 14 | } 15 | .dialog-content { 16 | position: relative; 17 | min-width: 700px; 18 | margin: 2rem auto auto auto; 19 | padding: 2rem; 20 | background-color: #fff; 21 | } 22 | .dialog-content .close { 23 | position: absolute; 24 | top: 0; 25 | right: 0; 26 | padding: 8px; 27 | width: 48px; 28 | height: 48px; 29 | } 30 | @media (max-width: 767px) { 31 | .dialog { 32 | display: block; 33 | min-width: auto; 34 | min-height: 100%; 35 | } 36 | .dialog-content { 37 | position: initial; 38 | padding: 1rem; 39 | background-color: #fff; 40 | width: 100%; 41 | min-height: 100%; 42 | margin: 0; 43 | } 44 | .dialog-content .close { 45 | position: fixed; 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /playground/src/dialog/dialog-container.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 9 |
10 |
11 | -------------------------------------------------------------------------------- /playground/src/editor/editor.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-error-markers { 2 | width: 8px; 3 | } 4 | .CodeMirror-cursor { 5 | border-left: 3px solid black; 6 | border-right: none; 7 | width: 3; 8 | } 9 | .CodeMirror-activeline-background { 10 | background: #e8f2ff; 11 | } 12 | .CodeMirror { 13 | font-family: var(--font-family-monospace); 14 | font-size: 14px; 15 | height: 100%; 16 | } 17 | .CodeMirror-gutters { 18 | background: #fff; 19 | border: none; 20 | } 21 | 22 | .gutter-error { 23 | background-color: var(--accent-color); 24 | } 25 | .gutter-error, .gutter-warning { 26 | border-radius: 50%; 27 | cursor: pointer; 28 | display: inline-block; 29 | height: 12px; 30 | width: 12px; 31 | vertical-align: middle; 32 | position: relative; 33 | margin-left: 2px; 34 | margin-top: 2px; 35 | box-shadow: 0 0 5px 2px rgba(0,0,0,.1); 36 | } 37 | .gutter-error > span, 38 | .gutter-warning > span { 39 | display: none; 40 | } 41 | .gutter-error:hover > span, 42 | .gutter-warning:hover > span { 43 | display: block; 44 | background: #fff; 45 | z-index: 100; 46 | min-width: 400px; 47 | max-width: 100%; 48 | position: relative; 49 | left: 36px; 50 | top: 16px; 51 | padding: 8px; 52 | box-shadow: 0 0 5px 2px rgba(0,0,0,.1); 53 | animation: fadein 0.25s ease-in-out forwards; 54 | } 55 | 56 | @media (max-width: 767px) { 57 | .CodeMirror { 58 | font-size: 16px; 59 | padding-bottom: 1rem; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /playground/src/editor/hints.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints { 2 | padding: 4px 8px; 3 | box-shadow: 0 0 5px 2px rgba(0,0,0,.1); 4 | font-family: consolas, menlo, monospace; 5 | 6 | /** Don't want scroll bars showing up on page */ 7 | max-height: 60%; 8 | font-size: 80%; 9 | } 10 | 11 | .CodeMirror-hint { 12 | margin: 0; 13 | padding: 2px; 14 | } 15 | 16 | li.CodeMirror-hint-active { 17 | background: var(--accent-color); 18 | color: var(--light-color); 19 | padding: 2px; 20 | } 21 | -------------------------------------------------------------------------------- /playground/src/editor/icons/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /playground/src/editor/icons/warning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /playground/src/error-list/icons/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /playground/src/error-list/icons/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /playground/src/error-list/icons/warning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /playground/src/formatter/index.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The AMPHTML Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | import(/* webpackPrefetch: true */ 'js-beautify/js/lib/beautify-html.js'); 16 | 17 | const BEAUTIFY_OPTIONS = { 18 | 'indent_size': 2, 19 | 'unformatted': ['noscript', 'style'], 20 | 'indent-char': ' ', 21 | 'no-preserve-newlines': '', 22 | 'extra_liners': [], 23 | }; 24 | 25 | class Formatter { 26 | format(code) { 27 | return import(/* webpackChunkName: "js-beautify" */ 'js-beautify/js/lib/beautify-html.js') 28 | // eslint-disable-next-line google-camelcase/google-camelcase 29 | .then((jsBeautify) => jsBeautify.html_beautify(code, BEAUTIFY_OPTIONS)); 30 | } 31 | } 32 | 33 | export default new Formatter(); 34 | -------------------------------------------------------------------------------- /playground/src/lazy-load/base.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The AMPHTML Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | const cache = []; 15 | 16 | export default function lazyLoad(scriptUrl) { 17 | let result = cache[scriptUrl]; 18 | if (!result) { 19 | result = new Promise((resolve) => { 20 | const script = document.createElement('script'); 21 | script.async = true; 22 | script.src = scriptUrl; 23 | script.onload = resolve; 24 | document.head.appendChild(script); 25 | }); 26 | cache[scriptUrl] = result; 27 | } 28 | return result; 29 | } 30 | -------------------------------------------------------------------------------- /playground/src/loader/base.critical.css: -------------------------------------------------------------------------------- 1 | /* Loader */ 2 | .loader { 3 | position: absolute; 4 | text-align: center; 5 | display: block; 6 | height: 10px; 7 | top: 50%; 8 | left: 50%; 9 | transform: translateX(-50%) translateY(-50%); 10 | transform-origin: 50% 50%; 11 | white-space: nowrap; 12 | z-index: 1; 13 | align-items: center; 14 | } 15 | 16 | .loader-dot { 17 | position: relative; 18 | display: inline-block; 19 | 20 | height: 10px; 21 | width: 10px; 22 | margin: 2px; 23 | border-radius: 100%; 24 | background-color: #000; 25 | opacity: 0.6; 26 | 27 | box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, .2); 28 | will-change: transform; 29 | animation: loader-dots 2s infinite; 30 | } 31 | 32 | .loader .loader-dot:nth-child(1) { 33 | animation-delay: 0s; 34 | } 35 | 36 | .loader .loader-dot:nth-child(2) { 37 | animation-delay: .1s; 38 | } 39 | 40 | .loader .loader-dot:nth-child(3) { 41 | animation-delay: .2s; 42 | } 43 | 44 | @keyframes loader-dots { 45 | 0%, 100% { 46 | transform: scale(.7); 47 | opacity: 0.5; 48 | } 49 | 50 | 50% { 51 | transform: scale(.8); 52 | opacity: 0.9; 53 | } 54 | } 55 | 56 | .loader-fadeOut { 57 | animation: 0.25s ease-out fadeout; 58 | animation-fill-mode: forwards; 59 | } 60 | 61 | -------------------------------------------------------------------------------- /playground/src/loader/loader.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | 7 | -------------------------------------------------------------------------------- /playground/src/menu/base.css: -------------------------------------------------------------------------------- 1 | .menu { 2 | display: flex; 3 | flex-direction: column; 4 | background: white; 5 | z-index: 2000; 6 | position: fixed; 7 | top: 0; 8 | right: 0; 9 | padding: 0.5rem 0; 10 | animation: revealMenu 150ms ease-in-out forwards; 11 | } 12 | .menu.hide { 13 | display: none; 14 | } 15 | @keyframes revealMenuContent { 16 | 100% { 17 | opacity: 1; 18 | } 19 | } 20 | @keyframes revealMenu { 21 | 0% { 22 | transform: translateX(110%) translateY(-110%); 23 | } 24 | 100% { 25 | transform: translateX(0) translateY(0); 26 | } 27 | } 28 | .menu > * { 29 | padding: 0 2rem; 30 | line-height: 32px; 31 | font-size: 16px; 32 | font-weight: 500; 33 | font-family: var(--font-family-monospace); 34 | margin: 0; 35 | opacity: 0; 36 | animation: revealMenuContent 100ms ease-out forwards 120ms; 37 | display: flex; 38 | align-items: center; 39 | } 40 | .menu > h2 { 41 | display: inline-block; 42 | font-size: 1.2em; 43 | margin: 0; 44 | color: var(--accent-color); 45 | } 46 | .menu > img { 47 | padding: 0; 48 | margin: 0 1.5rem; 49 | } 50 | .menu input { 51 | margin-right: 8px; 52 | } 53 | 54 | .menu label:active, 55 | .menu [role=button]:active { 56 | background: var(--light-bg-color); 57 | } 58 | 59 | .menu [role=separator] { 60 | padding: 0; 61 | height: 0; 62 | margin: 0.5rem 0; 63 | border: none; 64 | border-bottom: 1px solid rgba(0, 0, 0, 0.12); 65 | } 66 | -------------------------------------------------------------------------------- /playground/src/navigation-warning/navigation-warning.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The AMPHTML Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | class NavigationWarning { 16 | constructor(win) { 17 | this.win = win; 18 | } 19 | 20 | enable() { 21 | this.win.onbeforeunload = () => true; 22 | } 23 | 24 | disable() { 25 | this.win.onbeforeunload = null; 26 | } 27 | } 28 | 29 | export default new NavigationWarning(window); 30 | -------------------------------------------------------------------------------- /playground/src/node/base.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The AMPHTML Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export const isDescendant = (node, parent) => { 16 | while (node) { 17 | if (node === parent) { 18 | return true; 19 | } 20 | node = node.parentNode; 21 | } 22 | return false; 23 | }; 24 | -------------------------------------------------------------------------------- /playground/src/preview/dimensions/ads.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "label": "Custom", 4 | "width": "320px", 5 | "height": "250px" 6 | }, 7 | { 8 | "label": "300x50", 9 | "width": "300px", 10 | "height": "50px" 11 | }, 12 | { 13 | "label": "300x250", 14 | "width": "300px", 15 | "height": "250px" 16 | }, 17 | { 18 | "label": "300x600", 19 | "width": "300px", 20 | "height": "600px" 21 | }, 22 | { 23 | "label": "320x50", 24 | "width": "320px", 25 | "height": "50px" 26 | }, 27 | { 28 | "label": "320x100", 29 | "width": "320px", 30 | "height": "100px" 31 | }, 32 | { 33 | "label": "300x250", 34 | "width": "300px", 35 | "height": "250px", 36 | "selected": true 37 | }, 38 | { 39 | "label": "728x90", 40 | "width": "728px", 41 | "height": "90px" 42 | } 43 | ] 44 | -------------------------------------------------------------------------------- /playground/src/preview/dimensions/devices.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "label": "Custom", 4 | "width": "320px", 5 | "height": "80px", 6 | "selected": true 7 | }, 8 | { 9 | "label": "iPhone 5", 10 | "width": "320px", 11 | "height": "568px" 12 | }, 13 | { 14 | "label": "iPhone 7", 15 | "width": "375px", 16 | "height": "667px" 17 | }, 18 | { 19 | "label": "iPhone 7 Plus", 20 | "width": "414px", 21 | "height": "736px" 22 | }, 23 | { 24 | "label": "Nexus 5", 25 | "width": "360px", 26 | "height": "598px" 27 | }, 28 | { 29 | "label": "Nexus 5X / 6p", 30 | "width": "412px", 31 | "height": "732px" 32 | }, 33 | { 34 | "label": "Responsive", 35 | "width": "100%", 36 | "height": "100%", 37 | "selected": true 38 | } 39 | ] 40 | -------------------------------------------------------------------------------- /playground/src/runtime/detector.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The AMPHTML Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | import runtimes from './runtimes.js'; 16 | 17 | const STORY_REGEX = //i; 18 | const AMPHTML_AD_REGEX = /amp4ads-boilerplate/i; 19 | const EMAIL_REGEX = /amp4email-boilerplate/i; 20 | 21 | const detectRuntime = (string) => { 22 | if (string.match(STORY_REGEX)) { 23 | return runtimes.get('amp4stories'); 24 | } 25 | if (string.match(AMPHTML_AD_REGEX)) { 26 | return runtimes.get('amp4ads'); 27 | } 28 | if (string.match(EMAIL_REGEX)) { 29 | return runtimes.get('amp4email'); 30 | } 31 | return runtimes.get('amphtml'); 32 | }; 33 | 34 | export default detectRuntime; 35 | -------------------------------------------------------------------------------- /playground/src/runtime/templates/a4a.template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | My AMP AD 7 | 8 | 9 | 14 | 15 | 16 |

Hello, AMP for Ads world.

17 | 18 | 19 | -------------------------------------------------------------------------------- /playground/src/runtime/templates/amphtml.template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | My AMP Page 6 | 7 | 8 | 9 | 10 | 15 | 16 | 17 |

Hello AMPHTML World!

18 | 19 | 20 | -------------------------------------------------------------------------------- /playground/src/runtime/templates/email.template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | My AMP EMAIL 6 | 7 | 8 | 13 | 14 | 15 |

Hello, I am an AMP EMAIL!

16 | 17 | 18 | -------------------------------------------------------------------------------- /playground/src/service-worker/base.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The AMPHTML Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // install serviceWorker 16 | if ('requestIdleCallback' in window && navigator.serviceWorker) { 17 | window.onload = () => { 18 | window.requestIdleCallback(() => { 19 | console.log('registering service worker'); 20 | navigator.serviceWorker.register('/sw.js') 21 | .catch((err) => { 22 | console.error('Unable to register service worker.', err); 23 | }); 24 | }); 25 | }; 26 | } 27 | 28 | -------------------------------------------------------------------------------- /playground/src/snackbar/base.css: -------------------------------------------------------------------------------- 1 | .snackbar-container { 2 | position: fixed; 3 | bottom: 0; 4 | left: 0; 5 | right: 0; 6 | z-index: 100000; 7 | } 8 | .snackbar { 9 | display: flex; 10 | align-items: center; 11 | justify-content: flex-start; 12 | padding: 16px 24px; 13 | /* transform: translateY(-100%); */ 14 | /* will-change: transform; */ 15 | transition: opacity 0.25s 0ms cubic-bezier(0.4, 0, 1, 1); 16 | opacity: 0; 17 | color: #fff; 18 | background-color: #323232; 19 | pointer-events: none; 20 | margin-bottom: 4px; 21 | } 22 | .snackbar-active { 23 | opacity: 1; 24 | /* transform: translateY(0%); */ 25 | } 26 | 27 | @media (min-width: 600px) { 28 | .snackbar-container { 29 | top: 0; 30 | bottom: auto; 31 | } 32 | .snackbar { 33 | min-width: 288px; 34 | max-width: 568px; 35 | border-radius: 4px; 36 | margin: 0 auto; 37 | margin-bottom: 4px; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /playground/src/sw.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The AMPHTML Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | workbox.skipWaiting(); 16 | workbox.clientsClaim(); 17 | 18 | self.addEventListener('install', event => { 19 | const urls = [ 20 | 'https://cdn.ampproject.org/v0.js', 21 | 'https://cdn.ampproject.org/v0/validator.js', 22 | ]; 23 | event.waitUntil( 24 | caches.open(workbox.core.cacheNames.runtime).then(cache => cache.addAll(urls)) 25 | ); 26 | }); 27 | 28 | const networkFirst = workbox.strategies.networkFirst(); 29 | const staleWhileRevalidate = workbox.strategies.staleWhileRevalidate(); 30 | 31 | workbox.routing.registerRoute(/https:\/\/cdn\.ampproject\.org\/.*/, staleWhileRevalidate); 32 | workbox.routing.registerRoute(/\/document\/.*/, networkFirst); 33 | workbox.routing.registerRoute(/\/amp\/.*/, networkFirst); 34 | workbox.routing.registerRoute(/.*/, staleWhileRevalidate); 35 | -------------------------------------------------------------------------------- /playground/src/template-dialog/base.css: -------------------------------------------------------------------------------- 1 | .textfield-fullwidth input { 2 | width: 100%; 3 | height: 100%; 4 | padding: 0; 5 | resize: none; 6 | border: none !important; 7 | } 8 | .textfield-fullwidth input:focus { 9 | outline: none; 10 | } 11 | .textfield-fullwidth { 12 | height: 56px; 13 | display: block; 14 | width: 100%; 15 | -webkit-box-sizing: border-box; 16 | box-sizing: border-box; 17 | margin: 0; 18 | border: none; 19 | border-bottom: 1px solid rgba(0, 0, 0, 0.12); 20 | outline: none; 21 | } 22 | #templates ul { 23 | list-style: none; 24 | padding: 0; 25 | margin: 0; 26 | } 27 | #templates li { 28 | font-size: 1rem; 29 | font-weight: 400; 30 | letter-spacing: 0.04em; 31 | line-height: 1.75rem; 32 | color: rgba(0, 0, 0, 0.87); 33 | margin: 0; 34 | margin-left: -8px; 35 | padding: 8px; 36 | list-style-type: none; 37 | cursor: pointer; 38 | } 39 | #templates li:hover, 40 | #templates li:active { 41 | background-color: var(--dark-bg-color); 42 | } 43 | #templates li.filtered { 44 | display: none; 45 | } 46 | 47 | -------------------------------------------------------------------------------- /playground/src/template-dialog/header.html: -------------------------------------------------------------------------------- 1 |

Select Template

2 |
3 | 4 |
5 | -------------------------------------------------------------------------------- /playground/src/title-updater/base.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The AMPHTML Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | class TitleUpdater { 16 | constructor(win) { 17 | this.win = win; 18 | this.originalTitle = win.document.title; 19 | this.titleLabel = win.document.getElementById('document-title'); 20 | } 21 | 22 | update(text) { 23 | this.win.requestIdleCallback(() => { 24 | const match = text.match(/]*>([^<]+)<\/title>/im); 25 | const snippetTitle = match ? match[1] : 'untitled'; 26 | this.titleLabel.textContent = snippetTitle; 27 | this.titleLabel.classList.toggle('hidden', false); 28 | this.win.document.title = snippetTitle + ' - ' + this.originalTitle; 29 | }); 30 | } 31 | } 32 | 33 | export default new TitleUpdater(window); 34 | -------------------------------------------------------------------------------- /playground/static/images/icons/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/playground/static/images/icons/icon-128x128.png -------------------------------------------------------------------------------- /playground/static/images/icons/icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/playground/static/images/icons/icon-144x144.png -------------------------------------------------------------------------------- /playground/static/images/icons/icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/playground/static/images/icons/icon-152x152.png -------------------------------------------------------------------------------- /playground/static/images/icons/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/playground/static/images/icons/icon-192x192.png -------------------------------------------------------------------------------- /playground/static/images/icons/icon-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/playground/static/images/icons/icon-384x384.png -------------------------------------------------------------------------------- /playground/static/images/icons/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/playground/static/images/icons/icon-512x512.png -------------------------------------------------------------------------------- /playground/static/images/icons/icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/playground/static/images/icons/icon-72x72.png -------------------------------------------------------------------------------- /playground/static/images/icons/icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/playground/static/images/icons/icon-96x96.png -------------------------------------------------------------------------------- /playground/static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AMP Playground", 3 | "short_name": "Playground", 4 | "theme_color": "#b60845", 5 | "background_color": "#ffffff", 6 | "display": "standalone", 7 | "Scope": ".", 8 | "start_url": ".", 9 | "icons": [ 10 | { 11 | "src": "images/icons/icon-72x72.png", 12 | "sizes": "72x72", 13 | "type": "image/png" 14 | }, 15 | { 16 | "src": "images/icons/icon-96x96.png", 17 | "sizes": "96x96", 18 | "type": "image/png" 19 | }, 20 | { 21 | "src": "images/icons/icon-128x128.png", 22 | "sizes": "128x128", 23 | "type": "image/png" 24 | }, 25 | { 26 | "src": "images/icons/icon-144x144.png", 27 | "sizes": "144x144", 28 | "type": "image/png" 29 | }, 30 | { 31 | "src": "images/icons/icon-152x152.png", 32 | "sizes": "152x152", 33 | "type": "image/png" 34 | }, 35 | { 36 | "src": "images/icons/icon-192x192.png", 37 | "sizes": "192x192", 38 | "type": "image/png" 39 | }, 40 | { 41 | "src": "images/icons/icon-384x384.png", 42 | "sizes": "384x384", 43 | "type": "image/png" 44 | }, 45 | { 46 | "src": "images/icons/icon-512x512.png", 47 | "sizes": "512x512", 48 | "type": "image/png" 49 | } 50 | ], 51 | "splash_pages": null 52 | } 53 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /spec/compiler/FileNameSpecFiles/a.html: -------------------------------------------------------------------------------- 1 | a.html 2 | -------------------------------------------------------------------------------- /spec/compiler/FileNameSpecFiles/b.html: -------------------------------------------------------------------------------- 1 | b.html 2 | -------------------------------------------------------------------------------- /spec/support/jasmine.json: -------------------------------------------------------------------------------- 1 | { 2 | "spec_dir": "spec", 3 | "spec_files": [ 4 | "**/*[sS]pec.js" 5 | ], 6 | "helpers": [ 7 | "helpers/**/*.js" 8 | ], 9 | "stopSpecOnExpectationFailure": false, 10 | "random": false 11 | } 12 | -------------------------------------------------------------------------------- /src/10_Introduction/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Get started with AMP and learn how to build your first AMP page." 3 | } 4 | -------------------------------------------------------------------------------- /src/20_Components/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "AMP components in action. Learn how to build AMPs using the built-in components." 3 | } 4 | -------------------------------------------------------------------------------- /src/30_Advanced/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Advanced AMP integrations. Learn how to get the most out of AMP." 3 | } 4 | -------------------------------------------------------------------------------- /src/60_Samples_%26_Templates/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Templates and metadata samples for different kinds of AMPs." 3 | } 4 | -------------------------------------------------------------------------------- /src/70_User_Consent/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Samples demonstrating how to ask users for consent." 3 | } 4 | -------------------------------------------------------------------------------- /src/amp-ads/10_Introduction/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Getting started with AMPHTML ads and how they work." 3 | } 4 | -------------------------------------------------------------------------------- /src/amp-ads/40_Experimental_Ads/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "AMPHTML ad samples using experimental features demonstrating what is soon going to be possible with the AMPHTML ad format." 3 | } 4 | -------------------------------------------------------------------------------- /src/amp-ads/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AMPHTML ads", 3 | "title": "AMPHTML ads by Example", 4 | "desc": "Learn how to create AMPHTML ads. AMPHTML ads are ads built using AMP-HTML and use many of the same AMP components that make AMP pages performant and safe.", 5 | "index": 1 6 | } 7 | -------------------------------------------------------------------------------- /src/amp-form-success.html: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | Success 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/amphtml-email/10_Introduction/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Getting started with AMPHTML email." 3 | } 4 | -------------------------------------------------------------------------------- /src/amphtml-email/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AMPHTML email", 3 | "title": "AMPHTML email by Example", 4 | "desc": "Learn how to create interactive emails with AMPHTML email.", 5 | "index": 3 6 | } 7 | -------------------------------------------------------------------------------- /src/fonts/ComicAMP.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/fonts/ComicAMP.ttf -------------------------------------------------------------------------------- /src/fonts/ComicAMP2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/fonts/ComicAMP2.ttf -------------------------------------------------------------------------------- /src/img/AMP-Brand-White-Icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/Border_Collie.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/Border_Collie.jpg -------------------------------------------------------------------------------- /src/img/GitHub-Mark-Light-32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/GitHub-Mark-Light-32px.png -------------------------------------------------------------------------------- /src/img/GitHub-Mark-Light-64px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/GitHub-Mark-Light-64px.png -------------------------------------------------------------------------------- /src/img/Hovawart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/Hovawart.jpg -------------------------------------------------------------------------------- /src/img/Shetland_Sheepdog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/Shetland_Sheepdog.jpg -------------------------------------------------------------------------------- /src/img/abe_device_screenshot_1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/abe_device_screenshot_1x.png -------------------------------------------------------------------------------- /src/img/abe_device_screenshot_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/abe_device_screenshot_2x.png -------------------------------------------------------------------------------- /src/img/ad-coffee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ad-coffee.jpg -------------------------------------------------------------------------------- /src/img/ad-google-home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ad-google-home.jpg -------------------------------------------------------------------------------- /src/img/ad-hangouts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ad-hangouts.jpg -------------------------------------------------------------------------------- /src/img/ad-youtube-tv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ad-youtube-tv.jpg -------------------------------------------------------------------------------- /src/img/american-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/american-flag.png -------------------------------------------------------------------------------- /src/img/amp-100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-100.jpg -------------------------------------------------------------------------------- /src/img/amp-200.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-200.jpg -------------------------------------------------------------------------------- /src/img/amp-300.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-300.jpg -------------------------------------------------------------------------------- /src/img/amp-300x250.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-300x250.jpg -------------------------------------------------------------------------------- /src/img/amp-400.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-400.jpg -------------------------------------------------------------------------------- /src/img/amp-500.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-500.jpg -------------------------------------------------------------------------------- /src/img/amp-600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-600.jpg -------------------------------------------------------------------------------- /src/img/amp-700.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-700.jpg -------------------------------------------------------------------------------- /src/img/amp-800.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-800.jpg -------------------------------------------------------------------------------- /src/img/amp-900.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-900.jpg -------------------------------------------------------------------------------- /src/img/amp-url-api-placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-url-api-placeholder.png -------------------------------------------------------------------------------- /src/img/amp-video-iframe-sample-placeholder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp-video-iframe-sample-placeholder.jpg -------------------------------------------------------------------------------- /src/img/amp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp.jpg -------------------------------------------------------------------------------- /src/img/amp_cache_validation_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/amp_cache_validation_error.png -------------------------------------------------------------------------------- /src/img/amp_logo_black.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/amp_logo_pink.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/amp_logo_white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/img/bird.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/bird.jpg -------------------------------------------------------------------------------- /src/img/blue-gmail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/blue-gmail.jpg -------------------------------------------------------------------------------- /src/img/blue-stuff.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/blue-stuff.jpg -------------------------------------------------------------------------------- /src/img/buckingham_palace_building_1280x960.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/buckingham_palace_building_1280x960.jpg -------------------------------------------------------------------------------- /src/img/buckingham_palace_entrance_1280x853.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/buckingham_palace_entrance_1280x853.jpg -------------------------------------------------------------------------------- /src/img/bullfinch_poster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/bullfinch_poster.jpg -------------------------------------------------------------------------------- /src/img/canadian-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/canadian-flag.png -------------------------------------------------------------------------------- /src/img/canoe_900x600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/canoe_900x600.jpg -------------------------------------------------------------------------------- /src/img/canoe_900x600_blur.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/canoe_900x600_blur.jpg -------------------------------------------------------------------------------- /src/img/car-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-bg.jpg -------------------------------------------------------------------------------- /src/img/car-engine.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-engine.jpg -------------------------------------------------------------------------------- /src/img/car-front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-front.jpg -------------------------------------------------------------------------------- /src/img/car-gauges.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-gauges.jpg -------------------------------------------------------------------------------- /src/img/car-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-logo.png -------------------------------------------------------------------------------- /src/img/car-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-map.png -------------------------------------------------------------------------------- /src/img/car-mesh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-mesh.jpg -------------------------------------------------------------------------------- /src/img/car-seats.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-seats.jpg -------------------------------------------------------------------------------- /src/img/car-side-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-side-bg.jpg -------------------------------------------------------------------------------- /src/img/car-sideview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-sideview.jpg -------------------------------------------------------------------------------- /src/img/car-sideview1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-sideview1.jpg -------------------------------------------------------------------------------- /src/img/car-sideview2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-sideview2.jpg -------------------------------------------------------------------------------- /src/img/car-steeringwheel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-steeringwheel.jpg -------------------------------------------------------------------------------- /src/img/car-store.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-store.jpg -------------------------------------------------------------------------------- /src/img/car-tunnel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-tunnel.jpg -------------------------------------------------------------------------------- /src/img/car-video-poster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-video-poster.png -------------------------------------------------------------------------------- /src/img/car-vr-360.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/car-vr-360.jpg -------------------------------------------------------------------------------- /src/img/carousel_preview_card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/carousel_preview_card.png -------------------------------------------------------------------------------- /src/img/cat-looking-up-300x200.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/cat-looking-up-300x200.jpg -------------------------------------------------------------------------------- /src/img/clean-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/clean-1.jpg -------------------------------------------------------------------------------- /src/img/clean-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/clean-2.jpg -------------------------------------------------------------------------------- /src/img/clean-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/clean-3.jpg -------------------------------------------------------------------------------- /src/img/clock.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/clock.jpg -------------------------------------------------------------------------------- /src/img/console_showing_validation_errors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/console_showing_validation_errors.png -------------------------------------------------------------------------------- /src/img/dark-overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/dark-overlay.png -------------------------------------------------------------------------------- /src/img/elephant.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/elephant.jpg -------------------------------------------------------------------------------- /src/img/england-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/england-flag.png -------------------------------------------------------------------------------- /src/img/face.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/face.png -------------------------------------------------------------------------------- /src/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/favicon.png -------------------------------------------------------------------------------- /src/img/favicon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/fidget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/fidget.png -------------------------------------------------------------------------------- /src/img/floorplan_518x340.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/floorplan_518x340.jpg -------------------------------------------------------------------------------- /src/img/food.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/food.jpg -------------------------------------------------------------------------------- /src/img/forest-1280x853.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/forest-1280x853.jpg -------------------------------------------------------------------------------- /src/img/forest-1920x1280.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/forest-1920x1280.jpg -------------------------------------------------------------------------------- /src/img/forest-3800x2533.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/forest-3800x2533.jpg -------------------------------------------------------------------------------- /src/img/forest-640x227.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/forest-640x227.jpg -------------------------------------------------------------------------------- /src/img/garlic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/garlic.jpg -------------------------------------------------------------------------------- /src/img/geolocation_map_skeleton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/geolocation_map_skeleton.png -------------------------------------------------------------------------------- /src/img/gist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/gist.png -------------------------------------------------------------------------------- /src/img/golden_apple1_1024x682.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/golden_apple1_1024x682.jpg -------------------------------------------------------------------------------- /src/img/gopher.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/gopher.gif -------------------------------------------------------------------------------- /src/img/gopher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/gopher.png -------------------------------------------------------------------------------- /src/img/green-phone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/green-phone.jpg -------------------------------------------------------------------------------- /src/img/green-stuff.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/green-stuff.jpg -------------------------------------------------------------------------------- /src/img/green_apple_1_1024x682.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/green_apple_1_1024x682.jpg -------------------------------------------------------------------------------- /src/img/green_apple_1_60x40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/green_apple_1_60x40.jpg -------------------------------------------------------------------------------- /src/img/green_apple_2_1024x685.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/green_apple_2_1024x685.jpg -------------------------------------------------------------------------------- /src/img/green_apple_2_60x40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/green_apple_2_60x40.jpg -------------------------------------------------------------------------------- /src/img/ham-house_960x720.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ham-house_960x720.jpg -------------------------------------------------------------------------------- /src/img/hotel01_2benny_640x383.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/hotel01_2benny_640x383.jpg -------------------------------------------------------------------------------- /src/img/hotel02_joepitha_640x383.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/hotel02_joepitha_640x383.jpg -------------------------------------------------------------------------------- /src/img/hotel03_muffinn_640x383.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/hotel03_muffinn_640x383.jpg -------------------------------------------------------------------------------- /src/img/hotel04_robinhawkes_640x383.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/hotel04_robinhawkes_640x383.jpg -------------------------------------------------------------------------------- /src/img/ic_account_box_black_48dp_1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_account_box_black_48dp_1x.png -------------------------------------------------------------------------------- /src/img/ic_add_box_black_24dp_1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_add_box_black_24dp_1x.png -------------------------------------------------------------------------------- /src/img/ic_add_box_black_24dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_add_box_black_24dp_2x.png -------------------------------------------------------------------------------- /src/img/ic_chevron_left_black_24dp_1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_chevron_left_black_24dp_1x.png -------------------------------------------------------------------------------- /src/img/ic_chevron_left_black_24dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_chevron_left_black_24dp_2x.png -------------------------------------------------------------------------------- /src/img/ic_close_black_18dp_1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_close_black_18dp_1x.png -------------------------------------------------------------------------------- /src/img/ic_close_black_18dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_close_black_18dp_2x.png -------------------------------------------------------------------------------- /src/img/ic_close_black_1x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_close_black_1x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_close_black_2x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_close_black_2x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_code_black_1x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_code_black_1x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_code_black_2x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_code_black_2x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_code_white_1x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_code_white_1x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_code_white_2x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_code_white_2x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_experiment_black_1x_web_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_experiment_black_1x_web_18dp.png -------------------------------------------------------------------------------- /src/img/ic_experiment_black_1x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_experiment_black_1x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_experiment_black_1x_web_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_experiment_black_1x_web_36dp.png -------------------------------------------------------------------------------- /src/img/ic_experiment_black_2x_web_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_experiment_black_2x_web_18dp.png -------------------------------------------------------------------------------- /src/img/ic_experiment_black_2x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_experiment_black_2x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_experiment_black_2x_web_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_experiment_black_2x_web_36dp.png -------------------------------------------------------------------------------- /src/img/ic_indeterminate_check_box_black_24dp_1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_indeterminate_check_box_black_24dp_1x.png -------------------------------------------------------------------------------- /src/img/ic_indeterminate_check_box_black_24dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_indeterminate_check_box_black_24dp_2x.png -------------------------------------------------------------------------------- /src/img/ic_info_outline_black_24dp_1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_info_outline_black_24dp_1x.png -------------------------------------------------------------------------------- /src/img/ic_info_outline_black_24dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_info_outline_black_24dp_2x.png -------------------------------------------------------------------------------- /src/img/ic_link_black_1x_web_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_link_black_1x_web_18dp.png -------------------------------------------------------------------------------- /src/img/ic_link_black_2x_web_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_link_black_2x_web_18dp.png -------------------------------------------------------------------------------- /src/img/ic_menu_black_1x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_menu_black_1x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_menu_black_2x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_menu_black_2x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_menu_white_1x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_menu_white_1x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_menu_white_2x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_menu_white_2x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_mode_edit_white_24dp_1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_mode_edit_white_24dp_1x.png -------------------------------------------------------------------------------- /src/img/ic_mode_edit_white_24dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_mode_edit_white_24dp_2x.png -------------------------------------------------------------------------------- /src/img/ic_play_arrow_white_1x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_play_arrow_white_1x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_play_arrow_white_2x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_play_arrow_white_2x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_play_circle_filled_black_1x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_play_circle_filled_black_1x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_play_circle_filled_black_2x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_play_circle_filled_black_2x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_play_circle_filled_white_24dp_1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_play_circle_filled_white_24dp_1x.png -------------------------------------------------------------------------------- /src/img/ic_play_circle_filled_white_24dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_play_circle_filled_white_24dp_2x.png -------------------------------------------------------------------------------- /src/img/ic_search_white_1x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_search_white_1x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ic_search_white_2x_web_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ic_search_white_2x_web_24dp.png -------------------------------------------------------------------------------- /src/img/ima-poster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/ima-poster.jpg -------------------------------------------------------------------------------- /src/img/image1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/image1.jpg -------------------------------------------------------------------------------- /src/img/image2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/image2.jpg -------------------------------------------------------------------------------- /src/img/image3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/image3.jpg -------------------------------------------------------------------------------- /src/img/italy-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/italy-flag.png -------------------------------------------------------------------------------- /src/img/lamb-garlic-done.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/lamb-garlic-done.jpg -------------------------------------------------------------------------------- /src/img/lamb-garlic-ready-for-oven.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/lamb-garlic-ready-for-oven.jpg -------------------------------------------------------------------------------- /src/img/lamb-with-garlic-slivers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/lamb-with-garlic-slivers.jpg -------------------------------------------------------------------------------- /src/img/landscape_canyon_1280x1700.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_canyon_1280x1700.jpg -------------------------------------------------------------------------------- /src/img/landscape_canyon_300x400.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_canyon_300x400.jpg -------------------------------------------------------------------------------- /src/img/landscape_desert_1280x853.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_desert_1280x853.jpg -------------------------------------------------------------------------------- /src/img/landscape_desert_300x200.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_desert_300x200.jpg -------------------------------------------------------------------------------- /src/img/landscape_desert_300x250.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_desert_300x250.jpg -------------------------------------------------------------------------------- /src/img/landscape_green_1280x853.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_green_1280x853.jpg -------------------------------------------------------------------------------- /src/img/landscape_green_300x200.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_green_300x200.jpg -------------------------------------------------------------------------------- /src/img/landscape_houses_1280x803.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_houses_1280x803.jpg -------------------------------------------------------------------------------- /src/img/landscape_houses_300x188.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_houses_300x188.jpg -------------------------------------------------------------------------------- /src/img/landscape_lake_1280x857.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_lake_1280x857.jpg -------------------------------------------------------------------------------- /src/img/landscape_lake_300x201.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_lake_300x201.jpg -------------------------------------------------------------------------------- /src/img/landscape_mountains_1280x657.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_mountains_1280x657.jpg -------------------------------------------------------------------------------- /src/img/landscape_mountains_300x154.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_mountains_300x154.jpg -------------------------------------------------------------------------------- /src/img/landscape_sea_1280x848.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_sea_1280x848.jpg -------------------------------------------------------------------------------- /src/img/landscape_sea_300x199.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_sea_300x199.jpg -------------------------------------------------------------------------------- /src/img/landscape_ship_1280x853.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_ship_1280x853.jpg -------------------------------------------------------------------------------- /src/img/landscape_ship_300x200.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_ship_300x200.jpg -------------------------------------------------------------------------------- /src/img/landscape_ship_300x250.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_ship_300x250.jpg -------------------------------------------------------------------------------- /src/img/landscape_trees_1280x960.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_trees_1280x960.jpg -------------------------------------------------------------------------------- /src/img/landscape_trees_300x225.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_trees_300x225.jpg -------------------------------------------------------------------------------- /src/img/landscape_village_1280x853.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_village_1280x853.jpg -------------------------------------------------------------------------------- /src/img/landscape_village_300x200.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_village_300x200.jpg -------------------------------------------------------------------------------- /src/img/landscape_village_300x250.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/landscape_village_300x250.jpg -------------------------------------------------------------------------------- /src/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/logo.png -------------------------------------------------------------------------------- /src/img/meat-silverskin-cutting.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/meat-silverskin-cutting.jpg -------------------------------------------------------------------------------- /src/img/multi-page-flow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/multi-page-flow.gif -------------------------------------------------------------------------------- /src/img/news_thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/news_thumb.jpg -------------------------------------------------------------------------------- /src/img/offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/offline.png -------------------------------------------------------------------------------- /src/img/oscars_placeholder_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/oscars_placeholder_1.png -------------------------------------------------------------------------------- /src/img/oscars_placeholder_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/oscars_placeholder_2.png -------------------------------------------------------------------------------- /src/img/overview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/overview.jpg -------------------------------------------------------------------------------- /src/img/pixel-f6f6f6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/pixel-f6f6f6.png -------------------------------------------------------------------------------- /src/img/pixel-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/pixel-white.png -------------------------------------------------------------------------------- /src/img/play-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/play-icon.png -------------------------------------------------------------------------------- /src/img/poster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/poster.jpg -------------------------------------------------------------------------------- /src/img/poster0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/poster0.png -------------------------------------------------------------------------------- /src/img/poster2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/poster2.jpg -------------------------------------------------------------------------------- /src/img/poster3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/poster3.jpg -------------------------------------------------------------------------------- /src/img/poster4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/poster4.jpg -------------------------------------------------------------------------------- /src/img/poster5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/poster5.jpg -------------------------------------------------------------------------------- /src/img/product1_640x426.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product1_640x426.jpg -------------------------------------------------------------------------------- /src/img/product1_alt1_60x40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product1_alt1_60x40.jpg -------------------------------------------------------------------------------- /src/img/product2_1024x682.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product2_1024x682.jpg -------------------------------------------------------------------------------- /src/img/product2_640x426.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product2_640x426.jpg -------------------------------------------------------------------------------- /src/img/product3_1024x682.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product3_1024x682.jpg -------------------------------------------------------------------------------- /src/img/product3_640x426.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product3_640x426.jpg -------------------------------------------------------------------------------- /src/img/product4_1024x682.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product4_1024x682.jpg -------------------------------------------------------------------------------- /src/img/product4_640x426.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product4_640x426.jpg -------------------------------------------------------------------------------- /src/img/product5_1024x653.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product5_1024x653.jpg -------------------------------------------------------------------------------- /src/img/product5_640x408.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product5_640x408.jpg -------------------------------------------------------------------------------- /src/img/product6_1024x668.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product6_1024x668.jpg -------------------------------------------------------------------------------- /src/img/product6_640x424.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product6_640x424.jpg -------------------------------------------------------------------------------- /src/img/product_hero1_1024x683.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product_hero1_1024x683.jpg -------------------------------------------------------------------------------- /src/img/product_hero2_1024x683.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product_hero2_1024x683.jpg -------------------------------------------------------------------------------- /src/img/product_hero3_1024x683.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/product_hero3_1024x683.jpg -------------------------------------------------------------------------------- /src/img/recipe_thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/recipe_thumb.jpg -------------------------------------------------------------------------------- /src/img/red_apple_1_1024x682.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/red_apple_1_1024x682.jpg -------------------------------------------------------------------------------- /src/img/red_apple_1_60x40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/red_apple_1_60x40.jpg -------------------------------------------------------------------------------- /src/img/red_apple_2_1024x793.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/red_apple_2_1024x793.jpg -------------------------------------------------------------------------------- /src/img/red_apple_2_60x46.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/red_apple_2_60x46.jpg -------------------------------------------------------------------------------- /src/img/road-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/road-1.jpg -------------------------------------------------------------------------------- /src/img/road-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/road-2.jpg -------------------------------------------------------------------------------- /src/img/road-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/road-3.jpg -------------------------------------------------------------------------------- /src/img/road-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/road-4.jpg -------------------------------------------------------------------------------- /src/img/roadshow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/roadshow.jpg -------------------------------------------------------------------------------- /src/img/room1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/room1.jpg -------------------------------------------------------------------------------- /src/img/room10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/room10.jpg -------------------------------------------------------------------------------- /src/img/room2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/room2.jpg -------------------------------------------------------------------------------- /src/img/room3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/room3.jpg -------------------------------------------------------------------------------- /src/img/room4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/room4.jpg -------------------------------------------------------------------------------- /src/img/room5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/room5.jpg -------------------------------------------------------------------------------- /src/img/room6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/room6.jpg -------------------------------------------------------------------------------- /src/img/room7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/room7.jpg -------------------------------------------------------------------------------- /src/img/room8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/room8.jpg -------------------------------------------------------------------------------- /src/img/room9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/room9.jpg -------------------------------------------------------------------------------- /src/img/screenshot-media-notification.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/screenshot-media-notification.jpg -------------------------------------------------------------------------------- /src/img/shopping_thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/shopping_thumb.jpg -------------------------------------------------------------------------------- /src/img/social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/social.png -------------------------------------------------------------------------------- /src/img/st_james_palace_453x340.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/st_james_palace_453x340.jpg -------------------------------------------------------------------------------- /src/img/story_dog2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/story_dog2.jpg -------------------------------------------------------------------------------- /src/img/story_dog2_landscape.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/story_dog2_landscape.jpg -------------------------------------------------------------------------------- /src/img/story_dog2_portrait.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/story_dog2_portrait.jpg -------------------------------------------------------------------------------- /src/img/story_dog2_square.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/story_dog2_square.jpg -------------------------------------------------------------------------------- /src/img/story_dog3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/story_dog3.jpg -------------------------------------------------------------------------------- /src/img/story_dog4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/story_dog4.jpg -------------------------------------------------------------------------------- /src/img/story_thirds_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/story_thirds_1.jpg -------------------------------------------------------------------------------- /src/img/story_thirds_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/story_thirds_2.jpg -------------------------------------------------------------------------------- /src/img/story_thirds_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/story_thirds_3.jpg -------------------------------------------------------------------------------- /src/img/story_video_dog_cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/story_video_dog_cover.jpg -------------------------------------------------------------------------------- /src/img/system-share.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/system-share.gif -------------------------------------------------------------------------------- /src/img/system-share1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/system-share1.png -------------------------------------------------------------------------------- /src/img/system-share2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/system-share2.png -------------------------------------------------------------------------------- /src/img/tokyo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/tokyo.jpg -------------------------------------------------------------------------------- /src/img/tomatoes-cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/tomatoes-cut.jpg -------------------------------------------------------------------------------- /src/img/tree-1920x1277.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/tree-1920x1277.jpg -------------------------------------------------------------------------------- /src/img/unknown-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/unknown-flag.png -------------------------------------------------------------------------------- /src/img/video_thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/video_thumb.jpg -------------------------------------------------------------------------------- /src/img/windsor-castle_960x642.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/img/windsor-castle_960x642.jpg -------------------------------------------------------------------------------- /src/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Learn AMP by Example", 3 | "name": "AMPHTML", 4 | "desc": "A hands-on introduction to Accelerated Mobile Pages (AMP) focusing on code and live samples. Learn how to create AMP pages and see examples for all AMP components.", 5 | "index": 0 6 | } 7 | -------------------------------------------------------------------------------- /src/json/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "addresses": [ 3 | { 4 | "id":"1", 5 | "name":"Santa", 6 | "street":"1 Santa Claus", 7 | "city":"North Pole", 8 | "state":"AK", 9 | "default": true 10 | }, 11 | { 12 | "id":"2", 13 | "name":"Santa 2", 14 | "street":"1 Santa Claus", 15 | "city":"North Pole", 16 | "state":"AK" 17 | } 18 | ], 19 | "manual": true 20 | } 21 | -------------------------------------------------------------------------------- /src/json/amp-bind-data-new-state.json: -------------------------------------------------------------------------------- 1 | { 2 | "currentAnimal": "bird", 3 | "bird": { 4 | "imageUrl": "/img/bird.jpg", 5 | "videoUrl": "/video/bird-video.mp4", 6 | "style": "yellowBackground", 7 | "iframeUrl": "https://player.vimeo.com/video/151358139" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/json/amp-date-picker.json: -------------------------------------------------------------------------------- 1 | { 2 | "templates": [{ 3 | "id": "spooky", 4 | "dates": [ 5 | "2017-11-01", "2017-11-03", "2017-11-05", "2017-11-06", 6 | "FREQ=WEEKLY;DTSTART=20180101T160000Z;BYDAY=MO", 7 | "FREQ=YEARLY;DTSTART=20180101T160000Z;WKST=SU;BYMONTH=10;BYMONTHDAY=31", 8 | "FREQ=MONTHLY;DTSTART=20180101T160000Z;WKST=SU;BYDAY=FR;BYMONTHDAY=13" 9 | ] 10 | }] 11 | } 12 | -------------------------------------------------------------------------------- /src/json/amp-story-auto-ads-0.json: -------------------------------------------------------------------------------- 1 | { 2 | "templateId": "video-template", 3 | "data": { 4 | "videoSource": "https://ampbyexample.com/video/ad-google-home.mp4", 5 | "poster": "https://ampbyexample.com/img/ad-google-home.jpg" 6 | }, 7 | "vars": { 8 | "ctaType": "SHOP", 9 | "ctaUrl": "https://ampproject.org" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/json/amp-story-auto-ads-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "templateId": "image-template", 3 | "data": { 4 | "imgSrc": "https://www.ampbyexample.com/img/ad-google-home.jpg" 5 | }, 6 | "vars": { 7 | "ctaType": "SHOP", 8 | "ctaUrl": "https://ampproject.org" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/json/amp-story-auto-ads-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "templateId": "image-template", 3 | "data": { 4 | "imgSrc": "https://www.ampbyexample.com/img/ad-hangouts.jpg" 5 | }, 6 | "vars": { 7 | "ctaType": "INSTALL", 8 | "ctaUrl": "https://ampproject.org" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/json/amp-story-auto-ads-3.json: -------------------------------------------------------------------------------- 1 | { 2 | "templateId": "image-template", 3 | "data": { 4 | "imgSrc": "https://www.ampbyexample.com/img/ad-youtube-tv.jpg" 5 | }, 6 | "vars": { 7 | "ctaType": "EXPLORE", 8 | "ctaUrl": "https://ampproject.org" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/json/amp-story-auto-ads-4.json: -------------------------------------------------------------------------------- 1 | { 2 | "templateId": "image-template", 3 | "data": { 4 | "imgSrc": "https://www.ampbyexample.com/img/ad-coffee.jpg" 5 | }, 6 | "vars": { 7 | "ctaType": "SHOP", 8 | "ctaUrl": "https://ampproject.org" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/json/call-tracking-number.json: -------------------------------------------------------------------------------- 1 | { 2 | "phoneNumber": "15559876543", 3 | "formattedPhoneNumber": "1 (555) 987-6543" 4 | } 5 | -------------------------------------------------------------------------------- /src/json/cart.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "fullname": "John Doe", 5 | "phonenumber": "212-555-1212", 6 | "cart_items": [ 7 | { 8 | "name": "Pluot", 9 | "quantity": 5, 10 | "price": "$1.00" 11 | }, 12 | { 13 | "name": "Apple", 14 | "quantity": 1, 15 | "price": "$3.25" 16 | } 17 | ], 18 | "address": { 19 | "addr1": "111 8th Ave", 20 | "city": "New York", 21 | "state": "NY", 22 | "zipcode": 10011 23 | } 24 | } 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /src/json/comments.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "user": "Bob", 5 | "datetime": "20:25:50", 6 | "text": "This is the first comment" 7 | }, 8 | { 9 | "user": "Alice", 10 | "datetime": "20:26:50", 11 | "text": "This is the second comment" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/json/consent-items.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | "Item 1", 4 | "Item 2", 5 | "Item 3", 6 | "Item 4", 7 | "Item 5" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/json/credit-cards.json: -------------------------------------------------------------------------------- 1 | { 2 | "cards": [ 3 | { 4 | "id":"1", 5 | "title":"Max Mustermann, *1234", 6 | "default": true 7 | }, 8 | { 9 | "id":"2", 10 | "title":"Max Mustermann, *2345" 11 | } 12 | ], 13 | "manual": true 14 | } 15 | -------------------------------------------------------------------------------- /src/json/examples-empty.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [] 3 | } 4 | -------------------------------------------------------------------------------- /src/json/examples.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "title": "amp-carousel", 5 | "url": "/components/amp-carousel/" 6 | }, 7 | { 8 | "title": "amp-img", 9 | "url": "/components/amp-img/" 10 | }, 11 | { 12 | "title": "amp-ad", 13 | "url": "/components/amp-ad/" 14 | }, 15 | { 16 | "title": "amp-accordion", 17 | "url": "/components/amp-accordion/" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/json/examples2.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "title": "amp-bind", 5 | "url": "/components/amp-bind/" 6 | }, 7 | { 8 | "title": "amp-list", 9 | "url": "/components/amp-list/" 10 | }, 11 | { 12 | "title": "amp-lightbox", 13 | "url": "/components/amp-lightbox/" 14 | }, 15 | { 16 | "title": "amp-access", 17 | "url": "/components/amp-access/" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/json/friend_requests.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "id": "FgAIFAsF", 5 | "name": "Jane Roe", 6 | "photo": "https://ampbyexample.com/img/face.png" 7 | }, 8 | { 9 | "id": "GhULChUD", 10 | "name": "John Doe", 11 | "photo": "https://ampbyexample.com/img/face.png" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/json/more_related_products_page0.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "id": 7, 4 | "img": "/img/product1_640x426.jpg", 5 | "name": "British Apple", 6 | "price": "1.99", 7 | "stars": "★★★★★", 8 | "attribution": "visualhunt", 9 | "url": "#", 10 | "color": "green" 11 | }, { 12 | "id": 8, 13 | "img": "/img/product2_640x426.jpg", 14 | "name": "Spanish Orange", 15 | "attribution": "visualhunt", 16 | "price": "0.99", 17 | "stars": "★★★★☆", 18 | "url": "#", 19 | "color": "orange" 20 | }, { 21 | "id": 9, 22 | "img": "/img/product3_640x426.jpg", 23 | "name": "French Pear", 24 | "attribution": "visualhunt", 25 | "price": "1.50", 26 | "stars": "★★★☆☆", 27 | "url": "#", 28 | "color": "green" 29 | }] 30 | } 31 | -------------------------------------------------------------------------------- /src/json/more_related_products_page1.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "id": 10, 4 | "img": "/img/product1_640x426.jpg", 5 | "name": "Apple", 6 | "price": "1.99", 7 | "stars": "★★★★★", 8 | "attribution": "visualhunt", 9 | "url": "#", 10 | "color": "green" 11 | }, { 12 | "id": 11, 13 | "img": "/img/product2_640x426.jpg", 14 | "name": "Seville Orange", 15 | "attribution": "visualhunt", 16 | "price": "0.99", 17 | "stars": "★★★★☆", 18 | "url": "#", 19 | "color": "orange" 20 | }, { 21 | "id": 12, 22 | "img": "/img/product3_640x426.jpg", 23 | "name": "Italian Pear", 24 | "attribution": "visualhunt", 25 | "price": "1.50", 26 | "stars": "★★★☆☆", 27 | "url": "#", 28 | "color": "green" 29 | }, { 30 | "id": 13, 31 | "img": "/img/product4_640x426.jpg", 32 | "name": "Ecuador Banana", 33 | "attribution": "pixabay", 34 | "price": "1.50", 35 | "stars": "★★★★★", 36 | "url": "#", 37 | "color": "yellow" 38 | }] 39 | } 40 | -------------------------------------------------------------------------------- /src/json/nearby_attractions.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "attraction": "Hyde Park", 4 | "type": "park", 5 | "url": "/samples_templates/hotel" 6 | }, { 7 | "attraction": "The National Galley", 8 | "type": "gallery", 9 | "url": "/samples_templates/hotel" 10 | }, { 11 | "attraction": "Victoria and Albert Museum", 12 | "type": "fancy", 13 | "url": "/samples_templates/hotel" 14 | }, { 15 | "attraction": "Royal Academy of Arts", 16 | "type": "theatre", 17 | "url": "/samples_templates/hotel" 18 | }] 19 | } 20 | -------------------------------------------------------------------------------- /src/json/other_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "desc": "A stunning building in Richmond", 5 | "address": "Richmond TW10 7RS", 6 | "price": "£405.000", 7 | "src": "/img/ham-house_960x720.jpg", 8 | "attribution": "https://pixabay.com", 9 | "alt": "Ham House" 10 | }, 11 | { 12 | "desc": "A truly royal residence", 13 | "address": "Windsor SL4 1NJ", 14 | "price": "£805.000", 15 | "src": "/img/windsor-castle_960x642.jpg", 16 | "attribution": "https://pixabay.com", 17 | "alt": "Windsor Castle" 18 | }, 19 | { 20 | "desc": "The oldest royal palace", 21 | "address": "London SW1A 1BS", 22 | "price": "£705.000", 23 | "src": "/img/st_james_palace_453x340.jpg", 24 | "attribution": "https://pixabay.com", 25 | "alt": "St James Palace" 26 | } 27 | ] 28 | } -------------------------------------------------------------------------------- /src/json/product-single-item.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "values": [{ 4 | "id": 1, 5 | "img": "/img/product1_640x426.jpg", 6 | "name": "Apple", 7 | "price": "1.99", 8 | "stars": "★★★★★", 9 | "attribution": "visualhunt", 10 | "url": "#", 11 | "color": "green" 12 | }, { 13 | "id": 2, 14 | "img": "/img/product2_640x426.jpg", 15 | "name": "Orange", 16 | "attribution": "visualhunt", 17 | "price": "0.99", 18 | "stars": "★★★★☆", 19 | "url": "#", 20 | "color": "orange" 21 | }, { 22 | "id": 3, 23 | "img": "/img/product3_640x426.jpg", 24 | "name": "Pear", 25 | "attribution": "visualhunt", 26 | "price": "1.50", 27 | "stars": "★★★☆☆", 28 | "url": "#", 29 | "color": "green" 30 | }] 31 | }] 32 | } 33 | -------------------------------------------------------------------------------- /src/json/product.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "name": "My Product", 4 | "price": "6.99", 5 | "availability": 1 6 | }] 7 | } 8 | -------------------------------------------------------------------------------- /src/json/products.json: -------------------------------------------------------------------------------- 1 | [11, 3, 9] 2 | -------------------------------------------------------------------------------- /src/json/related_articles.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "title": "Shopping websites with AMP", 5 | "thumbnail": "/img/shopping_thumb.jpg", 6 | "url": "/samples_templates/product/preview" 7 | }, 8 | { 9 | "title": "The tastiest recipes with AMP", 10 | "thumbnail": "/img/recipe_thumb.jpg", 11 | "url": "/samples_templates/recipe/preview" 12 | }, 13 | { 14 | "title": "News Articles with AMP", 15 | "thumbnail": "/img/video_thumb.jpg", 16 | "url": "/samples_templates/news_article/preview" 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/json/shopping-cart.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "img": "/img/product1_640x426.jpg", 4 | "name": "Apple", 5 | "price": "1.99", 6 | "total": "3.98", 7 | "count": 2 8 | }, { 9 | "img": "/img/product2_640x426.jpg", 10 | "name": "Orange", 11 | "attribution": "visualhunt", 12 | "price": "0.99", 13 | "count": 1 14 | }, { 15 | "img": "/img/product3_640x426.jpg", 16 | "name": "Pear", 17 | "price": "6.00", 18 | "count": 4 19 | } 20 | ], 21 | "total": "10.97" 22 | } 23 | -------------------------------------------------------------------------------- /src/json/todo.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "title": "Book the hairdresser appointment", 4 | "done": false, 5 | "id": 0 6 | }, { 7 | "title": "Defrost the fridge", 8 | "done": true, 9 | "id": 1 10 | }, { 11 | "title": "Breathe", 12 | "done": false, 13 | "id": 2 14 | }] 15 | } 16 | -------------------------------------------------------------------------------- /src/json/websites.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [ 3 | { 4 | "title": "AMP YouTube Channel", 5 | "url": "https://www.youtube.com/channel/UCXPBsjgKKG2HqsKBhWA4uQw" 6 | }, 7 | { 8 | "title": "AMPproject.org", 9 | "url": "https://www.ampproject.org/" 10 | }, 11 | { 12 | "title": "AMP By Example", 13 | "url": "https://ampbyexample.com/" 14 | }, 15 | { 16 | "title": "AMP Start", 17 | "url": "https://ampstart.com/" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/stories/10_Introduction/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "The basic building block of AMP stories." 3 | } 4 | -------------------------------------------------------------------------------- /src/stories/20_Features/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Introducing stories in AMP how they work" 3 | } 4 | -------------------------------------------------------------------------------- /src/stories/30_Monetization/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Monetization strategies for AMP Stories." 3 | } 4 | -------------------------------------------------------------------------------- /src/stories/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AMPHTML stories", 3 | "title": "AMPHTML stories by Example", 4 | "desc": "Learn how to create visual stories with AMPHTML.", 5 | "index": 2 6 | } 7 | -------------------------------------------------------------------------------- /src/video/ad-google-home.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/ad-google-home.mp4 -------------------------------------------------------------------------------- /src/video/amp-app-banner-android-app-installed.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/amp-app-banner-android-app-installed.mp4 -------------------------------------------------------------------------------- /src/video/amp-app-banner-android-app-not-installed.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/amp-app-banner-android-app-not-installed.mp4 -------------------------------------------------------------------------------- /src/video/bird-video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/bird-video.mp4 -------------------------------------------------------------------------------- /src/video/bullfinch.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/bullfinch.mp4 -------------------------------------------------------------------------------- /src/video/car-video-360p.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/car-video-360p.mp4 -------------------------------------------------------------------------------- /src/video/cat-video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/cat-video.mp4 -------------------------------------------------------------------------------- /src/video/dog-video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/dog-video.mp4 -------------------------------------------------------------------------------- /src/video/ecommerce.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/ecommerce.mp4 -------------------------------------------------------------------------------- /src/video/ecommerce.vtt: -------------------------------------------------------------------------------- 1 | WEBVTT 2 | 3 | 00:00.000 --> 00:00.500 4 | (Lisa Wang) 5 | I'm Lisa. 6 | 7 | 00:00.500 --> 00:02.000 8 | I'm a product manager at Google. 9 | 10 | 00:02.000 --> 00:04.500 11 | And I lead our e-commerce initiatives. 12 | 13 | 00:04.500 --> 00:05.500 14 | And today I'm just going to walk 15 | 16 | 00:05.500 --> 00:07.500 17 | through some of our best practices 18 | 19 | 00:07.500 --> 00:10.000 20 | for building e-commerce experiences in AMP. 21 | -------------------------------------------------------------------------------- /src/video/gmail-animation.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/gmail-animation.mp4 -------------------------------------------------------------------------------- /src/video/gmail.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/gmail.mp4 -------------------------------------------------------------------------------- /src/video/gmail.vtt: -------------------------------------------------------------------------------- 1 | WEBVTT 2 | 3 | 00:00.000 --> 00:01.500 4 | (Aakash Sahney) 5 | and I'm really excited to share more 6 | 7 | 00:01.500 --> 00:03.500 8 | about the announcement we made earlier today, 9 | 10 | 00:03.500 --> 00:06.000 11 | which is like a whole new way to use AMP. 12 | 13 | 00:06.000 --> 00:08.500 14 | We're going to talk about what's possible with AMP for email, 15 | 16 | 00:08.500 --> 00:11.000 17 | show off some super slick demos from the three partners 18 | 19 | 00:11.000 --> 00:13.500 20 | that Paul just mentioned, and tell you a bit about how 21 | 22 | 00:13.500 --> 00:15.000 23 | you can get started. -------------------------------------------------------------------------------- /src/video/p1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/p1.mp4 -------------------------------------------------------------------------------- /src/video/p1.vtt: -------------------------------------------------------------------------------- 1 | WEBVTT 2 | 3 | NOTE Malte Ubl on AMP stories 4 | 5 | 00:00.000 --> 00:02.500 6 | (Malte Ubl) 7 | ...and there's going to be surfacing of these stories 8 | 9 | 00:02.500 --> 00:04.000 10 | (Malte Ubl) 11 | in Google Search. 12 | 13 | NOTE Lisa Wang on AMP Toolbox Optimizer 14 | 15 | 00:04.500 --> 00:06.000 16 | (Lisa Wang) 17 | So I'm also really excited to announce today 18 | 19 | 00:06.000 --> 00:09.000 20 | (Lisa Wang) 21 | that we're releasing the AMP Toolbox Optimizer, which 22 | 23 | 00:09.000 --> 00:12.000 24 | (Lisa Wang) 25 | is basically a toolkit that developers can use to optimize... 26 | 27 | NOTE Aakash Sahney on AMP for email 28 | 29 | 00:06.000 --> 00:08.500 30 | (Aakash Sahney) 31 | So with AMP for email, users can quickly take actions on things 32 | 33 | 00:08.500 --> 00:11.000 34 | (Aakash Sahney) 35 | like RSVP'ing to an event. 36 | -------------------------------------------------------------------------------- /src/video/stamp-animation.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/stamp-animation.mp4 -------------------------------------------------------------------------------- /src/video/stamp.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/stamp.mp4 -------------------------------------------------------------------------------- /src/video/stamp.vtt: -------------------------------------------------------------------------------- 1 | WEBVTT 2 | 3 | 00:00.000 --> 00:02.000 4 | (Jon Newmuis) 5 | So today, we're excited to announce the developer 6 | 7 | 00:02.000 --> 00:06.000 8 | preview of AMP stories, an open format for visual storytelling 9 | 10 | 00:06.000 --> 00:09.000 11 | on mobile. 12 | 13 | 00:09.000 --> 00:12.500 14 | To demonstrate, here's a story by CNN using the format. 15 | 16 | 00:12.500 --> 00:16.500 17 | As you can see, it's very visual with these full bleed images. 18 | 19 | 00:16.500 --> 00:19.000 20 | And you can also include video assets as well. 21 | 22 | 00:19.000 --> 00:22.000 23 | The short-form bite-sized text is more easily 24 | 25 | 00:22.000 --> 00:24.000 26 | consumable on mobile. -------------------------------------------------------------------------------- /src/video/stamp_video_dog.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/stamp_video_dog.mp4 -------------------------------------------------------------------------------- /src/video/story_video_dog.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/story_video_dog.mp4 -------------------------------------------------------------------------------- /src/video/tokyo-no-hls.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo-no-hls.mp4 -------------------------------------------------------------------------------- /src/video/tokyo.m3u8: -------------------------------------------------------------------------------- 1 | #EXTM3U 2 | ## Generated with https://github.com/google/shaka-packager version v1.6.2-6b98f0d-release 3 | #EXT-X-STREAM-INF:CODECS="avc1.42c01e",BANDWIDTH=239386 4 | tokyo_240p.m3u8 5 | #EXT-X-STREAM-INF:CODECS="avc1.42c01e",BANDWIDTH=653613 6 | tokyo_360p.m3u8 7 | #EXT-X-STREAM-INF:CODECS="avc1.42c01e",BANDWIDTH=1073480 8 | tokyo_480p.m3u8 9 | -------------------------------------------------------------------------------- /src/video/tokyo.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo.mp4 -------------------------------------------------------------------------------- /src/video/tokyo.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo.webm -------------------------------------------------------------------------------- /src/video/tokyo_240p.m3u8: -------------------------------------------------------------------------------- 1 | #EXTM3U 2 | #EXT-X-VERSION:5 3 | ## Generated with https://github.com/google/shaka-packager version v1.6.2-6b98f0d-release 4 | #EXT-X-TARGETDURATION:12 5 | #EXT-X-PLAYLIST-TYPE:VOD 6 | #EXTINF:12.000, 7 | tokyo_240p_1.ts 8 | #EXTINF:9.000, 9 | tokyo_240p_2.ts 10 | #EXT-X-ENDLIST 11 | -------------------------------------------------------------------------------- /src/video/tokyo_240p_1.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo_240p_1.ts -------------------------------------------------------------------------------- /src/video/tokyo_240p_2.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo_240p_2.ts -------------------------------------------------------------------------------- /src/video/tokyo_240p_200.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo_240p_200.mp4 -------------------------------------------------------------------------------- /src/video/tokyo_360p.m3u8: -------------------------------------------------------------------------------- 1 | #EXTM3U 2 | #EXT-X-VERSION:5 3 | ## Generated with https://github.com/google/shaka-packager version v1.6.2-6b98f0d-release 4 | #EXT-X-TARGETDURATION:12 5 | #EXT-X-PLAYLIST-TYPE:VOD 6 | #EXTINF:12.000, 7 | tokyo_360p_1.ts 8 | #EXTINF:9.000, 9 | tokyo_360p_2.ts 10 | #EXT-X-ENDLIST 11 | -------------------------------------------------------------------------------- /src/video/tokyo_360p_1.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo_360p_1.ts -------------------------------------------------------------------------------- /src/video/tokyo_360p_2.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo_360p_2.ts -------------------------------------------------------------------------------- /src/video/tokyo_360p_600.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo_360p_600.mp4 -------------------------------------------------------------------------------- /src/video/tokyo_480p.m3u8: -------------------------------------------------------------------------------- 1 | #EXTM3U 2 | #EXT-X-VERSION:5 3 | ## Generated with https://github.com/google/shaka-packager version v1.6.2-6b98f0d-release 4 | #EXT-X-TARGETDURATION:12 5 | #EXT-X-PLAYLIST-TYPE:VOD 6 | #EXTINF:12.000, 7 | tokyo_480p_1.ts 8 | #EXTINF:9.000, 9 | tokyo_480p_2.ts 10 | #EXT-X-ENDLIST 11 | -------------------------------------------------------------------------------- /src/video/tokyo_480p_1.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo_480p_1.ts -------------------------------------------------------------------------------- /src/video/tokyo_480p_1000.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo_480p_1000.mp4 -------------------------------------------------------------------------------- /src/video/tokyo_480p_2.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/src/video/tokyo_480p_2.ts -------------------------------------------------------------------------------- /static/glTF/DamagedHelmet.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/static/glTF/DamagedHelmet.glb -------------------------------------------------------------------------------- /static/googlea533f0f54d9c716a.html: -------------------------------------------------------------------------------- 1 | google-site-verification: googlea533f0f54d9c716a.html 2 | -------------------------------------------------------------------------------- /static/hreflang/fr/index.amp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | French AMP 11 | 12 | -------------------------------------------------------------------------------- /static/hreflang/fr/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | title 6 | 7 | 8 | 9 | 10 |

French

11 | 12 | 13 | -------------------------------------------------------------------------------- /static/hreflang/index.amp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | title 7 | 8 | 9 | 10 | 11 | English AMP 12 | 13 | -------------------------------------------------------------------------------- /static/hreflang/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | title 6 | 7 | 8 |

English

9 | 10 | 11 | -------------------------------------------------------------------------------- /static/humans.txt: -------------------------------------------------------------------------------- 1 | # humanstxt.org/ 2 | # The humans responsible & technology colophon 3 | 4 | # TEAM 5 | 6 | Sebastian Benz -- @sebabenz 7 | Julian Toledo -- @juliantoledo 8 | Jeff Kingyens -- @jkingyens 9 | 10 | # THANKS 11 | 12 | Ade Oshineye -- @ade_oshineye 13 | 14 | # TECHNOLOGY COLOPHON 15 | 16 | AMP, CSS3, HTML5 17 | Gulp, Node 18 | 19 | Source: https://github.com/ampproject/amp-by-example 20 | -------------------------------------------------------------------------------- /static/internationalization/amp_hreflang_example_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/static/internationalization/amp_hreflang_example_1.png -------------------------------------------------------------------------------- /static/internationalization/amp_hreflang_example_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/static/internationalization/amp_hreflang_example_2.png -------------------------------------------------------------------------------- /static/invalid_amp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |

This page is intentionally invalid AMP

12 | 13 | 14 | -------------------------------------------------------------------------------- /static/sw.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | installing service worker 5 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tasks/bookend.json: -------------------------------------------------------------------------------- 1 | { 2 | "bookendVersion": "v1.0", 3 | "shareProviders": [ 4 | "email", 5 | "twitter", 6 | "tumblr", 7 | { 8 | "provider": "facebook", 9 | "app_id": "254325784911610" 10 | } 11 | ], 12 | "components": [ 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /templates/about-amp4email.html: -------------------------------------------------------------------------------- 1 |

About AMPHTML Email

2 |

The AMPHTML Email format provides a subset of AMP components that you can use in email messages. Recipients of AMP emails can view and interact with the AMP components directly in the email message.

3 |
4 | Good to know: the AMPHTML Validator features a special validation mode for AMPHTML Email messages. 5 |
6 |

Currently, support in Gmail is planned for later this year and an early developer preview is available. See Bringing the power of AMP to Gmail for more information.

7 | -------------------------------------------------------------------------------- /templates/ampstart/dropdown-inline.snip.html: -------------------------------------------------------------------------------- 1 | {{! 2 | 17 | }} 18 | 19 | 20 | 21 |
22 |
{{name}}
23 |
    24 | {{#examples}} 25 |
  • {{title}}
  • 26 | {{/examples}} 27 |
28 |
29 |
30 | 31 | -------------------------------------------------------------------------------- /templates/ampstart/dropdown.snip.html: -------------------------------------------------------------------------------- 1 | {{! 2 | 17 | }} 18 | 19 | 20 | {{! This component needs to go in a container and it will fit the container}} 21 | 22 |
23 |
{{heading}}
24 | 29 |
30 |
31 | 32 | -------------------------------------------------------------------------------- /templates/ampstart/footer.snip.html: -------------------------------------------------------------------------------- 1 | {{! 2 | 17 | }} 18 | 19 | {{#footer}} 20 | 21 |
22 | {{> ampstart/social-follow.snip.html}} 23 | {{#faq-links}} 24 | 31 | {{/faq-links}} 32 | {{#copyright}} 33 | {{text}} 34 | {{/copyright}} 35 |
36 | 37 | {{/footer}} 38 | -------------------------------------------------------------------------------- /templates/ampstart/sidebar.snip.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
6 | 23 | 24 | {{> ampstart/social-follow.snip.html}} 25 | 26 | {{#faq}} 27 | 32 | {{/faq}} 33 | 34 | 35 |
36 | 37 | -------------------------------------------------------------------------------- /templates/ampstart/social-follow.snip.html: -------------------------------------------------------------------------------- 1 | {{! 2 | 17 | }} 18 | 19 | 33 | -------------------------------------------------------------------------------- /templates/analytics.html: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | -------------------------------------------------------------------------------- /templates/consent-story.html: -------------------------------------------------------------------------------- 1 | {{^includesConsent}} 2 | {{^includesGeo}} 3 | 4 | 11 | 12 | 13 | 14 | 24 | 25 | 26 | 33 | 34 | 35 | {{/includesGeo}} 36 | {{/includesConsent}} 37 | -------------------------------------------------------------------------------- /templates/consent.html: -------------------------------------------------------------------------------- 1 | {{^includesConsent}} 2 | {{^includesGeo}} 3 | 4 | 11 | 12 | 13 | 14 | 24 | 25 | 34 | 35 | {{/includesGeo}} 36 | {{/includesConsent}} 37 | -------------------------------------------------------------------------------- /templates/css/default-styles.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --color-primary: #005AF0; 3 | --color-secondary: #00DCC0; 4 | --color-text-light: #fff; 5 | --color-text-dark: #000; 6 | --color-error: #B00020; 7 | --color-bg-light: #FAFAFC; 8 | 9 | --space-1: .5rem; /* 8px */ 10 | --space-2: 1rem; /* 16px */ 11 | --space-3: 1.5rem; /* 24px */ 12 | --space-4: 2rem; /* 32px */ 13 | 14 | --box-shadow-1: 0 1px 1px 0 rgba(0,0,0,.14), 0 1px 1px -1px rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12); 15 | } 16 | -------------------------------------------------------------------------------- /templates/css/preview.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --header-height: 56px; 3 | } 4 | body { 5 | background: #f9f7f7; 6 | opacity: .8; 7 | } 8 | #abe-preview-header { 9 | background: #fff; 10 | color: #000; 11 | height: var(--header-height); 12 | width: 100vw; 13 | z-index: 100; 14 | } 15 | #abe-preview-header > a { 16 | line-height: 16px; 17 | } 18 | #abe-preview-header-title { 19 | width: 100%; 20 | } 21 | #abe-preview { 22 | display: flex; 23 | align-items: center; 24 | justify-content: center; 25 | width: 100%; 26 | min-height: calc(100vh - var(--header-height)); 27 | } 28 | #abe-preview > div { 29 | background: #fff; 30 | max-width: 960px; 31 | } 32 | @media (max-width: 960px) { 33 | #abe-preview > div { 34 | max-width: 100%; 35 | margin: 0; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /templates/embed/embed.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 |
13 | 17 |
18 | {{{sample.code}}} 19 |
20 |
21 | 22 |
23 |
24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /templates/embed/preview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{{document.head}}} 5 | 8 | 9 | {{{document.body}}} 10 | {{{document.elementsAfterBody}}} 11 | {{{sample.body}}} 12 | 13 | 14 | -------------------------------------------------------------------------------- /templates/embed/template.html: -------------------------------------------------------------------------------- 1 | 7 |
Show full code
8 |
9 |
10 | -------------------------------------------------------------------------------- /templates/footer-boilerplate.html: -------------------------------------------------------------------------------- 1 | {{> analytics.html}} 2 | {{> serviceworker.html}} 3 | {{> consent.html}} 4 | -------------------------------------------------------------------------------- /templates/get-example.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |

[[.]]

12 | 13 | 14 | -------------------------------------------------------------------------------- /templates/head.html: -------------------------------------------------------------------------------- 1 | {{^includesAnalytics}} 2 | 3 | {{/includesAnalytics}} 4 | 5 | {{^includesServiceWorker}} 6 | 7 | {{/includesServiceWorker}} 8 | {{^includesAccordion}} 9 | 10 | {{/includesAccordion}} 11 | {{^includesIframe}} 12 | 13 | {{/includesIframe}} 14 | {{^includesGeo}} 15 | {{^includesConsent}} 16 | 17 | 18 | {{/includesConsent}} 19 | {{/includesGeo}} 20 | 21 | {{> metadata.html}} 22 | {{> favicons.html}} 23 | 24 | 25 | -------------------------------------------------------------------------------- /templates/header.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 |
7 | {{#urlSource}} 8 | {{^metadata.hideCode}} 9 | 10 | 11 | Edit in Playground 12 | 13 | {{/metadata.hideCode}} 14 | {{/urlSource}} 15 | {{#metadata.preview}} 16 | 17 | 18 | View Demo 19 | 20 | {{/metadata.preview}} 21 |
22 |
23 | -------------------------------------------------------------------------------- /templates/icons/email.svg: -------------------------------------------------------------------------------- 1 | email -------------------------------------------------------------------------------- /templates/icons/facebook.svg: -------------------------------------------------------------------------------- 1 | Facebook -------------------------------------------------------------------------------- /templates/icons/github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/icons/gplus.svg: -------------------------------------------------------------------------------- 1 | Shape -------------------------------------------------------------------------------- /templates/icons/instagram.svg: -------------------------------------------------------------------------------- 1 | instagram -------------------------------------------------------------------------------- /templates/icons/pinterest.svg: -------------------------------------------------------------------------------- 1 | pinterest -------------------------------------------------------------------------------- /templates/icons/slack.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /templates/icons/twitter.svg: -------------------------------------------------------------------------------- 1 | Twitter -------------------------------------------------------------------------------- /templates/icons/wordpress.svg: -------------------------------------------------------------------------------- 1 | WordPress_logo Copy -------------------------------------------------------------------------------- /templates/menu.html: -------------------------------------------------------------------------------- 1 | {{^includesSidebar}} 2 | 3 | 4 |
5 | AMP by Example 6 |
7 |
8 | Playground 9 |
10 | 11 | {{#categories}} 12 |
13 |

14 |
{{name}}
15 |
{{name}}
16 |

17 |
18 | {{#examples}} 19 | 27 | {{/examples}} 28 |
29 |
30 | {{/categories}} 31 |
32 |
33 | {{/includesSidebar}} 34 | -------------------------------------------------------------------------------- /templates/serviceworker.html: -------------------------------------------------------------------------------- 1 | {{^includesServiceWorker}} 2 | 6 | 7 | {{/includesServiceWorker}} 8 | -------------------------------------------------------------------------------- /templates/stories/story-embed.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ampproject/amp-by-example/9217bb4f78fade77650dd487e99760b3d941a7e1/templates/stories/story-embed.html --------------------------------------------------------------------------------