From a4afc2e37a16b06a701c7cf888909906ea2dfeef Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 15 May 2018 13:31:47 -0400 Subject: [PATCH] Polymer 3 modulize (#1154) * Version bump to 20180510.1 * Fix hass util * Fix translations * Bye paper-time-input * Add webpack config * Add webpack to package.json * Fix translation import * Disable web animations polyfill bad import * Disable importHref import * Update webpack config to build authorize.js * Build translations json * Build frontend correctly * Run eslint --fix * Load markdown JS on demand (#1155) * Add HTML imports (#1160) * Fix localize (#1161) * Fix Roboto in build (#1162) * Load web animations polyfill (#1163) * P3: Fix chart js (#1164) * P3: Fix Chart JS * Update timeline package * P3: panel resolver (#1165) * WIP * Initial importing of panels * Fix panel resolver * Fix automation and script editor (#1166) * Expose Polymer and Polymer.Element on window (#1167) * Remove unused import * eslint --fix * Es5 build (#1168) * Build for ES5 * Fix build_frontend * Remove stale comment * Migrate to use paper-material-styles (#1170) * Send parsed date to history/logbook (#1171) * Fork app storage behavior (#1172) * Add paper input with type time (#1173) * Fix authorize * Lint * Sort imports * Lint * Remove eslint-html * Do not lint authorize.html * Fix polymer lint * Try chrome 62 for wct * P3: Add patched iconset (#1175) * Add patched iconset * Lint * Test with latest Chrome again * Use less window.hassUtil * Teporarily use my fecha fork * Import correct intl.messageFormat * Update wct-browser-legacy to 1.0.0 * Include polyfill in right place * Fix IntlMessageFormat * Fix test not having a global scope * Rollup <_< * Fork app-localize-behavior * Disable wct tests * Lint --- .eslintrc.json | 2 +- .travis.yml | 15 +- gulp/tasks/auth.js | 9 +- gulp/tasks/build.js | 1 + gulp/tasks/gen-index-html.js | 3 +- gulp/tasks/gen-service-worker.js | 13 +- gulp/tasks/translations.js | 3 +- ...sitory.html => hassio-addon-repository.js} | 48 +- ...addon-store.html => hassio-addon-store.js} | 34 +- .../hassio-repositories-editor.html | 108 - .../addon-store/hassio-repositories-editor.js | 93 + ...addon-audio.html => hassio-addon-audio.js} | 52 +- ...don-config.html => hassio-addon-config.js} | 43 +- hassio/addon-view/hassio-addon-info.html | 275 - hassio/addon-view/hassio-addon-info.js | 225 + ...o-addon-logs.html => hassio-addon-logs.js} | 25 +- ...n-network.html => hassio-addon-network.js} | 57 +- hassio/addon-view/hassio-addon-view.html | 165 - hassio/addon-view/hassio-addon-view.js | 134 + .../{hassio-addons.html => hassio-addons.js} | 49 +- hassio/dashboard/hassio-dashboard.html | 40 - hassio/dashboard/hassio-dashboard.js | 33 + hassio/dashboard/hassio-hass-update.html | 93 - hassio/dashboard/hassio-hass-update.js | 81 + hassio/{hassio-app.html => hassio-app.js} | 27 +- hassio/{hassio-data.html => hassio-data.js} | 6 +- hassio/hassio-main.html | 132 - hassio/hassio-main.js | 104 + ...-dialog.html => hassio-markdown-dialog.js} | 43 +- hassio/hassio-pages-with-tabs.html | 163 - hassio/hassio-pages-with-tabs.js | 131 + hassio/index.html | 27 +- ...assio-snapshot.html => hassio-snapshot.js} | 93 +- ...sio-snapshots.html => hassio-snapshots.js} | 100 +- ...sio-host-info.html => hassio-host-info.js} | 62 +- ...or-info.html => hassio-supervisor-info.js} | 63 +- ...isor-log.html => hassio-supervisor-log.js} | 25 +- hassio/system/hassio-system.html | 54 - hassio/system/hassio-system.js | 45 + index.html | 12 +- package.json | 91 +- ...on-editor.html => ha-automation-editor.js} | 100 +- ...on-picker.html => ha-automation-picker.js} | 87 +- ...utomation.html => ha-config-automation.js} | 53 +- ...ccount.html => ha-config-cloud-account.js} | 91 +- ...tml => ha-config-cloud-forgot-password.js} | 50 +- ...ud-login.html => ha-config-cloud-login.js} | 110 +- ...ister.html => ha-config-cloud-register.js} | 86 +- panels/config/cloud/ha-config-cloud.html | 133 - panels/config/cloud/ha-config-cloud.js | 109 + ...nfig-entries.html => ha-config-entries.js} | 102 +- ...{ha-config-flow.html => ha-config-flow.js} | 90 +- panels/config/core/ha-config-core.html | 121 - panels/config/core/ha-config-core.js | 103 + ...on-core.html => ha-config-section-core.js} | 122 +- .../ha-config-section-push-notifications.html | 59 - .../ha-config-section-push-notifications.js | 54 + ...hemes.html => ha-config-section-themes.js} | 54 +- ....html => ha-config-section-translation.js} | 65 +- .../config/customize/ha-config-customize.html | 93 - .../config/customize/ha-config-customize.js | 84 + ...tribute.html => ha-customize-attribute.js} | 34 +- .../ha-form-customize-attributes.html | 36 - .../customize/ha-form-customize-attributes.js | 33 + ...rm-customize.html => ha-form-customize.js} | 53 +- ...omize-array.html => ha-customize-array.js} | 38 +- .../customize/types/ha-customize-boolean.html | 29 - .../customize/types/ha-customize-boolean.js | 25 + .../customize/types/ha-customize-icon.html | 42 - .../customize/types/ha-customize-icon.js | 37 + .../types/ha-customize-key-value.html | 45 - .../customize/types/ha-customize-key-value.js | 37 + .../customize/types/ha-customize-string.html | 32 - .../customize/types/ha-customize-string.js | 28 + .../dashboard/ha-config-cloud-menu.html | 54 - .../config/dashboard/ha-config-cloud-menu.js | 53 + .../config/dashboard/ha-config-dashboard.html | 83 - .../config/dashboard/ha-config-dashboard.js | 71 + .../dashboard/ha-config-entries-menu.html | 49 - .../dashboard/ha-config-entries-menu.js | 48 + ...avigation.html => ha-config-navigation.js} | 69 +- panels/config/ha-config-js.html | 1 - panels/config/ha-config-js.js | 1 + ...nfig-section.html => ha-config-section.js} | 28 +- ...entity-config.html => ha-entity-config.js} | 74 +- .../{ha-form-style.html => ha-form-style.js} | 9 +- ...a-panel-config.html => ha-panel-config.js} | 40 +- ...config-script.html => ha-config-script.js} | 53 +- ...script-editor.html => ha-script-editor.js} | 93 +- panels/config/script/ha-script-picker.html | 150 - panels/config/script/ha-script-picker.js | 137 + panels/config/zwave/ha-config-zwave.html | 618 -- panels/config/zwave/ha-config-zwave.js | 477 ++ .../{zwave-groups.html => zwave-groups.js} | 77 +- .../zwave/{zwave-log.html => zwave-log.js} | 43 +- panels/config/zwave/zwave-network.html | 204 - panels/config/zwave/zwave-network.js | 120 + ...-node-config.html => zwave-node-config.js} | 108 +- ...rmation.html => zwave-node-information.js} | 34 +- ...wave-usercodes.html => zwave-usercodes.js} | 69 +- .../{zwave-values.html => zwave-values.js} | 56 +- .../{events-list.html => events-list.js} | 21 +- ...l-dev-event.html => ha-panel-dev-event.js} | 46 +- ...nel-dev-info.html => ha-panel-dev-info.js} | 44 +- ...nel-dev-mqtt.html => ha-panel-dev-mqtt.js} | 37 +- ...v-service.html => ha-panel-dev-service.js} | 42 +- ...l-dev-state.html => ha-panel-dev-state.js} | 41 +- ...template.html => ha-panel-dev-template.js} | 39 +- ...a-panel-hassio.html => ha-panel-hassio.js} | 21 +- ...panel-history.html => ha-panel-history.js} | 64 +- ...a-panel-iframe.html => ha-panel-iframe.js} | 23 +- panels/kiosk/ha-panel-kiosk.html | 30 - panels/kiosk/ha-panel-kiosk.js | 28 + ...a-logbook-data.html => ha-logbook-data.js} | 6 +- .../{ha-logbook.html => ha-logbook.js} | 42 +- ...panel-logbook.html => ha-panel-logbook.js} | 61 +- ...panel-mailbox.html => ha-panel-mailbox.js} | 55 +- ...entity-marker.html => ha-entity-marker.js} | 29 +- .../{ha-panel-map.html => ha-panel-map.js} | 36 +- ...ng-list.html => ha-panel-shopping-list.js} | 52 +- polymer.json | 41 +- script/build_frontend | 38 +- script/build_markdown | 45 - script/fingerprint_frontend.py | 39 - script/update_mdi.py | 2 +- .../{ha-auth-flow.html => ha-auth-flow.js} | 64 +- .../{ha-authorize.html => ha-authorize.js} | 48 +- ...provider.html => ha-pick-auth-provider.js} | 37 +- src/authorize.html | 26 +- src/cards/ha-badges-card.html | 30 - src/cards/ha-badges-card.js | 29 + ...{ha-camera-card.html => ha-camera-card.js} | 54 +- ...a-card-chooser.html => ha-card-chooser.js} | 20 +- ...entities-card.html => ha-entities-card.js} | 51 +- ...aph-card.html => ha-history_graph-card.js} | 46 +- ...ayer-card.html => ha-media_player-card.js} | 104 +- ...tml => ha-persistent_notification-card.js} | 36 +- .../{ha-plant-card.html => ha-plant-card.js} | 28 +- ...a-weather-card.html => ha-weather-card.js} | 35 +- ...-api-button.html => ha-call-api-button.js} | 27 +- ...-button.html => ha-call-service-button.js} | 25 +- ...ress-button.html => ha-progress-button.js} | 33 +- .../{domain-icon.html => domain-icon.js} | 20 +- src/components/entity/ha-chart-base.html | 542 -- src/components/entity/ha-chart-base.js | 540 ++ ...entity-picker.html => ha-entity-picker.js} | 74 +- ...entity-toggle.html => ha-entity-toggle.js} | 31 +- src/components/entity/ha-state-icon.html | 29 - src/components/entity/ha-state-icon.js | 29 + ...bel-badge.html => ha-state-label-badge.js} | 40 +- .../{state-badge.html => state-badge.js} | 27 +- .../entity/{state-info.html => state-info.js} | 41 +- .../{ha-attributes.html => ha-attributes.js} | 32 +- src/components/{ha-card.html => ha-card.js} | 33 +- src/components/{ha-cards.html => ha-cards.js} | 164 +- ...ate-control.html => ha-climate-control.js} | 22 +- ...climate-state.html => ha-climate-state.js} | 21 +- ...a-color-picker.html => ha-color-picker.js} | 37 +- .../{ha-combo-box.html => ha-combo-box.js} | 53 +- ...ver-controls.html => ha-cover-controls.js} | 32 +- ...ontrols.html => ha-cover-tilt-controls.js} | 36 +- src/components/ha-demo-badge.html | 27 - src/components/ha-demo-badge.js | 22 + src/components/ha-form.html | 153 - src/components/ha-form.js | 121 + src/components/ha-iconset-svg.js | 35 + ...{ha-label-badge.html => ha-label-badge.js} | 31 +- ...beled-slider.html => ha-labeled-slider.js} | 28 +- .../{ha-markdown.html => ha-markdown.js} | 21 +- ...{ha-menu-button.html => ha-menu-button.js} | 25 +- ...a-paper-slider.html => ha-paper-slider.js} | 67 +- ...e.html => ha-push-notifications-toggle.js} | 25 +- ...relative-time.html => ha-relative-time.js} | 13 +- ...ription.html => ha-service-description.js} | 15 +- ...rvice-picker.html => ha-service-picker.js} | 29 +- .../{ha-sidebar.html => ha-sidebar.js} | 133 +- ...e-button.html => ha-start-voice-button.js} | 25 +- ...rd-content.html => hassio-card-content.js} | 33 +- ...-line.html => state-history-chart-line.js} | 28 +- ...e.html => state-history-chart-timeline.js} | 27 +- ...ry-charts.html => state-history-charts.js} | 45 +- ...ory-data.html => ha-state-history-data.js} | 18 +- ...nfo-dialog.html => ha-more-info-dialog.js} | 48 +- ...dialog.html => ha-voice-command-dialog.js} | 47 +- ....html => more-info-alarm_control_panel.js} | 53 +- ...utomation.html => more-info-automation.js} | 26 +- ...e-info-camera.html => more-info-camera.js} | 20 +- ...info-climate.html => more-info-climate.js} | 164 +- ...gurator.html => more-info-configurator.js} | 57 +- ...info-content.html => more-info-content.js} | 44 +- ...ore-info-cover.html => more-info-cover.js} | 58 +- .../more-info/controls/more-info-default.html | 25 - .../more-info/controls/more-info-default.js | 24 + .../{more-info-fan.html => more-info-fan.js} | 66 +- ...ore-info-group.html => more-info-group.js} | 26 +- .../controls/more-info-history_graph.html | 35 - .../controls/more-info-history_graph.js | 30 + ...etime.html => more-info-input_datetime.js} | 87 +- ...ore-info-light.html => more-info-light.js} | 92 +- ...{more-info-lock.html => more-info-lock.js} | 31 +- ..._player.html => more-info-media_player.js} | 105 +- .../more-info/controls/more-info-script.html | 32 - .../more-info/controls/more-info-script.js | 30 + .../{more-info-sun.html => more-info-sun.js} | 34 +- ...info-updater.html => more-info-updater.js} | 17 +- ...e-info-vacuum.html => more-info-vacuum.js} | 78 +- ...info-weather.html => more-info-weather.js} | 27 +- ...fo-controls.html => more-info-controls.js} | 92 +- ...fo-settings.html => more-info-settings.js} | 41 +- src/entrypoint.html | 1 - ...{home-assistant.html => home-assistant.js} | 111 +- .../{ha-app-layout.html => ha-app-layout.js} | 34 +- src/layouts/hass-error-screen.html | 61 - src/layouts/hass-error-screen.js | 58 + src/layouts/hass-loading-screen.html | 59 - src/layouts/hass-loading-screen.js | 56 + src/layouts/hass-subpage.html | 42 - src/layouts/hass-subpage.js | 38 + src/layouts/home-assistant-main.html | 174 - src/layouts/home-assistant-main.js | 133 + .../{login-form.html => login-form.js} | 59 +- .../{partial-cards.html => partial-cards.js} | 146 +- src/layouts/partial-panel-resolver.html | 135 - src/layouts/partial-panel-resolver.js | 216 + ...n-manager.html => notification-manager.js} | 31 +- ...chart-scripts.html => ha-chart-scripts.js} | 12 +- ...ker-style.html => ha-date-picker-style.js} | 21 +- src/resources/{ha-style.html => ha-style.js} | 27 +- .../{hassio-style.html => hassio-style.js} | 9 +- src/resources/html-import/import-href.js | 96 + src/resources/html-import/polyfill.js | 25 + src/resources/load_markdown.js | 5 + src/resources/panel-imports.html | 3 - src/resources/panel-imports.js | 4 + ...ard-climate.html => state-card-climate.js} | 26 +- .../state-card-configurator.html | 49 - src/state-summary/state-card-configurator.js | 46 + ...ard-content.html => state-card-content.js} | 35 +- src/state-summary/state-card-cover.html | 54 - src/state-summary/state-card-cover.js | 51 + ...ard-display.html => state-card-display.js} | 38 +- ...number.html => state-card-input_number.js} | 62 +- ...select.html => state-card-input_select.js} | 32 +- src/state-summary/state-card-input_text.html | 89 - src/state-summary/state-card-input_text.js | 73 + ...player.html => state-card-media_player.js} | 38 +- ...te-card-scene.html => state-card-scene.js} | 37 +- src/state-summary/state-card-script.html | 67 - src/state-summary/state-card-script.js | 64 + ...te-card-timer.html => state-card-timer.js} | 30 +- src/state-summary/state-card-toggle.html | 42 - src/state-summary/state-card-toggle.js | 39 + ...ard-weblink.html => state-card-weblink.js} | 21 +- src/util/app-localize-behavior.js | 333 + src/util/app-localstorage-document.js | 193 + src/util/cover-model.html | 121 - src/util/cover-model.js | 117 + ...a-pref-storage.html => ha-pref-storage.js} | 6 +- src/util/{ha-url-sync.html => ha-url-sync.js} | 8 +- ...utes-util.html => hass-attributes-util.js} | 2 - .../{hass-call-api.html => hass-call-api.js} | 2 - src/util/hass-media-player-model.html | 214 - src/util/hass-media-player-model.js | 210 + src/util/{hass-mixins.html => hass-mixins.js} | 27 +- ...s-translation.html => hass-translation.js} | 8 +- src/util/hass-util.html | 1 - src/util/hass-util.js | 2 + src/util/legacy-support.js | 9 + src/util/{roboto.html => roboto.js} | 34 +- test/index.html | 2 +- test/state-card-display-test.html | 83 +- test/state-info-test.html | 137 +- webpack.config.js | 60 + yarn.lock | 5470 ++++++++++++++--- 274 files changed, 12972 insertions(+), 10037 deletions(-) rename hassio/addon-store/{hassio-addon-repository.html => hassio-addon-repository.js} (52%) rename hassio/addon-store/{hassio-addon-store.html => hassio-addon-store.js} (65%) delete mode 100644 hassio/addon-store/hassio-repositories-editor.html create mode 100644 hassio/addon-store/hassio-repositories-editor.js rename hassio/addon-view/{hassio-addon-audio.html => hassio-addon-audio.js} (66%) rename hassio/addon-view/{hassio-addon-config.html => hassio-addon-config.js} (61%) delete mode 100644 hassio/addon-view/hassio-addon-info.html create mode 100644 hassio/addon-view/hassio-addon-info.js rename hassio/addon-view/{hassio-addon-logs.html => hassio-addon-logs.js} (61%) rename hassio/addon-view/{hassio-addon-network.html => hassio-addon-network.js} (61%) delete mode 100644 hassio/addon-view/hassio-addon-view.html create mode 100644 hassio/addon-view/hassio-addon-view.js rename hassio/dashboard/{hassio-addons.html => hassio-addons.js} (50%) delete mode 100644 hassio/dashboard/hassio-dashboard.html create mode 100644 hassio/dashboard/hassio-dashboard.js delete mode 100644 hassio/dashboard/hassio-hass-update.html create mode 100644 hassio/dashboard/hassio-hass-update.js rename hassio/{hassio-app.html => hassio-app.js} (65%) rename hassio/{hassio-data.html => hassio-data.js} (88%) delete mode 100644 hassio/hassio-main.html create mode 100644 hassio/hassio-main.js rename hassio/{hassio-markdown-dialog.html => hassio-markdown-dialog.js} (57%) delete mode 100644 hassio/hassio-pages-with-tabs.html create mode 100644 hassio/hassio-pages-with-tabs.js rename hassio/snapshots/{hassio-snapshot.html => hassio-snapshot.js} (69%) rename hassio/snapshots/{hassio-snapshots.html => hassio-snapshots.js} (65%) rename hassio/system/{hassio-host-info.html => hassio-host-info.js} (68%) rename hassio/system/{hassio-supervisor-info.html => hassio-supervisor-info.js} (64%) rename hassio/system/{hassio-supervisor-log.html => hassio-supervisor-log.js} (57%) delete mode 100644 hassio/system/hassio-system.html create mode 100644 hassio/system/hassio-system.js rename panels/config/automation/{ha-automation-editor.html => ha-automation-editor.js} (67%) rename panels/config/automation/{ha-automation-picker.html => ha-automation-picker.js} (51%) rename panels/config/automation/{ha-config-automation.html => ha-config-automation.js} (62%) rename panels/config/cloud/{ha-config-cloud-account.html => ha-config-cloud-account.js} (62%) rename panels/config/cloud/{ha-config-cloud-forgot-password.html => ha-config-cloud-forgot-password.js} (64%) rename panels/config/cloud/{ha-config-cloud-login.html => ha-config-cloud-login.js} (59%) rename panels/config/cloud/{ha-config-cloud-register.html => ha-config-cloud-register.js} (60%) delete mode 100644 panels/config/cloud/ha-config-cloud.html create mode 100644 panels/config/cloud/ha-config-cloud.js rename panels/config/config-entries/{ha-config-entries.html => ha-config-entries.js} (64%) rename panels/config/config-entries/{ha-config-flow.html => ha-config-flow.js} (63%) delete mode 100644 panels/config/core/ha-config-core.html create mode 100644 panels/config/core/ha-config-core.js rename panels/config/core/{ha-config-section-core.html => ha-config-section-core.js} (51%) delete mode 100644 panels/config/core/ha-config-section-push-notifications.html create mode 100644 panels/config/core/ha-config-section-push-notifications.js rename panels/config/core/{ha-config-section-themes.html => ha-config-section-themes.js} (63%) rename panels/config/core/{ha-config-section-translation.html => ha-config-section-translation.js} (62%) delete mode 100644 panels/config/customize/ha-config-customize.html create mode 100644 panels/config/customize/ha-config-customize.js rename panels/config/customize/{ha-customize-attribute.html => ha-customize-attribute.js} (69%) delete mode 100644 panels/config/customize/ha-form-customize-attributes.html create mode 100644 panels/config/customize/ha-form-customize-attributes.js rename panels/config/customize/{ha-form-customize.html => ha-form-customize.js} (86%) rename panels/config/customize/types/{ha-customize-array.html => ha-customize-array.js} (50%) delete mode 100644 panels/config/customize/types/ha-customize-boolean.html create mode 100644 panels/config/customize/types/ha-customize-boolean.js delete mode 100644 panels/config/customize/types/ha-customize-icon.html create mode 100644 panels/config/customize/types/ha-customize-icon.js delete mode 100644 panels/config/customize/types/ha-customize-key-value.html create mode 100644 panels/config/customize/types/ha-customize-key-value.js delete mode 100644 panels/config/customize/types/ha-customize-string.html create mode 100644 panels/config/customize/types/ha-customize-string.js delete mode 100644 panels/config/dashboard/ha-config-cloud-menu.html create mode 100644 panels/config/dashboard/ha-config-cloud-menu.js delete mode 100644 panels/config/dashboard/ha-config-dashboard.html create mode 100644 panels/config/dashboard/ha-config-dashboard.js delete mode 100644 panels/config/dashboard/ha-config-entries-menu.html create mode 100644 panels/config/dashboard/ha-config-entries-menu.js rename panels/config/dashboard/{ha-config-navigation.html => ha-config-navigation.js} (61%) delete mode 100644 panels/config/ha-config-js.html create mode 100644 panels/config/ha-config-js.js rename panels/config/{ha-config-section.html => ha-config-section.js} (77%) rename panels/config/{ha-entity-config.html => ha-entity-config.js} (64%) rename panels/config/{ha-form-style.html => ha-form-style.js} (65%) rename panels/config/{ha-panel-config.html => ha-panel-config.js} (78%) rename panels/config/script/{ha-config-script.html => ha-config-script.js} (61%) rename panels/config/script/{ha-script-editor.html => ha-script-editor.js} (68%) delete mode 100644 panels/config/script/ha-script-picker.html create mode 100644 panels/config/script/ha-script-picker.js delete mode 100644 panels/config/zwave/ha-config-zwave.html create mode 100644 panels/config/zwave/ha-config-zwave.js rename panels/config/zwave/{zwave-groups.html => zwave-groups.js} (71%) rename panels/config/zwave/{zwave-log.html => zwave-log.js} (53%) delete mode 100644 panels/config/zwave/zwave-network.html create mode 100644 panels/config/zwave/zwave-network.js rename panels/config/zwave/{zwave-node-config.html => zwave-node-config.js} (70%) rename panels/config/zwave/{zwave-node-information.html => zwave-node-information.js} (62%) rename panels/config/zwave/{zwave-usercodes.html => zwave-usercodes.js} (66%) rename panels/config/zwave/{zwave-values.html => zwave-values.js} (65%) rename panels/dev-event/{events-list.html => events-list.js} (67%) rename panels/dev-event/{ha-panel-dev-event.html => ha-panel-dev-event.js} (70%) rename panels/dev-info/{ha-panel-dev-info.html => ha-panel-dev-info.js} (86%) rename panels/dev-mqtt/{ha-panel-dev-mqtt.html => ha-panel-dev-mqtt.js} (64%) rename panels/dev-service/{ha-panel-dev-service.html => ha-panel-dev-service.js} (87%) rename panels/dev-state/{ha-panel-dev-state.html => ha-panel-dev-state.js} (88%) rename panels/dev-template/{ha-panel-dev-template.html => ha-panel-dev-template.js} (81%) rename panels/hassio/{ha-panel-hassio.html => ha-panel-hassio.js} (86%) rename panels/history/{ha-panel-history.html => ha-panel-history.js} (71%) rename panels/iframe/{ha-panel-iframe.html => ha-panel-iframe.js} (65%) delete mode 100644 panels/kiosk/ha-panel-kiosk.html create mode 100644 panels/kiosk/ha-panel-kiosk.js rename panels/logbook/{ha-logbook-data.html => ha-logbook-data.js} (91%) rename panels/logbook/{ha-logbook.html => ha-logbook.js} (55%) rename panels/logbook/{ha-panel-logbook.html => ha-panel-logbook.js} (68%) rename panels/mailbox/{ha-panel-mailbox.html => ha-panel-mailbox.js} (83%) rename panels/map/{ha-entity-marker.html => ha-entity-marker.js} (67%) rename panels/map/{ha-panel-map.html => ha-panel-map.js} (89%) rename panels/shopping-list/{ha-panel-shopping-list.html => ha-panel-shopping-list.js} (78%) delete mode 100755 script/build_markdown delete mode 100755 script/fingerprint_frontend.py rename src/auth/{ha-auth-flow.html => ha-auth-flow.js} (74%) rename src/auth/{ha-authorize.html => ha-authorize.js} (51%) rename src/auth/{ha-pick-auth-provider.html => ha-pick-auth-provider.js} (69%) delete mode 100644 src/cards/ha-badges-card.html create mode 100644 src/cards/ha-badges-card.js rename src/cards/{ha-camera-card.html => ha-camera-card.js} (76%) rename src/cards/{ha-card-chooser.html => ha-card-chooser.js} (79%) rename src/cards/{ha-entities-card.html => ha-entities-card.js} (72%) rename src/cards/{ha-history_graph-card.html => ha-history_graph-card.js} (68%) rename src/cards/{ha-media_player-card.html => ha-media_player-card.js} (73%) rename src/cards/{ha-persistent_notification-card.html => ha-persistent_notification-card.js} (66%) rename src/cards/{ha-plant-card.html => ha-plant-card.js} (79%) rename src/cards/{ha-weather-card.html => ha-weather-card.js} (92%) rename src/components/buttons/{ha-call-api-button.html => ha-call-api-button.js} (71%) rename src/components/buttons/{ha-call-service-button.html => ha-call-service-button.js} (71%) rename src/components/buttons/{ha-progress-button.html => ha-progress-button.js} (70%) rename src/components/{domain-icon.html => domain-icon.js} (51%) delete mode 100644 src/components/entity/ha-chart-base.html create mode 100644 src/components/entity/ha-chart-base.js rename src/components/entity/{ha-entity-picker.html => ha-entity-picker.js} (59%) rename src/components/entity/{ha-entity-toggle.html => ha-entity-toggle.js} (81%) delete mode 100644 src/components/entity/ha-state-icon.html create mode 100644 src/components/entity/ha-state-icon.js rename src/components/entity/{ha-state-label-badge.html => ha-state-label-badge.js} (88%) rename src/components/entity/{state-badge.html => state-badge.js} (80%) rename src/components/entity/{state-info.html => state-info.js} (53%) rename src/components/{ha-attributes.html => ha-attributes.js} (67%) rename src/components/{ha-card.html => ha-card.js} (52%) rename src/components/{ha-cards.html => ha-cards.js} (86%) rename src/components/{ha-climate-control.html => ha-climate-control.js} (86%) rename src/components/{ha-climate-state.html => ha-climate-state.js} (87%) rename src/components/{ha-color-picker.html => ha-color-picker.js} (97%) rename src/components/{ha-combo-box.html => ha-combo-box.js} (52%) rename src/components/{ha-cover-controls.html => ha-cover-controls.js} (56%) rename src/components/{ha-cover-tilt-controls.html => ha-cover-tilt-controls.js} (54%) delete mode 100644 src/components/ha-demo-badge.html create mode 100644 src/components/ha-demo-badge.js delete mode 100644 src/components/ha-form.html create mode 100644 src/components/ha-form.js create mode 100644 src/components/ha-iconset-svg.js rename src/components/{ha-label-badge.html => ha-label-badge.js} (81%) rename src/components/{ha-labeled-slider.html => ha-labeled-slider.js} (59%) rename src/components/{ha-markdown.html => ha-markdown.js} (77%) rename src/components/{ha-menu-button.html => ha-menu-button.js} (56%) rename src/components/{ha-paper-slider.html => ha-paper-slider.js} (52%) rename src/components/{ha-push-notifications-toggle.html => ha-push-notifications-toggle.js} (86%) rename src/components/{ha-relative-time.html => ha-relative-time.js} (76%) rename src/components/{ha-service-description.html => ha-service-description.js} (70%) rename src/components/{ha-service-picker.html => ha-service-picker.js} (66%) rename src/components/{ha-sidebar.html => ha-sidebar.js} (54%) rename src/components/{ha-start-voice-button.html => ha-start-voice-button.js} (57%) rename src/components/{hassio-card-content.html => hassio-card-content.js} (63%) rename src/components/{state-history-chart-line.html => state-history-chart-line.js} (93%) rename src/components/{state-history-chart-timeline.html => state-history-chart-timeline.js} (89%) rename src/components/{state-history-charts.html => state-history-charts.js} (53%) rename src/data/{ha-state-history-data.html => ha-state-history-data.js} (97%) rename src/dialogs/{ha-more-info-dialog.html => ha-more-info-dialog.js} (76%) rename src/dialogs/{ha-voice-command-dialog.html => ha-voice-command-dialog.js} (83%) rename src/dialogs/more-info/controls/{more-info-alarm_control_panel.html => more-info-alarm_control_panel.js} (65%) rename src/dialogs/more-info/controls/{more-info-automation.html => more-info-automation.js} (55%) rename src/dialogs/more-info/controls/{more-info-camera.html => more-info-camera.js} (75%) rename src/dialogs/more-info/controls/{more-info-climate.html => more-info-climate.js} (68%) rename src/dialogs/more-info/controls/{more-info-configurator.html => more-info-configurator.js} (54%) rename src/dialogs/more-info/controls/{more-info-content.html => more-info-content.js} (50%) rename src/dialogs/more-info/controls/{more-info-cover.html => more-info-cover.js} (59%) delete mode 100644 src/dialogs/more-info/controls/more-info-default.html create mode 100644 src/dialogs/more-info/controls/more-info-default.js rename src/dialogs/more-info/controls/{more-info-fan.html => more-info-fan.js} (60%) rename src/dialogs/more-info/controls/{more-info-group.html => more-info-group.js} (78%) delete mode 100644 src/dialogs/more-info/controls/more-info-history_graph.html create mode 100644 src/dialogs/more-info/controls/more-info-history_graph.js rename src/dialogs/more-info/controls/{more-info-input_datetime.html => more-info-input_datetime.js} (65%) rename src/dialogs/more-info/controls/{more-info-light.html => more-info-light.js} (73%) rename src/dialogs/more-info/controls/{more-info-lock.html => more-info-lock.js} (50%) rename src/dialogs/more-info/controls/{more-info-media_player.html => more-info-media_player.js} (62%) delete mode 100644 src/dialogs/more-info/controls/more-info-script.html create mode 100644 src/dialogs/more-info/controls/more-info-script.js rename src/dialogs/more-info/controls/{more-info-sun.html => more-info-sun.js} (60%) rename src/dialogs/more-info/controls/{more-info-updater.html => more-info-updater.js} (56%) rename src/dialogs/more-info/controls/{more-info-vacuum.html => more-info-vacuum.js} (63%) rename src/dialogs/more-info/controls/{more-info-weather.html => more-info-weather.js} (93%) rename src/dialogs/more-info/{more-info-controls.html => more-info-controls.js} (56%) rename src/dialogs/more-info/{more-info-settings.html => more-info-settings.js} (64%) delete mode 100644 src/entrypoint.html rename src/{home-assistant.html => home-assistant.js} (78%) rename src/layouts/{ha-app-layout.html => ha-app-layout.js} (84%) delete mode 100644 src/layouts/hass-error-screen.html create mode 100644 src/layouts/hass-error-screen.js delete mode 100644 src/layouts/hass-loading-screen.html create mode 100644 src/layouts/hass-loading-screen.js delete mode 100644 src/layouts/hass-subpage.html create mode 100644 src/layouts/hass-subpage.js delete mode 100644 src/layouts/home-assistant-main.html create mode 100644 src/layouts/home-assistant-main.js rename src/layouts/{login-form.html => login-form.js} (70%) rename src/layouts/{partial-cards.html => partial-cards.js} (68%) delete mode 100644 src/layouts/partial-panel-resolver.html create mode 100644 src/layouts/partial-panel-resolver.js rename src/managers/{notification-manager.html => notification-manager.js} (75%) rename src/resources/{ha-chart-scripts.html => ha-chart-scripts.js} (80%) rename src/resources/{ha-date-picker-style.html => ha-date-picker-style.js} (81%) rename src/resources/{ha-style.html => ha-style.js} (93%) rename src/resources/{hassio-style.html => hassio-style.js} (83%) create mode 100644 src/resources/html-import/import-href.js create mode 100644 src/resources/html-import/polyfill.js create mode 100644 src/resources/load_markdown.js delete mode 100644 src/resources/panel-imports.html create mode 100644 src/resources/panel-imports.js rename src/state-summary/{state-card-climate.html => state-card-climate.js} (51%) delete mode 100644 src/state-summary/state-card-configurator.html create mode 100644 src/state-summary/state-card-configurator.js rename src/state-summary/{state-card-content.html => state-card-content.js} (51%) delete mode 100644 src/state-summary/state-card-cover.html create mode 100644 src/state-summary/state-card-cover.js rename src/state-summary/{state-card-display.html => state-card-display.js} (56%) rename src/state-summary/{state-card-input_number.html => state-card-input_number.js} (63%) rename src/state-summary/{state-card-input_select.html => state-card-input_select.js} (63%) delete mode 100644 src/state-summary/state-card-input_text.html create mode 100644 src/state-summary/state-card-input_text.js rename src/state-summary/{state-card-media_player.html => state-card-media_player.js} (67%) rename src/state-summary/{state-card-scene.html => state-card-scene.js} (56%) delete mode 100644 src/state-summary/state-card-script.html create mode 100644 src/state-summary/state-card-script.js rename src/state-summary/{state-card-timer.html => state-card-timer.js} (70%) delete mode 100644 src/state-summary/state-card-toggle.html create mode 100644 src/state-summary/state-card-toggle.js rename src/state-summary/{state-card-weblink.html => state-card-weblink.js} (65%) create mode 100644 src/util/app-localize-behavior.js create mode 100644 src/util/app-localstorage-document.js delete mode 100644 src/util/cover-model.html create mode 100644 src/util/cover-model.js rename src/util/{ha-pref-storage.html => ha-pref-storage.js} (87%) rename src/util/{ha-url-sync.html => ha-url-sync.js} (89%) rename src/util/{hass-attributes-util.html => hass-attributes-util.js} (99%) rename src/util/{hass-call-api.html => hass-call-api.js} (99%) delete mode 100644 src/util/hass-media-player-model.html create mode 100644 src/util/hass-media-player-model.js rename src/util/{hass-mixins.html => hass-mixins.js} (81%) rename src/util/{hass-translation.html => hass-translation.js} (92%) delete mode 100644 src/util/hass-util.html create mode 100644 src/util/hass-util.js create mode 100644 src/util/legacy-support.js rename src/util/{roboto.html => roboto.js} (90%) create mode 100644 webpack.config.js diff --git a/.eslintrc.json b/.eslintrc.json index 9954ffbaba..45fe93f1fd 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,12 +1,12 @@ { "extends": "./.eslintrc-hound.json", "plugins": [ - "html", "react" ], "env": { "browser": true }, + "parser": "babel-eslint", "rules": { "import/no-unresolved": 2, "linebreak-style": 0 diff --git a/.travis.yml b/.travis.yml index 9f62314db4..03eee93e5a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,24 +3,23 @@ language: node_js cache: yarn: true directories: - - bower_components -install: - - yarn install - - ./node_modules/.bin/bower install + - bower_components +install: yarn install script: - npm run build - npm run test - - xvfb-run wct - - if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct --plugin sauce; fi + # - xvfb-run wct --module-resolution=node --npm + # - 'if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct --module-resolution=node --npm --plugin sauce; fi' services: - docker before_deploy: - - docker pull lokalise/lokalise-cli@sha256:2198814ebddfda56ee041a4b427521757dd57f75415ea9693696a64c550cef21 + - 'docker pull lokalise/lokalise-cli@sha256:2198814ebddfda56ee041a4b427521757dd57f75415ea9693696a64c550cef21' deploy: provider: script script: script/travis_deploy - on: + 'on': branch: master dist: trusty addons: sauce_connect: true + diff --git a/gulp/tasks/auth.js b/gulp/tasks/auth.js index 4fd417ee0e..6fa32e4289 100644 --- a/gulp/tasks/auth.js +++ b/gulp/tasks/auth.js @@ -1,4 +1,5 @@ const gulp = require('gulp'); +const path = require('path'); const replace = require('gulp-batch-replace'); const rename = require('gulp-rename'); @@ -11,8 +12,12 @@ const { const es5Extra = ""; async function buildAuth(es6) { - let stream = await bundledStreamFromHTML('src/authorize.html'); - stream = stream.pipe(replace([['', es6 ? '' : es5Extra]])); + const frontendPath = es6 ? 'hass_frontend_latest' : 'hass_frontend_es5'; + const stream = gulp.src(path.resolve(config.polymer_dir, 'src/authorize.html')) + .pipe(replace([ + ['', es6 ? '' : es5Extra], + ['/home-assistant-polymer/build/webpack/ha-authorize.js', `/${frontendPath}/authorize.js`], + ])); return minifyStream(stream, /* es6= */ es6) .pipe(rename('authorize.html')) diff --git a/gulp/tasks/build.js b/gulp/tasks/build.js index cbd546755c..a2a27754ca 100644 --- a/gulp/tasks/build.js +++ b/gulp/tasks/build.js @@ -31,6 +31,7 @@ function renamePanel(path) { } function build(es6) { + return; const strategy = composeStrategies([ generateShellMergeStrategy(polymerConfig.shell), stripImportsStrategy([ diff --git a/gulp/tasks/gen-index-html.js b/gulp/tasks/gen-index-html.js index 4b91a9ac8f..c1e019a89c 100644 --- a/gulp/tasks/gen-index-html.js +++ b/gulp/tasks/gen-index-html.js @@ -8,8 +8,7 @@ const { minifyStream } = require('../common/transform'); const buildReplaces = { '/home-assistant-polymer/build/core.js': 'core.js', - '/home-assistant-polymer/src/home-assistant.html': 'frontend.html', - '/home-assistant-polymer/src/resources/ha-chart-scripts.html': 'ha-chart-scripts.html', + '/home-assistant-polymer/build/webpack/app.js': 'app.js', }; function generateIndex(es6) { diff --git a/gulp/tasks/gen-service-worker.js b/gulp/tasks/gen-service-worker.js index 241637e10f..2d3c3ba850 100755 --- a/gulp/tasks/gen-service-worker.js +++ b/gulp/tasks/gen-service-worker.js @@ -29,22 +29,13 @@ const staticFingerprinted = [ const staticFingerprintedEs6 = [ 'core.js', - 'frontend.html', - 'ha-chart-scripts.html', + 'app.js', ]; const staticFingerprintedEs5 = [ 'compatibility.js', 'core.js', - 'frontend.html', - 'ha-chart-scripts.html', -]; - -// These panels will always be registered inside HA and thus can -// be safely assumed to be able to preload. -const panelsFingerprinted = [ - 'dev-event', 'dev-info', 'dev-service', 'dev-state', 'dev-template', - 'dev-mqtt', 'kiosk', + 'app.js', ]; function processStatic(fn, rootDir, urlDir) { diff --git a/gulp/tasks/translations.js b/gulp/tasks/translations.js index 5c09e80f7a..8399cacb71 100755 --- a/gulp/tasks/translations.js +++ b/gulp/tasks/translations.js @@ -248,8 +248,7 @@ gulp.task(taskName, ['build-translation-fingerprints'], function () { fragments: TRANSLATION_FRAGMENTS, translations: data, }))) - .pipe(insert.wrap('')) - .pipe(rename('translationMetadata.html')) + .pipe(rename('translationMetadata.json')) .pipe(gulp.dest(workDir)); }); tasks.push(taskName); diff --git a/hassio/addon-store/hassio-addon-repository.html b/hassio/addon-store/hassio-addon-repository.js similarity index 52% rename from hassio/addon-store/hassio-addon-repository.html rename to hassio/addon-store/hassio-addon-repository.js index 36b9c87c3c..8e868735ad 100644 --- a/hassio/addon-store/hassio-addon-repository.html +++ b/hassio/addon-store/hassio-addon-repository.js @@ -1,13 +1,14 @@ - - +import '@polymer/paper-card/paper-card.js'; +import { html } from '@polymer/polymer/lib/utils/html-tag.js'; +import { PolymerElement } from '@polymer/polymer/polymer-element.js'; - +import '../../src/components/hassio-card-content.js'; +import '../../src/resources/hassio-style.js'; +import '../../src/util/hass-mixins.js'; - - - - -