sproutcore 1.5.0.rc.2 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +12 -0
- data/VERSION.yml +1 -1
- data/lib/buildtasks/manifest.rake +2 -1
- data/lib/frameworks/sproutcore/Buildfile +3 -17
- data/lib/frameworks/sproutcore/CHANGELOG.md +127 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/buttons_page.js +15 -3
- data/lib/frameworks/sproutcore/apps/test_controls/resources/checkboxes_page.js +9 -2
- data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +14 -14
- data/lib/frameworks/sproutcore/apps/test_controls/resources/radio_page.js +8 -2
- data/lib/frameworks/sproutcore/apps/test_controls/resources/tab_page.js +10 -2
- data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +2 -3
- data/lib/frameworks/sproutcore/frameworks/ajax/fixtures/file_exists.json +1 -0
- data/lib/frameworks/sproutcore/frameworks/ajax/fixtures/malformed.json +11 -0
- data/lib/frameworks/sproutcore/frameworks/{foundation → ajax}/system/request.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/{foundation → ajax}/system/response.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{foundation → ajax}/tests/system/request.js +1 -4
- data/lib/frameworks/sproutcore/frameworks/animation/core.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +23 -33
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/function.js +39 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/bind.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/localization.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +60 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +25 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/core.css +4 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +8 -11
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +9 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/{mixins → system}/string.js +43 -41
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +28 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/text_field_support.js +25 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +25 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +69 -37
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +84 -80
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +12 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +52 -10
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +47 -37
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +0 -25
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +261 -261
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +21 -5
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +38 -13
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +13 -5
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/loadRecords.js +100 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/unloadRecord.js +55 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/unloadRecords.js +76 -27
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/debug/drag.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/select_button.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +21 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +26 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/image_button/ui.js +31 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +62 -41
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/file.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +9 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/workspace.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +6 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/README +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/TODO +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/beautify.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/design.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/file.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/files.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/layout.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/library.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/page.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/property.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/property_editor.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/target.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/targets.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/view_configs.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/core.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/core_file.js +3 -3
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/data_source.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/app_page.js +5 -5
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/app-selector.css +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/button.css +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/dock.css +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/general.css +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/main-page.css +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/menu.css +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/modal.css +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/picker.css +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/search.css +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/text-field.css +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/dialogs.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500.eot +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500.otf +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500.woff +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500_italic.eot +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500_italic.otf +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500_italic.woff +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/app-selector/choose-app.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/app-selector/list-item-sel.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/active-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/regular-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/active-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/regular-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/sel-active-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/sel-disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/sel-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/actions-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/actions.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/inspector-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/inspector.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/library-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/library.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/projects-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/projects.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/run-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/run.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/save-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/save.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/logos/greenhouse-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/logos/greenhouse-s.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/logos/sproutcore.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/main-bg.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/bottom-left.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/bottom-right.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/bottom.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/close-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/close.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/left.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-bottom.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-left.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-right.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-top.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/right.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/search-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/search.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/top-left.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/top-right.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/top.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/toolbar-bg.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/inspectors.js +2 -2
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/loading.rhtml +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/main_page.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/strings.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/fixtures/file.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/main.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/mixins/drop_down.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/models/design.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/models/dir.js +1 -1
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/models/file.js +1 -1
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/models/target.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/models/view_config.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/resources/test_page.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/states/inspector.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/states/library.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/states/main.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/states/modals.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/states/ready.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/design.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/designs.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/file.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/files.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/models/file.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/models/view_config.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/views/list_item.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/views/plist_item.js +2 -2
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/theme.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/anchor.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/application_list_item.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/event_blocker.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/label_designer.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/list_item.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/plist_item.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/simple_button.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/tear_off_picker.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/web.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/coders/design.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/coders/object.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/controllers/controllers.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/controllers/design.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/controllers/designs.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/controllers/page_design.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/controllers/page_files.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/css/css_rule.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/css/css_style.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/css/css_style_sheet.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/designers/button.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/designers/label.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/designers/object_designer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/designers/tab.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/designers/text_field.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/designers/view_designer.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/css/designer.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/design_page.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/high_light.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/controller.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-divider.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-sel-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-sel-divider.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/main-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/page.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/pane.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/view.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/selection_handles.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/ext/binding.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/ext/object.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/ext/page.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/ext/view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/mixins/button.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/mixins/snap_lines.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/tests/coders/page.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/tests/designers/view_designer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/views/designer_drop_target.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/views/drawing.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/views/high_light.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/views/page_item_view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/views/selection_handles.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +99 -84
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +10 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/forms/{renderer_delegates → render_delegates}/form.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/forms/{renderer_delegates → render_delegates}/form_row.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/forms/views/form_row.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/core.js +23 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/checkbox_view.css +5 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/radio_view.css +7 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/ext/string.js +89 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/control.js +8 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +10 -11
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +67 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +20 -20
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +149 -174
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +94 -103
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor_delegate.js +132 -139
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +66 -56
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +19 -20
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +10 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +17 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +63 -54
- data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/cookie.js +20 -21
- data/lib/frameworks/sproutcore/frameworks/foundation/system/exception_handler.js +5 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/{mixins → system}/string.js +106 -82
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/{mixins → system}/string.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +10 -12
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +44 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +45 -25
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +10 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/nextValidKeyView.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +38 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +38 -11
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/email.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/not_empty.js +5 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/number.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/positive_integer.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +5 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +10 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/{mixins → views}/inline_text_field.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +73 -61
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/media/views/simple_controls.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/media/views/video.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +7 -380
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +92 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/date.js +15 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +189 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/string.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +88 -189
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +3 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/system/function.js +76 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → runtime}/system/json.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +60 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +27 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +26 -1
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → runtime}/tests/system/json.js +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/button.js +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +4 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/panel.js +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/well.js +1 -1
- data/lib/sproutcore/rack/proxy.rb +1 -1
- data/lib/sproutcore/tools/docs.rb +1 -1
- data/lib/sproutcore/tools/gen.rb +1 -1
- data/lib/sproutcore/tools/init.rb +1 -1
- data/lib/sproutcore/tools/server.rb +9 -1
- data/sproutcore.gemspec +1 -1
- metadata +247 -429
- data/design/Technical Notes.graffle/QuickLook/Preview.pdf +0 -0
- data/design/Technical Notes.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/design/Technical Notes.graffle/data.plist +0 -5534
- data/design/Technical Notes.graffle/image8.png +0 -0
- data/lib/frameworks/sproutcore/apps/docs/core.js +0 -27
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +0 -14378
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image11.png +0 -0
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image13.png +0 -0
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image8.png +0 -0
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -0
- data/lib/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +0 -9
- data/lib/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +0 -22
- data/lib/frameworks/sproutcore/apps/docs/english.lproj/strings.js +0 -15
- data/lib/frameworks/sproutcore/apps/docs/main.js +0 -30
- data/lib/frameworks/sproutcore/design/CollectionView State Charts.graffle +0 -4848
- data/lib/frameworks/sproutcore/design/Design Charts.graffle +0 -16845
- data/lib/frameworks/sproutcore/design/Sproutcore_DatastoreDesign.graffle/QuickLook/Preview.pdf +0 -0
- data/lib/frameworks/sproutcore/design/Sproutcore_DatastoreDesign.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/lib/frameworks/sproutcore/design/Sproutcore_DatastoreDesign.graffle/data.plist +0 -19588
- data/lib/frameworks/sproutcore/design/Sproutcore_DatastoreDesign.graffle/image8.png +0 -0
- data/lib/frameworks/sproutcore/design/Sproutcore_Design_Template.graffle/QuickLook/Preview.pdf +0 -0
- data/lib/frameworks/sproutcore/design/Sproutcore_Design_Template.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/lib/frameworks/sproutcore/design/Sproutcore_Design_Template.graffle/data.plist +0 -1452
- data/lib/frameworks/sproutcore/design/Sproutcore_Design_Template.graffle/image8.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/QuickLook/Preview.pdf +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/data.plist +0 -24187
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image10.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image11.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image13.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image15.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image16.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image17.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image18.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image19.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image22.tiff +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image23.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image24.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image25.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image30.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image31.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image8.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image9.png +0 -0
- data/lib/frameworks/sproutcore/design/greenhouse-statechart.graffle +0 -9025
- data/lib/frameworks/sproutcore/design/iphone-webapp-loading.psd +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scene_view/databind.js +0 -111
- data/lib/frameworks/sproutcore/frameworks/foundation/system/staticqueue.js +0 -59
- data/lib/frameworks/sproutcore/frameworks/foundation/system/time.js +0 -474
- data/lib/frameworks/sproutcore/themes/ace/designs/dark.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/light.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/popup/active_select.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/popup/normal_select.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/collection/source-list/selection.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/checkmark.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/checkmark_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/down.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu_item.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/up.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/panel.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/pointers.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_empty.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_notoolbar.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers_notoolbar.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_content.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_indeterminate_content.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_track.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_mixed.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_mixed_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_selected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_selected_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_unselected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/thumb.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/thumb.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_normal.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_normal.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_normal.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_normal.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/track.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/track.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/toolbar/toolbar.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_handle.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_off.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_on.psd +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/Panel.drawit/Data +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/SproutCore Theme Buttons.psd +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView Pattern.drawit/Data +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-x.drawit/Data +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-y.drawit/Data +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sc-theme-repeat-x-2.psd +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sc-theme-repeat-x.psd +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sc-theme-sprite.psd +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sc-theme-ysprite.psd +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/shared-icons.psd +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sproutcore-logo.psd +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sticky-note.psd +0 -0
@@ -0,0 +1,92 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore Costello - Property Observing Library
|
3
|
+
// Copyright: ©2006-2011 Strobe Inc. and contributors.
|
4
|
+
// Portions ©2008-2011 Apple Inc. All rights reserved.
|
5
|
+
// License: Licensed under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
sc_require('mixins/array');
|
9
|
+
|
10
|
+
SC.supplement(Array.prototype, SC.CoreArray);
|
11
|
+
|
12
|
+
// Because Arrays are dealt with so much, we add specialized functions.
|
13
|
+
|
14
|
+
SC.mixin(Array.prototype, {
|
15
|
+
|
16
|
+
// primitive for array support.
|
17
|
+
replace: function(idx, amt, objects) {
|
18
|
+
if (this.isFrozen) { throw SC.FROZEN_ERROR ; }
|
19
|
+
|
20
|
+
var args;
|
21
|
+
var len = objects ? (objects.get ? objects.get('length') : objects.length) : 0;
|
22
|
+
|
23
|
+
// Notify that array content is about to mutate.
|
24
|
+
this.arrayContentWillChange(idx, amt, len);
|
25
|
+
|
26
|
+
if (len === 0) {
|
27
|
+
this.splice(idx, amt) ;
|
28
|
+
} else {
|
29
|
+
args = [idx, amt].concat(objects) ;
|
30
|
+
this.splice.apply(this,args) ;
|
31
|
+
}
|
32
|
+
|
33
|
+
this.arrayContentDidChange(idx, amt, len);
|
34
|
+
this.enumerableContentDidChange(idx, amt, len - amt) ;
|
35
|
+
return this ;
|
36
|
+
},
|
37
|
+
|
38
|
+
// If you ask for an unknown property, then try to collect the value
|
39
|
+
// from member items.
|
40
|
+
unknownProperty: function(key, value) {
|
41
|
+
var ret = this.reducedProperty(key, value) ;
|
42
|
+
if ((value !== undefined) && ret === undefined) {
|
43
|
+
ret = this[key] = value;
|
44
|
+
}
|
45
|
+
return ret ;
|
46
|
+
}
|
47
|
+
|
48
|
+
});
|
49
|
+
|
50
|
+
if (Array.prototype.indexOf === SC.CoreArray.indexOf) {
|
51
|
+
/**
|
52
|
+
Returns the index for a particular object in the index.
|
53
|
+
|
54
|
+
@param {Object} object the item to search for
|
55
|
+
@param {Number} startAt optional starting location to search, default 0
|
56
|
+
@returns {Number} index of -1 if not found
|
57
|
+
*/
|
58
|
+
Array.prototype.indexOf = function(object, startAt) {
|
59
|
+
var idx, len = this.length;
|
60
|
+
|
61
|
+
if (startAt === undefined) startAt = 0;
|
62
|
+
else startAt = (startAt < 0) ? Math.ceil(startAt) : Math.floor(startAt);
|
63
|
+
if (startAt < 0) startAt += len;
|
64
|
+
|
65
|
+
for(idx=startAt;idx<len;idx++) {
|
66
|
+
if (this[idx] === object) return idx ;
|
67
|
+
}
|
68
|
+
return -1;
|
69
|
+
} ;
|
70
|
+
}
|
71
|
+
|
72
|
+
if (Array.prototype.lastIndexOf === SC.CoreArray.lastIndexOf) {
|
73
|
+
/**
|
74
|
+
Returns the last index for a particular object in the index.
|
75
|
+
|
76
|
+
@param {Object} object the item to search for
|
77
|
+
@param {Number} startAt optional starting location to search, default 0
|
78
|
+
@returns {Number} index of -1 if not found
|
79
|
+
*/
|
80
|
+
Array.prototype.lastIndexOf = function(object, startAt) {
|
81
|
+
var idx, len = this.length;
|
82
|
+
|
83
|
+
if (startAt === undefined) startAt = len-1;
|
84
|
+
else startAt = (startAt < 0) ? Math.ceil(startAt) : Math.floor(startAt);
|
85
|
+
if (startAt < 0) startAt += len;
|
86
|
+
|
87
|
+
for(idx=startAt;idx>=0;idx--) {
|
88
|
+
if (this[idx] === object) return idx ;
|
89
|
+
}
|
90
|
+
return -1;
|
91
|
+
};
|
92
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore Costello - Property Observing Library
|
3
|
+
// Copyright: ©2006-2011 Strobe Inc. and contributors.
|
4
|
+
// Portions ©2008-2011 Apple Inc. All rights reserved.
|
5
|
+
// License: Licensed under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
if (!Date.now) {
|
9
|
+
/**
|
10
|
+
@ignore
|
11
|
+
*/
|
12
|
+
Date.now = function() {
|
13
|
+
return new Date().getTime() ;
|
14
|
+
};
|
15
|
+
}
|
@@ -0,0 +1,189 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore Costello - Property Observing Library
|
3
|
+
// Copyright: ©2006-2011 Strobe Inc. and contributors.
|
4
|
+
// Portions ©2008-2011 Apple Inc. All rights reserved.
|
5
|
+
// License: Licensed under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
sc_require('system/function');
|
9
|
+
|
10
|
+
SC.mixin(Function.prototype,
|
11
|
+
/** @lends Function.prototype */ {
|
12
|
+
|
13
|
+
/**
|
14
|
+
Indicates that the function should be treated as a computed property.
|
15
|
+
|
16
|
+
Computed properties are methods that you want to treat as if they were
|
17
|
+
static properties. When you use get() or set() on a computed property,
|
18
|
+
the object will call the property method and return its value instead of
|
19
|
+
returning the method itself. This makes it easy to create "virtual
|
20
|
+
properties" that are computed dynamically from other properties.
|
21
|
+
|
22
|
+
Consider the following example:
|
23
|
+
|
24
|
+
contact = SC.Object.create({
|
25
|
+
|
26
|
+
firstName: "Charles",
|
27
|
+
lastName: "Jolley",
|
28
|
+
|
29
|
+
// This is a computed property!
|
30
|
+
fullName: function() {
|
31
|
+
return this.getEach('firstName','lastName').compact().join(' ') ;
|
32
|
+
}.property('firstName', 'lastName'),
|
33
|
+
|
34
|
+
// this is not
|
35
|
+
getFullName: function() {
|
36
|
+
return this.getEach('firstName','lastName').compact().join(' ') ;
|
37
|
+
}
|
38
|
+
});
|
39
|
+
|
40
|
+
contact.get('firstName') ;
|
41
|
+
--> "Charles"
|
42
|
+
|
43
|
+
contact.get('fullName') ;
|
44
|
+
--> "Charles Jolley"
|
45
|
+
|
46
|
+
contact.get('getFullName') ;
|
47
|
+
--> function()
|
48
|
+
|
49
|
+
Note that when you get the fullName property, SproutCore will call the
|
50
|
+
fullName() function and return its value whereas when you get() a property
|
51
|
+
that contains a regular method (such as getFullName above), then the
|
52
|
+
function itself will be returned instead.
|
53
|
+
|
54
|
+
Using Dependent Keys
|
55
|
+
----
|
56
|
+
|
57
|
+
Computed properties are often computed dynamically from other member
|
58
|
+
properties. Whenever those properties change, you need to notify any
|
59
|
+
object that is observing the computed property that the computed property
|
60
|
+
has changed also. We call these properties the computed property is based
|
61
|
+
upon "dependent keys".
|
62
|
+
|
63
|
+
For example, in the contact object above, the fullName property depends on
|
64
|
+
the firstName and lastName property. If either property value changes,
|
65
|
+
any observer watching the fullName property will need to be notified as
|
66
|
+
well.
|
67
|
+
|
68
|
+
You inform SproutCore of these dependent keys by passing the key names
|
69
|
+
as parameters to the property() function. Whenever the value of any key
|
70
|
+
you name here changes, the computed property will be marked as changed
|
71
|
+
also.
|
72
|
+
|
73
|
+
You should always register dependent keys for computed properties to
|
74
|
+
ensure they update.
|
75
|
+
|
76
|
+
Sometimes you may need to depend on keys that are several objects deep. In
|
77
|
+
that case, you can provide a path to property():
|
78
|
+
|
79
|
+
capitalizedName: function() {
|
80
|
+
return this.getPath('person.fullName').toUpper();
|
81
|
+
}.property('person.firstName')
|
82
|
+
|
83
|
+
This will cause observers of +capitalizedName+ to be fired when either
|
84
|
+
+fullName+ _or_ +person+ changes.
|
85
|
+
|
86
|
+
Using Computed Properties as Setters
|
87
|
+
---
|
88
|
+
|
89
|
+
Computed properties can be used to modify the state of an object as well
|
90
|
+
as to return a value. Unlike many other key-value system, you use the
|
91
|
+
same method to both get and set values on a computed property. To
|
92
|
+
write a setter, simply declare two extra parameters: key and value.
|
93
|
+
|
94
|
+
Whenever your property function is called as a setter, the value
|
95
|
+
parameter will be set. Whenever your property is called as a getter the
|
96
|
+
value parameter will be undefined.
|
97
|
+
|
98
|
+
For example, the following object will split any full name that you set
|
99
|
+
into a first name and last name components and save them.
|
100
|
+
|
101
|
+
contact = SC.Object.create({
|
102
|
+
|
103
|
+
fullName: function(key, value) {
|
104
|
+
if (value !== undefined) {
|
105
|
+
var parts = value.split(' ') ;
|
106
|
+
this.beginPropertyChanges()
|
107
|
+
.set('firstName', parts[0])
|
108
|
+
.set('lastName', parts[1])
|
109
|
+
.endPropertyChanges() ;
|
110
|
+
}
|
111
|
+
return this.getEach('firstName', 'lastName').compact().join(' ');
|
112
|
+
}.property('firstName','lastName')
|
113
|
+
|
114
|
+
}) ;
|
115
|
+
|
116
|
+
Why Use The Same Method for Getters and Setters?
|
117
|
+
---
|
118
|
+
|
119
|
+
Most property-based frameworks expect you to write two methods for each
|
120
|
+
property but SproutCore only uses one. We do this because most of the time
|
121
|
+
when you write a setter is is basically a getter plus some extra work.
|
122
|
+
There is little added benefit in writing both methods when you can
|
123
|
+
conditionally exclude part of it. This helps to keep your code more
|
124
|
+
compact and easier to maintain.
|
125
|
+
|
126
|
+
@param {String...} dependentKeys optional set of dependent keys
|
127
|
+
@returns {Function} the declared function instance
|
128
|
+
*/
|
129
|
+
property: function() {
|
130
|
+
return SC.Function.property(this, arguments);
|
131
|
+
},
|
132
|
+
|
133
|
+
/**
|
134
|
+
You can call this method on a computed property to indicate that the
|
135
|
+
property is cacheable (or not cacheable). By default all computed
|
136
|
+
properties are not cached. Enabling this feature will allow SproutCore
|
137
|
+
to cache the return value of your computed property and to use that
|
138
|
+
value until one of your dependent properties changes or until you
|
139
|
+
invoke propertyDidChange() and name the computed property itself.
|
140
|
+
|
141
|
+
If you do not specify this option, computed properties are assumed to be
|
142
|
+
not cacheable.
|
143
|
+
|
144
|
+
@param {Boolean} aFlag optionally indicate cacheable or no, default YES
|
145
|
+
@returns {Function} reciever, useful for chaining calls.
|
146
|
+
*/
|
147
|
+
cacheable: function(aFlag) {
|
148
|
+
return SC.Function.cacheable(this, aFlag);
|
149
|
+
},
|
150
|
+
|
151
|
+
/**
|
152
|
+
Indicates that the computed property is volatile. Normally SproutCore
|
153
|
+
assumes that your computed property is idempotent. That is, calling
|
154
|
+
set() on your property more than once with the same value has the same
|
155
|
+
effect as calling it only once.
|
156
|
+
|
157
|
+
All non-computed properties are idempotent and normally you should make
|
158
|
+
your computed properties behave the same way. However, if you need to
|
159
|
+
make your property change its return value everytime your method is
|
160
|
+
called, you may chain this to your property to make it volatile.
|
161
|
+
|
162
|
+
If you do not specify this option, properties are assumed to be
|
163
|
+
non-volatile.
|
164
|
+
|
165
|
+
@param {Boolean} aFlag optionally indicate state, default to YES
|
166
|
+
@returns {Function} reciever, useful for chaining calls.
|
167
|
+
*/
|
168
|
+
idempotent: function(aFlag) {
|
169
|
+
return SC.Function.idempotent(this, aFlag);
|
170
|
+
},
|
171
|
+
|
172
|
+
enhance: function() {
|
173
|
+
return SC.Function.enhance(this);
|
174
|
+
},
|
175
|
+
|
176
|
+
/**
|
177
|
+
Declare that a function should observe an object or property at the named
|
178
|
+
path. Note that the path is used only to construct the observation one time.
|
179
|
+
|
180
|
+
@param {String...} propertyPaths A list of strings which indicate the
|
181
|
+
properties being observed
|
182
|
+
|
183
|
+
@returns {Function} reciever, useful for chaining calls.
|
184
|
+
*/
|
185
|
+
observes: function(propertyPaths) {
|
186
|
+
return SC.Function.observes(this, arguments);
|
187
|
+
}
|
188
|
+
|
189
|
+
});
|
@@ -0,0 +1,31 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore Costello - Property Observing Library
|
3
|
+
// Copyright: ©2006-2011 Strobe Inc. and contributors.
|
4
|
+
// Portions ©2008-2011 Apple Inc. All rights reserved.
|
5
|
+
// License: Licensed under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
sc_require('system/string');
|
9
|
+
|
10
|
+
/**
|
11
|
+
@namespace
|
12
|
+
Extends String by adding a few helpful methods.
|
13
|
+
*/
|
14
|
+
SC.mixin(String.prototype,
|
15
|
+
/** @scope String.prototype */ {
|
16
|
+
|
17
|
+
/**
|
18
|
+
@see SC.String.fmt
|
19
|
+
*/
|
20
|
+
fmt: function() {
|
21
|
+
return SC.String.fmt(this, arguments);
|
22
|
+
},
|
23
|
+
|
24
|
+
/**
|
25
|
+
@see SC.String.w
|
26
|
+
*/
|
27
|
+
w: function() {
|
28
|
+
return SC.String.w(this);
|
29
|
+
}
|
30
|
+
|
31
|
+
});
|
@@ -7,45 +7,14 @@
|
|
7
7
|
|
8
8
|
// note: SC.Observable also enhances array. make sure we are called after
|
9
9
|
// SC.Observable so our version of unknownProperty wins.
|
10
|
+
sc_require('ext/function');
|
10
11
|
sc_require('mixins/observable');
|
11
12
|
sc_require('mixins/enumerable');
|
12
13
|
sc_require('system/range_observer');
|
13
14
|
|
14
|
-
SC.OUT_OF_RANGE_EXCEPTION = "Index out of range"
|
15
|
+
SC.OUT_OF_RANGE_EXCEPTION = "Index out of range";
|
15
16
|
|
16
|
-
/**
|
17
|
-
@namespace
|
18
|
-
|
19
|
-
This module implements Observer-friendly Array-like behavior. This mixin is
|
20
|
-
picked up by the Array class as well as other controllers, etc. that want to
|
21
|
-
appear to be arrays.
|
22
|
-
|
23
|
-
Unlike SC.Enumerable, this mixin defines methods specifically for
|
24
|
-
collections that provide index-ordered access to their contents. When you
|
25
|
-
are designing code that needs to accept any kind of Array-like object, you
|
26
|
-
should use these methods instead of Array primitives because these will
|
27
|
-
properly notify observers of changes to the array.
|
28
|
-
|
29
|
-
Although these methods are efficient, they do add a layer of indirection to
|
30
|
-
your application so it is a good idea to use them only when you need the
|
31
|
-
flexibility of using both true JavaScript arrays and "virtual" arrays such
|
32
|
-
as controllers and collections.
|
33
|
-
|
34
|
-
You can use the methods defined in this module to access and modify array
|
35
|
-
contents in a KVO-friendly way. You can also be notified whenever the
|
36
|
-
membership if an array changes by changing the syntax of the property to
|
37
|
-
.observes('*myProperty.[]') .
|
38
|
-
|
39
|
-
To support SC.Array in your own class, you must override two
|
40
|
-
primitives to use it: replace() and objectAt().
|
41
|
-
|
42
|
-
Note that the SC.Array mixin also incorporates the SC.Enumerable mixin. All
|
43
|
-
SC.Array-like objects are also enumerable.
|
44
|
-
|
45
|
-
@extends SC.Enumerable
|
46
|
-
@since SproutCore 0.9.0
|
47
|
-
*/
|
48
|
-
SC.Array = /** @scope SC.Array.prototype */{
|
17
|
+
SC.CoreArray = /** @lends SC.Array.prototype */ {
|
49
18
|
|
50
19
|
/**
|
51
20
|
Walk like a duck - use isSCArray to avoid conflicts
|
@@ -89,6 +58,46 @@ SC.Array = /** @scope SC.Array.prototype */{
|
|
89
58
|
throw "replace() must be implemented to support SC.Array" ;
|
90
59
|
},
|
91
60
|
|
61
|
+
/**
|
62
|
+
Returns the index for a particular object in the index.
|
63
|
+
|
64
|
+
@param {Object} object the item to search for
|
65
|
+
@param {Number} startAt optional starting location to search, default 0
|
66
|
+
@returns {Number} index of -1 if not found
|
67
|
+
*/
|
68
|
+
indexOf: function(object, startAt) {
|
69
|
+
var idx, len = this.get('length');
|
70
|
+
|
71
|
+
if (startAt === undefined) startAt = 0;
|
72
|
+
else startAt = (startAt < 0) ? Math.ceil(startAt) : Math.floor(startAt);
|
73
|
+
if (startAt < 0) startAt += len;
|
74
|
+
|
75
|
+
for(idx=startAt;idx<len;idx++) {
|
76
|
+
if (this.objectAt(idx, YES) === object) return idx ;
|
77
|
+
}
|
78
|
+
return -1;
|
79
|
+
},
|
80
|
+
|
81
|
+
/**
|
82
|
+
Returns the last index for a particular object in the index.
|
83
|
+
|
84
|
+
@param {Object} object the item to search for
|
85
|
+
@param {Number} startAt optional starting location to search, default 0
|
86
|
+
@returns {Number} index of -1 if not found
|
87
|
+
*/
|
88
|
+
lastIndexOf: function(object, startAt) {
|
89
|
+
var idx, len = this.get('length');
|
90
|
+
|
91
|
+
if (startAt === undefined) startAt = len-1;
|
92
|
+
else startAt = (startAt < 0) ? Math.ceil(startAt) : Math.floor(startAt);
|
93
|
+
if (startAt < 0) startAt += len;
|
94
|
+
|
95
|
+
for(idx=startAt;idx>=0;idx--) {
|
96
|
+
if (this.objectAt(idx) === object) return idx ;
|
97
|
+
}
|
98
|
+
return -1;
|
99
|
+
},
|
100
|
+
|
92
101
|
/**
|
93
102
|
This is one of the primitives you must implement to support SC.Array.
|
94
103
|
Returns the object at the named index. If your object supports retrieving
|
@@ -204,6 +213,27 @@ SC.Array = /** @scope SC.Array.prototype */{
|
|
204
213
|
return this;
|
205
214
|
},
|
206
215
|
|
216
|
+
/**
|
217
|
+
Returns a new array that is a slice of the receiver. This implementation
|
218
|
+
uses the observable array methods to retrieve the objects for the new
|
219
|
+
slice.
|
220
|
+
|
221
|
+
If you don't pass in beginIndex and endIndex, it will act as a copy of the
|
222
|
+
array.
|
223
|
+
|
224
|
+
@param beginIndex {Integer} (Optional) index to begin slicing from.
|
225
|
+
@param endIndex {Integer} (Optional) index to end the slice at.
|
226
|
+
@returns {Array} New array with specified slice
|
227
|
+
*/
|
228
|
+
slice: function(beginIndex, endIndex) {
|
229
|
+
var ret = [];
|
230
|
+
var length = this.get('length') ;
|
231
|
+
if (SC.none(beginIndex)) beginIndex = 0 ;
|
232
|
+
if (SC.none(endIndex) || (endIndex > length)) endIndex = length ;
|
233
|
+
while(beginIndex < endIndex) ret[ret.length] = this.objectAt(beginIndex++) ;
|
234
|
+
return ret ;
|
235
|
+
},
|
236
|
+
|
207
237
|
/**
|
208
238
|
Push the object onto the end of the array. Works just like push() but it
|
209
239
|
is KVO-compliant.
|
@@ -838,167 +868,36 @@ SC.Array = /** @scope SC.Array.prototype */{
|
|
838
868
|
|
839
869
|
} ;
|
840
870
|
|
841
|
-
// Add SC.Array to the built-in array before we add SC.Enumerable to SC.Array
|
842
|
-
// since built-in Array's are already enumerable.
|
843
|
-
SC.mixin(Array.prototype, SC.Array) ;
|
844
|
-
SC.Array = SC.mixin({}, SC.Enumerable, SC.Array) ;
|
845
|
-
|
846
|
-
// Add any extra methods to SC.Array that are native to the built-in Array.
|
847
871
|
/**
|
848
|
-
|
849
|
-
uses the observable array methods to retrieve the objects for the new
|
850
|
-
slice.
|
851
|
-
|
852
|
-
If you don't pass in beginIndex and endIndex, it will act as a copy of the
|
853
|
-
array.
|
854
|
-
|
855
|
-
@param beginIndex {Integer} (Optional) index to begin slicing from.
|
856
|
-
@param endIndex {Integer} (Optional) index to end the slice at.
|
857
|
-
@returns {Array} New array with specified slice
|
858
|
-
*/
|
859
|
-
SC.Array.slice = function(beginIndex, endIndex) {
|
860
|
-
var ret = [];
|
861
|
-
var length = this.get('length') ;
|
862
|
-
if (SC.none(beginIndex)) beginIndex = 0 ;
|
863
|
-
if (SC.none(endIndex) || (endIndex > length)) endIndex = length ;
|
864
|
-
while(beginIndex < endIndex) ret[ret.length] = this.objectAt(beginIndex++) ;
|
865
|
-
return ret ;
|
866
|
-
} ;
|
872
|
+
@namespace
|
867
873
|
|
868
|
-
|
869
|
-
|
874
|
+
This module implements Observer-friendly Array-like behavior. This mixin is
|
875
|
+
picked up by the Array class as well as other controllers, etc. that want to
|
876
|
+
appear to be arrays.
|
870
877
|
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
var idx, len = this.get('length');
|
878
|
+
Unlike SC.Enumerable, this mixin defines methods specifically for
|
879
|
+
collections that provide index-ordered access to their contents. When you
|
880
|
+
are designing code that needs to accept any kind of Array-like object, you
|
881
|
+
should use these methods instead of Array primitives because these will
|
882
|
+
properly notify observers of changes to the array.
|
877
883
|
|
878
|
-
|
879
|
-
|
880
|
-
|
884
|
+
Although these methods are efficient, they do add a layer of indirection to
|
885
|
+
your application so it is a good idea to use them only when you need the
|
886
|
+
flexibility of using both true JavaScript arrays and "virtual" arrays such
|
887
|
+
as controllers and collections.
|
881
888
|
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
};
|
889
|
+
You can use the methods defined in this module to access and modify array
|
890
|
+
contents in a KVO-friendly way. You can also be notified whenever the
|
891
|
+
membership if an array changes by changing the syntax of the property to
|
892
|
+
.observes('*myProperty.[]') .
|
887
893
|
|
888
|
-
|
889
|
-
|
894
|
+
To support SC.Array in your own class, you must override two
|
895
|
+
primitives to use it: replace() and objectAt().
|
890
896
|
|
891
|
-
|
892
|
-
|
897
|
+
Note that the SC.Array mixin also incorporates the SC.Enumerable mixin. All
|
898
|
+
SC.Array-like objects are also enumerable.
|
893
899
|
|
894
|
-
@
|
895
|
-
@
|
896
|
-
@returns {Number} index of -1 if not found
|
900
|
+
@extends SC.Enumerable
|
901
|
+
@since SproutCore 0.9.0
|
897
902
|
*/
|
898
|
-
SC.Array
|
899
|
-
var idx, len = this.get('length');
|
900
|
-
|
901
|
-
if (startAt === undefined) startAt = len-1;
|
902
|
-
else startAt = (startAt < 0) ? Math.ceil(startAt) : Math.floor(startAt);
|
903
|
-
if (startAt < 0) startAt += len;
|
904
|
-
|
905
|
-
for(idx=startAt;idx>=0;idx--) {
|
906
|
-
if (this.objectAt(idx) === object) return idx ;
|
907
|
-
}
|
908
|
-
return -1;
|
909
|
-
};
|
910
|
-
|
911
|
-
// Some browsers do not support lastIndexOf natively. Patch if needed
|
912
|
-
if (!Array.prototype.lastIndexOf) {
|
913
|
-
Array.prototype.lastIndexOf = SC.Array.lastIndexOf;
|
914
|
-
}
|
915
|
-
|
916
|
-
// ......................................................
|
917
|
-
// ARRAY SUPPORT
|
918
|
-
//
|
919
|
-
// Implement the same enhancements on Array. We use specialized methods
|
920
|
-
// because working with arrays are so common.
|
921
|
-
(function() {
|
922
|
-
SC.mixin(Array.prototype, {
|
923
|
-
|
924
|
-
// primitive for array support.
|
925
|
-
replace: function(idx, amt, objects) {
|
926
|
-
if (this.isFrozen) { throw SC.FROZEN_ERROR ; }
|
927
|
-
|
928
|
-
var args;
|
929
|
-
var len = objects ? (objects.get ? objects.get('length') : objects.length) : 0;
|
930
|
-
|
931
|
-
// Notify that array content is about to mutate.
|
932
|
-
this.arrayContentWillChange(idx, amt, len);
|
933
|
-
|
934
|
-
if (len === 0) {
|
935
|
-
this.splice(idx, amt) ;
|
936
|
-
} else {
|
937
|
-
args = [idx, amt].concat(objects) ;
|
938
|
-
this.splice.apply(this,args) ;
|
939
|
-
}
|
940
|
-
|
941
|
-
this.arrayContentDidChange(idx, amt, len);
|
942
|
-
this.enumerableContentDidChange(idx, amt, len - amt) ;
|
943
|
-
return this ;
|
944
|
-
},
|
945
|
-
|
946
|
-
// If you ask for an unknown property, then try to collect the value
|
947
|
-
// from member items.
|
948
|
-
unknownProperty: function(key, value) {
|
949
|
-
var ret = this.reducedProperty(key, value) ;
|
950
|
-
if ((value !== undefined) && ret === undefined) {
|
951
|
-
ret = this[key] = value;
|
952
|
-
}
|
953
|
-
return ret ;
|
954
|
-
}
|
955
|
-
|
956
|
-
});
|
957
|
-
|
958
|
-
var indexOf = Array.prototype.indexOf;
|
959
|
-
if (!indexOf || (indexOf === SC.Array.indexOf)) {
|
960
|
-
/**
|
961
|
-
Returns the index for a particular object in the index.
|
962
|
-
|
963
|
-
@param {Object} object the item to search for
|
964
|
-
@param {NUmber} startAt optional starting location to search, default 0
|
965
|
-
@returns {Number} index of -1 if not found
|
966
|
-
*/
|
967
|
-
Array.prototype.indexOf = function(object, startAt) {
|
968
|
-
var idx, len = this.length;
|
969
|
-
|
970
|
-
if (startAt === undefined) startAt = 0;
|
971
|
-
else startAt = (startAt < 0) ? Math.ceil(startAt) : Math.floor(startAt);
|
972
|
-
if (startAt < 0) startAt += len;
|
973
|
-
|
974
|
-
for(idx=startAt;idx<len;idx++) {
|
975
|
-
if (this[idx] === object) return idx ;
|
976
|
-
}
|
977
|
-
return -1;
|
978
|
-
} ;
|
979
|
-
}
|
980
|
-
|
981
|
-
var lastIndexOf = Array.prototype.lastIndexOf ;
|
982
|
-
if (!lastIndexOf || (lastIndexOf === SC.Array.lastIndexOf)) {
|
983
|
-
/**
|
984
|
-
Returns the last index for a particular object in the index.
|
985
|
-
|
986
|
-
@param {Object} object the item to search for
|
987
|
-
@param {NUmber} startAt optional starting location to search, default 0
|
988
|
-
@returns {Number} index of -1 if not found
|
989
|
-
*/
|
990
|
-
Array.prototype.lastIndexOf = function(object, startAt) {
|
991
|
-
var idx, len = this.length;
|
992
|
-
|
993
|
-
if (startAt === undefined) startAt = len-1;
|
994
|
-
else startAt = (startAt < 0) ? Math.ceil(startAt) : Math.floor(startAt);
|
995
|
-
if (startAt < 0) startAt += len;
|
996
|
-
|
997
|
-
for(idx=startAt;idx>=0;idx--) {
|
998
|
-
if (this[idx] === object) return idx ;
|
999
|
-
}
|
1000
|
-
return -1;
|
1001
|
-
};
|
1002
|
-
}
|
1003
|
-
|
1004
|
-
})();
|
903
|
+
SC.Array = SC.mixin({}, SC.Enumerable, SC.CoreArray);
|