| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import {StoreObserver} from 'chrome://resources/js/cr/ui/store.m.js'; |
| import {StoreClient as CrUiStoreClient} from 'chrome://resources/js/cr/ui/store_client.m.js'; |
| |
| import {Store} from './store.js'; |
| import {BookmarksPageState} from './types.js'; |
| |
| /** |
| * @fileoverview Defines StoreClient, a Polymer behavior to tie a front-end |
| * element to back-end data from the store. |
| */ |
| |
| /** |
| * @polymerBehavior |
| */ |
| const BookmarksStoreClientImpl = { |
| /** |
| * @param {string} localProperty |
| * @param {function(Object)} valueGetter |
| */ |
| watch(localProperty, valueGetter) { |
| this.watch_(localProperty, valueGetter); |
| }, |
| |
| /** |
| * @return {BookmarksPageState} |
| */ |
| getState() { |
| return this.getStore().data; |
| }, |
| |
| /** |
| * @return {Store} |
| */ |
| getStore() { |
| return Store.getInstance(); |
| }, |
| }; |
| |
| /** |
| * @polymerBehavior |
| * @implements {StoreObserver<BookmarksPageState>} |
| */ |
| export const StoreClient = [CrUiStoreClient, BookmarksStoreClientImpl]; |