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
|
@@ -70,8 +70,8 @@ SC._object_extend = function _object_extend(base, ext, proto) {
|
|
|
70
70
|
base._kvo_cloned = null;
|
|
71
71
|
|
|
72
72
|
// get some common vars
|
|
73
|
-
var key, idx, len, cur, cprops = base.concatenatedProperties, K = SC.K
|
|
74
|
-
|
|
73
|
+
var key, idx, len, cur, cprops = base.concatenatedProperties, K = SC.K,
|
|
74
|
+
p1,p2;
|
|
75
75
|
|
|
76
76
|
// first, save any concat props. use old or new array or concat
|
|
77
77
|
idx = (cprops) ? cprops.length : 0 ;
|
|
@@ -91,10 +91,10 @@ SC._object_extend = function _object_extend(base, ext, proto) {
|
|
|
91
91
|
// setup arrays for bindings, observers, and properties. Normally, just
|
|
92
92
|
// save the arrays from the base. If these need to be changed during
|
|
93
93
|
// processing, then they will be cloned first.
|
|
94
|
-
var bindings = base._bindings, clonedBindings = NO
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
94
|
+
var bindings = base._bindings, clonedBindings = NO,
|
|
95
|
+
observers = base._observers, clonedObservers = NO,
|
|
96
|
+
properties = base._properties, clonedProperties = NO,
|
|
97
|
+
paths, pathLoc, local, value;
|
|
98
98
|
|
|
99
99
|
// outlets are treated a little differently because you can manually
|
|
100
100
|
// name outlets in the passed in hash. If this is the case, then clone
|
|
@@ -114,7 +114,7 @@ SC._object_extend = function _object_extend(base, ext, proto) {
|
|
|
114
114
|
if (!ext.hasOwnProperty(key)) continue ;
|
|
115
115
|
|
|
116
116
|
// get the value. use concats if defined
|
|
117
|
-
|
|
117
|
+
value = (concats.hasOwnProperty(key) ? concats[key] : null) || ext[key];
|
|
118
118
|
|
|
119
119
|
// Possibly add to a bindings.
|
|
120
120
|
if (key.length > 7 && key.slice(-7) === "Binding") {
|
|
@@ -210,8 +210,8 @@ SC._object_extend = function _object_extend(base, ext, proto) {
|
|
|
210
210
|
|
|
211
211
|
SC._enhance = function(originalFunction, enhancement) {
|
|
212
212
|
return function() {
|
|
213
|
-
var args = Array.prototype.slice.call(arguments, 0)
|
|
214
|
-
|
|
213
|
+
var args = Array.prototype.slice.call(arguments, 0),
|
|
214
|
+
self = this;
|
|
215
215
|
|
|
216
216
|
args.unshift(function() { return originalFunction.apply(self, arguments); });
|
|
217
217
|
return enhancement.apply(this, args);
|
|
@@ -234,7 +234,7 @@ SC._enhance = function(originalFunction, enhancement) {
|
|
|
234
234
|
===
|
|
235
235
|
|
|
236
236
|
JavaScript is not a class-based language. Instead it uses a type of
|
|
237
|
-
|
|
237
|
+
inheritance inspired by self called "prototypical" inheritance.
|
|
238
238
|
...
|
|
239
239
|
|
|
240
240
|
Using SproutCore objects with other JavaScript object.
|
|
@@ -324,9 +324,12 @@ SC.mixin(SC.Object, /** @scope SC.Object */ {
|
|
|
324
324
|
this.subclasses.add(ret); // now we can walk a class hierarchy
|
|
325
325
|
|
|
326
326
|
// setup new prototype and add properties to it
|
|
327
|
-
var base = (ret.prototype = SC.beget(this.prototype))
|
|
328
|
-
|
|
329
|
-
|
|
327
|
+
var base = (ret.prototype = SC.beget(this.prototype)),
|
|
328
|
+
idx, len = arguments.length;
|
|
329
|
+
|
|
330
|
+
for(idx=0;idx<len;idx++) {
|
|
331
|
+
SC._object_extend(base, arguments[idx], ret.__sc_super__) ;
|
|
332
|
+
}
|
|
330
333
|
base.constructor = ret; // save constructor
|
|
331
334
|
|
|
332
335
|
if (bench) SC.Benchmark.end('SC.Object.extend') ;
|
|
@@ -532,12 +535,12 @@ SC.Object.prototype = {
|
|
|
532
535
|
@returns {Object} receiver
|
|
533
536
|
*/
|
|
534
537
|
mixin: function() {
|
|
535
|
-
var idx, len = arguments.length;
|
|
538
|
+
var idx, len = arguments.length, init;
|
|
536
539
|
for(idx=0;idx<len;idx++) SC.mixin(this, arguments[idx]) ;
|
|
537
540
|
|
|
538
541
|
// call initMixin
|
|
539
542
|
for(idx=0;idx<len;idx++) {
|
|
540
|
-
|
|
543
|
+
init = arguments[idx].initMixin ;
|
|
541
544
|
if (init) init.call(this) ;
|
|
542
545
|
}
|
|
543
546
|
return this ;
|
|
@@ -614,7 +617,7 @@ SC.Object.prototype = {
|
|
|
614
617
|
},
|
|
615
618
|
|
|
616
619
|
/**
|
|
617
|
-
|
|
620
|
+
Attempts to invoke the named method, passing the included two arguments.
|
|
618
621
|
Returns NO if the method is either not implemented or if the handler
|
|
619
622
|
returns NO (indicating that it did not handle the event). This method
|
|
620
623
|
is invoked to deliver actions from menu items and to deliver events.
|
|
@@ -716,8 +719,8 @@ SC.Object.prototype = {
|
|
|
716
719
|
toString: function() {
|
|
717
720
|
if (!this._object_toString) {
|
|
718
721
|
// only cache the string if the klass name is available
|
|
719
|
-
var klassName = SC._object_className(this.constructor)
|
|
720
|
-
|
|
722
|
+
var klassName = SC._object_className(this.constructor),
|
|
723
|
+
string = klassName + ":" + SC.guidFor(this);
|
|
721
724
|
if (klassName) this._object_toString = string ;
|
|
722
725
|
else return string ;
|
|
723
726
|
}
|
|
@@ -754,8 +757,20 @@ SC.Object.prototype = {
|
|
|
754
757
|
@returns {SC.Object} receiver
|
|
755
758
|
*/
|
|
756
759
|
invokeOnce: function(method) {
|
|
757
|
-
|
|
758
|
-
|
|
760
|
+
//@if(debug)
|
|
761
|
+
// If we're logging deferred calls, send along the information that needs to
|
|
762
|
+
// be recorded.
|
|
763
|
+
var originatingTarget, originatingMethod, originatingStack;
|
|
764
|
+
if (SC.LOG_DEFERRED_CALLS) {
|
|
765
|
+
originatingTarget = this;
|
|
766
|
+
originatingStack = SC._getRecentStack();
|
|
767
|
+
originatingMethod = originatingStack[0];
|
|
768
|
+
}
|
|
769
|
+
SC.RunLoop.currentRunLoop.invokeOnce(this, method, originatingTarget, originatingMethod, originatingStack);
|
|
770
|
+
return this;
|
|
771
|
+
//@endif
|
|
772
|
+
SC.RunLoop.currentRunLoop.invokeOnce(this, method);
|
|
773
|
+
return this;
|
|
759
774
|
},
|
|
760
775
|
|
|
761
776
|
/**
|
|
@@ -778,14 +793,11 @@ SC.Object.prototype = {
|
|
|
778
793
|
var obj = MyRecord.newRecord() ;
|
|
779
794
|
|
|
780
795
|
// update the collection controller's selection
|
|
781
|
-
MyApp.myRecordCollectionController.
|
|
796
|
+
MyApp.myRecordCollectionController.invokeNext( function() {
|
|
782
797
|
this.set('selection', [obj]) ;
|
|
783
798
|
});
|
|
784
799
|
}
|
|
785
800
|
|
|
786
|
-
You can call invokeLast as many times as you like and the method will
|
|
787
|
-
only be invoked once.
|
|
788
|
-
|
|
789
801
|
Note that in development mode only, the object and method that call this
|
|
790
802
|
method will be recorded, for help in debugging scheduled code.
|
|
791
803
|
|
|
@@ -793,8 +805,20 @@ SC.Object.prototype = {
|
|
|
793
805
|
@returns {SC.Object} receiver
|
|
794
806
|
*/
|
|
795
807
|
invokeLast: function(method) {
|
|
796
|
-
|
|
797
|
-
|
|
808
|
+
//@if(debug)
|
|
809
|
+
// If we're logging deferred calls, send along the information that needs to
|
|
810
|
+
// be recorded.
|
|
811
|
+
var originatingTarget, originatingMethod, originatingStack;
|
|
812
|
+
if (SC.LOG_DEFERRED_CALLS) {
|
|
813
|
+
originatingTarget = this ;
|
|
814
|
+
originatingStack = SC._getRecentStack();
|
|
815
|
+
originatingMethod = originatingStack[0];
|
|
816
|
+
}
|
|
817
|
+
SC.RunLoop.currentRunLoop.invokeLast(this, method, originatingTarget, originatingMethod, originatingStack);
|
|
818
|
+
return this;
|
|
819
|
+
//@endif
|
|
820
|
+
SC.RunLoop.currentRunLoop.invokeLast(this, method);
|
|
821
|
+
return this;
|
|
798
822
|
},
|
|
799
823
|
|
|
800
824
|
/**
|
|
@@ -832,9 +856,11 @@ function findClassNames() {
|
|
|
832
856
|
if (SC._object_foundObjectClassNames) return ;
|
|
833
857
|
SC._object_foundObjectClassNames = true ;
|
|
834
858
|
|
|
835
|
-
var seen = []
|
|
836
|
-
|
|
859
|
+
var seen = [],
|
|
860
|
+
detectedSC = false;
|
|
837
861
|
var searchObject = function(root, object, levels) {
|
|
862
|
+
|
|
863
|
+
var path, value, type;
|
|
838
864
|
levels-- ;
|
|
839
865
|
|
|
840
866
|
// not the fastest, but safe
|
|
@@ -851,11 +877,11 @@ function findClassNames() {
|
|
|
851
877
|
detectedSC = true;
|
|
852
878
|
}
|
|
853
879
|
|
|
854
|
-
|
|
855
|
-
|
|
880
|
+
path = (root) ? [root,key].join('.') : key ;
|
|
881
|
+
value = object[key] ;
|
|
856
882
|
|
|
857
883
|
try {
|
|
858
|
-
|
|
884
|
+
type = SC.typeOf(value);
|
|
859
885
|
} catch (e) {
|
|
860
886
|
// Firefox gives security errors when trying to run typeOf on certain objects
|
|
861
887
|
break;
|
|
@@ -37,6 +37,16 @@ sc_require('private/observer_set');
|
|
|
37
37
|
@extends SC.Object
|
|
38
38
|
@since SproutCore 1.0
|
|
39
39
|
*/
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
// When in debug mode, users can log deferred calls (such as .invokeOnce()) by
|
|
43
|
+
// setting SC.LOG_DEFERRED_CALLS. We'll declare the variable explicitly to make
|
|
44
|
+
// life easier for people who want to enter it inside consoles that auto-
|
|
45
|
+
// complete.
|
|
46
|
+
//@if(debug)
|
|
47
|
+
if (!SC.LOG_DEFERRED_CALLS) SC.LOG_DEFERRED_CALLS = false;
|
|
48
|
+
//@endif
|
|
49
|
+
|
|
40
50
|
SC.RunLoop = SC.Object.extend(/** @scope SC.RunLoop.prototype */ {
|
|
41
51
|
|
|
42
52
|
/**
|
|
@@ -54,6 +64,7 @@ SC.RunLoop = SC.Object.extend(/** @scope SC.RunLoop.prototype */ {
|
|
|
54
64
|
SC.Logger.log("-- SC.RunLoop.beginRunLoop at %@".fmt(this._start));
|
|
55
65
|
}
|
|
56
66
|
this._runLoopInProgress = YES;
|
|
67
|
+
this._flushinvokeNextQueue();
|
|
57
68
|
return this ;
|
|
58
69
|
},
|
|
59
70
|
|
|
@@ -84,10 +95,10 @@ SC.RunLoop = SC.Object.extend(/** @scope SC.RunLoop.prototype */ {
|
|
|
84
95
|
|
|
85
96
|
if (SC.LOG_BINDINGS || SC.LOG_OBSERVERS) {
|
|
86
97
|
SC.Logger.log("-- SC.RunLoop.endRunLoop ~ flushing application queues");
|
|
87
|
-
}
|
|
88
|
-
|
|
98
|
+
}
|
|
99
|
+
|
|
89
100
|
this.flushAllPending();
|
|
90
|
-
|
|
101
|
+
|
|
91
102
|
this._start = null ;
|
|
92
103
|
|
|
93
104
|
if (SC.LOG_BINDINGS || SC.LOG_OBSERVERS) {
|
|
@@ -105,14 +116,14 @@ SC.RunLoop = SC.Object.extend(/** @scope SC.RunLoop.prototype */ {
|
|
|
105
116
|
*/
|
|
106
117
|
flushAllPending: function() {
|
|
107
118
|
var didChange ;
|
|
108
|
-
|
|
119
|
+
|
|
109
120
|
do {
|
|
110
121
|
didChange = this.flushApplicationQueues() ;
|
|
111
|
-
if (!didChange) didChange = this._flushinvokeLastQueue() ;
|
|
122
|
+
if (!didChange) didChange = this._flushinvokeLastQueue() ;
|
|
112
123
|
} while(didChange) ;
|
|
113
124
|
},
|
|
114
|
-
|
|
115
|
-
|
|
125
|
+
|
|
126
|
+
|
|
116
127
|
/**
|
|
117
128
|
Invokes the passed target/method pair once at the end of the runloop.
|
|
118
129
|
You can call this method as many times as you like and the method will
|
|
@@ -134,9 +145,38 @@ SC.RunLoop = SC.Object.extend(/** @scope SC.RunLoop.prototype */ {
|
|
|
134
145
|
method = target; target = this ;
|
|
135
146
|
}
|
|
136
147
|
|
|
148
|
+
var deferredCallLoggingInfo; // Used only in debug mode
|
|
149
|
+
|
|
150
|
+
//@if(debug)
|
|
151
|
+
// When in debug mode, SC.Object#invokeOnce() will pass in the originating
|
|
152
|
+
// method, target, and stack. That way, we'll record the interesting parts
|
|
153
|
+
// rather than having most of these calls seemingly coming from
|
|
154
|
+
// SC.Object#invokeOnce().
|
|
155
|
+
//
|
|
156
|
+
// If it was not specified, we'll record the originating function ourselves.
|
|
157
|
+
var shouldLog = SC.LOG_DEFERRED_CALLS;
|
|
158
|
+
if (shouldLog) {
|
|
159
|
+
var originatingTarget = arguments[2],
|
|
160
|
+
originatingMethod = arguments[3],
|
|
161
|
+
originatingStack = arguments[4];
|
|
162
|
+
|
|
163
|
+
if (!originatingTarget) originatingTarget = null; // More obvious when debugging
|
|
164
|
+
if (!originatingMethod) {
|
|
165
|
+
originatingStack = SC._getRecentStack();
|
|
166
|
+
originatingMethod = originatingStack[0];
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
deferredCallLoggingInfo = {
|
|
170
|
+
originatingTarget: originatingTarget,
|
|
171
|
+
originatingMethod: originatingMethod,
|
|
172
|
+
originatingStack: originatingStack
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
//@endif
|
|
176
|
+
|
|
137
177
|
if (typeof method === "string") method = target[method];
|
|
138
178
|
if (!this._invokeQueue) this._invokeQueue = SC.ObserverSet.create();
|
|
139
|
-
if ( method ) this._invokeQueue.add(target, method);
|
|
179
|
+
if ( method ) this._invokeQueue.add(target, method, undefined, deferredCallLoggingInfo);
|
|
140
180
|
return this ;
|
|
141
181
|
},
|
|
142
182
|
|
|
@@ -165,9 +205,69 @@ SC.RunLoop = SC.Object.extend(/** @scope SC.RunLoop.prototype */ {
|
|
|
165
205
|
method = target; target = this ;
|
|
166
206
|
}
|
|
167
207
|
|
|
208
|
+
var deferredCallLoggingInfo; // Used only in debug mode
|
|
209
|
+
|
|
210
|
+
//@if(debug)
|
|
211
|
+
// When in debug mode, SC.Object#invokeOnce() will pass in the originating
|
|
212
|
+
// method, target, and stack. That way, we'll record the interesting parts
|
|
213
|
+
// rather than having most of these calls seemingly coming from
|
|
214
|
+
// SC.Object#invokeOnce().
|
|
215
|
+
//
|
|
216
|
+
// If it was not specified, we'll record the originating function ourselves.
|
|
217
|
+
var shouldLog = SC.LOG_DEFERRED_CALLS;
|
|
218
|
+
if (shouldLog) {
|
|
219
|
+
var originatingTarget = arguments[2],
|
|
220
|
+
originatingMethod = arguments[3],
|
|
221
|
+
originatingStack = arguments[4];
|
|
222
|
+
|
|
223
|
+
if (!originatingTarget) originatingTarget = null; // More obvious when debugging
|
|
224
|
+
if (!originatingMethod) {
|
|
225
|
+
originatingStack = SC._getRecentStack();
|
|
226
|
+
originatingMethod = originatingStack[0];
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
deferredCallLoggingInfo = {
|
|
230
|
+
originatingTarget: originatingTarget,
|
|
231
|
+
originatingMethod: originatingMethod,
|
|
232
|
+
originatingStack: originatingStack
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
//@endif
|
|
236
|
+
|
|
237
|
+
|
|
168
238
|
if (typeof method === "string") method = target[method];
|
|
169
239
|
if (!this._invokeLastQueue) this._invokeLastQueue = SC.ObserverSet.create();
|
|
170
|
-
this._invokeLastQueue.add(target, method);
|
|
240
|
+
this._invokeLastQueue.add(target, method, undefined, deferredCallLoggingInfo);
|
|
241
|
+
return this ;
|
|
242
|
+
},
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
Invokes the passed target/method pair once at the beginning of the next
|
|
246
|
+
runloop, before any other methods (including events) are processed.
|
|
247
|
+
Use this to defer painting to make views more responsive.
|
|
248
|
+
|
|
249
|
+
If you call this with the same target/method pair multiple times it will
|
|
250
|
+
only invoke the pair only once at the beginning of the next runloop.
|
|
251
|
+
|
|
252
|
+
Usually you will not call this method directly but use invokeNext()
|
|
253
|
+
defined on SC.Object.
|
|
254
|
+
|
|
255
|
+
Note that in development mode only, the object and method that call this
|
|
256
|
+
method will be recorded, for help in debugging scheduled code.
|
|
257
|
+
|
|
258
|
+
@param {Object} target
|
|
259
|
+
@param {Function} method
|
|
260
|
+
@returns {SC.RunLoop} receiver
|
|
261
|
+
*/
|
|
262
|
+
invokeNext: function(target, method) {
|
|
263
|
+
// normalize
|
|
264
|
+
if (method === undefined) {
|
|
265
|
+
method = target; target = this ;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
if (typeof method === "string") method = target[method];
|
|
269
|
+
if (!this._invokeNextQueue) this._invokeNextQueue = SC.ObserverSet.create();
|
|
270
|
+
this._invokeNextQueue.add(target, method);
|
|
171
271
|
return this ;
|
|
172
272
|
},
|
|
173
273
|
|
|
@@ -210,10 +310,55 @@ SC.RunLoop = SC.Object.extend(/** @scope SC.RunLoop.prototype */ {
|
|
|
210
310
|
if (hadContent) queue.invokeMethods();
|
|
211
311
|
}
|
|
212
312
|
return hadContent ;
|
|
313
|
+
},
|
|
314
|
+
|
|
315
|
+
_flushinvokeNextQueue: function() {
|
|
316
|
+
var queue = this._invokeNextQueue, hadContent = NO ;
|
|
317
|
+
if (queue && queue.getMembers().length ) {
|
|
318
|
+
this._invokeNextQueue = null; // reset queue.
|
|
319
|
+
hadContent = YES; // has targets!
|
|
320
|
+
if (hadContent) queue.invokeMethods();
|
|
321
|
+
}
|
|
322
|
+
return hadContent ;
|
|
213
323
|
}
|
|
214
324
|
|
|
215
325
|
});
|
|
216
326
|
|
|
327
|
+
|
|
328
|
+
//@if(debug)
|
|
329
|
+
/**
|
|
330
|
+
Will return the recent stack as a hash with numerical keys, for nice output
|
|
331
|
+
in some browsers’ debuggers. The “recent” stack is capped at 6 entries.
|
|
332
|
+
|
|
333
|
+
This is used by, amongst other places, SC.LOG_DEFERRED_CALLS.
|
|
334
|
+
|
|
335
|
+
@returns {Hash}
|
|
336
|
+
*/
|
|
337
|
+
SC._getRecentStack = function() {
|
|
338
|
+
var currentFunction = arguments.callee.caller,
|
|
339
|
+
i = 0,
|
|
340
|
+
stack = {},
|
|
341
|
+
first = YES,
|
|
342
|
+
functionName;
|
|
343
|
+
|
|
344
|
+
while (currentFunction && i < 10) {
|
|
345
|
+
// Skip ourselves!
|
|
346
|
+
if (first) {
|
|
347
|
+
first = NO;
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
functionName = currentFunction.displayName || currentFunction.toString().substring(0, 40);
|
|
351
|
+
stack[i++] = functionName;
|
|
352
|
+
}
|
|
353
|
+
currentFunction = currentFunction.caller;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
return stack;
|
|
357
|
+
};
|
|
358
|
+
//@endif
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
217
362
|
/**
|
|
218
363
|
The current run loop. This is created automatically the first time you
|
|
219
364
|
call begin().
|
|
@@ -258,6 +403,20 @@ SC.RunLoop.end = function() {
|
|
|
258
403
|
return this ;
|
|
259
404
|
} ;
|
|
260
405
|
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
Call this to kill the current run loop--stopping all propagation of bindings
|
|
409
|
+
and observers and clearing all timers.
|
|
410
|
+
|
|
411
|
+
This is useful if you are popping up an error catcher: you need a run loop
|
|
412
|
+
for the error catcher, but you don't want the app itself to continue
|
|
413
|
+
running.
|
|
414
|
+
*/
|
|
415
|
+
SC.RunLoop.kill = function() {
|
|
416
|
+
this.currentRunLoop = this.runLoopClass.create();
|
|
417
|
+
return this;
|
|
418
|
+
};
|
|
419
|
+
|
|
261
420
|
/**
|
|
262
421
|
Returns YES when a run loop is in progress
|
|
263
422
|
|
|
@@ -269,13 +428,13 @@ SC.RunLoop.isRunLoopInProgress = function() {
|
|
|
269
428
|
};
|
|
270
429
|
|
|
271
430
|
/**
|
|
272
|
-
Executes a passed function in the context of a run loop. If called outside a
|
|
273
|
-
runloop, starts and ends one. If called inside an existing runloop, is
|
|
431
|
+
Executes a passed function in the context of a run loop. If called outside a
|
|
432
|
+
runloop, starts and ends one. If called inside an existing runloop, is
|
|
274
433
|
simply executes the function unless you force it to create a nested runloop.
|
|
275
|
-
|
|
434
|
+
|
|
276
435
|
If an exception is thrown during execution, we give an error catcher the
|
|
277
436
|
opportunity to handle it before allowing the exception to bubble again.
|
|
278
|
-
|
|
437
|
+
|
|
279
438
|
@param {Function} callback callback to execute
|
|
280
439
|
@param {Object} target context for callback
|
|
281
440
|
@param {Boolean} if YES, starts/ends a new runloop even if one is already running
|
|
@@ -296,7 +455,7 @@ SC.run = function(callback, target, forceNested) {
|
|
|
296
455
|
// If the exception was not handled, throw it again so the browser
|
|
297
456
|
// can deal with it (and potentially use it for debugging).
|
|
298
457
|
// (We don't throw it in IE because the user will see two errors)
|
|
299
|
-
if (!handled && !SC.browser.
|
|
458
|
+
if (!handled && !SC.browser.isIE) {
|
|
300
459
|
throw e;
|
|
301
460
|
}
|
|
302
461
|
}
|
|
@@ -306,3 +465,19 @@ SC.run = function(callback, target, forceNested) {
|
|
|
306
465
|
if(forceNested || !alreadyRunning) SC.RunLoop.end();
|
|
307
466
|
}
|
|
308
467
|
};
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
Wraps the passed function in code that ensures a run loop will
|
|
471
|
+
surround it when run.
|
|
472
|
+
*/
|
|
473
|
+
SC.RunLoop.wrapFunction = function(func) {
|
|
474
|
+
var ret = function() {
|
|
475
|
+
var alreadyRunning = SC.RunLoop.isRunLoopInProgress();
|
|
476
|
+
if(!alreadyRunning) SC.RunLoop.begin();
|
|
477
|
+
var ret = arguments.callee.wrapped.apply(this,arguments);
|
|
478
|
+
if(!alreadyRunning) SC.RunLoop.end();
|
|
479
|
+
return ret;
|
|
480
|
+
};
|
|
481
|
+
ret.wrapped = func;
|
|
482
|
+
return ret;
|
|
483
|
+
};
|