sproutcore 1.5.0.pre.3 → 1.5.0.pre.4
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/.rspec +1 -0
- data/CHANGELOG +42 -0
- data/README.txt +25 -0
- data/VERSION.yml +1 -1
- data/bin/sc-build +1 -1
- data/bin/sc-build-number +1 -1
- data/bin/sc-docs +1 -1
- data/bin/sc-gen +1 -1
- data/bin/sc-init +1 -1
- data/bin/sc-manifest +1 -1
- data/bin/sc-server +1 -1
- data/bin/sproutcore +1 -1
- data/lib/buildtasks/build.rake +5 -0
- data/lib/buildtasks/manifest.rake +20 -1
- data/lib/frameworks/sproutcore/Buildfile +12 -9
- data/lib/frameworks/sproutcore/CHANGELOG.md +48 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/README +2 -9
- data/lib/frameworks/sproutcore/apps/greenhouse/TODO +11 -27
- data/lib/frameworks/sproutcore/apps/greenhouse/controllers/library.js +3 -10
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/main-page.css +4 -31
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/dialogs.js +5 -4
- data/lib/frameworks/sproutcore/apps/greenhouse/models/dir.js +3 -3
- data/lib/frameworks/sproutcore/apps/greenhouse/models/file.js +2 -2
- data/lib/frameworks/sproutcore/apps/greenhouse/states/main.js +31 -14
- data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +2 -1
- data/lib/frameworks/sproutcore/apps/greenhouse/states/ready.js +27 -1
- data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/list_item.js +1 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/plist_item.js +20 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/theme.js +25 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/views/plist_item.js +161 -24
- data/lib/frameworks/sproutcore/apps/greenhouse/views/tear_off_picker.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +37 -25
- data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +135 -26
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/array.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/controller.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/object.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/object.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/run_loop.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/delegate_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/responder_context.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/selection_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/string.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +68 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +108 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/main.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +27 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/pane.js +215 -505
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +24 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +11 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/observable_protocol.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/sparse_array_delegate.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/core.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/view.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/application.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/browser.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/builder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/core_query.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/cursor.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +210 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/event.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/json.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/locale.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/page.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/platform.js +31 -5
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/ready.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/render_context.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/responder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/root_responder.js +83 -110
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/selection_set.js +7 -4
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/sparse_array.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/theme.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/timer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/utils/rect.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +151 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/array_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/enum_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/null_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/selection_support.js +26 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/single_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/empty_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/multiple_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_enumerable_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/responder_context.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/string.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +14 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/builder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/core_query/within.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/json.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/locale.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/begin.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/element.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/end.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/get.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_attr.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_basic.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_className.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_style.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/init.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/join.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/push_text.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/tag.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/update.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeKeyPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMainPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMenuPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/root_responder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/targetForAction.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/add.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/copy.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/indexSetForSource.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/isEqual.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/remove.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/sparse_array.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/theme.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invalidate.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invokeLater.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/isPaused.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/performAction.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/schedule.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/normalizeURL.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +268 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/rect.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +43 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/append_remove.js +107 -18
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/firstResponder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/keyPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/layout.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/sendEvent.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/checkbox_support.js +32 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/text_field_support.js +73 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/collection.js +65 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/core.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/handlebars.js +295 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/animation.js +19 -18
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build_children.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/clippingFrame.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertFrames.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertLayouts.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createChildViews.js +18 -15
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/destroyLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/didAppendToDocument.js +11 -8
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/findLayerInParentLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/init.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/insertBefore.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisible.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisibleInWindow.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +22 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layoutChildViews.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +180 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +640 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/parentViewDidChange.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/prepareContext.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/removeChild.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +125 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/render_delegate_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/replaceChild.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/theme.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayerLocation.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/viewDidResize.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/checkbox_support.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +99 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/text_field_support.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template.js +77 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +187 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/base.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +57 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +223 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +1150 -0
- data/lib/frameworks/sproutcore/frameworks/{amber/views → core_foundation/views/view}/layout_style.js +93 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +489 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +362 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/touch.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +113 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +1280 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +27 -53
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +13 -19
- data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +183 -71
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +26 -46
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +25 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +139 -21
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +6 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/cyclical_relationship.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/{parentless.js → data_store.js} +62 -16
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +51 -17
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +36 -10
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/{foundation/english.lproj → datetime/resources}/strings.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/system/datetime.js +5 -37
- data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/tests/system/datetime.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/debug/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/designer/controllers/designs.js +1 -2
- data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/designer/designers/view_designer.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/designer/views/designer_drop_target.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +71 -70
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +10 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -19
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +33 -14
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +25 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +25 -103
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +102 -92
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +22 -25
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +38 -25
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +42 -22
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +513 -230
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/README.md +23 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/README.md +11 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +215 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +34 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/polymorphic_single_attribute.js +183 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +23 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphic/single.js +124 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +151 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +27 -17
- data/lib/frameworks/sproutcore/frameworks/foundation/system/image_queue.js +6 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +163 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +6 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +200 -167
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +52 -137
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +7 -11
- data/lib/frameworks/sproutcore/frameworks/handlebars/extensions.js +138 -0
- data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1338 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +32 -26
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +162 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +10 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +123 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +12 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +50 -13
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +163 -333
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +58 -8
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +9 -6
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +15 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +31 -143
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/concatenated_properties.js +71 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +177 -0
- data/lib/frameworks/sproutcore/frameworks/table/views/table.js +5 -4
- data/lib/frameworks/sproutcore/frameworks/table/views/table_header.js +5 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/button/button.js +8 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +2 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +2 -2
- data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +62 -62
- data/lib/gen/html_app/Buildfile +36 -0
- data/lib/gen/html_app/README +1 -0
- data/lib/gen/html_app/USAGE +15 -0
- data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +14 -0
- 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 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +1 -0
- data/lib/gen/html_project/Buildfile +45 -0
- data/lib/gen/html_project/INIT +3 -0
- data/lib/gen/html_project/README +1 -0
- data/lib/gen/html_project/USAGE +2 -0
- data/lib/gen/html_project/templates/@filename@/Buildfile +8 -0
- data/lib/gen/html_project/templates/@filename@/README +7 -0
- data/lib/sproutcore/builders/handlebars.rb +30 -0
- data/lib/sproutcore/builders.rb +1 -1
- data/lib/sproutcore/helpers/static_helper.rb +3 -3
- data/lib/sproutcore/tools/init.rb +25 -9
- data/spec/buildtasks/manifest/prepare_build_tasks/handlebars_spec.rb +39 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/template.handlebars +5 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/templates/demo.handlebars +4 -0
- data/spec/lib/builders/handlebars_spec.rb +29 -0
- data/vendor/chance/lib/chance/imagers/data_url.rb +20 -7
- data/vendor/chance/lib/chance/instance.rb +4 -1
- data/vendor/chance/lib/chance/parser.rb +31 -31
- data/vendor/chance/lib/chance/slicing.rb +38 -8
- metadata +195 -225
- data/lib/frameworks/sproutcore/frameworks/amber/system/device.js +0 -143
- data/lib/frameworks/sproutcore/frameworks/amber/system/utils.js +0 -174
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/main_pane.js +0 -31
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/pane/sendTouchEvent.js +0 -267
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutDidChange.js +0 -149
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutStyle.js +0 -602
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/render.js +0 -115
- data/lib/frameworks/sproutcore/frameworks/amber/views/base.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/amber/views/view.js +0 -4003
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +0 -105
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// ==========================================================================
|
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
|
3
|
+
// Copyright: ©2006-2011 Strobe Inc. and contributors.
|
|
4
|
+
// Portions ©2008-2010 Apple Inc. All rights reserved.
|
|
5
|
+
// License: Licensed under MIT license (see license.js)
|
|
6
|
+
// ==========================================================================
|
|
7
|
+
|
|
8
|
+
// These are helpful utility functions for calculating range and rect values
|
|
9
|
+
sc_require('system/browser');
|
|
10
|
+
|
|
11
|
+
SC.mixin( /** @scope SC */ {
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
Takes a URL of any type and normalizes it into a fully qualified URL with
|
|
15
|
+
hostname. For example:
|
|
16
|
+
|
|
17
|
+
{{{
|
|
18
|
+
"some/path" => "http://localhost:4020/some/path"
|
|
19
|
+
"/some/path" => "http://localhost:4020/some/path"
|
|
20
|
+
"http://localhost:4020/some/path" => "http://localhost:4020/some/path"
|
|
21
|
+
}}}
|
|
22
|
+
|
|
23
|
+
@param url {String} the URL
|
|
24
|
+
@returns {String} the normalized URL
|
|
25
|
+
*/
|
|
26
|
+
normalizeURL: function(url) {
|
|
27
|
+
if (url.slice(0,1) == '/') {
|
|
28
|
+
url = window.location.protocol + '//' + window.location.host + url ;
|
|
29
|
+
} else if ((url.slice(0,5) == 'http:') || (url.slice(0,6) == 'https:')) {
|
|
30
|
+
// no change
|
|
31
|
+
} else {
|
|
32
|
+
url = window.location.href + '/' + url ;
|
|
33
|
+
}
|
|
34
|
+
return url ;
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
/** Return true if the number is between 0 and 1 */
|
|
38
|
+
isPercentage: function(val){
|
|
39
|
+
return (val<1 && val>0);
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
/** Return the left edge of the frame */
|
|
43
|
+
minX: function(frame) {
|
|
44
|
+
return frame.x || 0;
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
/** Return the right edge of the frame. */
|
|
48
|
+
maxX: function(frame) {
|
|
49
|
+
return (frame.x || 0) + (frame.width || 0);
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
/** Return the midpoint of the frame. */
|
|
53
|
+
midX: function(frame) {
|
|
54
|
+
return (frame.x || 0) + ((frame.width || 0) / 2) ;
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
/** Return the top edge of the frame */
|
|
58
|
+
minY: function(frame) {
|
|
59
|
+
return frame.y || 0 ;
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
/** Return the bottom edge of the frame */
|
|
63
|
+
maxY: function(frame) {
|
|
64
|
+
return (frame.y || 0) + (frame.height || 0) ;
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
/** Return the midpoint of the frame */
|
|
68
|
+
midY: function(frame) {
|
|
69
|
+
return (frame.y || 0) + ((frame.height || 0) / 2) ;
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
/** Returns the point that will center the frame X within the passed frame. */
|
|
73
|
+
centerX: function(innerFrame, outerFrame) {
|
|
74
|
+
return (outerFrame.width - innerFrame.width) / 2 ;
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
/** Return the point that will center the frame Y within the passed frame. */
|
|
78
|
+
centerY: function(innerFrame, outerFrame) {
|
|
79
|
+
return (outerFrame.height - innerFrame.height) /2 ;
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
The offset of an element.
|
|
84
|
+
|
|
85
|
+
This function returns the left and top offset of an element with respect to either the document, the
|
|
86
|
+
viewport or the element's parent element. In standard SproutCore applications, the coordinates of the
|
|
87
|
+
viewport are equivalent to the document, but a HTML5 application that wishes to use this component
|
|
88
|
+
of SproutCore might need to properly distinguish between the two.
|
|
89
|
+
|
|
90
|
+
For a useful discussion on the concepts of offsets and coordinates, see:
|
|
91
|
+
http://www.quirksmode.org/mobile/viewports.html.
|
|
92
|
+
|
|
93
|
+
@param {DOMElement|jQuery|String} elem the element to find the offset of.
|
|
94
|
+
This is passed to `jQuery()`, so any value supported by `jQuery()` will work.
|
|
95
|
+
@param {String} relativeToFlag flag to determine which relative element to determine offset by.
|
|
96
|
+
One of either: 'document', 'viewport' or 'parent' (default: 'document').
|
|
97
|
+
@returns {Object} the offset of the element as an Object (ie. Hash) in the form { left: value, top: value }.
|
|
98
|
+
*/
|
|
99
|
+
offset: function(elem, relativeToFlag) {
|
|
100
|
+
var userAgent,
|
|
101
|
+
index,
|
|
102
|
+
mobileBuildNumber,
|
|
103
|
+
result;
|
|
104
|
+
|
|
105
|
+
relativeToFlag = relativeToFlag || 'document';
|
|
106
|
+
|
|
107
|
+
if (relativeToFlag === 'parent') {
|
|
108
|
+
result = jQuery(elem).position();
|
|
109
|
+
} else {
|
|
110
|
+
result = jQuery(elem).offset();
|
|
111
|
+
|
|
112
|
+
// jQuery does not workaround a problem with Mobile Safari versions prior to 4.1 that add the scroll
|
|
113
|
+
// offset to the results of getBoundingClientRect.
|
|
114
|
+
//
|
|
115
|
+
// See http://dev.jquery.it/ticket/6446
|
|
116
|
+
if (SC.browser.mobileSafari) {
|
|
117
|
+
userAgent = navigator.userAgent;
|
|
118
|
+
index = userAgent.indexOf('Mobile/');
|
|
119
|
+
mobileBuildNumber = userAgent.substring(index + 7, index + 9);
|
|
120
|
+
|
|
121
|
+
if (parseInt(SC.browser.mobileSafari, 0) <= 532 || (mobileBuildNumber <= "8A")) {
|
|
122
|
+
result.left = result.left - window.pageXOffset;
|
|
123
|
+
result.top = result.top - window.pageYOffset;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Subtract the scroll offset for viewport coordinates
|
|
128
|
+
if (relativeToFlag === 'viewport') {
|
|
129
|
+
result.left = result.left - window.pageXOffset;
|
|
130
|
+
result.top = result.top - window.pageYOffset;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return result;
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
/** @deprecated
|
|
138
|
+
Deprecated. SC.offset() is more accurate, more flexible in the value for the element parameter and
|
|
139
|
+
easier to understand.
|
|
140
|
+
|
|
141
|
+
@param el The DOM element
|
|
142
|
+
@returns {Point} A hash with x, y offsets.
|
|
143
|
+
*/
|
|
144
|
+
viewportOffset: function(el) {
|
|
145
|
+
console.warn("SC.viewportOffset() has been deprecated in favor of SC.offset(). Please use SC.offset() from here on.");
|
|
146
|
+
var result = SC.offset(el, 'viewport');
|
|
147
|
+
|
|
148
|
+
return {x: result.left, y: result.top};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
}) ;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -316,3 +316,29 @@ function() {
|
|
|
316
316
|
equals(selectionSet.get('length'), 0, 'selection set should have length 0');
|
|
317
317
|
ok(indexSet === null, 'selection set should not still have an indexSet');
|
|
318
318
|
});
|
|
319
|
+
|
|
320
|
+
test("replacing content in an ArrayController propagates changes to bound arrangedObjects", function() {
|
|
321
|
+
equals(controller.getPath('arrangedObjects.length'), 5, "precond - controller has 5 items");
|
|
322
|
+
|
|
323
|
+
var obj, listChanged = 0;
|
|
324
|
+
|
|
325
|
+
SC.run(function() {
|
|
326
|
+
obj = SC.Object.create({
|
|
327
|
+
testController: controller,
|
|
328
|
+
listBinding: ".testController.arrangedObjects",
|
|
329
|
+
listDidChange: function() {
|
|
330
|
+
listChanged++;
|
|
331
|
+
}.observes('list')
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
equals(obj.getPath('list.length'), 5, "precond - binding has 5 items");
|
|
336
|
+
|
|
337
|
+
SC.run(function() {
|
|
338
|
+
controller.set('content', []);
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
equals(controller.getPath('arrangedObjects.length'), 0, "precond - controller has 5 items");
|
|
342
|
+
equals(obj.getPath('list.length'), 0, "binding has 0 items");
|
|
343
|
+
equals(listChanged, 1, "listDidChange was called");
|
|
344
|
+
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module("Template Panes");
|
|
2
|
+
|
|
3
|
+
test("Template panes append a main pane to the document body", function() {
|
|
4
|
+
var pane = SC.TemplatePane.append({
|
|
5
|
+
layerId: 'template-panes-are-so-cool',
|
|
6
|
+
|
|
7
|
+
template: SC.Handlebars.compile('<h1>foo bar baz</h1>')
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
ok(pane.get('layer'), "creates a layer for the pane");
|
|
11
|
+
equals(pane.$('#template-panes-are-so-cool').length, 1, "creates a view with the passed id");
|
|
12
|
+
|
|
13
|
+
pane.remove();
|
|
14
|
+
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/sparse_array.js
RENAMED
|
File without changes
|
|
File without changes
|
data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invalidate.js
RENAMED
|
File without changes
|
|
File without changes
|
data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/isPaused.js
RENAMED
|
File without changes
|
|
File without changes
|
data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/schedule.js
RENAMED
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
// ========================================================================
|
|
2
|
+
// SC Miscellaneous Utils Tests - documentOffset
|
|
3
|
+
// ========================================================================
|
|
4
|
+
|
|
5
|
+
/*global module test htmlbody ok equals same */
|
|
6
|
+
|
|
7
|
+
var pane, view1, view2, view3, view4;
|
|
8
|
+
|
|
9
|
+
htmlbody('<style> body { height: 1500px; width: 1500px; } </style>');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
module("SC.offset", {
|
|
13
|
+
|
|
14
|
+
setup: function() {
|
|
15
|
+
var viewportEl;
|
|
16
|
+
|
|
17
|
+
SC.RunLoop.begin();
|
|
18
|
+
|
|
19
|
+
// Even though a full SC app doesn't really allow the viewport to be scaled or scrolled by default (thus
|
|
20
|
+
// the offset by viewport will always equal offset by document), we simulate an app that uses a
|
|
21
|
+
// scrollable viewport to test the validity of the functions.
|
|
22
|
+
if (SC.browser.mobileSafari) {
|
|
23
|
+
viewportEl = $("[name='viewport']")[0];
|
|
24
|
+
|
|
25
|
+
viewportEl.setAttribute('content','initial-scale=0.9, minimum-scale=0.5, maximum-scale=1.2, user-scalable=yes, width=device-height');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
pane = SC.MainPane.create({
|
|
29
|
+
childViews: [
|
|
30
|
+
SC.View.extend({
|
|
31
|
+
classNames: 'upper'.w(),
|
|
32
|
+
layout: { top: 20, left: 20, width: 100, height: 100 },
|
|
33
|
+
childViews: [
|
|
34
|
+
SC.View.extend({
|
|
35
|
+
classNames: 'upper-inner'.w(),
|
|
36
|
+
layout: { top: 10, left: 10, width: 20, height: 20 }
|
|
37
|
+
})]
|
|
38
|
+
}),
|
|
39
|
+
SC.View.extend({
|
|
40
|
+
classNames: 'lower'.w(),
|
|
41
|
+
layout: { top: 1200, left: 20, width: 100, height: 100 },
|
|
42
|
+
childViews: [
|
|
43
|
+
SC.View.extend({
|
|
44
|
+
classNames: 'lower-inner'.w(),
|
|
45
|
+
layout: { top: 10, left: 10, width: 20, height: 20 }
|
|
46
|
+
})]
|
|
47
|
+
})]
|
|
48
|
+
|
|
49
|
+
// Useful for debugging in iOS
|
|
50
|
+
// /** Allow default touch events */
|
|
51
|
+
// touchStart: function(touch) {
|
|
52
|
+
// if (SC.browser.mobileSafari) touch.allowDefault();
|
|
53
|
+
// },
|
|
54
|
+
//
|
|
55
|
+
// touchesDragged: function(evt, touches) {
|
|
56
|
+
// if (SC.browser.mobileSafari) evt.allowDefault();
|
|
57
|
+
// },
|
|
58
|
+
//
|
|
59
|
+
// touchEnd: function(touch) {
|
|
60
|
+
// if (SC.browser.mobileSafari) touch.allowDefault();
|
|
61
|
+
// }
|
|
62
|
+
});
|
|
63
|
+
pane.append();
|
|
64
|
+
SC.RunLoop.end();
|
|
65
|
+
|
|
66
|
+
view1 = pane.childViews[0];
|
|
67
|
+
view2 = pane.childViews[1];
|
|
68
|
+
view3 = view1.childViews[0];
|
|
69
|
+
view4 = view2.childViews[0];
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
teardown: function() {
|
|
73
|
+
// Useful for debugging in iOS
|
|
74
|
+
// if (!SC.browser.mobileSafari) {
|
|
75
|
+
pane.remove();
|
|
76
|
+
pane = view1 = view2 = view3 = view4 = null;
|
|
77
|
+
// }
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
function checkDocumentOffset(element, top, left) {
|
|
83
|
+
var docOffset = SC.offset(element, 'document');
|
|
84
|
+
|
|
85
|
+
equals(docOffset.top, top, '%@ document offset top'.fmt(element[0].className));
|
|
86
|
+
equals(docOffset.left, left, '%@ document offset left'.fmt(element[0].className));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function checkViewportOffset(element, top, left) {
|
|
90
|
+
var viewOffset = SC.offset(element, 'viewport');
|
|
91
|
+
|
|
92
|
+
equals(viewOffset.top, top, '%@ viewport offset top'.fmt(element[0].className));
|
|
93
|
+
equals(viewOffset.left, left, '%@ viewport offset left'.fmt(element[0].className));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function checkParentOffset(element, top, left) {
|
|
97
|
+
var parentOffset = SC.offset(element, 'parent');
|
|
98
|
+
|
|
99
|
+
equals(parentOffset.top, top, '%@ parent offset top'.fmt(element[0].className));
|
|
100
|
+
equals(parentOffset.left, left, '%@ parent offset left'.fmt(element[0].className));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
test("Regular views", function() {
|
|
104
|
+
var element;
|
|
105
|
+
|
|
106
|
+
element = view1.$();
|
|
107
|
+
checkDocumentOffset(element, 20, 20);
|
|
108
|
+
checkViewportOffset(element, 20, 20);
|
|
109
|
+
checkParentOffset(element, 20, 20);
|
|
110
|
+
|
|
111
|
+
element = view3.$();
|
|
112
|
+
checkDocumentOffset(element, 30, 30);
|
|
113
|
+
checkViewportOffset(element, 30, 30);
|
|
114
|
+
checkParentOffset(element, 10, 10);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
test("A regular view not visible within the visual viewport", function() {
|
|
118
|
+
var element;
|
|
119
|
+
|
|
120
|
+
element = view2.$();
|
|
121
|
+
checkDocumentOffset(element, 1200, 20);
|
|
122
|
+
checkViewportOffset(element, 1200, 20);
|
|
123
|
+
checkParentOffset(element, 1200, 20);
|
|
124
|
+
|
|
125
|
+
element = view4.$();
|
|
126
|
+
checkDocumentOffset(element, 1210, 30);
|
|
127
|
+
checkViewportOffset(element, 1210, 30);
|
|
128
|
+
checkParentOffset(element, 10, 10);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
function testPosition4(element1, element2, element3, element4) {
|
|
132
|
+
checkDocumentOffset(element1, 20, 20);
|
|
133
|
+
checkViewportOffset(element1, -80, -80);
|
|
134
|
+
checkParentOffset(element1, 20, 20);
|
|
135
|
+
|
|
136
|
+
checkDocumentOffset(element3, 30, 30);
|
|
137
|
+
checkViewportOffset(element3, -70, -70);
|
|
138
|
+
checkParentOffset(element3, 10, 10);
|
|
139
|
+
|
|
140
|
+
checkDocumentOffset(element2, 1200, 20);
|
|
141
|
+
checkViewportOffset(element2, 1100, -80);
|
|
142
|
+
checkParentOffset(element2, 1200, 20);
|
|
143
|
+
|
|
144
|
+
checkDocumentOffset(element4, 1210, 30);
|
|
145
|
+
checkViewportOffset(element4, 1110, -70);
|
|
146
|
+
checkParentOffset(element4, 10, 10);
|
|
147
|
+
|
|
148
|
+
window.start(); // continue the tests
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function testPosition3(element1, element2, element3, element4) {
|
|
152
|
+
checkDocumentOffset(element1, 20, 20);
|
|
153
|
+
checkViewportOffset(element1, -80, 10);
|
|
154
|
+
checkParentOffset(element1, 20, 20);
|
|
155
|
+
|
|
156
|
+
checkDocumentOffset(element3, 30, 30);
|
|
157
|
+
checkViewportOffset(element3, -70, 20);
|
|
158
|
+
checkParentOffset(element3, 10, 10);
|
|
159
|
+
|
|
160
|
+
checkDocumentOffset(element2, 1200, 20);
|
|
161
|
+
checkViewportOffset(element2, 1100, 10);
|
|
162
|
+
checkParentOffset(element2, 1200, 20);
|
|
163
|
+
|
|
164
|
+
checkDocumentOffset(element4, 1210, 30);
|
|
165
|
+
checkViewportOffset(element4, 1110, 20);
|
|
166
|
+
checkParentOffset(element4, 10, 10);
|
|
167
|
+
|
|
168
|
+
window.start();
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function testPosition2(element1, element2, element3, element4) {
|
|
172
|
+
checkDocumentOffset(element1, 20, 20);
|
|
173
|
+
checkViewportOffset(element1, 10, 10);
|
|
174
|
+
checkParentOffset(element1, 20, 20);
|
|
175
|
+
|
|
176
|
+
checkDocumentOffset(element3, 30, 30);
|
|
177
|
+
checkViewportOffset(element3, 20, 20);
|
|
178
|
+
checkParentOffset(element3, 10, 10);
|
|
179
|
+
|
|
180
|
+
checkDocumentOffset(element2, 1200, 20);
|
|
181
|
+
checkViewportOffset(element2, 1190, 10);
|
|
182
|
+
checkParentOffset(element2, 1200, 20);
|
|
183
|
+
|
|
184
|
+
checkDocumentOffset(element4, 1210, 30);
|
|
185
|
+
checkViewportOffset(element4, 1200, 20);
|
|
186
|
+
checkParentOffset(element4, 10, 10);
|
|
187
|
+
|
|
188
|
+
window.start();
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
function testPosition1(element1, element2, element3, element4) {
|
|
192
|
+
// For some reason, the scroll jumps back to 0,0 if we don't set it here
|
|
193
|
+
window.scrollTo(0, 10);
|
|
194
|
+
|
|
195
|
+
checkDocumentOffset(element1, 20, 20);
|
|
196
|
+
checkViewportOffset(element1, 10, 20);
|
|
197
|
+
checkParentOffset(element1, 20, 20);
|
|
198
|
+
|
|
199
|
+
checkDocumentOffset(element3, 30, 30);
|
|
200
|
+
checkViewportOffset(element3, 20, 30);
|
|
201
|
+
checkParentOffset(element3, 10, 10);
|
|
202
|
+
|
|
203
|
+
checkDocumentOffset(element2, 1200, 20);
|
|
204
|
+
checkViewportOffset(element2, 1190, 20);
|
|
205
|
+
checkParentOffset(element2, 1200, 20);
|
|
206
|
+
|
|
207
|
+
checkDocumentOffset(element4, 1210, 30);
|
|
208
|
+
checkViewportOffset(element4, 1200, 30);
|
|
209
|
+
checkParentOffset(element4, 10, 10);
|
|
210
|
+
|
|
211
|
+
window.start();
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
test("A regular view with window scroll offset top:10", function() {
|
|
215
|
+
var element1 = view1.$(),
|
|
216
|
+
element2 = view2.$(),
|
|
217
|
+
element3 = view3.$(),
|
|
218
|
+
element4 = view4.$();
|
|
219
|
+
|
|
220
|
+
window.stop();
|
|
221
|
+
|
|
222
|
+
window.scrollTo(0, 10);
|
|
223
|
+
SC.RunLoop.begin();
|
|
224
|
+
SC.Timer.schedule({ target: this, action: function() { return testPosition1(element1, element2, element3, element4); }, interval: 200 });
|
|
225
|
+
SC.RunLoop.end();
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
test("A regular view with window scroll offset top:10, left: 10", function() {
|
|
229
|
+
var element1 = view1.$(),
|
|
230
|
+
element2 = view2.$(),
|
|
231
|
+
element3 = view3.$(),
|
|
232
|
+
element4 = view4.$();
|
|
233
|
+
|
|
234
|
+
window.stop();
|
|
235
|
+
|
|
236
|
+
window.scrollTo(10, 10);
|
|
237
|
+
SC.RunLoop.begin();
|
|
238
|
+
SC.Timer.schedule({ target: this, action: function() { return testPosition2(element1, element2, element3, element4); }, interval: 200 });
|
|
239
|
+
SC.RunLoop.end();
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
test("A regular view with window scroll offset top:100, left: 10", function() {
|
|
243
|
+
var element1 = view1.$(),
|
|
244
|
+
element2 = view2.$(),
|
|
245
|
+
element3 = view3.$(),
|
|
246
|
+
element4 = view4.$();
|
|
247
|
+
|
|
248
|
+
window.stop();
|
|
249
|
+
|
|
250
|
+
window.scrollTo(10, 100);
|
|
251
|
+
SC.RunLoop.begin();
|
|
252
|
+
SC.Timer.schedule({ target: this, action: function() { return testPosition3(element1, element2, element3, element4); }, interval: 200 });
|
|
253
|
+
SC.RunLoop.end();
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
test("A regular view with window scroll offset top:100, left: 100", function() {
|
|
257
|
+
var element1 = view1.$(),
|
|
258
|
+
element2 = view2.$(),
|
|
259
|
+
element3 = view3.$(),
|
|
260
|
+
element4 = view4.$();
|
|
261
|
+
|
|
262
|
+
window.stop();
|
|
263
|
+
|
|
264
|
+
window.scrollTo(100, 100);
|
|
265
|
+
SC.RunLoop.begin();
|
|
266
|
+
SC.Timer.schedule({ target: this, action: function() { return testPosition4(element1, element2, element3, element4); }, interval: 200 });
|
|
267
|
+
SC.RunLoop.end();
|
|
268
|
+
});
|
data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/rect.js
RENAMED
|
File without changes
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// ========================================================================
|
|
2
|
+
// MainPane Unit Tests
|
|
3
|
+
// ========================================================================
|
|
4
|
+
/*globals module test ok isObj equals expects */
|
|
5
|
+
|
|
6
|
+
// ..........................................................
|
|
7
|
+
// BASE TESTS
|
|
8
|
+
//
|
|
9
|
+
// These tests exercise the API. See below for tests that cover edge
|
|
10
|
+
// conditions. If you find a bug, we recommend that you add a test in the
|
|
11
|
+
// edge case section.
|
|
12
|
+
|
|
13
|
+
(function() {
|
|
14
|
+
var FRAME = { x: 10, y: 10, width: 30, height: 30 } ;
|
|
15
|
+
|
|
16
|
+
var pane, view ; // test globals
|
|
17
|
+
|
|
18
|
+
module('SC.MainPane', {
|
|
19
|
+
setup: function() {
|
|
20
|
+
pane = SC.MainPane.create();
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
teardown: function() {
|
|
24
|
+
pane.remove();
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test("should not be attached before calling append()", function() {
|
|
29
|
+
equals(pane.get('isPaneAttached'), NO) ;
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test("should attach when calling append()", function() {
|
|
33
|
+
pane.append() ;
|
|
34
|
+
equals(pane.get('isPaneAttached'), YES) ;
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test("appending should make pane main & key", function() {
|
|
38
|
+
pane.append();
|
|
39
|
+
var r = pane.get('rootResponder');
|
|
40
|
+
equals(r.get('mainPane'), pane, 'should become mainPane');
|
|
41
|
+
equals(r.get('keyPane'), pane, 'should become keyPane');
|
|
42
|
+
});
|
|
43
|
+
})();
|