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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/* SC.LabelView */
|
|
2
2
|
|
|
3
3
|
.sc-label-view {
|
|
4
|
-
font-weight: normal;
|
|
5
4
|
text-align: left;
|
|
5
|
+
white-space: pre-line; /* Allow strings to include '\n' characters, etc., like many other UI frameworks */
|
|
6
6
|
|
|
7
7
|
&.icon {
|
|
8
8
|
position: relative;
|
|
@@ -27,21 +27,17 @@
|
|
|
27
27
|
|
|
28
28
|
&.sc-large-size {
|
|
29
29
|
font-size: 18px;
|
|
30
|
-
line-height: 24px;
|
|
31
30
|
}
|
|
32
31
|
|
|
33
32
|
&.sc-regular-size {
|
|
34
33
|
font-size: 12px;
|
|
35
|
-
line-height: 19px;
|
|
36
34
|
}
|
|
37
35
|
|
|
38
36
|
&.sc-small-size {
|
|
39
37
|
font-size: 11px;
|
|
40
|
-
line-height: 14px;
|
|
41
38
|
}
|
|
42
39
|
|
|
43
40
|
&.sc-tiny-size {
|
|
44
41
|
font-size: 9px;
|
|
45
|
-
line-height: 12px;
|
|
46
42
|
}
|
|
47
43
|
}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
.sc-text-field-view {
|
|
4
4
|
border:none;
|
|
5
|
-
z-index:100;
|
|
6
5
|
overflow: visible;
|
|
7
6
|
background :white;
|
|
8
7
|
.border {
|
|
@@ -54,9 +53,11 @@
|
|
|
54
53
|
-webkit-appearance:none;
|
|
55
54
|
}
|
|
56
55
|
|
|
57
|
-
|
|
58
56
|
.sc-hint {
|
|
59
|
-
|
|
57
|
+
z-index: 1;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.sc-hint, .hint {
|
|
60
61
|
position: absolute;
|
|
61
62
|
top: 3px;
|
|
62
63
|
left: 1px;
|
|
@@ -67,7 +68,8 @@
|
|
|
67
68
|
font-size: 12px;
|
|
68
69
|
}
|
|
69
70
|
|
|
70
|
-
&.text-area .sc-hint
|
|
71
|
+
&.text-area .sc-hint,
|
|
72
|
+
&.text-area .hint {
|
|
71
73
|
top: 2px;
|
|
72
74
|
left: 3px;
|
|
73
75
|
right: 3px;
|
|
@@ -83,7 +85,7 @@
|
|
|
83
85
|
color: #B3B3B3 !important;
|
|
84
86
|
}
|
|
85
87
|
|
|
86
|
-
.
|
|
88
|
+
.webkit &{
|
|
87
89
|
&.focus {
|
|
88
90
|
outline: auto 7px -webkit-focus-ring-color;
|
|
89
91
|
outline-offset: -2px;
|
|
@@ -115,11 +117,8 @@
|
|
|
115
117
|
.border {
|
|
116
118
|
border:1px inset;
|
|
117
119
|
}
|
|
118
|
-
input.field {
|
|
119
|
-
padding-bottom: 1px;
|
|
120
|
-
}
|
|
121
120
|
textarea.field {
|
|
122
121
|
height: 100%;
|
|
123
122
|
}
|
|
124
|
-
}
|
|
123
|
+
}
|
|
125
124
|
}
|
|
@@ -12,12 +12,12 @@ sc_require('core') ;
|
|
|
12
12
|
|
|
13
13
|
This bit of meta-programming magic can install a benchmark handler on any
|
|
14
14
|
object method. When a benchmark is installed, the time required to execute
|
|
15
|
-
the method will be printed to the console log
|
|
15
|
+
the method will be printed to the console log every time the method is
|
|
16
16
|
called.
|
|
17
17
|
|
|
18
18
|
This class can be used to implement benchmarking. To use this object, just
|
|
19
19
|
call start() with a key name and end() with a keyname. The benchmark will
|
|
20
|
-
be logged. If you set verbose = true, then benchmark will log
|
|
20
|
+
be logged. If you set verbose = true, then benchmark will log every time it
|
|
21
21
|
saves a bench. Otherwise, it just keeps stats. You can get the stats by
|
|
22
22
|
calling report().
|
|
23
23
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// ==========================================================================
|
|
7
7
|
|
|
8
8
|
/*jslint evil:true */
|
|
9
|
-
|
|
9
|
+
sc_require('tasks/task');
|
|
10
10
|
SC.LOG_MODULE_LOADING = YES;
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -50,10 +50,10 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
50
50
|
@returns {Boolean} YES if already loaded, NO otherwise
|
|
51
51
|
*/
|
|
52
52
|
loadModule: function(moduleName, target, method) {
|
|
53
|
-
var module = SC.MODULE_INFO[moduleName], callbacks, targets
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
var module = SC.MODULE_INFO[moduleName], callbacks, targets,
|
|
54
|
+
args = SC.A(arguments).slice(3),
|
|
55
|
+
log = SC.LOG_MODULE_LOADING,
|
|
56
|
+
idx, len;
|
|
57
57
|
|
|
58
58
|
// Treat the first parameter as the callback if the target is a function and there is
|
|
59
59
|
// no method supplied.
|
|
@@ -62,9 +62,7 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
62
62
|
target = null;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
if (log)
|
|
66
|
-
SC.Logger.log("SC.Module: Attempting to load '%@'".fmt(moduleName));
|
|
67
|
-
}
|
|
65
|
+
if (log) SC.debug("SC.Module: Attempting to load '%@'", moduleName);
|
|
68
66
|
|
|
69
67
|
// If we couldn't find anything in the SC.MODULE_INFO hash, we don't have any record of the
|
|
70
68
|
// requested module.
|
|
@@ -78,14 +76,36 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
78
76
|
|
|
79
77
|
// If the module is already loaded, execute the callback immediately if SproutCore is loaded,
|
|
80
78
|
// or else as soon as SC has finished loading.
|
|
81
|
-
if (module.isLoaded) {
|
|
82
|
-
if (log) SC.
|
|
79
|
+
if (module.isLoaded && !module.isWaitingForRunLoop) {
|
|
80
|
+
if (log) SC.debug("SC.Module: Module '%@' already loaded.", moduleName);
|
|
81
|
+
|
|
82
|
+
// we can't just eval it if its dependencies have not been met...
|
|
83
|
+
if (!this._dependenciesMetForModule(moduleName)) {
|
|
84
|
+
// we can't let it return normally here, because we need the module to wait until the end of the run loop.
|
|
85
|
+
// This is because the module may set up bindings.
|
|
86
|
+
this._addCallbackForModule(moduleName, target, method, args);
|
|
87
|
+
|
|
88
|
+
this._loadDependenciesForModule(moduleName);
|
|
89
|
+
|
|
90
|
+
return NO;
|
|
91
|
+
}
|
|
83
92
|
|
|
84
93
|
// If the module has finished loading and we have the string
|
|
85
94
|
// representation, try to evaluate it now.
|
|
86
95
|
if (module.source) {
|
|
87
|
-
if (log) SC.
|
|
96
|
+
if (log) SC.debug("SC.Module: Evaluating JavaScript for module '%@'.", moduleName);
|
|
88
97
|
this._evaluateStringLoadedModule(module);
|
|
98
|
+
|
|
99
|
+
// we can't let it return normally here, because we need the module to wait until the end of the run loop.
|
|
100
|
+
// This is because the module may set up bindings.
|
|
101
|
+
this._addCallbackForModule(moduleName, target, method, args);
|
|
102
|
+
|
|
103
|
+
this.invokeLast(function() {
|
|
104
|
+
module.isReady = YES;
|
|
105
|
+
this._moduleDidBecomeReady(moduleName);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
return NO;
|
|
89
109
|
}
|
|
90
110
|
|
|
91
111
|
if (method) {
|
|
@@ -101,24 +121,20 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
101
121
|
|
|
102
122
|
return YES;
|
|
103
123
|
}
|
|
124
|
+
|
|
125
|
+
// The module has loaded, but is waiting for the end of the run loop before it is "ready";
|
|
126
|
+
// we just need to add the callback.
|
|
127
|
+
else if (module.isWaitingForRunLoop) {
|
|
128
|
+
this._addCallbackForModule(moduleName, target, method, args);
|
|
129
|
+
}
|
|
104
130
|
// The module is not yet loaded, so register the callback and, if necessary, begin loading
|
|
105
131
|
// the code.
|
|
106
132
|
else {
|
|
107
|
-
if (log) SC.
|
|
133
|
+
if (log) SC.debug("SC.Module: Module '%@' is not loaded, loading now.", moduleName);
|
|
108
134
|
|
|
109
135
|
// If this method is called more than once for the same module before it is finished
|
|
110
136
|
// loading, we might have multiple callbacks that need to be executed once it loads.
|
|
111
|
-
|
|
112
|
-
// Retrieve array of callbacks from MODULE_INFO hash.
|
|
113
|
-
callbacks = module.callbacks || [] ;
|
|
114
|
-
|
|
115
|
-
if (method) {
|
|
116
|
-
callbacks.push(function() {
|
|
117
|
-
SC.Module._invokeCallback(moduleName, target, method, args);
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
module.callbacks = callbacks;
|
|
137
|
+
this._addCallbackForModule(moduleName, target, method, args);
|
|
122
138
|
|
|
123
139
|
// If this is the first time the module has been requested, determine its dependencies
|
|
124
140
|
// and begin loading them as well as the JavaScript for this module.
|
|
@@ -133,6 +149,21 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
133
149
|
}
|
|
134
150
|
},
|
|
135
151
|
|
|
152
|
+
_addCallbackForModule: function(moduleName, target, method, args) {
|
|
153
|
+
var module = SC.MODULE_INFO[moduleName];
|
|
154
|
+
|
|
155
|
+
// Retrieve array of callbacks from MODULE_INFO hash.
|
|
156
|
+
var callbacks = module.callbacks || [] ;
|
|
157
|
+
|
|
158
|
+
if (method) {
|
|
159
|
+
callbacks.push(function() {
|
|
160
|
+
SC.Module._invokeCallback(moduleName, target, method, args);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
module.callbacks = callbacks;
|
|
165
|
+
},
|
|
166
|
+
|
|
136
167
|
/**
|
|
137
168
|
@private
|
|
138
169
|
|
|
@@ -151,7 +182,7 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
151
182
|
|
|
152
183
|
if (module.isLoading || module.isLoaded) return;
|
|
153
184
|
|
|
154
|
-
if (SC.LOG_MODULE_LOADING) SC.
|
|
185
|
+
if (SC.LOG_MODULE_LOADING) SC.debug("SC.Module: Prefetching module '%@'.", moduleName);
|
|
155
186
|
this._loadDependenciesForModule(moduleName);
|
|
156
187
|
this._loadCSSForModule(moduleName);
|
|
157
188
|
this._loadJavaScriptForModule(moduleName);
|
|
@@ -174,7 +205,7 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
174
205
|
var idx, len;
|
|
175
206
|
|
|
176
207
|
if (SC.LOG_MODULE_LOADING) {
|
|
177
|
-
SC.
|
|
208
|
+
SC.debug("SC.Module: Module '%@' is marked for lazy instantiation, instantiating it now…", moduleName);
|
|
178
209
|
}
|
|
179
210
|
|
|
180
211
|
len = lazyInfo.length;
|
|
@@ -208,7 +239,9 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
208
239
|
_evaluateStringLoadedModule: function(module) {
|
|
209
240
|
var moduleSource = module.source;
|
|
210
241
|
|
|
242
|
+
// so, force a run loop.
|
|
211
243
|
jQuery.globalEval(moduleSource);
|
|
244
|
+
|
|
212
245
|
delete module.source;
|
|
213
246
|
|
|
214
247
|
if (module.cssSource) {
|
|
@@ -250,7 +283,7 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
250
283
|
url = styles[idx] ;
|
|
251
284
|
|
|
252
285
|
if (url.length > 0) {
|
|
253
|
-
if (SC.LOG_MODULE_LOADING) SC.
|
|
286
|
+
if (SC.LOG_MODULE_LOADING) SC.debug("SC.Module: Loading CSS file in '%@' -> '%@'", moduleName, url);
|
|
254
287
|
el = document.createElement('link') ;
|
|
255
288
|
el.setAttribute('href', url) ;
|
|
256
289
|
el.setAttribute('rel', "stylesheet") ;
|
|
@@ -291,7 +324,7 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
291
324
|
}
|
|
292
325
|
|
|
293
326
|
if (url.length > 0) {
|
|
294
|
-
if (SC.LOG_MODULE_LOADING) SC.
|
|
327
|
+
if (SC.LOG_MODULE_LOADING) SC.debug("SC.Module: Loading JavaScript file in '%@' -> '%@'", moduleName, url);
|
|
295
328
|
|
|
296
329
|
el = document.createElement('script') ;
|
|
297
330
|
el.setAttribute('type', "text/javascript") ;
|
|
@@ -300,12 +333,16 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
300
333
|
if (SC.browser.isIE) {
|
|
301
334
|
el.onreadystatechange = function() {
|
|
302
335
|
if (this.readyState == 'complete' || this.readyState == 'loaded') {
|
|
303
|
-
SC.
|
|
336
|
+
SC.run(function() {
|
|
337
|
+
SC.Module._moduleDidLoad(moduleName);
|
|
338
|
+
});
|
|
304
339
|
}
|
|
305
340
|
};
|
|
306
341
|
} else {
|
|
307
342
|
el.onload = function() {
|
|
308
|
-
SC.
|
|
343
|
+
SC.run(function(){
|
|
344
|
+
SC.Module._moduleDidLoad(moduleName);
|
|
345
|
+
});
|
|
309
346
|
};
|
|
310
347
|
}
|
|
311
348
|
|
|
@@ -389,7 +426,7 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
389
426
|
|
|
390
427
|
dependents.push(moduleName) ;
|
|
391
428
|
|
|
392
|
-
if (log) SC.
|
|
429
|
+
if (log) SC.debug("SC.Module: '%@' depends on '%@', loading dependency…", moduleName, requiredModuleName);
|
|
393
430
|
|
|
394
431
|
// Load dependencies
|
|
395
432
|
SC.Module.loadModule(requiredModuleName) ;
|
|
@@ -448,7 +485,7 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
448
485
|
var moduleInfo = SC.MODULE_INFO[moduleName], callbacks ;
|
|
449
486
|
if (!moduleInfo) return ; // shouldn't happen, but recover anyway
|
|
450
487
|
|
|
451
|
-
if (SC.LOG_MODULE_LOADING) SC.
|
|
488
|
+
if (SC.LOG_MODULE_LOADING) SC.debug("SC.Module: Module '%@' has completed loading, invoking callbacks.", moduleName);
|
|
452
489
|
|
|
453
490
|
callbacks = moduleInfo.callbacks || [] ;
|
|
454
491
|
|
|
@@ -462,12 +499,29 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
462
499
|
var module = moduleInfo[moduleName];
|
|
463
500
|
var log = SC.LOG_MODULE_LOADING;
|
|
464
501
|
|
|
465
|
-
if (log) SC.
|
|
502
|
+
if (log) SC.debug("SC.Module: Evaluating and invoking callbacks for '%@'.", moduleName);
|
|
466
503
|
|
|
467
504
|
if (module.source) {
|
|
468
505
|
this._evaluateStringLoadedModule(module);
|
|
469
506
|
}
|
|
470
|
-
|
|
507
|
+
|
|
508
|
+
// this is ugly, but a module evaluated late like this won't be done instantiating
|
|
509
|
+
// until the end of a run loop. Also, the code here is not structured in a way that makes
|
|
510
|
+
// it easy to "add a step" before saying a module is ready. And finally, invokeLater doesn't
|
|
511
|
+
// accept arguments; hence, the closure.
|
|
512
|
+
module.isWaitingForRunLoop = YES;
|
|
513
|
+
this.invokeLast(function() {
|
|
514
|
+
module.isReady = YES;
|
|
515
|
+
this._moduleDidBecomeReady(moduleName);
|
|
516
|
+
});
|
|
517
|
+
},
|
|
518
|
+
|
|
519
|
+
_moduleDidBecomeReady: function(moduleName) {
|
|
520
|
+
var moduleInfo = SC.MODULE_INFO;
|
|
521
|
+
var module = moduleInfo[moduleName];
|
|
522
|
+
var log = SC.LOG_MODULE_LOADING;
|
|
523
|
+
|
|
524
|
+
module.isWaitingForRunLoop = NO;
|
|
471
525
|
|
|
472
526
|
if (SC.isReady) {
|
|
473
527
|
SC.Module._invokeCallbacksForModule(moduleName) ;
|
|
@@ -487,10 +541,11 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
487
541
|
dependentName = dependents[idx];
|
|
488
542
|
dependent = moduleInfo[dependentName];
|
|
489
543
|
if (dependent.isLoaded && this._dependenciesMetForModule(dependentName)) {
|
|
490
|
-
if (log) SC.
|
|
544
|
+
if (log) SC.debug("SC.Module: Now that %@ has loaded, all dependencies for a dependent %@ are met.", moduleName, dependentName);
|
|
491
545
|
this._evaluateAndInvokeCallbacks(dependentName);
|
|
492
546
|
}
|
|
493
547
|
}
|
|
548
|
+
|
|
494
549
|
},
|
|
495
550
|
|
|
496
551
|
/** @private
|
|
@@ -508,16 +563,16 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
508
563
|
var dependenciesMet;
|
|
509
564
|
var callbacks, targets;
|
|
510
565
|
|
|
511
|
-
if (log) SC.
|
|
566
|
+
if (log) SC.debug("SC.Module: Module '%@' finished loading.", moduleName);
|
|
512
567
|
|
|
513
568
|
if (!module) {
|
|
514
|
-
if (log) SC.
|
|
569
|
+
if (log) SC.debug("SC._moduleDidLoad() called for unknown module '@'.", moduleName);
|
|
515
570
|
module = SC.MODULE_INFO[moduleName] = { isLoaded: YES, isReady: YES } ;
|
|
516
571
|
return;
|
|
517
572
|
}
|
|
518
573
|
|
|
519
574
|
if (module.isLoaded) {
|
|
520
|
-
if (log) SC.
|
|
575
|
+
if (log) SC.debug("SC._moduleDidLoad() called more than once for module '%@'. Skipping.", moduleName);
|
|
521
576
|
return ;
|
|
522
577
|
}
|
|
523
578
|
|
|
@@ -530,11 +585,11 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
530
585
|
if (dependenciesMet) {
|
|
531
586
|
this._evaluateAndInvokeCallbacks(moduleName);
|
|
532
587
|
} else {
|
|
533
|
-
if (log) SC.
|
|
588
|
+
if (log) SC.debug("SC.Module: Dependencies for '%@' not met yet, waiting to evaluate.", moduleName);
|
|
534
589
|
}
|
|
535
590
|
} else {
|
|
536
591
|
delete module.isPrefetching;
|
|
537
|
-
if (log) SC.
|
|
592
|
+
if (log) SC.debug("SC.Module: Module '%@' was prefetched, not evaluating until needed.", moduleName);
|
|
538
593
|
}
|
|
539
594
|
},
|
|
540
595
|
|
|
@@ -569,6 +624,83 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
|
|
|
569
624
|
}
|
|
570
625
|
|
|
571
626
|
return methodName;
|
|
627
|
+
},
|
|
628
|
+
|
|
629
|
+
/**
|
|
630
|
+
A list of the methods to temporarily disable (and buffer calls for) when we are suspended.
|
|
631
|
+
*/
|
|
632
|
+
methodsForSuspend: "loadModule _moduleDidLoad prefetchModule _moduleDidBecomeReady".w(),
|
|
633
|
+
|
|
634
|
+
/**
|
|
635
|
+
Call this in order to prevent expensive tasks from occurring at inopportune times.
|
|
636
|
+
*/
|
|
637
|
+
suspend: function() {
|
|
638
|
+
|
|
639
|
+
//Increment the suspension count, to support nested suspend()/resume() pairs.
|
|
640
|
+
//We only do anything if the suspend count ends up at 1, as that implies it's
|
|
641
|
+
//the first suspend() call.
|
|
642
|
+
this._suspendCount = (this._suspendCount||0)+1;
|
|
643
|
+
if(this._suspendCount!==1) return;
|
|
644
|
+
|
|
645
|
+
//Yummy variables.
|
|
646
|
+
var methods = this.get('methodsForSuspend'),
|
|
647
|
+
replaceKey, saveKey, key, i;
|
|
648
|
+
|
|
649
|
+
//Now we go through the list of methods to suspend, and overwrite them with
|
|
650
|
+
//versions that will buffer their calls in a _bufferedCalls array.
|
|
651
|
+
for(i=0; key=methods[i]; i++) {
|
|
652
|
+
|
|
653
|
+
//Ensure the replacement function exists at a key where it'll be cached.
|
|
654
|
+
if(!this[replaceKey="__replacement_"+key+"__"]) {
|
|
655
|
+
(this[replaceKey] = function() {
|
|
656
|
+
(this._bufferedCalls||(this._bufferedCalls=[])).push({
|
|
657
|
+
method: arguments.callee.methodName,
|
|
658
|
+
arguments: arguments
|
|
659
|
+
});
|
|
660
|
+
}).methodName = key;
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
//Ensure the original function exists at a key where it'll be cached.
|
|
664
|
+
if(!this[saveKey="__saved_"+key+"__"]) this[saveKey] = this[key];
|
|
665
|
+
|
|
666
|
+
//Ensure that the replacement function exists where the rest of the
|
|
667
|
+
//code expects the original.
|
|
668
|
+
this[key] = this[replaceKey];
|
|
669
|
+
}
|
|
670
|
+
},
|
|
671
|
+
|
|
672
|
+
/**
|
|
673
|
+
Call this in order to resume normal behavior of the methods here, and to
|
|
674
|
+
finally perform any calls that may have occurred during suspension. Calls
|
|
675
|
+
will run in the order they were received.
|
|
676
|
+
*/
|
|
677
|
+
resume: function() {
|
|
678
|
+
|
|
679
|
+
//First, we need to decrement the suspension count, and warn if the suspension
|
|
680
|
+
//count implied that we weren't already suspended. Furthermore, if the suspend
|
|
681
|
+
//count is not zero, then we haven't tackled the last suspend() call with a resume(),
|
|
682
|
+
//and should therefore not resume.
|
|
683
|
+
this._suspendCount = (this._suspendCount||0)-1;
|
|
684
|
+
if(this._suspendCount<0) {
|
|
685
|
+
SC.warn("SC.Module.resume() was called without SC.Module having been in a suspended state. Call aborted.");
|
|
686
|
+
this._suspendCount = 0;
|
|
687
|
+
return;
|
|
688
|
+
}
|
|
689
|
+
if(this._suspendCount>0) return;
|
|
690
|
+
|
|
691
|
+
//Yummy variables.
|
|
692
|
+
var methods = this.get('methodsForSuspend'),
|
|
693
|
+
calls = this._bufferedCalls,
|
|
694
|
+
key, i, method, call;
|
|
695
|
+
|
|
696
|
+
//Restore the original methods to where they belong for normal functionality.
|
|
697
|
+
for(i=0; (key=methods[i]); i++) this[key] = this["__saved_"+key+"__"];
|
|
698
|
+
|
|
699
|
+
//Perform any buffered calls that built up during the suspended period.
|
|
700
|
+
for(i=0; call=calls&&calls[i]; i++) this[call.method].apply(this,call.arguments);
|
|
701
|
+
|
|
702
|
+
//Clear the list of calls, so subsequent resume() calls won't flush them again.
|
|
703
|
+
if(calls) calls.length = 0;
|
|
572
704
|
}
|
|
573
705
|
});
|
|
574
706
|
|
|
@@ -588,17 +720,17 @@ SC.ready(function() {
|
|
|
588
720
|
module = moduleInfo[moduleName];
|
|
589
721
|
|
|
590
722
|
if (module.isPrefetched) {
|
|
591
|
-
var prefetchedModuleName = moduleName;
|
|
592
|
-
|
|
593
723
|
// Create a task that will load the module, and then register it with
|
|
594
724
|
// the global background task queue.
|
|
595
|
-
task = SC.
|
|
596
|
-
run: function() {
|
|
597
|
-
SC.Module.prefetchModule(prefetchedModuleName);
|
|
598
|
-
}
|
|
599
|
-
});
|
|
600
|
-
|
|
725
|
+
task = SC.Module.PrefetchModuleTask.create({ prefetchedModuleName: moduleName });
|
|
601
726
|
SC.backgroundTaskQueue.push(task);
|
|
602
727
|
}
|
|
603
728
|
}
|
|
604
729
|
});
|
|
730
|
+
|
|
731
|
+
SC.Module.PrefetchModuleTask = SC.Task.extend({
|
|
732
|
+
prefetchedModuleName: null,
|
|
733
|
+
run: function() {
|
|
734
|
+
SC.Module.prefetchModule(this.prefetchedModuleName);
|
|
735
|
+
}
|
|
736
|
+
});
|