sproutcore 1.7.1.beta → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +44 -0
- data/README.rdoc +20 -20
- data/VERSION.yml +3 -3
- data/lib/Buildfile +1 -1
- data/lib/buildtasks/build.rake +5 -0
- data/lib/buildtasks/manifest.rake +19 -1
- data/lib/frameworks/sproutcore/Buildfile +19 -17
- data/lib/frameworks/sproutcore/CHANGELOG.md +163 -29
- data/lib/frameworks/sproutcore/README.md +29 -8
- data/lib/frameworks/sproutcore/apps/statechart_routing/Buildfile +12 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/login_controller.js +11 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/main_controller.js +7 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/statechart_controller.js +17 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +25 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/main.js +15 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/_theme.css +18 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/bar_page.js +14 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/foo_page.js +14 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/loading.rhtml +9 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +61 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/main_page.js +46 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/statechart.js +76 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/theme.js +27 -0
- data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
- data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +14 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +15 -15
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/animation/core.js +8 -5
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +302 -70
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +19 -14
- data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +471 -149
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +42 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +63 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +37 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +28 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +10 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +66 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +58 -57
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js.orig +445 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +51 -31
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +53 -69
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +98 -72
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +37 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +7 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +23 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/browser.js +66 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/event.js +22 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +17 -16
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +15 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +50 -30
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +46 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +1 -43
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +8 -34
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +6 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +46 -19
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -9
- data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +2 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +294 -302
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js.orig +1531 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +14 -11
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/many_array.js +63 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +50 -10
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +114 -67
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +54 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +29 -9
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +37 -45
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +127 -127
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +42 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -7
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +1 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +19 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +30 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +24 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +121 -28
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +15 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +39 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +14 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -51
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +11 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +0 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +9 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +107 -81
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +68 -60
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +57 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +21 -19
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +32 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +77 -132
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +5 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +16 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +52 -52
- data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +147 -147
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +11 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +22 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +13 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +462 -441
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +48 -62
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +150 -32
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +104 -45
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +42 -20
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +148 -154
- data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +8 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/files.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/view_configs.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/mixins/drop_down.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/web.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +21 -21
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +59 -53
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -10
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +17 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +38 -14
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +5 -13
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +19 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +20 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +35 -12
- data/lib/frameworks/sproutcore/frameworks/formatters/README +6 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/english.lproj/strings.js +174 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +351 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/tests/date_formatter.js +517 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +345 -138
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +176 -42
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +137 -105
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +16 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +47 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +28 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +0 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/bootstrap.rhtml +34 -19
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +0 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +1 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +8 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +179 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +34 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +26 -12
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +12 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_metric_optimization.js +202 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +77 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +163 -149
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +16 -43
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +67 -54
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -38
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +285 -242
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +13 -13
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +19 -22
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +231 -186
- data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +145 -143
- data/lib/frameworks/sproutcore/frameworks/media/views/video.js +156 -154
- data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js.orig +540 -0
- data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -8
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +98 -32
- data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +7 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +14 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +98 -13
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +8 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +23 -6
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +69 -18
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +57 -31
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +189 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +82 -22
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +125 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +37 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +75 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart_delegate.js +113 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +312 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +18 -22
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +508 -131
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +265 -44
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +11 -3
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/private/state_path_matcher.js +116 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/add_substate.js +108 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/with_concurrent.js +179 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/without_concurrent.js +74 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_state.js +141 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_substate.js +340 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/route_triggered.js +161 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/try_to_handle_event.js +288 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +5 -33
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +213 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +212 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/{state/namespacing.js → statechart/methods/get_state.js} +3 -41
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/{invoke_state_method.js → methods/invoke_state_method.js} +1 -1
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/{event_handling/advanced → statechart}/respond_to_event.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/system/state_route_handler_context/methods/retry.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/table/core.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/controls/button.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars.js +29 -5
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/bind.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/collection.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/localization.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{handlebars → template_view}/handlebars.js +493 -357
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/checkbox_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/text_field_support.js +13 -2
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/panes/template.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/controls/button.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/checkbox_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/text_field_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/panes/template.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/collection.js +39 -14
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/handlebars.js +57 -6
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/bindable_span.js +21 -6
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template_collection.js +55 -26
- data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +122 -122
- data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +1 -1
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +0 -1
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +4 -4
- data/lib/frameworks/sproutcore/lib/index.rhtml +55 -32
- data/lib/frameworks/sproutcore/license.js +2 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/body.css +5 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +21 -13
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +17 -10
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +4 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +20 -12
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +16 -8
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/jumbo/button.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/small/button.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +5 -3
- data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/toolbar.css +1 -1
- data/lib/gen/app/USAGE +17 -4
- data/lib/gen/language/Buildfile +4 -4
- data/lib/gen/language/USAGE +4 -4
- data/lib/gen/page/templates/pages/@target_name@/Buildfile +7 -7
- data/lib/gen/{html_app → statechart_app}/Buildfile +0 -0
- data/lib/gen/{html_app → statechart_app}/README +0 -0
- data/lib/gen/statechart_app/USAGE +21 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +9 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +24 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +26 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/_theme.css +18 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +21 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +8 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/states/ready_state.js +12 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/theme.js +24 -0
- data/lib/sproutcore/builders.rb +1 -0
- data/lib/sproutcore/builders/base.rb +19 -1
- data/lib/sproutcore/builders/chance_file.rb +6 -1
- data/lib/sproutcore/builders/handlebars.rb +1 -9
- data/lib/sproutcore/builders/javascript.rb +1 -10
- data/lib/sproutcore/builders/json.rb +25 -0
- data/lib/sproutcore/builders/less.rb +1 -1
- data/lib/sproutcore/builders/sass.rb +1 -1
- data/lib/sproutcore/builders/stylesheet.rb +1 -9
- data/lib/sproutcore/helpers/html5_manifest.rb +1 -1
- data/lib/sproutcore/helpers/static_helper.rb +42 -0
- data/lib/sproutcore/rack/proxy.rb +21 -3
- data/lib/sproutcore/rack/service.rb +3 -2
- data/lib/sproutcore/tools.rb +18 -25
- data/lib/sproutcore/tools/gen.rb +10 -3
- data/lib/sproutcore/tools/init.rb +11 -10
- data/spec/buildtasks/manifest/prepare_build_tasks/json_spec.rb +62 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -1
- data/spec/fixtures/builder_tests/apps/json_test/sc_static.json +2 -0
- data/spec/lib/builders/json_spec.rb +53 -0
- data/sproutcore.gemspec +2 -2
- data/vendor/chance/lib/chance/parser.rb +1 -1
- metadata +222 -177
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
- data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +0 -69
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
- data/lib/frameworks/sproutcore/frameworks/mini/license.js +0 -30
- data/lib/gen/html_app/USAGE +0 -15
- data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +0 -11
- data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -6
- data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +0 -1
- data/lib/gen/html_project/Buildfile +0 -45
- data/lib/gen/html_project/INIT +0 -3
- data/lib/gen/html_project/README +0 -1
- data/lib/gen/html_project/USAGE +0 -2
- data/lib/gen/html_project/templates/@filename@/Buildfile +0 -5
- data/lib/gen/html_project/templates/@filename@/README +0 -4
|
@@ -95,8 +95,8 @@ test('Route tree', function() {
|
|
|
95
95
|
s = a.wildcardRoutes['foo'];
|
|
96
96
|
ok(s, 'There should be a wildcardRoutes tree for a');
|
|
97
97
|
|
|
98
|
-
equals(r.routeForParts(['a'], {}), null, 'routeForParts should return null for non
|
|
99
|
-
equals(r.routeForParts(['a', 'b'], {}), null, 'routeForParts should return null for non
|
|
98
|
+
equals(r.routeForParts(['a'], {}), null, 'routeForParts should return null for non existent routes');
|
|
99
|
+
equals(r.routeForParts(['a', 'b'], {}), null, 'routeForParts should return null for non existent routes');
|
|
100
100
|
equals(r.routeForParts(abc, {}), c, 'routeForParts should return the correct route for a/b/c');
|
|
101
101
|
|
|
102
102
|
equals(r.routeForParts(abd, {}), d, 'routeForParts should return the correct route for a/b/d');
|
|
@@ -39,7 +39,7 @@ window.SproutCore = window.SproutCore || SC ;
|
|
|
39
39
|
// rest of the methods go into the mixin defined below.
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
|
-
@version 1.
|
|
42
|
+
@version 1.8.0
|
|
43
43
|
@namespace
|
|
44
44
|
|
|
45
45
|
All SproutCore methods and functions are defined
|
|
@@ -59,7 +59,7 @@ window.SproutCore = window.SproutCore || SC ;
|
|
|
59
59
|
*/
|
|
60
60
|
SC = window.SC; // This is dumb but necessary for jsdoc to get it right
|
|
61
61
|
|
|
62
|
-
SC.VERSION = '1.
|
|
62
|
+
SC.VERSION = '1.8.0';
|
|
63
63
|
|
|
64
64
|
/**
|
|
65
65
|
@private
|
|
@@ -99,6 +99,9 @@ SC._baseMixin = function (override) {
|
|
|
99
99
|
if (target===copy) continue ; // prevent never-ending loop
|
|
100
100
|
if (copy !== undefined && ( override || (target[key] === undefined) )) target[key] = copy ;
|
|
101
101
|
}
|
|
102
|
+
// Manually copy toString() because some JS engines do not enumerate it
|
|
103
|
+
// (such as IE8)
|
|
104
|
+
if (options.hasOwnProperty('toString')) target.toString = options.toString;
|
|
102
105
|
}
|
|
103
106
|
|
|
104
107
|
return target;
|
|
@@ -166,6 +169,8 @@ SC.mixin(/** @scope window.SC.prototype */ {
|
|
|
166
169
|
T_BOOL: 'boolean',
|
|
167
170
|
T_ARRAY: 'array',
|
|
168
171
|
T_STRING: 'string',
|
|
172
|
+
T_DATE: 'date',
|
|
173
|
+
T_REGEXP: 'regexp',
|
|
169
174
|
|
|
170
175
|
// ........................................
|
|
171
176
|
// TYPING & ARRAY MESSAGING
|
|
@@ -176,7 +181,7 @@ SC.mixin(/** @scope window.SC.prototype */ {
|
|
|
176
181
|
|
|
177
182
|
Use this instead of the built-in typeOf() to get the type of an item.
|
|
178
183
|
It will return the same result across all browsers and includes a bit
|
|
179
|
-
more detail.
|
|
184
|
+
more detail.
|
|
180
185
|
|
|
181
186
|
@param {Object} item the item to check
|
|
182
187
|
@returns {String} One of the following, depending on the type of the item<br>
|
|
@@ -186,6 +191,8 @@ SC.mixin(/** @scope window.SC.prototype */ {
|
|
|
186
191
|
SC.T_NULL: Null value,<br>
|
|
187
192
|
SC.T_UNDEFINED: Undefined value,<br>
|
|
188
193
|
SC.T_FUNCTION: A function,<br>
|
|
194
|
+
SC.T_DATE: Date primitive,<br>
|
|
195
|
+
SC.T_REGEXP: RegExp primitive,<br>
|
|
189
196
|
SC.T_ARRAY: An instance of Array,<br>
|
|
190
197
|
SC.T_CLASS: A SproutCore class (created using SC.Object.extend()),<br>
|
|
191
198
|
SC.T_OBJECT: A SproutCore object instance,<br>
|
|
@@ -201,7 +208,7 @@ SC.mixin(/** @scope window.SC.prototype */ {
|
|
|
201
208
|
if (nativeType === "function") {
|
|
202
209
|
return item.isClass ? SC.T_CLASS : SC.T_FUNCTION;
|
|
203
210
|
} else if (nativeType === "object") {
|
|
204
|
-
|
|
211
|
+
|
|
205
212
|
// Note: typeOf() may be called before SC.Error has had a chance to load
|
|
206
213
|
// so this code checks for the presence of SC.Error first just to make
|
|
207
214
|
// sure. No error instance can exist before the class loads anyway so
|
|
@@ -562,7 +569,7 @@ SC.mixin(/** @scope window.SC.prototype */ {
|
|
|
562
569
|
/**
|
|
563
570
|
Creates a new object with the passed object as its prototype.
|
|
564
571
|
|
|
565
|
-
This method uses JavaScript's native
|
|
572
|
+
This method uses JavaScript's native inheritance method to create a new
|
|
566
573
|
object.
|
|
567
574
|
|
|
568
575
|
You cannot use beget() to create new SC.Object-based objects, but you
|
|
@@ -656,9 +663,9 @@ SC.mixin(/** @scope window.SC.prototype */ {
|
|
|
656
663
|
/**
|
|
657
664
|
Convenience method to inspect an object. This method will attempt to
|
|
658
665
|
convert the object into a useful string description.
|
|
659
|
-
|
|
660
|
-
@param {Object} obj The object you want to
|
|
661
|
-
|
|
666
|
+
|
|
667
|
+
@param {Object} obj The object you want to inspect.
|
|
668
|
+
|
|
662
669
|
@returns {String} A description of the object
|
|
663
670
|
*/
|
|
664
671
|
inspect: function(obj) {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
Adds a new module of unit tests to verify that the passed object implements
|
|
12
12
|
the SC.Array interface. To generate, call the ArrayTests array with a
|
|
13
13
|
test descriptor. Any properties you pass will be applied to the ArrayTests
|
|
14
|
-
|
|
14
|
+
descendant created by the create method.
|
|
15
15
|
|
|
16
16
|
You should pass at least a newObject() method, which should return a new
|
|
17
17
|
instance of the object you want to have tested. You can also implement the
|
|
@@ -145,7 +145,7 @@ SC.TestSuite = /** @scope SC.TestSuite.prototype */ {
|
|
|
145
145
|
|
|
146
146
|
/**
|
|
147
147
|
Default teardown method for use with modules. This method will call the
|
|
148
|
-
|
|
148
|
+
destroyObject() method, passing the current object property on the
|
|
149
149
|
receiver. It will also clear the object property.
|
|
150
150
|
*/
|
|
151
151
|
teardown: function() {
|
|
@@ -164,7 +164,7 @@ SC.TestSuite = /** @scope SC.TestSuite.prototype */ {
|
|
|
164
164
|
|
|
165
165
|
/**
|
|
166
166
|
Default method to destroy a generated object instance after a test has
|
|
167
|
-
completed. If you override newObject() you can also
|
|
167
|
+
completed. If you override newObject() you can also override this method
|
|
168
168
|
to cleanup the object you just created.
|
|
169
169
|
|
|
170
170
|
Default method does nothing.
|
|
@@ -184,7 +184,7 @@ SC.TestSuite = /** @scope SC.TestSuite.prototype */ {
|
|
|
184
184
|
teardown: function() { T.teardown(); }
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
-
@param {String} desc detailed
|
|
187
|
+
@param {String} desc detailed description
|
|
188
188
|
@returns {SC.TestSuite} receiver
|
|
189
189
|
*/
|
|
190
190
|
module: function(desc) {
|
|
@@ -375,7 +375,7 @@ SC.ArraySuite = SC.TestSuite.create("Verify SC.Array compliance: %@#%@", {
|
|
|
375
375
|
|
|
376
376
|
});
|
|
377
377
|
|
|
378
|
-
// Simple
|
|
378
|
+
// Simple verification of length
|
|
379
379
|
SC.ArraySuite.define(function(T) {
|
|
380
380
|
T.module("length");
|
|
381
381
|
|
|
@@ -90,5 +90,17 @@ SC.ArraySuite.define(function(T) {
|
|
|
90
90
|
|
|
91
91
|
T.validateAfter(obj, after, observer, YES);
|
|
92
92
|
});
|
|
93
|
+
|
|
94
|
+
test("[].replace(0, 0, 'X') will call notify `[]` changed only once", function() {
|
|
95
|
+
var exp = T.expected(1),
|
|
96
|
+
callCount = 0;
|
|
97
|
+
|
|
98
|
+
obj.addObserver('[]', function () {
|
|
99
|
+
callCount++;
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
obj.replace(0, 0, exp);
|
|
103
|
+
equals(callCount, 1, "expects the key '[]' to be notified only once");
|
|
104
|
+
});
|
|
93
105
|
|
|
94
106
|
});
|
|
@@ -78,7 +78,7 @@ SC.mixin(Function.prototype,
|
|
|
78
78
|
|
|
79
79
|
capitalizedName: function() {
|
|
80
80
|
return this.getPath('person.fullName').toUpper();
|
|
81
|
-
}.property('person.
|
|
81
|
+
}.property('person.fullName')
|
|
82
82
|
|
|
83
83
|
This will cause observers of +capitalizedName+ to be fired when either
|
|
84
84
|
+fullName+ _or_ +person+ changes.
|
|
@@ -156,7 +156,7 @@ SC.mixin(Function.prototype,
|
|
|
156
156
|
|
|
157
157
|
All non-computed properties are idempotent and normally you should make
|
|
158
158
|
your computed properties behave the same way. However, if you need to
|
|
159
|
-
make your property change its return value
|
|
159
|
+
make your property change its return value every time your method is
|
|
160
160
|
called, you may chain this to your property to make it volatile.
|
|
161
161
|
|
|
162
162
|
If you do not specify this option, properties are assumed to be
|
|
@@ -31,7 +31,7 @@ SC.CoreArray = /** @lends SC.Array.prototype */ {
|
|
|
31
31
|
// length: 0,
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
-
This is one of the
|
|
34
|
+
This is one of the primitives you must implement to support SC.Array. You
|
|
35
35
|
should replace amt objects started at idx with the objects in the passed
|
|
36
36
|
array.
|
|
37
37
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
/**
|
|
9
9
|
@class
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Implements some standard methods for copying an object. Add this mixin to
|
|
12
12
|
any object you create that can create a copy of itself. This mixin is
|
|
13
13
|
added automatically to the built-in array.
|
|
14
14
|
|
|
@@ -762,7 +762,7 @@ SC.Enumerable = /** @scope SC.Enumerable.prototype */{
|
|
|
762
762
|
|
|
763
763
|
} ;
|
|
764
764
|
|
|
765
|
-
// Build in a separate function to avoid
|
|
765
|
+
// Build in a separate function to avoid unintentional leaks through closures...
|
|
766
766
|
SC._buildReducerFor = function(reducerKey, reducerProperty) {
|
|
767
767
|
return function(key, value) {
|
|
768
768
|
var reducer = this[reducerKey] ;
|
|
@@ -899,7 +899,7 @@ SC.Reducers = /** @scope SC.Reducers.prototype */ {
|
|
|
899
899
|
},
|
|
900
900
|
|
|
901
901
|
/**
|
|
902
|
-
Reduces an
|
|
902
|
+
Reduces an enumerable to the max of the items in the enumerable. If
|
|
903
903
|
reducerProperty is passed, it will reduce that property. Otherwise, it will
|
|
904
904
|
reduce the item itself.
|
|
905
905
|
|
|
@@ -929,7 +929,7 @@ SC.Reducers = /** @scope SC.Reducers.prototype */ {
|
|
|
929
929
|
},
|
|
930
930
|
|
|
931
931
|
/**
|
|
932
|
-
Reduces an
|
|
932
|
+
Reduces an enumerable to the min of the items in the enumerable. If
|
|
933
933
|
reducerProperty is passed, it will reduce that property. Otherwise, it will
|
|
934
934
|
reduce the item itself.
|
|
935
935
|
|
|
@@ -949,7 +949,7 @@ SC.Reducers = /** @scope SC.Reducers.prototype */ {
|
|
|
949
949
|
},
|
|
950
950
|
|
|
951
951
|
/**
|
|
952
|
-
Reduces an
|
|
952
|
+
Reduces an enumerable to the max of the items in the enumerable. If
|
|
953
953
|
reducerProperty is passed, it will reduce that property. Otherwise, it will
|
|
954
954
|
reduce the item itself.
|
|
955
955
|
|
|
@@ -979,7 +979,7 @@ SC.Reducers = /** @scope SC.Reducers.prototype */ {
|
|
|
979
979
|
},
|
|
980
980
|
|
|
981
981
|
/**
|
|
982
|
-
Reduces an
|
|
982
|
+
Reduces an enumerable to the average of the items in the enumerable. If
|
|
983
983
|
reducerProperty is passed, it will reduce that property. Otherwise, it will
|
|
984
984
|
reduce the item itself.
|
|
985
985
|
|
|
@@ -1001,7 +1001,7 @@ SC.Reducers = /** @scope SC.Reducers.prototype */ {
|
|
|
1001
1001
|
},
|
|
1002
1002
|
|
|
1003
1003
|
/**
|
|
1004
|
-
Reduces an
|
|
1004
|
+
Reduces an enumerable to the sum of the items in the enumerable. If
|
|
1005
1005
|
reducerProperty is passed, it will reduce that property. Otherwise, it will
|
|
1006
1006
|
reduce the item itself.
|
|
1007
1007
|
|
|
@@ -1328,7 +1328,7 @@ Array.prototype.isEnumerable = YES ;
|
|
|
1328
1328
|
// The mixinIfMissing methods should be applied if they are not defined.
|
|
1329
1329
|
// If Prototype 1.6 is included, some of these methods will be defined
|
|
1330
1330
|
// already, but we want to override them anyway in this special case
|
|
1331
|
-
// because our version is faster and functionally
|
|
1331
|
+
// because our version is faster and functionally identical.
|
|
1332
1332
|
if (!Array.prototype[key] || ((typeof Prototype === 'object') && Prototype.Version.match(/^1\.6/))) {
|
|
1333
1333
|
Array.prototype[key] = mixinIfMissing[key] ;
|
|
1334
1334
|
}
|
|
@@ -19,6 +19,9 @@ sc_require('private/chain_observer');
|
|
|
19
19
|
*/
|
|
20
20
|
SC.LOG_OBSERVERS = NO ;
|
|
21
21
|
|
|
22
|
+
SC.OBSERVES_HANDLER_ADD = 0;
|
|
23
|
+
SC.OBSERVES_HANDLER_REMOVE = 1;
|
|
24
|
+
|
|
22
25
|
/**
|
|
23
26
|
@class
|
|
24
27
|
|
|
@@ -194,7 +197,7 @@ SC.Observable = /** @scope SC.Observable.prototype */{
|
|
|
194
197
|
|
|
195
198
|
Likewise, if you try to call get() on a property whose values is
|
|
196
199
|
undefined, the unknownProperty() method will be called on the object.
|
|
197
|
-
If this method
|
|
200
|
+
If this method returns any value other than undefined, it will be returned
|
|
198
201
|
instead. This allows you to implement "virtual" properties that are
|
|
199
202
|
not defined upfront.
|
|
200
203
|
|
|
@@ -238,7 +241,7 @@ SC.Observable = /** @scope SC.Observable.prototype */{
|
|
|
238
241
|
If you try to set a value on a key that is undefined in the target
|
|
239
242
|
object, then the unknownProperty() handler will be called instead. This
|
|
240
243
|
gives you an opportunity to implement complex "virtual" properties that
|
|
241
|
-
are not predefined on the
|
|
244
|
+
are not predefined on the object. If unknownProperty() returns
|
|
242
245
|
undefined, then set() will simply set the value on the object.
|
|
243
246
|
|
|
244
247
|
Property Observers
|
|
@@ -250,7 +253,7 @@ SC.Observable = /** @scope SC.Observable.prototype */{
|
|
|
250
253
|
observers (i.e. observer methods declared on the same object), will be
|
|
251
254
|
called immediately. Any "remote" observers (i.e. observer methods
|
|
252
255
|
declared on another object) will be placed in a queue and called at a
|
|
253
|
-
later time in a
|
|
256
|
+
later time in a coalesced manner.
|
|
254
257
|
|
|
255
258
|
Chaining
|
|
256
259
|
---
|
|
@@ -630,7 +633,7 @@ SC.Observable = /** @scope SC.Observable.prototype */{
|
|
|
630
633
|
|
|
631
634
|
Called by set() whenever it needs to determine which cached dependent
|
|
632
635
|
keys to clear. Recursively searches dependent keys to determine all
|
|
633
|
-
cached property
|
|
636
|
+
cached property directly or indirectly affected.
|
|
634
637
|
|
|
635
638
|
The return value is also saved for future reference
|
|
636
639
|
|
|
@@ -860,7 +863,7 @@ SC.Observable = /** @scope SC.Observable.prototype */{
|
|
|
860
863
|
|
|
861
864
|
/**
|
|
862
865
|
This method will register any observers and computed properties saved on
|
|
863
|
-
the object. Normally you do not need to call this method
|
|
866
|
+
the object. Normally you do not need to call this method yourself. It
|
|
864
867
|
is invoked automatically just before property notifications are sent and
|
|
865
868
|
from the init() method of SC.Object. You may choose to call this
|
|
866
869
|
from your own initialization method if you are using SC.Observable in
|
|
@@ -896,32 +899,7 @@ SC.Observable = /** @scope SC.Observable.prototype */{
|
|
|
896
899
|
propertyPathsLength = (propertyPaths) ? propertyPaths.length : 0 ;
|
|
897
900
|
for(ploc=0;ploc<propertyPathsLength;ploc++) {
|
|
898
901
|
path = propertyPaths[ploc] ;
|
|
899
|
-
|
|
900
|
-
// handle most common case, observing a local property
|
|
901
|
-
if (dotIndex < 0) {
|
|
902
|
-
this.addObserver(path, this, observer) ;
|
|
903
|
-
|
|
904
|
-
// next most common case, use a chained observer
|
|
905
|
-
} else if (path.indexOf('*') === 0) {
|
|
906
|
-
this.addObserver(path.slice(1), this, observer) ;
|
|
907
|
-
|
|
908
|
-
// otherwise register the observer in the observers queue. This
|
|
909
|
-
// will add the observer now or later when the named path becomes
|
|
910
|
-
// available.
|
|
911
|
-
} else {
|
|
912
|
-
root = null ;
|
|
913
|
-
|
|
914
|
-
// handle special cases for observers that look to the local root
|
|
915
|
-
if (dotIndex === 0) {
|
|
916
|
-
root = this; path = path.slice(1) ;
|
|
917
|
-
} else if (dotIndex===4 && path.slice(0,5) === 'this.') {
|
|
918
|
-
root = this; path = path.slice(5) ;
|
|
919
|
-
} else if (dotIndex<0 && path.length===4 && path === 'this') {
|
|
920
|
-
root = this; path = '';
|
|
921
|
-
}
|
|
922
|
-
|
|
923
|
-
SC.Observers.addObserver(path, this, observer, root);
|
|
924
|
-
}
|
|
902
|
+
this.addObservesHandler(observer, path);
|
|
925
903
|
}
|
|
926
904
|
}
|
|
927
905
|
}
|
|
@@ -955,6 +933,94 @@ SC.Observable = /** @scope SC.Observable.prototype */{
|
|
|
955
933
|
}
|
|
956
934
|
|
|
957
935
|
},
|
|
936
|
+
|
|
937
|
+
/**
|
|
938
|
+
Will add an observes handler to this object for a given property path.
|
|
939
|
+
|
|
940
|
+
In most cases, the path provided is relative to this object. However,
|
|
941
|
+
if the path begins with a captial character then the path is considered
|
|
942
|
+
relative to the window object.
|
|
943
|
+
|
|
944
|
+
@param {Function} observer the function on this object that will be
|
|
945
|
+
notified of changes
|
|
946
|
+
@param {String} path a property path string
|
|
947
|
+
@return {Object} returns this
|
|
948
|
+
*/
|
|
949
|
+
addObservesHandler: function(observer, path) {
|
|
950
|
+
this._configureObservesHandler(SC.OBSERVES_HANDLER_ADD, observer, path);
|
|
951
|
+
return this;
|
|
952
|
+
},
|
|
953
|
+
|
|
954
|
+
/**
|
|
955
|
+
Will remove an observes handler from this object for a given property path.
|
|
956
|
+
|
|
957
|
+
In most cases, the path provided is relative to this object. However,
|
|
958
|
+
if the path begins with a captial character then the path is considered
|
|
959
|
+
relative to the window object.
|
|
960
|
+
|
|
961
|
+
@param {Function} observer the function on this object that will be
|
|
962
|
+
notified of changes
|
|
963
|
+
@param {String} path a property path string
|
|
964
|
+
@return {Object} returns this
|
|
965
|
+
*/
|
|
966
|
+
removeObservesHandler: function(observer, path) {
|
|
967
|
+
this._configureObservesHandler(SC.OBSERVES_HANDLER_REMOVE, observer, path);
|
|
968
|
+
return this;
|
|
969
|
+
},
|
|
970
|
+
|
|
971
|
+
/** @private
|
|
972
|
+
|
|
973
|
+
Used to either add or remove an observer handler on this object
|
|
974
|
+
for a given property path.
|
|
975
|
+
|
|
976
|
+
In most cases, the path provided is relative to this object. However,
|
|
977
|
+
if the path begins with a captial character then the path is considered
|
|
978
|
+
relative to the window object.
|
|
979
|
+
|
|
980
|
+
You must supply an action that is to be performed by this method. The
|
|
981
|
+
action can either be `SC.OBSERVES_HANDLER_ADD` or `SC.OBSERVES_HANDLER_REMOVE`.
|
|
982
|
+
|
|
983
|
+
@param {Function} observer the function on this object that will be
|
|
984
|
+
notified of changes
|
|
985
|
+
@param {String} path a property path string
|
|
986
|
+
@param {String} path a dot-notation property path string
|
|
987
|
+
*/
|
|
988
|
+
_configureObservesHandler: function(action, observer, path) {
|
|
989
|
+
var dotIndex, root;
|
|
990
|
+
|
|
991
|
+
switch (action) {
|
|
992
|
+
case SC.OBSERVES_HANDLER_ADD:
|
|
993
|
+
action = "addObserver"; break;
|
|
994
|
+
case SC.OBSERVES_HANDLER_REMOVE:
|
|
995
|
+
action = "removeObserver"; break;
|
|
996
|
+
default:
|
|
997
|
+
throw "invalid action provided: " + action;
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
dotIndex = path.indexOf('.');
|
|
1001
|
+
|
|
1002
|
+
if (dotIndex < 0) {
|
|
1003
|
+
this[action](path, this, observer);
|
|
1004
|
+
} else if (path.indexOf('*') === 0) {
|
|
1005
|
+
this[action](path.slice(1), this, observer);
|
|
1006
|
+
} else {
|
|
1007
|
+
root = null;
|
|
1008
|
+
|
|
1009
|
+
if (dotIndex === 0) {
|
|
1010
|
+
root = this; path = path.slice(1);
|
|
1011
|
+
} else if (dotIndex === 4 && path.slice(0, 5) === 'this.') {
|
|
1012
|
+
root = this; path = path.slice(5);
|
|
1013
|
+
} else if (dotIndex < 0 && path.length === 4 && path === 'this') {
|
|
1014
|
+
root = this; path = '';
|
|
1015
|
+
} else if (dotIndex > 0 && path[0] === path.charAt(0).toLowerCase()) {
|
|
1016
|
+
// if the first character for the given path is lower case
|
|
1017
|
+
// then we assume the path is relative to this
|
|
1018
|
+
root = this;
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
SC.Observers[action](path, this, observer, root);
|
|
1022
|
+
}
|
|
1023
|
+
},
|
|
958
1024
|
|
|
959
1025
|
// ..........................................
|
|
960
1026
|
// NOTIFICATION
|
|
@@ -1312,7 +1378,7 @@ SC.Observable = /** @scope SC.Observable.prototype */{
|
|
|
1312
1378
|
/**
|
|
1313
1379
|
Navigates the property path, finally setting the value but only if
|
|
1314
1380
|
the value does not match the current value. This will avoid sending
|
|
1315
|
-
|
|
1381
|
+
unnecessary change notifications.
|
|
1316
1382
|
|
|
1317
1383
|
@param {String} path the property path to set
|
|
1318
1384
|
@param {Object} value the value to set
|
|
@@ -166,8 +166,13 @@ SC._ChainObserver.prototype = {
|
|
|
166
166
|
|
|
167
167
|
// remove observer
|
|
168
168
|
var obj = this.object ;
|
|
169
|
-
if (obj
|
|
170
|
-
|
|
169
|
+
if (obj) {
|
|
170
|
+
if (this.property === '@each' && this.next && obj._removeContentObserver) {
|
|
171
|
+
obj._removeContentObserver(this);
|
|
172
|
+
}
|
|
173
|
+
if (obj.removeObserver) {
|
|
174
|
+
obj.removeObserver(this.property, this, this.propertyDidChange) ;
|
|
175
|
+
}
|
|
171
176
|
}
|
|
172
177
|
|
|
173
178
|
// destroy next item in chain
|