sproutcore 1.9.2 → 1.10.0.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/VERSION.yml +2 -2
- data/bin/sc-build +12 -9
- data/bin/sc-build-number +12 -9
- data/bin/sc-docs +12 -15
- data/bin/sc-gen +12 -9
- data/bin/sc-init +12 -9
- data/bin/sc-manifest +12 -9
- data/bin/sc-server +12 -9
- data/bin/sproutcore +12 -9
- data/lib/frameworks/sproutcore/Buildfile +14 -17
- data/lib/frameworks/sproutcore/CHANGELOG.md +214 -3
- data/lib/frameworks/sproutcore/README.md +4 -1
- data/lib/frameworks/sproutcore/apps/greenhouse/Buildfile +13 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps/greenhouse/README → apps/greenhouse/README.md} +1 -1
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/TODO +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/beautify.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/design.js +3 -3
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/file.js +3 -3
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/files.js +3 -3
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/layout.js +9 -9
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/library.js +23 -23
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/page.js +1 -1
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/property.js +1 -1
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/property_editor.js +2 -2
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/target.js +1 -1
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/targets.js +12 -12
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/view_configs.js +15 -15
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/core.js +14 -14
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/core_file.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/data_source.js +42 -42
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/app_page.js +45 -45
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/app-selector.css +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/button.css +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/dock.css +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/general.css +0 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/icons.css +5 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/main-page.css +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/menu.css +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/modal.css +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/picker.css +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/search.css +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/text-field.css +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/dialogs.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.eot +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.otf +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.woff +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.eot +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.otf +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.woff +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/app-selector/choose-app.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/app-selector/list-item-sel.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/active-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/regular-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-active-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-m.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/actions-active.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/actions.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/inspector-active.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/inspector.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/library-active.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/library.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/projects-active.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/projects.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/run-active.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/run.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/save-active.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/save.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/greenhouse-l.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/greenhouse-s.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/sproutcore.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/main-bg.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom-left.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom-right.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/close-active.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/close.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/left.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-bottom.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-left.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-right.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-top.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/right.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/search-active.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/search.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top-left.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top-right.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top.png +0 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/images/sc-icon-sproutcore-16.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/toolbar-bg.png +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/inspectors.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/loading.rhtml +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/main_page.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/strings.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/fixtures/file.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/main.js +5 -5
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/mixins/drop_down.js +14 -14
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/design.js +4 -4
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/dir.js +12 -12
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/file.js +7 -9
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/target.js +12 -12
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/view_config.js +10 -10
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/resources/test_page.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/inspector.js +11 -11
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/library.js +10 -10
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/main.js +26 -25
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/modals.js +10 -10
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/ready.js +15 -15
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/design.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/designs.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/file.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/files.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/models/file.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/models/view_config.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/views/list_item.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/views/plist_item.js +1 -5
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/theme.js +6 -6
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/anchor.js +43 -43
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/application_list_item.js +2 -2
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/event_blocker.js +7 -7
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/label_designer.js +0 -0
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/list_item.js +8 -8
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/plist_item.js +23 -23
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/simple_button.js +31 -31
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/tear_off_picker.js +12 -12
- data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/web.js +5 -5
- data/lib/frameworks/sproutcore/apps/media_examples/core.js +5 -6
- data/lib/frameworks/sproutcore/apps/media_examples/views/audio_view.js +16 -17
- data/lib/frameworks/sproutcore/apps/media_examples/views/camera_view.js +4 -5
- data/lib/frameworks/sproutcore/apps/media_examples/views/capabilities_view.js +17 -18
- data/lib/frameworks/sproutcore/apps/media_examples/views/microphone_view.js +4 -5
- data/lib/frameworks/sproutcore/apps/media_examples/views/video_view.js +18 -19
- data/lib/frameworks/sproutcore/apps/showcase/Buildfile +2 -2
- data/lib/frameworks/sproutcore/apps/showcase/README +1 -1
- data/lib/frameworks/sproutcore/apps/showcase/controllers/source_tree_controller.js +27 -7
- data/lib/frameworks/sproutcore/apps/showcase/core.js +6 -4
- data/lib/frameworks/sproutcore/apps/showcase/main.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/patch.diff +529 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-128.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/main_page.js +3 -2
- data/lib/frameworks/sproutcore/apps/showcase/resources/stylesheet.css +35 -16
- data/lib/frameworks/sproutcore/apps/showcase/resources/views_page.js +195 -10
- data/lib/frameworks/sproutcore/apps/showcase/system/views_item_content.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/theme.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/checkbox_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/date_field_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/disclosure_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/label_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/list_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/popup_button_views.js +3 -2
- data/lib/frameworks/sproutcore/apps/showcase/views/progress_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/radio_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/scroll_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/segmented_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/select_views.js +10 -9
- data/lib/frameworks/sproutcore/apps/showcase/views/slider_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/source_list_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/split_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/stacked_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/static_content_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/tab_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/text_field_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/toolbar_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/views_item_view.js +15 -6
- data/lib/frameworks/sproutcore/apps/showcase/views/views_list_view.js +5 -4
- data/lib/frameworks/sproutcore/apps/showcase/views/web_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/well_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/workspace_views.js +2 -1
- data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +5 -5
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +15 -15
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/styles.css +3 -0
- data/lib/frameworks/sproutcore/apps/tests/controllers/source.js +11 -11
- data/lib/frameworks/sproutcore/apps/tests/controllers/target.js +6 -12
- data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +28 -33
- data/lib/frameworks/sproutcore/apps/tests/controllers/{detail.js → test.js} +14 -12
- data/lib/frameworks/sproutcore/apps/tests/controllers/tests.js +11 -15
- data/lib/frameworks/sproutcore/apps/tests/core.js +8 -113
- data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +9 -19
- data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +81 -92
- data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +3 -1
- data/lib/frameworks/sproutcore/apps/tests/main.js +8 -13
- data/lib/frameworks/sproutcore/apps/tests/statechart.js +268 -0
- data/lib/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +4 -4
- data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +16 -16
- data/lib/frameworks/sproutcore/apps/welcome/core.js +9 -9
- data/lib/frameworks/sproutcore/apps/welcome/english.lproj/images/sproutcore.png +0 -0
- data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +22 -25
- data/lib/frameworks/sproutcore/apps/welcome/main.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-landscape.jpg b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-landscape.jpg +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-landscape.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-landscape.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-portrait.jpg b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-portrait.jpg +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-portrait.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-portrait.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +21 -7
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +35 -2
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +142 -75
- data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +20 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/horizontal_stack_layout.js +283 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/vertical_stack_layout.js +284 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +64 -65
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +14 -14
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +19 -19
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +10 -25
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +12 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +53 -34
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +30 -24
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +44 -40
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +5 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +105 -176
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane_statechart.js +50 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/view_transition_protocol.js +48 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +225 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/core_query.js +54 -34
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +86 -71
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +35 -35
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +283 -120
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +36 -37
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +653 -435
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +49 -42
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +422 -396
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/selection_set.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +10 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +37 -16
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils/rect.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +15 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/selection_support.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/cursor.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/platform.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +17 -17
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_attr.js +9 -9
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +43 -43
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +4 -14
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +18 -30
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +78 -43
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/theme.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +31 -15
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +47 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/firstResponder.js +32 -31
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/keyPane.js +23 -22
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/layout.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/sendEvent.js +17 -16
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +626 -211
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/border_frame_test.js +174 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build.js +22 -20
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/childViewLayout_test.js +27 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +11 -10
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +5 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +10 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createLayer.js +17 -12
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/destroy.js +60 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/destroyLayer.js +19 -26
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +14 -13
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/enabled_states_test.js +341 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/findLayerInParentLayer.js +9 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/init.js +26 -16
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +28 -68
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisible.js +35 -23
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisibleInWindow.js +93 -78
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +62 -64
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layer.js +69 -18
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js +26 -21
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +129 -57
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +436 -238
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/removeChild.js +38 -44
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +14 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render_delegate_support.js +29 -20
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/replaceAllChildren_test.js +229 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayer.js +33 -95
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/viewDidResize.js +87 -39
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view_states_test.js +684 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +767 -625
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +4 -23
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +645 -77
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +218 -19
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +648 -321
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +326 -534
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +120 -126
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/statechart.js +1526 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +18 -23
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +12 -94
- data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +19 -19
- data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +43 -27
- data/lib/frameworks/sproutcore/frameworks/core_tools/models/test.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_tools/resources/icons.css +5 -0
- data/lib/frameworks/sproutcore/frameworks/core_tools/resources/sc-icon-sproutcore-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +41 -41
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +90 -90
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +31 -31
- data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -8
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +74 -48
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +11 -16
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +187 -253
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/cascade.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +14 -14
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +49 -9
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/builders.js +236 -127
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/instance_management.js +107 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +12 -11
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/loadRecord.js +42 -17
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +20 -15
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +205 -92
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +61 -25
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +39 -9
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +45 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/tests/system/datetime.js +88 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/coders/design.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/coders/object.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/controllers.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/design.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/designs.js +19 -19
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/page_design.js +44 -44
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/page_files.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_rule.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_style.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_style_sheet.js +37 -37
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/button.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/label.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/object_designer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/tab.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/text_field.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/view_designer.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/css/designer.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/design_page.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/high_light.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/controller.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-divider.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-sel-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-sel-divider.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/main-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/page.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/pane.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/view.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/selection_handles.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/binding.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/object.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/page.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/mixins/button.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/mixins/snap_lines.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/tests/coders/page.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/tests/designers/view_designer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/designer_drop_target.js +36 -37
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/drawing.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/high_light.js +17 -17
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/page_item_view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/selection_handles.js +14 -14
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +1 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +51 -51
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/mixins/split_child.js +63 -52
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/mixins/split_thumb.js +64 -59
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +113 -112
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +182 -203
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +13 -13
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +51 -29
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +513 -307
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +69 -217
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +31 -26
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +15 -20
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +2 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +25 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +29 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +19 -23
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +14 -17
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/render_delegates/split.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/render_delegates/split_divider.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/modal.css +2 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/panel.css +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +24 -98
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +446 -442
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +42 -21
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +19 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +26 -28
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/pane_page.js +11 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +5 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +32 -26
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +27 -22
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/methods.js +5 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/ui.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +11 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/displayProperties.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/keyEquivalents.js +9 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +23 -23
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +15 -17
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/{mixins → views/collection}/collection_fast_path.js +18 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +46 -53
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +101 -47
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +26 -26
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +89 -69
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +27 -25
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +32 -35
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +6 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +3 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/drag_and_drop.js +103 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +76 -38
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/image_button/ui.js +3 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/drag_and_drop.js +91 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/render.js +2 -17
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +70 -38
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_alternatingrows.js +17 -19
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +10 -13
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +37 -30
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +18 -20
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +115 -28
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +37 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +194 -182
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +2 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +18 -21
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +5 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/methods.js +5 -4
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/children.js +15 -15
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/dividers.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +341 -45
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/split_child.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/split_thumb.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +6 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +49 -52
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +23 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +2 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +4 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +47 -38
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +887 -740
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +68 -55
- data/lib/frameworks/sproutcore/frameworks/desktop/views/image_button.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +8 -26
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +189 -167
- data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +55 -54
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +8 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +145 -146
- data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +21 -21
- data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +66 -66
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +40 -44
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +203 -200
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +11 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +6 -13
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +87 -112
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +192 -179
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +23 -23
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +64 -64
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +56 -56
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +784 -714
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +21 -39
- data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +45 -41
- data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +4 -10
- data/lib/frameworks/sproutcore/frameworks/desktop/views/thumb.js +9 -47
- data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +40 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/workspace.js +62 -50
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +0 -9
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +45 -45
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +16 -16
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +46 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +16 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/desktop_scroller.js +12 -12
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/ui.js +38 -40
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +20 -20
- data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +16 -16
- data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +26 -14
- data/lib/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +43 -43
- data/lib/frameworks/sproutcore/frameworks/foundation/debug/test-image.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/delegates/inline_text_field.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +63 -41
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +60 -61
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/control.js +72 -72
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +142 -142
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gesturable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +10 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +36 -29
- data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/protocols/swap_transition_protocol.js +150 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +54 -29
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +23 -18
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +12 -11
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +21 -20
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-128.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-256.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-32.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-48.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-512.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-64.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +5 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/app_cache.js +412 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +11 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +21 -21
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +8 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/selection_support.js +33 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/delegates/inline_text_field/inline_text_field.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_display.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +5 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +49 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +29 -21
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +3 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/validatable/ui.js +8 -10
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/app_cache_test.js +81 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/image_queue.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +0 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +40 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/transition_test.js +143 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +5 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +187 -84
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +6 -41
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +51 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +11 -16
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_bounce_transition.js +80 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_smooth_transition.js +39 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_spring_transition.js +77 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/bounce_transition.js +211 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/fade_transition.js +57 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/pop_transition.js +82 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/scale_transition.js +54 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/slide_transition.js +140 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/spring_transition.js +203 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_dissolve_transition.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_fade_color_transition.js +81 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_move_in_transition.js +104 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_push_transition.js +181 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_reveal_transition.js +90 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +483 -95
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +65 -65
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +111 -100
- data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +30 -222
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +38 -24
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +74 -62
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-1.8.3-patched.js +9485 -0
- data/lib/frameworks/sproutcore/frameworks/media/media_capabilities.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/media/render_delegates/media_slider.js +20 -20
- data/lib/frameworks/sproutcore/frameworks/media/resources/video.css +18 -17
- data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +19 -19
- data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +10 -11
- data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +7 -8
- data/lib/frameworks/sproutcore/frameworks/media/views/video.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/qunit/test/test.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +32 -21
- data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +72 -53
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +164 -156
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +20 -20
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +145 -140
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/comparable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +393 -370
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1045 -999
- data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +41 -36
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +10 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +11 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +275 -205
- data/lib/frameworks/sproutcore/frameworks/runtime/system/function.js +27 -27
- data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +229 -193
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +186 -188
- data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +138 -65
- data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +11 -10
- data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +8 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +4 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +112 -23
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +71 -18
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +97 -57
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +22 -22
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/infinite.js +184 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/observer_set.js +63 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +73 -36
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +100 -25
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/debug/sequence_matcher.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/statechart/system/history_state.js +32 -32
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +449 -422
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +19 -19
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +612 -562
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +115 -62
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +145 -64
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/respond_to_event.js +17 -1
- data/lib/frameworks/sproutcore/frameworks/table/views/table_head.js +30 -30
- data/lib/frameworks/sproutcore/frameworks/table/views/table_row.js +34 -34
- data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/bind.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/collection.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/view.js +3 -5
- data/lib/frameworks/sproutcore/frameworks/template_view/tests/panes/template.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/core.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/template_view/views/bindable_span.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/template_view/views/template.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/template_view/views/template_collection.js +15 -21
- data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +35 -35
- data/lib/frameworks/sproutcore/scripts/run_sc_server_master.sh +34 -0
- data/lib/frameworks/sproutcore/tests/phantomjs_runner.phantomjs +606 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/PanelPane.opacity +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/Pointers.opacity +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/active_button@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/normal_button@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_active_button@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_button@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/select.css +3 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +18 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.css +34 -14
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +5 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +7 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +5 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +6 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/toolbar/toolbar.css +7 -5
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +7 -7
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +37 -37
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +12 -12
- data/lib/sproutcore/helpers/static_helper.rb +35 -27
- data/sproutcore.gemspec +1 -0
- metadata +529 -451
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-logo.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/button_views.js +0 -55
- data/lib/frameworks/sproutcore/apps/showcase/views/container_views.js +0 -29
- data/lib/frameworks/sproutcore/apps/showcase/views/grid_views.js +0 -28
- data/lib/frameworks/sproutcore/apps/showcase/views/image_button_views.js +0 -22
- data/lib/frameworks/sproutcore/apps/showcase/views/image_views.js +0 -51
- data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +0 -26
- data/lib/frameworks/sproutcore/apps/tests/states/ready.js +0 -56
- data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +0 -41
- data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +0 -48
- data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +0 -41
- data/lib/frameworks/sproutcore/apps/tests/states/ready_loading.js +0 -44
- data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +0 -31
- data/lib/frameworks/sproutcore/apps/tests/states/start.js +0 -39
- data/lib/frameworks/sproutcore/apps/welcome/tests/controllers/targets.js +0 -15
- data/lib/frameworks/sproutcore/frameworks/animation/Buildfile +0 -3
- data/lib/frameworks/sproutcore/frameworks/animation/LICENSE +0 -25
- data/lib/frameworks/sproutcore/frameworks/animation/README.md +0 -79
- data/lib/frameworks/sproutcore/frameworks/animation/core.js +0 -1208
- data/lib/frameworks/sproutcore/frameworks/animation/tests/core.js +0 -152
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/parentViewDidChange.js +0 -67
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/prepareContext.js +0 -203
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayerLocation.js +0 -213
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +0 -163
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +0 -97
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +0 -312
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +0 -961
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split_divider.js +0 -40
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +0 -27
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-logo.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +0 -394
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +0 -133
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +0 -18
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +0 -8981
- data/lib/frameworks/sproutcore/frameworks/jquery/tests/set_class.js +0 -40
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.js +0 -0
@@ -24,34 +24,38 @@
|
|
24
24
|
// })
|
25
25
|
// })
|
26
26
|
//
|
27
|
-
SC._ChainObserver = function(property, root) {
|
28
|
-
this.property = property
|
29
|
-
this.root = root || this
|
30
|
-
}
|
27
|
+
SC._ChainObserver = function (property, root) {
|
28
|
+
this.property = property;
|
29
|
+
this.root = root || this;
|
30
|
+
};
|
31
31
|
|
32
|
-
|
33
|
-
|
32
|
+
/** @private
|
33
|
+
This is the primary entry point. Configures the chain.
|
34
34
|
|
35
|
+
@param {String} path The property path for the chain. Ex. 'propA.propB.propC.@each.propD'
|
36
|
+
*/
|
37
|
+
SC._ChainObserver.createChain = function (rootObject, path, target, method, context) {
|
35
38
|
// First we create the chain.
|
36
|
-
var parts = path.split('.'),
|
37
|
-
root = new SC._ChainObserver(parts[0]),
|
39
|
+
var parts = path.split('.'), // ex. ['propA', 'propB', '@each', 'propC']
|
40
|
+
root = new SC._ChainObserver(parts[0]), // ex. _ChainObserver({ property: 'propA' })
|
38
41
|
tail = root;
|
39
42
|
|
40
|
-
for(var i=1,
|
41
|
-
tail = tail.next = new SC._ChainObserver(parts[i], root)
|
43
|
+
for (var i = 1, len = parts.length; i < len; i++) {
|
44
|
+
tail = tail.next = new SC._ChainObserver(parts[i], root);
|
42
45
|
}
|
43
46
|
|
44
|
-
var tails = root.tails = [tail];
|
47
|
+
var tails = root.tails = [tail]; // ex. [_ChainObserver({ property: 'propC' })]
|
45
48
|
|
46
49
|
// Now root has the first observer and tail has the last one.
|
47
50
|
// Feed the rootObject into the front to setup the chain...
|
48
51
|
// do this BEFORE we set the target/method so they will not be triggered.
|
49
52
|
root.objectDidChange(rootObject);
|
50
53
|
|
51
|
-
tails.forEach(function(tail) {
|
52
|
-
// Finally, set the target/method on the tail so that future changes will
|
53
|
-
|
54
|
-
tail.
|
54
|
+
tails.forEach(function (tail) {
|
55
|
+
// Finally, set the target/method on the tail so that future changes will trigger.
|
56
|
+
tail.target = target;
|
57
|
+
tail.method = method;
|
58
|
+
tail.context = context;
|
55
59
|
});
|
56
60
|
|
57
61
|
// no need to hold onto references to the tails; if the underlying
|
@@ -59,7 +63,7 @@ SC._ChainObserver.createChain = function(rootObject, path, target, method, conte
|
|
59
63
|
root.tails = null;
|
60
64
|
|
61
65
|
// and return the root to save
|
62
|
-
return root
|
66
|
+
return root;
|
63
67
|
};
|
64
68
|
|
65
69
|
SC._ChainObserver.prototype = {
|
@@ -84,12 +88,12 @@ SC._ChainObserver.prototype = {
|
|
84
88
|
method: null,
|
85
89
|
|
86
90
|
// an accessor method that traverses the list and finds the tail
|
87
|
-
tail: function() {
|
88
|
-
if(this._tail) { return this._tail; }
|
91
|
+
tail: function () {
|
92
|
+
if (this._tail) { return this._tail; }
|
89
93
|
|
90
94
|
var tail = this;
|
91
95
|
|
92
|
-
while(tail.next) {
|
96
|
+
while (tail.next) {
|
93
97
|
tail = tail.next;
|
94
98
|
}
|
95
99
|
|
@@ -99,7 +103,7 @@ SC._ChainObserver.prototype = {
|
|
99
103
|
|
100
104
|
// invoked when the source object changes. removes observer on old
|
101
105
|
// object, sets up new observer, if needed.
|
102
|
-
objectDidChange: function(newObject) {
|
106
|
+
objectDidChange: function (newObject) {
|
103
107
|
if (newObject === this.object) return; // nothing to do.
|
104
108
|
|
105
109
|
// if an old object, remove observer on it.
|
@@ -112,7 +116,7 @@ SC._ChainObserver.prototype = {
|
|
112
116
|
}
|
113
117
|
|
114
118
|
// if a new object, add observer on it...
|
115
|
-
this.object = newObject
|
119
|
+
this.object = newObject;
|
116
120
|
|
117
121
|
// when [].propName is used, we will want to set up observers on each item
|
118
122
|
// added to the Enumerable, and remove them when the item is removed from
|
@@ -131,56 +135,57 @@ SC._ChainObserver.prototype = {
|
|
131
135
|
}
|
132
136
|
|
133
137
|
// now, notify myself that my property value has probably changed.
|
134
|
-
this.propertyDidChange()
|
138
|
+
this.propertyDidChange();
|
135
139
|
}
|
136
140
|
},
|
137
141
|
|
138
142
|
// the observer method invoked when the observed property changes.
|
139
|
-
propertyDidChange: function() {
|
143
|
+
propertyDidChange: function () {
|
140
144
|
// get the new value
|
141
|
-
var object = this.object
|
142
|
-
var property = this.property
|
143
|
-
var value = (object && object.get) ? object.get(property) : null
|
145
|
+
var object = this.object;
|
146
|
+
var property = this.property;
|
147
|
+
var value = (object && object.get) ? object.get(property) : null;
|
144
148
|
|
145
149
|
// if we have a next object in the chain, notify it that its object
|
146
150
|
// did change...
|
147
|
-
if (this.next) { this.next.objectDidChange(value)
|
151
|
+
if (this.next) { this.next.objectDidChange(value); }
|
148
152
|
|
149
153
|
// if we have a target/method, call it.
|
150
154
|
var target = this.target,
|
151
155
|
method = this.method,
|
152
|
-
context = this.context
|
156
|
+
context = this.context;
|
153
157
|
|
154
158
|
if (target && method) {
|
155
|
-
var rev = object ? object.propertyRevision : null
|
159
|
+
var rev = object ? object.propertyRevision : null;
|
156
160
|
if (context) {
|
157
161
|
method.call(target, object, property, value, context, rev);
|
158
162
|
} else {
|
159
|
-
method.call(target, object, property, value, rev)
|
163
|
+
method.call(target, object, property, value, rev);
|
160
164
|
}
|
161
165
|
}
|
162
166
|
},
|
163
167
|
|
164
168
|
// teardown the chain...
|
165
|
-
destroyChain: function() {
|
169
|
+
destroyChain: function () {
|
166
170
|
|
167
171
|
// remove observer
|
168
|
-
var obj = this.object
|
172
|
+
var obj = this.object;
|
169
173
|
if (obj) {
|
170
174
|
if (this.property === '@each' && this.next && obj._removeContentObserver) {
|
171
175
|
obj._removeContentObserver(this);
|
172
176
|
}
|
177
|
+
|
173
178
|
if (obj.removeObserver) {
|
174
|
-
obj.removeObserver(this.property, this, this.propertyDidChange)
|
179
|
+
obj.removeObserver(this.property, this, this.propertyDidChange);
|
175
180
|
}
|
176
181
|
}
|
177
182
|
|
178
183
|
// destroy next item in chain
|
179
|
-
if (this.next) this.next.destroyChain()
|
184
|
+
if (this.next) this.next.destroyChain();
|
180
185
|
|
181
186
|
// and clear left overs...
|
182
187
|
this.next = this.target = this.method = this.object = this.context = null;
|
183
|
-
return null
|
188
|
+
return null;
|
184
189
|
}
|
185
190
|
|
186
|
-
}
|
191
|
+
};
|
@@ -68,8 +68,14 @@ SC.Observers = {
|
|
68
68
|
|
69
69
|
tuple = SC.tupleForPropertyPath(propertyPath, pathRoot) ;
|
70
70
|
if (tuple) {
|
71
|
-
tuple[0].removeObserver(tuple[1], target, method)
|
71
|
+
tuple[0].removeObserver(tuple[1], target, method);
|
72
72
|
}
|
73
|
+
//@if(debug)
|
74
|
+
// Add some developer support indicating that the observer was not removed.
|
75
|
+
else {
|
76
|
+
SC.warn("Developer Warning: Attempted to remove observer for propertyPath %@ with root %@ and failed. This may be because an object that the path refers to is no longer available.".fmt(propertyPath, pathRoot));
|
77
|
+
}
|
78
|
+
//@endif
|
73
79
|
|
74
80
|
// tests show that the fastest way is to create a new array. On Safari,
|
75
81
|
// it is fastest to set to null then loop over again to collapse, but for all other browsers
|
@@ -112,14 +118,14 @@ SC.Observers = {
|
|
112
118
|
// flush any observers that we tried to setup but didn't have a path yet
|
113
119
|
var oldQueue = this.queue, i,
|
114
120
|
queueLen = oldQueue.length;
|
115
|
-
|
121
|
+
|
116
122
|
if (oldQueue && queueLen > 0) {
|
117
123
|
var newQueue = (this.queue = []) ;
|
118
124
|
|
119
125
|
for (i=0; i<queueLen; i++ ) {
|
120
126
|
var item = oldQueue[i];
|
121
127
|
if ( !item ) continue;
|
122
|
-
|
128
|
+
|
123
129
|
var tuple = SC.tupleForPropertyPath( item[0], item[3] );
|
124
130
|
// check if object is observable (yet) before adding an observer
|
125
131
|
if( tuple && tuple[0].addObserver ) {
|
@@ -129,7 +135,7 @@ SC.Observers = {
|
|
129
135
|
}
|
130
136
|
}
|
131
137
|
}
|
132
|
-
|
138
|
+
|
133
139
|
// if this object needsRangeObserver then see if any pending range
|
134
140
|
// observers need it.
|
135
141
|
if ( object._kvo_needsRangeObserver ) {
|
@@ -33,11 +33,13 @@ SC.ObserverSet = {
|
|
33
33
|
indexes = targets[targetGuid], // get the set of methods
|
34
34
|
index, member;
|
35
35
|
|
36
|
-
if ( !indexes ) indexes = targets[targetGuid] = {};
|
36
|
+
if ( !indexes ) indexes = targets[targetGuid] = { _size: 0 };
|
37
37
|
|
38
38
|
index = indexes[methodGuid];
|
39
39
|
if (index === undefined) {
|
40
40
|
indexes[methodGuid] = members.length;
|
41
|
+
// Increase the size of the indexes for this target so that it can be cleaned up.
|
42
|
+
indexes._size++;
|
41
43
|
member = [target, method, context];
|
42
44
|
|
43
45
|
//@if(debug)
|
@@ -95,9 +97,17 @@ SC.ObserverSet = {
|
|
95
97
|
this._members[SC.guidFor(entry[0])][SC.guidFor(entry[1])] = index;
|
96
98
|
}
|
97
99
|
|
100
|
+
// Throw away the last member (it has been moved or is the member we are removing).
|
98
101
|
members.pop();
|
102
|
+
|
103
|
+
// Remove the method tracked for the target.
|
99
104
|
delete this._members[targetGuid][methodGuid];
|
100
105
|
|
106
|
+
// If there are no more methods tracked on the target, remove the target.
|
107
|
+
if (--this._members[targetGuid]._size === 0) {
|
108
|
+
delete this._members[targetGuid];
|
109
|
+
}
|
110
|
+
|
101
111
|
return true;
|
102
112
|
},
|
103
113
|
|
@@ -35,7 +35,7 @@ SC._PropertyChain = SC.Object.extend(
|
|
35
35
|
/**
|
36
36
|
The object represented by this node in the chain.
|
37
37
|
|
38
|
-
@
|
38
|
+
@type Object
|
39
39
|
*/
|
40
40
|
object: null,
|
41
41
|
|
@@ -43,7 +43,7 @@ SC._PropertyChain = SC.Object.extend(
|
|
43
43
|
The key on the previous object in the chain that contains the object
|
44
44
|
represented by this node in the chain.
|
45
45
|
|
46
|
-
@
|
46
|
+
@type String
|
47
47
|
*/
|
48
48
|
property: null,
|
49
49
|
|
@@ -52,14 +52,14 @@ SC._PropertyChain = SC.Object.extend(
|
|
52
52
|
object which contains the +toInvalidate+ property that will be invalidated
|
53
53
|
if +property+ changes.
|
54
54
|
|
55
|
-
@
|
55
|
+
@type Object
|
56
56
|
*/
|
57
57
|
target: null,
|
58
58
|
|
59
59
|
/**
|
60
60
|
The property of +target+ to invalidate when +property+ changes.
|
61
61
|
|
62
|
-
@
|
62
|
+
@type String
|
63
63
|
*/
|
64
64
|
toInvalidate: null,
|
65
65
|
|
@@ -67,7 +67,7 @@ SC._PropertyChain = SC.Object.extend(
|
|
67
67
|
The property key on +object+ that contains the object represented by the
|
68
68
|
next node in the chain.
|
69
69
|
|
70
|
-
@
|
70
|
+
@type String
|
71
71
|
*/
|
72
72
|
nextProperty: null,
|
73
73
|
|
@@ -112,8 +112,8 @@ SC._PropertyChain = SC.Object.extend(
|
|
112
112
|
},
|
113
113
|
|
114
114
|
/**
|
115
|
-
Removes this segment of the chain from the object it represents. This is
|
116
|
-
usually called when the object represented by the previous segment in the
|
115
|
+
Removes this segment of the chain from the object it represents. This is
|
116
|
+
usually called when the object represented by the previous segment in the
|
117
117
|
chain changes.
|
118
118
|
*/
|
119
119
|
deactivate: function() {
|
@@ -8,51 +8,53 @@
|
|
8
8
|
sc_require('ext/function');
|
9
9
|
sc_require('system/object');
|
10
10
|
|
11
|
+
//@if(debug)
|
11
12
|
/**
|
12
13
|
Debug parameter you can turn on. This will log all bindings that fire to
|
13
14
|
the console. This should be disabled in production code. Note that you
|
14
15
|
can also enable this from the console or temporarily.
|
15
16
|
|
16
|
-
@
|
17
|
+
@type Boolean
|
17
18
|
*/
|
18
|
-
SC.LOG_BINDINGS = NO
|
19
|
+
SC.LOG_BINDINGS = NO;
|
19
20
|
|
20
21
|
/**
|
21
22
|
Performance parameter. This will benchmark the time spent firing each
|
22
23
|
binding.
|
23
24
|
|
24
|
-
@
|
25
|
+
@type Boolean
|
25
26
|
*/
|
26
|
-
SC.BENCHMARK_BINDING_NOTIFICATIONS = NO
|
27
|
+
SC.BENCHMARK_BINDING_NOTIFICATIONS = NO;
|
27
28
|
|
28
29
|
/**
|
29
30
|
Performance parameter. This will benchmark the time spend configuring each
|
30
31
|
binding.
|
31
32
|
|
32
|
-
@
|
33
|
+
@type Boolean
|
33
34
|
*/
|
34
35
|
SC.BENCHMARK_BINDING_SETUP = NO;
|
36
|
+
//@endif
|
35
37
|
|
36
38
|
/**
|
37
39
|
Default placeholder for multiple values in bindings.
|
38
40
|
|
39
|
-
@
|
41
|
+
@type String
|
40
42
|
*/
|
41
|
-
SC.MULTIPLE_PLACEHOLDER = '@@MULT@@'
|
43
|
+
SC.MULTIPLE_PLACEHOLDER = '@@MULT@@';
|
42
44
|
|
43
45
|
/**
|
44
46
|
Default placeholder for null values in bindings.
|
45
47
|
|
46
|
-
@
|
48
|
+
@type String
|
47
49
|
*/
|
48
|
-
SC.NULL_PLACEHOLDER = '@@NULL@@'
|
50
|
+
SC.NULL_PLACEHOLDER = '@@NULL@@';
|
49
51
|
|
50
52
|
/**
|
51
53
|
Default placeholder for empty values in bindings.
|
52
54
|
|
53
|
-
@
|
55
|
+
@type String
|
54
56
|
*/
|
55
|
-
SC.EMPTY_PLACEHOLDER = '@@EMPTY@@'
|
57
|
+
SC.EMPTY_PLACEHOLDER = '@@EMPTY@@';
|
56
58
|
|
57
59
|
|
58
60
|
/**
|
@@ -89,7 +91,7 @@ SC.EMPTY_PLACEHOLDER = '@@EMPTY@@' ;
|
|
89
91
|
|
90
92
|
You can also chain helper methods to build custom bindings like so:
|
91
93
|
|
92
|
-
valueBinding: SC.Binding.single("MyApp.someController.title").notEmpty("(EMPTY)")
|
94
|
+
valueBinding: SC.Binding.single("MyApp.someController.title").notEmpty(null,"(EMPTY)")
|
93
95
|
|
94
96
|
This will force the value of MyApp.someController.title to be a single value
|
95
97
|
and then check to see if the value is "empty" (null, undefined, empty array,
|
@@ -130,7 +132,7 @@ SC.EMPTY_PLACEHOLDER = '@@EMPTY@@' ;
|
|
130
132
|
not allow Integers less than ten. Note that it checks the value of the
|
131
133
|
bindings and allows all other values to pass:
|
132
134
|
|
133
|
-
valueBinding: SC.Binding.transform(function(value, binding) {
|
135
|
+
valueBinding: SC.Binding.transform(function (value, binding) {
|
134
136
|
return ((SC.typeOf(value) === SC.T_NUMBER) && (value < 10)) ? 10 : value;
|
135
137
|
}).from("MyApp.someController.value")
|
136
138
|
|
@@ -140,11 +142,11 @@ SC.EMPTY_PLACEHOLDER = '@@EMPTY@@' ;
|
|
140
142
|
below adds a new helper called notLessThan() which will limit the value to
|
141
143
|
be not less than the passed minimum:
|
142
144
|
|
143
|
-
SC.Binding.notLessThan = function(minValue) {
|
144
|
-
return this.transform(function(value, binding) {
|
145
|
-
return ((SC.typeOf(value) === SC.T_NUMBER) && (value < minValue)) ? minValue : value
|
146
|
-
})
|
147
|
-
}
|
145
|
+
SC.Binding.notLessThan = function (minValue) {
|
146
|
+
return this.transform(function (value, binding) {
|
147
|
+
return ((SC.typeOf(value) === SC.T_NUMBER) && (value < minValue)) ? minValue : value;
|
148
|
+
});
|
149
|
+
};
|
148
150
|
|
149
151
|
You could specify this in your core.js file, for example. Then anywhere in
|
150
152
|
your application you can use it to define bindings like so:
|
@@ -207,14 +209,14 @@ SC.EMPTY_PLACEHOLDER = '@@EMPTY@@' ;
|
|
207
209
|
examples above, during init, SproutCore objects will effectively call
|
208
210
|
something like this on your binding:
|
209
211
|
|
210
|
-
binding = this.valueBinding.beget().to("value", this)
|
212
|
+
binding = this.valueBinding.beget().to("value", this);
|
211
213
|
|
212
214
|
This creates a new binding instance based on the template you provide, and
|
213
215
|
sets the to path to the "value" property of the new object. Now that the
|
214
216
|
binding is fully configured with a "from" and a "to", it simply needs to be
|
215
217
|
connected to become active. This is done through the connect() method:
|
216
218
|
|
217
|
-
binding.connect()
|
219
|
+
binding.connect();
|
218
220
|
|
219
221
|
Now that the binding is connected, it will observe both the from and to side
|
220
222
|
and relay changes.
|
@@ -230,7 +232,7 @@ SC.EMPTY_PLACEHOLDER = '@@EMPTY@@' ;
|
|
230
232
|
You could also use the bind() helper method provided by SC.Object. (This is
|
231
233
|
the same method used by SC.Object.init() to setup your bindings):
|
232
234
|
|
233
|
-
MyApp.anotherObject.bind("value", "MyApp.someController.value")
|
235
|
+
MyApp.anotherObject.bind("value", "MyApp.someController.value");
|
234
236
|
|
235
237
|
Both of these code fragments have the same effect as doing the most friendly
|
236
238
|
form of binding creation like so:
|
@@ -241,7 +243,7 @@ SC.EMPTY_PLACEHOLDER = '@@EMPTY@@' ;
|
|
241
243
|
|
242
244
|
// OTHER CODE FOR THIS OBJECT...
|
243
245
|
|
244
|
-
})
|
246
|
+
});
|
245
247
|
|
246
248
|
SproutCore's built in binding creation method make it easy to automatically
|
247
249
|
create bindings for you. You should always use the highest-level APIs
|
@@ -262,21 +264,21 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
262
264
|
@param {String} [fromPath]
|
263
265
|
@returns {SC.Binding} new binding instance
|
264
266
|
*/
|
265
|
-
beget: function(fromPath) {
|
266
|
-
var ret = SC.beget(this)
|
267
|
+
beget: function (fromPath) {
|
268
|
+
var ret = SC.beget(this);
|
267
269
|
ret.parentBinding = this;
|
268
|
-
if (fromPath !== undefined) ret = ret.from(fromPath)
|
269
|
-
return ret
|
270
|
+
if (fromPath !== undefined) ret = ret.from(fromPath);
|
271
|
+
return ret;
|
270
272
|
},
|
271
273
|
|
272
274
|
/**
|
273
275
|
Returns a builder function for compatibility.
|
274
276
|
*/
|
275
|
-
builder: function() {
|
277
|
+
builder: function () {
|
276
278
|
var binding = this,
|
277
|
-
ret = function(fromProperty) { return binding.beget().from(fromProperty); };
|
278
|
-
ret.beget = function() { return binding.beget(); }
|
279
|
-
return ret
|
279
|
+
ret = function (fromProperty) { return binding.beget().from(fromProperty); };
|
280
|
+
ret.beget = function () { return binding.beget(); };
|
281
|
+
return ret;
|
280
282
|
},
|
281
283
|
|
282
284
|
/**
|
@@ -294,19 +296,19 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
294
296
|
@param {Object} [root] root object to use when resolving the path.
|
295
297
|
@returns {SC.Binding} this
|
296
298
|
*/
|
297
|
-
from: function(propertyPath, root) {
|
299
|
+
from: function (propertyPath, root) {
|
298
300
|
|
299
301
|
// if the propertyPath is null/undefined, return this. This allows the
|
300
302
|
// method to be called from other methods when the fromPath might be
|
301
303
|
// optional. (cf single(), multiple())
|
302
|
-
if (!propertyPath) return this
|
304
|
+
if (!propertyPath) return this;
|
303
305
|
|
304
306
|
// beget if needed.
|
305
|
-
var binding = (this === SC.Binding) ? this.beget() : this
|
306
|
-
binding._fromPropertyPath = propertyPath
|
307
|
-
binding._fromRoot = root
|
308
|
-
binding._fromTuple = null
|
309
|
-
return binding
|
307
|
+
var binding = (this === SC.Binding) ? this.beget() : this;
|
308
|
+
binding._fromPropertyPath = propertyPath;
|
309
|
+
binding._fromRoot = root;
|
310
|
+
binding._fromTuple = null;
|
311
|
+
return binding;
|
310
312
|
},
|
311
313
|
|
312
314
|
/**
|
@@ -318,13 +320,13 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
318
320
|
@param {Object} [root] root object to use when resolving the path.
|
319
321
|
@returns {SC.Binding} this
|
320
322
|
*/
|
321
|
-
to: function(propertyPath, root) {
|
323
|
+
to: function (propertyPath, root) {
|
322
324
|
// beget if needed.
|
323
|
-
var binding = (this === SC.Binding) ? this.beget() : this
|
324
|
-
binding._toPropertyPath = propertyPath
|
325
|
-
binding._toRoot = root
|
326
|
-
binding._toTuple = null
|
327
|
-
return binding
|
325
|
+
var binding = (this === SC.Binding) ? this.beget() : this;
|
326
|
+
binding._toPropertyPath = propertyPath;
|
327
|
+
binding._toRoot = root;
|
328
|
+
binding._toTuple = null; // clear out any existing one.
|
329
|
+
return binding;
|
328
330
|
},
|
329
331
|
|
330
332
|
/**
|
@@ -334,14 +336,14 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
334
336
|
|
335
337
|
@returns {SC.Binding} this
|
336
338
|
*/
|
337
|
-
connect: function() {
|
339
|
+
connect: function () {
|
338
340
|
// If the binding is already connected, do nothing.
|
339
|
-
if (this.isConnected) return this
|
340
|
-
this.isConnected = YES
|
341
|
-
this._connectionPending = YES
|
342
|
-
this._syncOnConnect = YES
|
341
|
+
if (this.isConnected) return this;
|
342
|
+
this.isConnected = YES;
|
343
|
+
this._connectionPending = YES; // its connected but not really...
|
344
|
+
this._syncOnConnect = YES;
|
343
345
|
|
344
|
-
SC.Binding._connectQueue.add(this)
|
346
|
+
SC.Binding._connectQueue.add(this);
|
345
347
|
|
346
348
|
if (!SC.RunLoop.isRunLoopInProgress()) {
|
347
349
|
this._scheduleSync();
|
@@ -355,14 +357,16 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
355
357
|
to give you time to setup your entire object graph before the bindings
|
356
358
|
try to activate.
|
357
359
|
*/
|
358
|
-
_connect: function() {
|
360
|
+
_connect: function () {
|
359
361
|
if (!this._connectionPending) return; //nothing to do
|
360
|
-
this._connectionPending = NO
|
362
|
+
this._connectionPending = NO;
|
361
363
|
|
362
|
-
var path, root
|
363
|
-
bench = SC.BENCHMARK_BINDING_SETUP;
|
364
|
+
var path, root;
|
364
365
|
|
366
|
+
//@if(debug)
|
367
|
+
var bench = SC.BENCHMARK_BINDING_SETUP;
|
365
368
|
if (bench) SC.Benchmark.start("SC.Binding.connect()");
|
369
|
+
//@endif
|
366
370
|
|
367
371
|
// try to connect the from side.
|
368
372
|
// as a special behavior, if the from property path begins with either a
|
@@ -371,7 +375,8 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
371
375
|
//
|
372
376
|
// contentBinding: "*owner.value"
|
373
377
|
//
|
374
|
-
path = this._fromPropertyPath;
|
378
|
+
path = this._fromPropertyPath;
|
379
|
+
root = this._fromRoot;
|
375
380
|
|
376
381
|
if (typeof path === "string") {
|
377
382
|
|
@@ -379,13 +384,13 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
379
384
|
// toRoot the default root.
|
380
385
|
if (path.indexOf('.') === 0) {
|
381
386
|
path = path.slice(1);
|
382
|
-
if (!root) root = this._toRoot
|
387
|
+
if (!root) root = this._toRoot;
|
383
388
|
|
384
389
|
// if the first character is a '*', then setup a tuple since this is a
|
385
390
|
// chained path.
|
386
391
|
} else if (path.indexOf('*') === 0) {
|
387
|
-
path = [this._fromRoot || this._toRoot, path.slice(1)]
|
388
|
-
root = null
|
392
|
+
path = [this._fromRoot || this._toRoot, path.slice(1)];
|
393
|
+
root = null;
|
389
394
|
}
|
390
395
|
}
|
391
396
|
this._fromObserverData = [path, this, this.fromPropertyDidChange, root];
|
@@ -393,19 +398,26 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
393
398
|
|
394
399
|
// try to connect the to side
|
395
400
|
if (!this._oneWay) {
|
396
|
-
path = this._toPropertyPath;
|
401
|
+
path = this._toPropertyPath;
|
402
|
+
root = this._toRoot;
|
397
403
|
this._toObserverData = [path, this, this.toPropertyDidChange, root];
|
398
404
|
SC.Observers.addObserver.apply(SC.Observers, this._toObserverData);
|
399
405
|
}
|
400
406
|
|
407
|
+
//@if(debug)
|
401
408
|
if (bench) SC.Benchmark.end("SC.Binding.connect()");
|
409
|
+
//@endif
|
402
410
|
|
403
411
|
// now try to sync if needed
|
404
412
|
if (this._syncOnConnect) {
|
405
|
-
this._syncOnConnect = NO
|
413
|
+
this._syncOnConnect = NO;
|
414
|
+
//@if(debug)
|
406
415
|
if (bench) SC.Benchmark.start("SC.Binding.connect().sync");
|
416
|
+
//@endif
|
407
417
|
this.sync();
|
418
|
+
//@if(debug)
|
408
419
|
if (bench) SC.Benchmark.end("SC.Binding.connect().sync");
|
420
|
+
//@endif
|
409
421
|
}
|
410
422
|
},
|
411
423
|
|
@@ -415,23 +427,58 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
415
427
|
|
416
428
|
@returns {SC.Binding} this
|
417
429
|
*/
|
418
|
-
disconnect: function() {
|
430
|
+
disconnect: function () {
|
419
431
|
if (!this.isConnected) return this; // nothing to do.
|
420
432
|
|
421
433
|
// if connection is still pending, just cancel
|
422
434
|
if (this._connectionPending) {
|
423
|
-
this._connectionPending = NO
|
435
|
+
this._connectionPending = NO;
|
424
436
|
|
437
|
+
SC.Binding._connectQueue.remove(this);
|
425
438
|
// connection is completed, disconnect.
|
426
439
|
} else {
|
427
440
|
SC.Observers.removeObserver.apply(SC.Observers, this._fromObserverData);
|
428
441
|
if (!this._oneWay) {
|
429
442
|
SC.Observers.removeObserver.apply(SC.Observers, this._toObserverData);
|
430
443
|
}
|
444
|
+
|
445
|
+
// Remove ourselves from the change queue (if we are in it).
|
446
|
+
SC.Binding._changeQueue.remove(this);
|
431
447
|
}
|
432
448
|
|
433
|
-
this.isConnected = NO
|
434
|
-
return this
|
449
|
+
this.isConnected = NO;
|
450
|
+
return this;
|
451
|
+
},
|
452
|
+
|
453
|
+
/**
|
454
|
+
Indicates when the binding has been destroyed.
|
455
|
+
|
456
|
+
@type Boolean
|
457
|
+
@default NO
|
458
|
+
*/
|
459
|
+
isDestroyed: NO,
|
460
|
+
|
461
|
+
/**
|
462
|
+
Disconnects the binding and removes all properties and external references. Called by
|
463
|
+
either binding target object when destroyed.
|
464
|
+
|
465
|
+
@private
|
466
|
+
*/
|
467
|
+
destroy: function () {
|
468
|
+
// If we're already destroyed, there's nothing to do.
|
469
|
+
if (this.isDestroyed) return;
|
470
|
+
|
471
|
+
// Mark it destroyed.
|
472
|
+
this.isDestroyed = YES;
|
473
|
+
|
474
|
+
// Disconnect the binding.
|
475
|
+
this.disconnect();
|
476
|
+
|
477
|
+
// Aggressively null out internal properties.
|
478
|
+
this._bindingSource = null;
|
479
|
+
this._toRoot = this._toTarget = null;
|
480
|
+
this._fromRoot = this._fromTarget = null;
|
481
|
+
this._toObserverData = this._fromObserverData = null;
|
435
482
|
},
|
436
483
|
|
437
484
|
/**
|
@@ -441,16 +488,15 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
441
488
|
@param {Object} target The object that contains the key
|
442
489
|
@param {String} key The name of the property which changed
|
443
490
|
*/
|
444
|
-
fromPropertyDidChange: function(target, key) {
|
491
|
+
fromPropertyDidChange: function (target, key) {
|
445
492
|
var v = target ? target.get(key) : null;
|
446
493
|
|
447
494
|
// if the new value is different from the current binding value, then
|
448
495
|
// schedule to register an update.
|
449
496
|
if (v !== this._bindingValue || key === '[]') {
|
450
497
|
|
451
|
-
this._setBindingValue(target, key)
|
452
|
-
this
|
453
|
-
SC.Binding._changeQueue.add(this) ; // save for later.
|
498
|
+
this._setBindingValue(target, key);
|
499
|
+
SC.Binding._changeQueue.add(this); // save for later.
|
454
500
|
|
455
501
|
this._scheduleSync();
|
456
502
|
}
|
@@ -469,33 +515,32 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
469
515
|
@param {Object} target The object that contains the key
|
470
516
|
@param {String} key The name of the property which changed
|
471
517
|
*/
|
472
|
-
toPropertyDidChange: function(target, key) {
|
518
|
+
toPropertyDidChange: function (target, key) {
|
473
519
|
if (this._oneWay) return; // nothing to do
|
474
520
|
|
475
|
-
var v = target.get(key)
|
521
|
+
var v = target.get(key);
|
476
522
|
|
477
523
|
// if the new value is different from the current binding value, then
|
478
524
|
// schedule to register an update.
|
479
525
|
if (v !== this._transformedBindingValue) {
|
480
|
-
this._setBindingValue(target, key)
|
481
|
-
this
|
482
|
-
SC.Binding._changeQueue.add(this) ; // save for later.
|
526
|
+
this._setBindingValue(target, key);
|
527
|
+
SC.Binding._changeQueue.add(this); // save for later.
|
483
528
|
|
484
529
|
this._scheduleSync();
|
485
530
|
}
|
486
531
|
},
|
487
532
|
|
488
|
-
_scheduleSync: function() {
|
533
|
+
_scheduleSync: function () {
|
489
534
|
if (SC.RunLoop.isRunLoopInProgress() || SC.Binding._syncScheduled) { return; }
|
490
535
|
SC.Binding._syncScheduled = YES;
|
491
|
-
setTimeout(function() { SC.run(); SC.Binding._syncScheduled = NO; }, 1);
|
536
|
+
setTimeout(function () { SC.run(); SC.Binding._syncScheduled = NO; }, 1);
|
492
537
|
},
|
493
538
|
|
494
539
|
/** @private
|
495
540
|
Saves the source location for the binding value. This will be used later
|
496
541
|
to actually update the binding value.
|
497
542
|
*/
|
498
|
-
_setBindingValue: function(source, key) {
|
543
|
+
_setBindingValue: function (source, key) {
|
499
544
|
this._bindingSource = source;
|
500
545
|
this._bindingKey = key;
|
501
546
|
},
|
@@ -504,7 +549,7 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
504
549
|
Updates the binding value from the current binding source if needed. This
|
505
550
|
should be called just before using this._bindingValue.
|
506
551
|
*/
|
507
|
-
_computeBindingValue: function() {
|
552
|
+
_computeBindingValue: function () {
|
508
553
|
var source = this._bindingSource,
|
509
554
|
key = this._bindingKey,
|
510
555
|
v, idx;
|
@@ -516,15 +561,15 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
516
561
|
if (transforms) {
|
517
562
|
var len = transforms.length,
|
518
563
|
transform;
|
519
|
-
for(idx=0;idx<len;idx++) {
|
520
|
-
transform = transforms[idx]
|
521
|
-
v = transform(v, this)
|
564
|
+
for (idx = 0; idx < len; idx++) {
|
565
|
+
transform = transforms[idx];
|
566
|
+
v = transform(v, this);
|
522
567
|
}
|
523
568
|
}
|
524
569
|
|
525
570
|
// if error objects are not allowed, and the value is an error, then
|
526
571
|
// change it to null.
|
527
|
-
if (this._noError && SC.typeOf(v) === SC.T_ERROR) v = null
|
572
|
+
if (this._noError && SC.typeOf(v) === SC.T_ERROR) v = null;
|
528
573
|
|
529
574
|
this._transformedBindingValue = v;
|
530
575
|
},
|
@@ -533,90 +578,107 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
533
578
|
_alternateConnectQueue: SC.CoreSet.create(),
|
534
579
|
_changeQueue: SC.CoreSet.create(),
|
535
580
|
_alternateChangeQueue: SC.CoreSet.create(),
|
536
|
-
_changePending: NO,
|
537
581
|
|
538
582
|
/**
|
539
583
|
Call this method on SC.Binding to flush all bindings with changed pending.
|
540
584
|
|
541
585
|
@returns {Boolean} YES if changes were flushed.
|
542
586
|
*/
|
543
|
-
flushPendingChanges: function() {
|
587
|
+
flushPendingChanges: function () {
|
544
588
|
|
545
589
|
// don't allow flushing more than one at a time
|
546
590
|
if (this._isFlushing) return NO;
|
547
|
-
this._isFlushing = YES
|
591
|
+
this._isFlushing = YES;
|
548
592
|
SC.Observers.suspendPropertyObserving();
|
549
593
|
|
550
594
|
var didFlush = NO,
|
551
|
-
log = SC.LOG_BINDINGS,
|
552
595
|
// connect any bindings
|
553
|
-
queue, binding
|
554
|
-
|
555
|
-
|
556
|
-
this.
|
557
|
-
|
596
|
+
queue, binding;
|
597
|
+
|
598
|
+
while ((queue = this._connectQueue).length > 0) {
|
599
|
+
this._connectQueue = this._alternateConnectQueue;
|
600
|
+
this._alternateConnectQueue = queue;
|
601
|
+
while (binding = queue.pop()) binding._connect();
|
558
602
|
}
|
559
603
|
|
560
604
|
// loop through the changed queue...
|
561
605
|
while ((queue = this._changeQueue).length > 0) {
|
562
|
-
if
|
606
|
+
//@if(debug)
|
607
|
+
if (SC.LOG_BINDINGS) SC.Logger.log("Begin: Trigger changed bindings");
|
608
|
+
//@endif
|
563
609
|
|
564
|
-
didFlush = YES
|
610
|
+
didFlush = YES;
|
565
611
|
|
566
612
|
// first, swap the change queues. This way any binding changes that
|
567
613
|
// happen while we flush the current queue can be queued up.
|
568
|
-
this._changeQueue = this._alternateChangeQueue
|
569
|
-
this._alternateChangeQueue = queue
|
614
|
+
this._changeQueue = this._alternateChangeQueue;
|
615
|
+
this._alternateChangeQueue = queue;
|
570
616
|
|
571
617
|
// next, apply any bindings in the current queue. This may cause
|
572
618
|
// additional bindings to trigger, which will end up in the new active
|
573
619
|
// queue.
|
574
|
-
while(binding = queue.pop()) binding.applyBindingValue()
|
620
|
+
while (binding = queue.pop()) binding.applyBindingValue();
|
575
621
|
|
576
622
|
// now loop back and see if there are additional changes pending in the
|
577
623
|
// active queue. Repeat this until all bindings that need to trigger
|
578
624
|
// have triggered.
|
579
|
-
if
|
625
|
+
//@if(debug)
|
626
|
+
if (SC.LOG_BINDINGS) SC.Logger.log("End: Trigger changed bindings");
|
627
|
+
//@endif
|
580
628
|
}
|
581
629
|
|
582
630
|
// clean up
|
583
|
-
this._isFlushing = NO
|
631
|
+
this._isFlushing = NO;
|
584
632
|
SC.Observers.resumePropertyObserving();
|
585
633
|
|
586
|
-
return didFlush
|
634
|
+
return didFlush;
|
587
635
|
},
|
588
636
|
|
589
637
|
/**
|
590
638
|
This method is called at the end of the Run Loop to relay the changed
|
591
639
|
binding value from one side to the other.
|
592
640
|
*/
|
593
|
-
applyBindingValue: function() {
|
594
|
-
this._changePending = NO ;
|
595
|
-
|
641
|
+
applyBindingValue: function () {
|
596
642
|
// compute the binding targets if needed.
|
597
|
-
this._computeBindingTargets()
|
643
|
+
this._computeBindingTargets();
|
598
644
|
this._computeBindingValue();
|
599
645
|
|
600
646
|
var v = this._bindingValue,
|
601
|
-
tv = this._transformedBindingValue
|
602
|
-
|
603
|
-
|
647
|
+
tv = this._transformedBindingValue;
|
648
|
+
|
649
|
+
//@if(debug)
|
650
|
+
var bench = SC.BENCHMARK_BINDING_NOTIFICATIONS,
|
651
|
+
log = SC.LOG_BINDINGS;
|
652
|
+
//@endif
|
604
653
|
|
605
654
|
// the from property value will always be the binding value, update if
|
606
655
|
// needed.
|
607
656
|
if (!this._oneWay && this._fromTarget) {
|
608
|
-
if
|
609
|
-
if (
|
610
|
-
|
611
|
-
|
657
|
+
//@if(debug)
|
658
|
+
if (log) SC.Logger.log("%@: %@ -> %@".fmt(this, v, tv));
|
659
|
+
if (bench) SC.Benchmark.start(this.toString() + "->");
|
660
|
+
//@endif
|
661
|
+
|
662
|
+
this._fromTarget.setPathIfChanged(this._fromPropertyKey, v);
|
663
|
+
|
664
|
+
//@if(debug)
|
665
|
+
if (bench) SC.Benchmark.end(this.toString() + "->");
|
666
|
+
//@endif
|
612
667
|
}
|
613
668
|
|
614
669
|
// update the to value with the transformed value if needed.
|
615
670
|
if (this._toTarget) {
|
616
|
-
|
617
|
-
if
|
618
|
-
|
619
|
-
if (bench) SC.Benchmark.start(this.toString() + "<-")
|
671
|
+
|
672
|
+
//@if(debug)
|
673
|
+
if (log) SC.Logger.log("%@: %@ <- %@".fmt(this, v, tv));
|
674
|
+
if (bench) SC.Benchmark.start(this.toString() + "<-");
|
675
|
+
//@endif
|
676
|
+
|
677
|
+
this._toTarget.setPathIfChanged(this._toPropertyKey, tv);
|
678
|
+
|
679
|
+
//@if(debug)
|
680
|
+
if (bench) SC.Benchmark.start(this.toString() + "<-");
|
681
|
+
//@endif
|
620
682
|
}
|
621
683
|
},
|
622
684
|
|
@@ -629,21 +691,21 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
629
691
|
This method is useful when you are dynamically connecting bindings to a
|
630
692
|
network of objects that may have already been initialized.
|
631
693
|
*/
|
632
|
-
sync: function() {
|
694
|
+
sync: function () {
|
633
695
|
|
634
696
|
// do nothing if not connected
|
635
697
|
if (!this.isConnected) return this;
|
636
698
|
|
637
699
|
// connection is pending, just note that we should sync also
|
638
700
|
if (this._connectionPending) {
|
639
|
-
this._syncOnConnect = YES
|
701
|
+
this._syncOnConnect = YES;
|
640
702
|
|
641
703
|
// we are connected, go ahead and sync
|
642
704
|
} else {
|
643
|
-
this._computeBindingTargets()
|
705
|
+
this._computeBindingTargets();
|
644
706
|
var target = this._fromTarget,
|
645
|
-
key = this._fromPropertyKey
|
646
|
-
if (!target || !key) return this
|
707
|
+
key = this._fromPropertyKey;
|
708
|
+
if (!target || !key) return this; // nothing to do
|
647
709
|
|
648
710
|
// Let's check for whether target is a valid observable with getPath.
|
649
711
|
// Common cases might have it be a Window or a DOM object.
|
@@ -655,57 +717,59 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
655
717
|
}
|
656
718
|
|
657
719
|
// get the new value
|
658
|
-
var v = target.getPath(key)
|
720
|
+
var v = target.getPath(key);
|
659
721
|
|
660
722
|
// if the new value is different from the current binding value, then
|
661
723
|
// schedule to register an update.
|
662
724
|
if (v !== this._bindingValue || key === '[]') {
|
663
|
-
this._setBindingValue(target, key)
|
664
|
-
this
|
665
|
-
SC.Binding._changeQueue.add(this) ; // save for later.
|
725
|
+
this._setBindingValue(target, key);
|
726
|
+
SC.Binding._changeQueue.add(this); // save for later.
|
666
727
|
}
|
667
728
|
}
|
668
729
|
|
669
|
-
return this
|
730
|
+
return this;
|
670
731
|
},
|
671
732
|
|
672
733
|
// set if you call sync() when the binding connection is still pending.
|
673
734
|
_syncOnConnect: NO,
|
674
735
|
|
675
|
-
_computeBindingTargets: function() {
|
676
|
-
|
677
|
-
|
678
|
-
var path, root, tuple ;
|
736
|
+
_computeBindingTargets: function () {
|
737
|
+
var path, root, tuple;
|
679
738
|
|
739
|
+
if (!this._fromTarget) {
|
680
740
|
// if the fromPropertyPath begins with a . or * then we may use the
|
681
741
|
// toRoot as the root object. Similar code exists in connect() so if
|
682
742
|
// you make a change to one be sure to update the other.
|
683
|
-
path = this._fromPropertyPath;
|
743
|
+
path = this._fromPropertyPath;
|
744
|
+
root = this._fromRoot;
|
684
745
|
if (typeof path === "string") {
|
685
746
|
|
686
747
|
// static path beginning with the toRoot
|
687
748
|
if (path.indexOf('.') === 0) {
|
688
|
-
path = path.slice(1)
|
749
|
+
path = path.slice(1); // remove the .
|
689
750
|
if (!root) root = this._toRoot; // use the toRoot optionally
|
690
751
|
|
691
752
|
// chained path beginning with toRoot. Setup a tuple
|
692
753
|
} else if (path.indexOf('*') === 0) {
|
693
754
|
path = [root || this._toRoot, path.slice(1)];
|
694
|
-
root = null
|
755
|
+
root = null;
|
695
756
|
}
|
696
757
|
}
|
697
758
|
|
698
|
-
tuple = SC.tupleForPropertyPath(path, root)
|
759
|
+
tuple = SC.tupleForPropertyPath(path, root);
|
699
760
|
if (tuple) {
|
700
|
-
this._fromTarget = tuple[0];
|
761
|
+
this._fromTarget = tuple[0];
|
762
|
+
this._fromPropertyKey = tuple[1];
|
701
763
|
}
|
702
764
|
}
|
703
765
|
|
704
766
|
if (!this._toTarget) {
|
705
|
-
path = this._toPropertyPath;
|
706
|
-
|
767
|
+
path = this._toPropertyPath;
|
768
|
+
root = this._toRoot;
|
769
|
+
tuple = SC.tupleForPropertyPath(path, root);
|
707
770
|
if (tuple) {
|
708
|
-
this._toTarget = tuple[0];
|
771
|
+
this._toTarget = tuple[0];
|
772
|
+
this._toPropertyKey = tuple[1];
|
709
773
|
}
|
710
774
|
}
|
711
775
|
},
|
@@ -720,18 +784,20 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
720
784
|
@param {Boolean} [aFlag] Pass NO to set the binding back to two-way
|
721
785
|
@returns {SC.Binding} this
|
722
786
|
*/
|
723
|
-
oneWay: function(fromPath, aFlag) {
|
787
|
+
oneWay: function (fromPath, aFlag) {
|
724
788
|
|
725
789
|
// If fromPath is a bool but aFlag is undefined, swap.
|
726
790
|
if ((aFlag === undefined) && (SC.typeOf(fromPath) === SC.T_BOOL)) {
|
727
|
-
aFlag = fromPath;
|
791
|
+
aFlag = fromPath;
|
792
|
+
fromPath = null;
|
728
793
|
}
|
729
794
|
|
730
795
|
// beget if needed.
|
731
|
-
var binding = this.from(fromPath)
|
732
|
-
if (binding === SC.Binding) binding = binding.beget()
|
733
|
-
binding._oneWay = (aFlag === undefined) ? YES : aFlag
|
734
|
-
|
796
|
+
var binding = this.from(fromPath);
|
797
|
+
if (binding === SC.Binding) binding = binding.beget();
|
798
|
+
binding._oneWay = (aFlag === undefined) ? YES : aFlag;
|
799
|
+
|
800
|
+
return binding;
|
735
801
|
},
|
736
802
|
|
737
803
|
/**
|
@@ -739,7 +805,7 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
739
805
|
|
740
806
|
The function you pass must have the following signature:
|
741
807
|
|
742
|
-
function(value) {}
|
808
|
+
function (value) {};
|
743
809
|
|
744
810
|
It must return either the transformed value or an error object.
|
745
811
|
|
@@ -750,20 +816,20 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
750
816
|
@param {Function} transformFunc the transform function.
|
751
817
|
@returns {SC.Binding} this
|
752
818
|
*/
|
753
|
-
transform: function(transformFunc) {
|
754
|
-
var binding = (this === SC.Binding) ? this.beget() : this
|
755
|
-
var t = binding._transforms
|
819
|
+
transform: function (transformFunc) {
|
820
|
+
var binding = (this === SC.Binding) ? this.beget() : this;
|
821
|
+
var t = binding._transforms;
|
756
822
|
|
757
823
|
// clone the transform array if this comes from the parent
|
758
824
|
if (t && (t === binding.parentBinding._transform)) {
|
759
|
-
t = binding._transforms = t.slice()
|
825
|
+
t = binding._transforms = t.slice();
|
760
826
|
}
|
761
827
|
|
762
828
|
// create the transform array if needed.
|
763
|
-
if (!t) t = binding._transforms = []
|
829
|
+
if (!t) t = binding._transforms = [];
|
764
830
|
|
765
831
|
// add the transform function
|
766
|
-
t.push(transformFunc)
|
832
|
+
t.push(transformFunc);
|
767
833
|
return binding;
|
768
834
|
},
|
769
835
|
|
@@ -774,9 +840,10 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
774
840
|
|
775
841
|
@returns {SC.Binding} this
|
776
842
|
*/
|
777
|
-
resetTransforms: function() {
|
778
|
-
var binding = (this === SC.Binding) ? this.beget() : this
|
779
|
-
binding._transforms = null
|
843
|
+
resetTransforms: function () {
|
844
|
+
var binding = (this === SC.Binding) ? this.beget() : this;
|
845
|
+
binding._transforms = null;
|
846
|
+
return binding;
|
780
847
|
},
|
781
848
|
|
782
849
|
/**
|
@@ -791,17 +858,19 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
791
858
|
@param {Boolean} [aFlag] Pass NO to allow error objects again.
|
792
859
|
@returns {SC.Binding} this
|
793
860
|
*/
|
794
|
-
noError: function(fromPath, aFlag) {
|
861
|
+
noError: function (fromPath, aFlag) {
|
795
862
|
// If fromPath is a bool but aFlag is undefined, swap.
|
796
863
|
if ((aFlag === undefined) && (SC.typeOf(fromPath) === SC.T_BOOL)) {
|
797
|
-
aFlag = fromPath;
|
864
|
+
aFlag = fromPath;
|
865
|
+
fromPath = null;
|
798
866
|
}
|
799
867
|
|
800
868
|
// beget if needed.
|
801
|
-
var binding = this.from(fromPath)
|
802
|
-
if (binding === SC.Binding) binding = binding.beget()
|
803
|
-
binding._noError = (aFlag === undefined) ? YES : aFlag
|
804
|
-
|
869
|
+
var binding = this.from(fromPath);
|
870
|
+
if (binding === SC.Binding) binding = binding.beget();
|
871
|
+
binding._noError = (aFlag === undefined) ? YES : aFlag;
|
872
|
+
|
873
|
+
return binding;
|
805
874
|
},
|
806
875
|
|
807
876
|
/**
|
@@ -823,17 +892,17 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
823
892
|
@param {Object} [placeholder] placeholder value.
|
824
893
|
@returns {SC.Binding} this
|
825
894
|
*/
|
826
|
-
single: function(fromPath, placeholder) {
|
895
|
+
single: function (fromPath, placeholder) {
|
827
896
|
if (placeholder === undefined) {
|
828
|
-
placeholder = SC.MULTIPLE_PLACEHOLDER
|
897
|
+
placeholder = SC.MULTIPLE_PLACEHOLDER;
|
829
898
|
}
|
830
|
-
return this.from(fromPath).transform(function(value, isForward) {
|
899
|
+
return this.from(fromPath).transform(function (value, isForward) {
|
831
900
|
if (value && value.isEnumerable) {
|
832
901
|
var len = value.get('length');
|
833
|
-
value = (len>1) ? placeholder : (len<=0) ? null : value.firstObject();
|
902
|
+
value = (len > 1) ? placeholder : (len <= 0) ? null : value.firstObject();
|
834
903
|
}
|
835
|
-
return value
|
836
|
-
})
|
904
|
+
return value;
|
905
|
+
});
|
837
906
|
},
|
838
907
|
|
839
908
|
/**
|
@@ -844,14 +913,14 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
844
913
|
@param {Object} [placeholder]
|
845
914
|
@returns {SC.Binding} this
|
846
915
|
*/
|
847
|
-
notEmpty: function(fromPath, placeholder) {
|
848
|
-
if (placeholder === undefined) placeholder = SC.EMPTY_PLACEHOLDER
|
849
|
-
return this.from(fromPath).transform(function(value, isForward) {
|
850
|
-
if (SC.none(value) || (value === '') || (SC.isArray(value) && (value.get ? value.get('length') : value.length)=== 0)) {
|
851
|
-
value = placeholder
|
916
|
+
notEmpty: function (fromPath, placeholder) {
|
917
|
+
if (placeholder === undefined) placeholder = SC.EMPTY_PLACEHOLDER;
|
918
|
+
return this.from(fromPath).transform(function (value, isForward) {
|
919
|
+
if (SC.none(value) || (value === '') || (SC.isArray(value) && (value.get ? value.get('length') : value.length) === 0)) {
|
920
|
+
value = placeholder;
|
852
921
|
}
|
853
|
-
return value
|
854
|
-
})
|
922
|
+
return value;
|
923
|
+
});
|
855
924
|
},
|
856
925
|
|
857
926
|
/**
|
@@ -862,12 +931,12 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
862
931
|
@param {Object} [placeholder]
|
863
932
|
@returns {SC.Binding} this
|
864
933
|
*/
|
865
|
-
notNull: function(fromPath, placeholder) {
|
866
|
-
if (placeholder === undefined) placeholder = SC.EMPTY_PLACEHOLDER
|
867
|
-
return this.from(fromPath).transform(function(value, isForward) {
|
868
|
-
if (SC.none(value)) value = placeholder
|
869
|
-
return value
|
870
|
-
})
|
934
|
+
notNull: function (fromPath, placeholder) {
|
935
|
+
if (placeholder === undefined) placeholder = SC.EMPTY_PLACEHOLDER;
|
936
|
+
return this.from(fromPath).transform(function (value, isForward) {
|
937
|
+
if (SC.none(value)) value = placeholder;
|
938
|
+
return value;
|
939
|
+
});
|
871
940
|
},
|
872
941
|
|
873
942
|
/**
|
@@ -877,11 +946,12 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
877
946
|
@param {String} [fromPath]
|
878
947
|
@returns {SC.Binding} this
|
879
948
|
*/
|
880
|
-
multiple: function(fromPath) {
|
881
|
-
return this.from(fromPath).transform(function(value) {
|
882
|
-
|
883
|
-
|
884
|
-
|
949
|
+
multiple: function (fromPath) {
|
950
|
+
return this.from(fromPath).transform(function (value) {
|
951
|
+
/*jshint eqnull:true*/
|
952
|
+
if (!SC.isArray(value)) value = (value == null) ? [] : [value];
|
953
|
+
return value;
|
954
|
+
});
|
885
955
|
},
|
886
956
|
|
887
957
|
/**
|
@@ -892,12 +962,12 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
892
962
|
@param {String} [fromPath]
|
893
963
|
@returns {SC.Binding} this
|
894
964
|
*/
|
895
|
-
bool: function(fromPath) {
|
896
|
-
return this.from(fromPath).transform(function(v) {
|
897
|
-
var t = SC.typeOf(v)
|
898
|
-
if (t === SC.T_ERROR) return v
|
899
|
-
return (t == SC.T_ARRAY) ? (v.length > 0) : (v === '') ? NO : !!v
|
900
|
-
})
|
965
|
+
bool: function (fromPath) {
|
966
|
+
return this.from(fromPath).transform(function (v) {
|
967
|
+
var t = SC.typeOf(v);
|
968
|
+
if (t === SC.T_ERROR) return v;
|
969
|
+
return (t == SC.T_ARRAY) ? (v.length > 0) : (v === '') ? NO : !!v;
|
970
|
+
});
|
901
971
|
},
|
902
972
|
|
903
973
|
/**
|
@@ -917,14 +987,14 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
917
987
|
@param {String} pathA The first part of the conditional
|
918
988
|
@param {String} pathB The second part of the conditional
|
919
989
|
*/
|
920
|
-
and: function(pathA, pathB) {
|
990
|
+
and: function (pathA, pathB) {
|
921
991
|
|
922
992
|
// create an object to do the logical computation
|
923
993
|
var gate = SC.Object.create({
|
924
994
|
valueABinding: pathA,
|
925
995
|
valueBBinding: pathB,
|
926
996
|
|
927
|
-
and: function() {
|
997
|
+
and: function () {
|
928
998
|
return (this.get('valueA') && this.get('valueB'));
|
929
999
|
}.property('valueA', 'valueB').cacheable()
|
930
1000
|
});
|
@@ -943,14 +1013,14 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
943
1013
|
@param {String} pathA The first part of the conditional
|
944
1014
|
@param {String} pathB The second part of the conditional
|
945
1015
|
*/
|
946
|
-
or: function(pathA, pathB) {
|
1016
|
+
or: function (pathA, pathB) {
|
947
1017
|
|
948
1018
|
// create an object to the logical computation
|
949
1019
|
var gate = SC.Object.create({
|
950
1020
|
valueABinding: pathA,
|
951
1021
|
valueBBinding: pathB,
|
952
1022
|
|
953
|
-
or: function() {
|
1023
|
+
or: function () {
|
954
1024
|
return (this.get('valueA') || this.get('valueB'));
|
955
1025
|
}.property('valueA', 'valueB').cacheable()
|
956
1026
|
});
|
@@ -965,12 +1035,12 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
965
1035
|
@param {String} [fromPath]
|
966
1036
|
@returns {SC.Binding} this
|
967
1037
|
*/
|
968
|
-
not: function(fromPath) {
|
969
|
-
return this.from(fromPath).transform(function(v) {
|
970
|
-
var t = SC.typeOf(v)
|
971
|
-
if (t === SC.T_ERROR) return v
|
972
|
-
return !((t == SC.T_ARRAY) ? (v.length > 0) : (v === '') ? NO : !!v)
|
973
|
-
})
|
1038
|
+
not: function (fromPath) {
|
1039
|
+
return this.from(fromPath).transform(function (v) {
|
1040
|
+
var t = SC.typeOf(v);
|
1041
|
+
if (t === SC.T_ERROR) return v;
|
1042
|
+
return !((t == SC.T_ARRAY) ? (v.length > 0) : (v === '') ? NO : !!v);
|
1043
|
+
});
|
974
1044
|
},
|
975
1045
|
|
976
1046
|
/**
|
@@ -979,27 +1049,27 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
979
1049
|
@param {String} [fromPath]
|
980
1050
|
@returns {SC.Binding} this
|
981
1051
|
*/
|
982
|
-
isNull: function(fromPath) {
|
983
|
-
return this.from(fromPath).transform(function(v) {
|
984
|
-
var t = SC.typeOf(v)
|
985
|
-
return (t === SC.T_ERROR) ? v : SC.none(v)
|
1052
|
+
isNull: function (fromPath) {
|
1053
|
+
return this.from(fromPath).transform(function (v) {
|
1054
|
+
var t = SC.typeOf(v);
|
1055
|
+
return (t === SC.T_ERROR) ? v : SC.none(v);
|
986
1056
|
});
|
987
1057
|
},
|
988
1058
|
|
989
|
-
toString: function() {
|
990
|
-
var from = this._fromRoot ? "<%@>:%@".fmt(this._fromRoot,this._fromPropertyPath) : this._fromPropertyPath;
|
1059
|
+
toString: function () {
|
1060
|
+
var from = this._fromRoot ? "<%@>:%@".fmt(this._fromRoot, this._fromPropertyPath) : this._fromPropertyPath;
|
991
1061
|
|
992
|
-
var to = this._toRoot ? "<%@>:%@".fmt(this._toRoot,this._toPropertyPath) : this._toPropertyPath;
|
1062
|
+
var to = this._toRoot ? "<%@>:%@".fmt(this._toRoot, this._toPropertyPath) : this._toPropertyPath;
|
993
1063
|
|
994
1064
|
var oneWay = this._oneWay ? '[oneWay]' : '';
|
995
1065
|
return "SC.Binding%@(%@ -> %@)%@".fmt(SC.guidFor(this), from, to, oneWay);
|
996
1066
|
}
|
997
|
-
}
|
1067
|
+
};
|
998
1068
|
|
999
1069
|
/**
|
1000
1070
|
Shorthand method to define a binding. This is the same as calling:
|
1001
1071
|
|
1002
1072
|
SC.binding(path) = SC.Binding.from(path)
|
1003
1073
|
*/
|
1004
|
-
SC.binding = function(path, root) { return SC.Binding.from(path,root); }
|
1074
|
+
SC.binding = function (path, root) { return SC.Binding.from(path, root); };
|
1005
1075
|
|