mn-docs-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +4 -0
- package/.vscode/extensions.json +4 -0
- package/.vscode/launch.json +11 -0
- package/README.md +99 -0
- package/astro.config.mjs +126 -0
- package/package.json +30 -0
- package/pnpm-workspace.yaml +4 -0
- package/public/favicon.svg +1 -0
- package/scripts/mcp/build-index.mjs +9 -0
- package/scripts/mcp/cli.mjs +61 -0
- package/scripts/mcp/lib.mjs +303 -0
- package/scripts/mcp/server-http.mjs +74 -0
- package/scripts/mcp/server.mjs +91 -0
- package/src/assets/houston.webp +0 -0
- package/src/client/jsb-api-footer.ts +242 -0
- package/src/components/Footer.astro +57 -0
- package/src/components/Search.astro +330 -0
- package/src/content/docs/guides/contributing.md +82 -0
- package/src/content/docs/guides/cookbook/addon-settings.md +53 -0
- package/src/content/docs/guides/cookbook/append-selection-as-comment.md +46 -0
- package/src/content/docs/guides/cookbook/batch-rename-notes.md +53 -0
- package/src/content/docs/guides/cookbook/embed-webview-panel.md +158 -0
- package/src/content/docs/guides/cookbook/export-notebook.md +48 -0
- package/src/content/docs/guides/cookbook/focus-note-in-mindmap.md +34 -0
- package/src/content/docs/guides/cookbook/network-api-call.md +135 -0
- package/src/content/docs/guides/cookbook/webview-bidirectional-js.md +112 -0
- package/src/content/docs/guides/getting-started.md +88 -0
- package/src/content/docs/guides/lifecycle-and-window.md +76 -0
- package/src/content/docs/guides/mindmap-and-selection.md +76 -0
- package/src/content/docs/guides/native-ui.md +136 -0
- package/src/content/docs/guides/network-requests.md +309 -0
- package/src/content/docs/guides/notes-and-database.md +99 -0
- package/src/content/docs/guides/shortcut-keys.md +105 -0
- package/src/content/docs/guides/storage-and-files.md +91 -0
- package/src/content/docs/guides/toolbar-and-commands.md +64 -0
- package/src/content/docs/index.mdx +44 -0
- package/src/content/docs/reference/black-box.md +19 -0
- package/src/content/docs/reference/foundation/ns-array.md +699 -0
- package/src/content/docs/reference/foundation/ns-attributed-string.md +379 -0
- package/src/content/docs/reference/foundation/ns-character-set.md +436 -0
- package/src/content/docs/reference/foundation/ns-counted-set.md +78 -0
- package/src/content/docs/reference/foundation/ns-data.md +183 -0
- package/src/content/docs/reference/foundation/ns-date-components.md +24 -0
- package/src/content/docs/reference/foundation/ns-date-formatter.md +70 -0
- package/src/content/docs/reference/foundation/ns-date.md +236 -0
- package/src/content/docs/reference/foundation/ns-decimal-number.md +437 -0
- package/src/content/docs/reference/foundation/ns-dictionary.md +376 -0
- package/src/content/docs/reference/foundation/ns-enumerator.md +36 -0
- package/src/content/docs/reference/foundation/ns-error.md +75 -0
- package/src/content/docs/reference/foundation/ns-file-handle.md +445 -0
- package/src/content/docs/reference/foundation/ns-file-manager.md +275 -0
- package/src/content/docs/reference/foundation/ns-formatter.md +131 -0
- package/src/content/docs/reference/foundation/ns-hash-table.md +304 -0
- package/src/content/docs/reference/foundation/ns-http-url-response.md +73 -0
- package/src/content/docs/reference/foundation/ns-index-path.md +185 -0
- package/src/content/docs/reference/foundation/ns-index-set.md +527 -0
- package/src/content/docs/reference/foundation/ns-json-serialization.md +24 -0
- package/src/content/docs/reference/foundation/ns-keyed-archiver.md +364 -0
- package/src/content/docs/reference/foundation/ns-keyed-unarchiver.md +324 -0
- package/src/content/docs/reference/foundation/ns-locale.md +82 -0
- package/src/content/docs/reference/foundation/ns-map-table.md +216 -0
- package/src/content/docs/reference/foundation/ns-mutable-array.md +452 -0
- package/src/content/docs/reference/foundation/ns-mutable-attributed-string.md +336 -0
- package/src/content/docs/reference/foundation/ns-mutable-character-set.md +132 -0
- package/src/content/docs/reference/foundation/ns-mutable-data.md +206 -0
- package/src/content/docs/reference/foundation/ns-mutable-dictionary.md +176 -0
- package/src/content/docs/reference/foundation/ns-mutable-index-set.md +155 -0
- package/src/content/docs/reference/foundation/ns-mutable-ordered-set.md +465 -0
- package/src/content/docs/reference/foundation/ns-mutable-set.md +189 -0
- package/src/content/docs/reference/foundation/ns-mutable-string.md +190 -0
- package/src/content/docs/reference/foundation/ns-mutable-url-request.md +26 -0
- package/src/content/docs/reference/foundation/ns-notification-center.md +30 -0
- package/src/content/docs/reference/foundation/ns-notification.md +73 -0
- package/src/content/docs/reference/foundation/ns-null.md +24 -0
- package/src/content/docs/reference/foundation/ns-number-formatter.md +147 -0
- package/src/content/docs/reference/foundation/ns-number.md +393 -0
- package/src/content/docs/reference/foundation/ns-operation-queue.md +227 -0
- package/src/content/docs/reference/foundation/ns-operation.md +248 -0
- package/src/content/docs/reference/foundation/ns-ordered-set.md +706 -0
- package/src/content/docs/reference/foundation/ns-pointer-array.md +192 -0
- package/src/content/docs/reference/foundation/ns-predicate.md +199 -0
- package/src/content/docs/reference/foundation/ns-proxy.md +178 -0
- package/src/content/docs/reference/foundation/ns-scanner.md +448 -0
- package/src/content/docs/reference/foundation/ns-set.md +586 -0
- package/src/content/docs/reference/foundation/ns-simple-c-string.md +20 -0
- package/src/content/docs/reference/foundation/ns-time-zone.md +86 -0
- package/src/content/docs/reference/foundation/ns-timer.md +24 -0
- package/src/content/docs/reference/foundation/ns-url-components.md +80 -0
- package/src/content/docs/reference/foundation/ns-url-connection.md +169 -0
- package/src/content/docs/reference/foundation/ns-url-request.md +224 -0
- package/src/content/docs/reference/foundation/ns-url-response.md +97 -0
- package/src/content/docs/reference/foundation/ns-url.md +31 -0
- package/src/content/docs/reference/foundation/ns-user-defaults.md +302 -0
- package/src/content/docs/reference/foundation/ns-uuid.md +52 -0
- package/src/content/docs/reference/foundation/ns-value.md +194 -0
- package/src/content/docs/reference/global/application.md +301 -0
- package/src/content/docs/reference/global/builtin-commands.md +294 -0
- package/src/content/docs/reference/global/database.md +395 -0
- package/src/content/docs/reference/global/global-variables.md +32 -0
- package/src/content/docs/reference/global/jsb.md +89 -0
- package/src/content/docs/reference/global/note.md +64 -0
- package/src/content/docs/reference/global/popup-menu-item.md +18 -0
- package/src/content/docs/reference/global/popup-menu.md +38 -0
- package/src/content/docs/reference/global/search-manager.md +51 -0
- package/src/content/docs/reference/global/self.md +28 -0
- package/src/content/docs/reference/js-runtime.md +28 -0
- package/src/content/docs/reference/marginnote/document-controller.md +45 -0
- package/src/content/docs/reference/marginnote/jsextension.md +119 -0
- package/src/content/docs/reference/marginnote/mb-book-note.md +192 -0
- package/src/content/docs/reference/marginnote/mb-book.md +35 -0
- package/src/content/docs/reference/marginnote/mb-model-tool.md +66 -0
- package/src/content/docs/reference/marginnote/mb-topic.md +36 -0
- package/src/content/docs/reference/marginnote/mindmap-node.md +27 -0
- package/src/content/docs/reference/marginnote/mindmap-view.md +24 -0
- package/src/content/docs/reference/marginnote/note-comment.md +29 -0
- package/src/content/docs/reference/marginnote/notebook-controller.md +36 -0
- package/src/content/docs/reference/marginnote/outline-view.md +23 -0
- package/src/content/docs/reference/marginnote/reader-controller.md +26 -0
- package/src/content/docs/reference/marginnote/study-controller.md +100 -0
- package/src/content/docs/reference/quartzcore/caanimation-group.md +44 -0
- package/src/content/docs/reference/quartzcore/caanimation.md +23 -0
- package/src/content/docs/reference/quartzcore/cabasic-animation.md +19 -0
- package/src/content/docs/reference/quartzcore/cagradient-layer.md +27 -0
- package/src/content/docs/reference/quartzcore/cakeyframe-animation.md +19 -0
- package/src/content/docs/reference/quartzcore/calayer.md +135 -0
- package/src/content/docs/reference/quartzcore/camedia-timing-function.md +25 -0
- package/src/content/docs/reference/quartzcore/caproperty-animation.md +46 -0
- package/src/content/docs/reference/quartzcore/careplicator-layer.md +27 -0
- package/src/content/docs/reference/quartzcore/cascroll-layer.md +21 -0
- package/src/content/docs/reference/quartzcore/cashape-layer.md +34 -0
- package/src/content/docs/reference/quartzcore/catext-layer.md +28 -0
- package/src/content/docs/reference/quartzcore/catiled-layer.md +26 -0
- package/src/content/docs/reference/quartzcore/catransaction.md +46 -0
- package/src/content/docs/reference/quartzcore/catransform-layer.md +18 -0
- package/src/content/docs/reference/quartzcore/catransition.md +44 -0
- package/src/content/docs/reference/quartzcore/cavalue-function.md +22 -0
- package/src/content/docs/reference/uikit/ns-mutable-paragraph-style.md +20 -0
- package/src/content/docs/reference/uikit/ns-paragraph-style.md +20 -0
- package/src/content/docs/reference/uikit/ns-text-storage.md +20 -0
- package/src/content/docs/reference/uikit/uiactivity-indicator-view.md +20 -0
- package/src/content/docs/reference/uikit/uialertview.md +25 -0
- package/src/content/docs/reference/uikit/uiapplication.md +128 -0
- package/src/content/docs/reference/uikit/uibar-button-item.md +20 -0
- package/src/content/docs/reference/uikit/uibar-item.md +20 -0
- package/src/content/docs/reference/uikit/uibezier-path.md +143 -0
- package/src/content/docs/reference/uikit/uibutton.md +27 -0
- package/src/content/docs/reference/uikit/uicollection-view-cell.md +24 -0
- package/src/content/docs/reference/uikit/uicollection-view-controller.md +32 -0
- package/src/content/docs/reference/uikit/uicollection-view-layout-attributes.md +43 -0
- package/src/content/docs/reference/uikit/uicollection-view-layout.md +60 -0
- package/src/content/docs/reference/uikit/uicollection-view.md +83 -0
- package/src/content/docs/reference/uikit/uicolor.md +23 -0
- package/src/content/docs/reference/uikit/uicontrol.md +20 -0
- package/src/content/docs/reference/uikit/uidate-picker.md +37 -0
- package/src/content/docs/reference/uikit/uidevice.md +83 -0
- package/src/content/docs/reference/uikit/uievent.md +36 -0
- package/src/content/docs/reference/uikit/uifont.md +39 -0
- package/src/content/docs/reference/uikit/uigesture-recognizer.md +152 -0
- package/src/content/docs/reference/uikit/uiimage-picker-controller.md +41 -0
- package/src/content/docs/reference/uikit/uiimage-view.md +38 -0
- package/src/content/docs/reference/uikit/uiimage.md +58 -0
- package/src/content/docs/reference/uikit/uikey-command.md +31 -0
- package/src/content/docs/reference/uikit/uilabel.md +27 -0
- package/src/content/docs/reference/uikit/uilocal-notification.md +28 -0
- package/src/content/docs/reference/uikit/uilong-press-gesture-recognizer.md +25 -0
- package/src/content/docs/reference/uikit/uinavigation-bar.md +52 -0
- package/src/content/docs/reference/uikit/uinavigation-controller.md +46 -0
- package/src/content/docs/reference/uikit/uinavigation-item.md +42 -0
- package/src/content/docs/reference/uikit/uipage-control.md +35 -0
- package/src/content/docs/reference/uikit/uipage-view-controller.md +37 -0
- package/src/content/docs/reference/uikit/uipan-gesture-recognizer.md +32 -0
- package/src/content/docs/reference/uikit/uipasteboard.md +24 -0
- package/src/content/docs/reference/uikit/uipicker-view.md +37 -0
- package/src/content/docs/reference/uikit/uipinch-gesture-recognizer.md +23 -0
- package/src/content/docs/reference/uikit/uipopover-controller.md +39 -0
- package/src/content/docs/reference/uikit/uiresponder.md +20 -0
- package/src/content/docs/reference/uikit/uirotation-gesture-recognizer.md +23 -0
- package/src/content/docs/reference/uikit/uiscreen-mode.md +17 -0
- package/src/content/docs/reference/uikit/uiscreen.md +65 -0
- package/src/content/docs/reference/uikit/uiscrollview.md +134 -0
- package/src/content/docs/reference/uikit/uisearch-bar.md +58 -0
- package/src/content/docs/reference/uikit/uisegmented-control.md +64 -0
- package/src/content/docs/reference/uikit/uislider.md +50 -0
- package/src/content/docs/reference/uikit/uiswipe-gesture-recognizer.md +23 -0
- package/src/content/docs/reference/uikit/uiswitch.md +22 -0
- package/src/content/docs/reference/uikit/uitab-bar-controller.md +39 -0
- package/src/content/docs/reference/uikit/uitab-bar-item.md +34 -0
- package/src/content/docs/reference/uikit/uitab-bar.md +44 -0
- package/src/content/docs/reference/uikit/uitable-view-cell.md +57 -0
- package/src/content/docs/reference/uikit/uitable-view-controller.md +30 -0
- package/src/content/docs/reference/uikit/uitable-view.md +100 -0
- package/src/content/docs/reference/uikit/uitap-gesture-recognizer.md +20 -0
- package/src/content/docs/reference/uikit/uitext-input-mode.md +47 -0
- package/src/content/docs/reference/uikit/uitext-position.md +44 -0
- package/src/content/docs/reference/uikit/uitext-range.md +42 -0
- package/src/content/docs/reference/uikit/uitext-view.md +46 -0
- package/src/content/docs/reference/uikit/uitextfield.md +32 -0
- package/src/content/docs/reference/uikit/uitoolbar.md +35 -0
- package/src/content/docs/reference/uikit/uitouch.md +39 -0
- package/src/content/docs/reference/uikit/uiview-controller.md +36 -0
- package/src/content/docs/reference/uikit/uiview.md +47 -0
- package/src/content/docs/reference/uikit/uiwebview.md +229 -0
- package/src/content/docs/reference/uikit/uiwindow.md +47 -0
- package/src/content/docs/reference/utility/menu-controller.md +27 -0
- package/src/content/docs/reference/utility/speech-manager.md +118 -0
- package/src/content/docs/reference/utility/sqlite-database.md +201 -0
- package/src/content/docs/reference/utility/sqlite-result-set.md +266 -0
- package/src/content/docs/reference/utility/sqlite-statement.md +44 -0
- package/src/content/docs/reference/utility/undo-manager.md +89 -0
- package/src/content/docs/reference/utility/zip-archive.md +29 -0
- package/src/content.config.ts +7 -0
- package/src/definitions/Foundation/JSBFoundation.h +9 -0
- package/src/definitions/Foundation/JSBFoundation.m +530 -0
- package/src/definitions/Foundation/JSBNSArray.h +81 -0
- package/src/definitions/Foundation/JSBNSAssertionHandler.h +23 -0
- package/src/definitions/Foundation/JSBNSAttributedString.h +42 -0
- package/src/definitions/Foundation/JSBNSBlockOperation.h +20 -0
- package/src/definitions/Foundation/JSBNSBundle.h +80 -0
- package/src/definitions/Foundation/JSBNSByteCountFormatter.h +28 -0
- package/src/definitions/Foundation/JSBNSCache.h +31 -0
- package/src/definitions/Foundation/JSBNSCachedURLResponse.h +22 -0
- package/src/definitions/Foundation/JSBNSCalendar.h +88 -0
- package/src/definitions/Foundation/JSBNSCharacterSet.h +50 -0
- package/src/definitions/Foundation/JSBNSCoder.h +88 -0
- package/src/definitions/Foundation/JSBNSComparisonPredicate.h +27 -0
- package/src/definitions/Foundation/JSBNSCompoundPredicate.h +23 -0
- package/src/definitions/Foundation/JSBNSCondition.h +22 -0
- package/src/definitions/Foundation/JSBNSConditionLock.h +26 -0
- package/src/definitions/Foundation/JSBNSConstantString.h +18 -0
- package/src/definitions/Foundation/JSBNSCountedSet.h +21 -0
- package/src/definitions/Foundation/JSBNSData.h +44 -0
- package/src/definitions/Foundation/JSBNSDataDetector.h +20 -0
- package/src/definitions/Foundation/JSBNSDate.h +37 -0
- package/src/definitions/Foundation/JSBNSDateComponents.h +56 -0
- package/src/definitions/Foundation/JSBNSDateFormatter.h +91 -0
- package/src/definitions/Foundation/JSBNSDecimalNumber.h +47 -0
- package/src/definitions/Foundation/JSBNSDecimalNumberHandler.h +23 -0
- package/src/definitions/Foundation/JSBNSDictionary.h +79 -0
- package/src/definitions/Foundation/JSBNSDirectoryEnumerator.h +25 -0
- package/src/definitions/Foundation/JSBNSEnumerator.h +18 -0
- package/src/definitions/Foundation/JSBNSError.h +28 -0
- package/src/definitions/Foundation/JSBNSException.h +30 -0
- package/src/definitions/Foundation/JSBNSExpression.h +48 -0
- package/src/definitions/Foundation/JSBNSFileCoordinator.h +29 -0
- package/src/definitions/Foundation/JSBNSFileHandle.h +51 -0
- package/src/definitions/Foundation/JSBNSFileManager.h +82 -0
- package/src/definitions/Foundation/JSBNSFileSecurity.h +32 -0
- package/src/definitions/Foundation/JSBNSFileVersion.h +35 -0
- package/src/definitions/Foundation/JSBNSFileWrapper.h +41 -0
- package/src/definitions/Foundation/JSBNSFormatter.h +23 -0
- package/src/definitions/Foundation/JSBNSHTTPCookie.h +34 -0
- package/src/definitions/Foundation/JSBNSHTTPCookieStorage.h +26 -0
- package/src/definitions/Foundation/JSBNSHTTPURLResponse.h +21 -0
- package/src/definitions/Foundation/JSBNSHashTable.h +38 -0
- package/src/definitions/Foundation/JSBNSIndexPath.h +34 -0
- package/src/definitions/Foundation/JSBNSIndexSet.h +47 -0
- package/src/definitions/Foundation/JSBNSInputStream.h +28 -0
- package/src/definitions/Foundation/JSBNSInvocation.h +32 -0
- package/src/definitions/Foundation/JSBNSInvocationOperation.h +20 -0
- package/src/definitions/Foundation/JSBNSJSONSerialization.h +19 -0
- package/src/definitions/Foundation/JSBNSKeyedArchiver.h +40 -0
- package/src/definitions/Foundation/JSBNSKeyedUnarchiver.h +38 -0
- package/src/definitions/Foundation/JSBNSLinguisticTagger.h +31 -0
- package/src/definitions/Foundation/JSBNSLocale.h +39 -0
- package/src/definitions/Foundation/JSBNSLock.h +20 -0
- package/src/definitions/Foundation/JSBNSMachPort.h +26 -0
- package/src/definitions/Foundation/JSBNSMapTable.h +34 -0
- package/src/definitions/Foundation/JSBNSMessagePort.h +15 -0
- package/src/definitions/Foundation/JSBNSMetadataItem.h +22 -0
- package/src/definitions/Foundation/JSBNSMetadataQuery.h +53 -0
- package/src/definitions/Foundation/JSBNSMetadataQueryAttributeValueTuple.h +21 -0
- package/src/definitions/Foundation/JSBNSMetadataQueryResultGroup.h +24 -0
- package/src/definitions/Foundation/JSBNSMethodSignature.h +24 -0
- package/src/definitions/Foundation/JSBNSMutableArray.h +51 -0
- package/src/definitions/Foundation/JSBNSMutableAttributedString.h +39 -0
- package/src/definitions/Foundation/JSBNSMutableCharacterSet.h +26 -0
- package/src/definitions/Foundation/JSBNSMutableData.h +29 -0
- package/src/definitions/Foundation/JSBNSMutableDictionary.h +29 -0
- package/src/definitions/Foundation/JSBNSMutableIndexSet.h +25 -0
- package/src/definitions/Foundation/JSBNSMutableOrderedSet.h +50 -0
- package/src/definitions/Foundation/JSBNSMutableSet.h +28 -0
- package/src/definitions/Foundation/JSBNSMutableString.h +31 -0
- package/src/definitions/Foundation/JSBNSMutableURLRequest.h +38 -0
- package/src/definitions/Foundation/JSBNSNetService.h +43 -0
- package/src/definitions/Foundation/JSBNSNetServiceBrowser.h +33 -0
- package/src/definitions/Foundation/JSBNSNotification.h +23 -0
- package/src/definitions/Foundation/JSBNSNotificationCenter.h +27 -0
- package/src/definitions/Foundation/JSBNSNotificationQueue.h +22 -0
- package/src/definitions/Foundation/JSBNSNull.h +17 -0
- package/src/definitions/Foundation/JSBNSNumber.h +51 -0
- package/src/definitions/Foundation/JSBNSNumberFormatter.h +136 -0
- package/src/definitions/Foundation/JSBNSOperation.h +34 -0
- package/src/definitions/Foundation/JSBNSOperationQueue.h +32 -0
- package/src/definitions/Foundation/JSBNSOrderedSet.h +70 -0
- package/src/definitions/Foundation/JSBNSOrthography.h +27 -0
- package/src/definitions/Foundation/JSBNSOutputStream.h +33 -0
- package/src/definitions/Foundation/JSBNSPipe.h +26 -0
- package/src/definitions/Foundation/JSBNSPointerArray.h +33 -0
- package/src/definitions/Foundation/JSBNSPort.h +27 -0
- package/src/definitions/Foundation/JSBNSPredicate.h +31 -0
- package/src/definitions/Foundation/JSBNSProcessInfo.h +42 -0
- package/src/definitions/Foundation/JSBNSProgress.h +45 -0
- package/src/definitions/Foundation/JSBNSPropertyListSerialization.h +24 -0
- package/src/definitions/Foundation/JSBNSProxy.h +29 -0
- package/src/definitions/Foundation/JSBNSPurgeableData.h +16 -0
- package/src/definitions/Foundation/JSBNSRecursiveLock.h +20 -0
- package/src/definitions/Foundation/JSBNSRegularExpression.h +35 -0
- package/src/definitions/Foundation/JSBNSRunLoop.h +38 -0
- package/src/definitions/Foundation/JSBNSScanner.h +44 -0
- package/src/definitions/Foundation/JSBNSSet.h +52 -0
- package/src/definitions/Foundation/JSBNSSimpleCString.h +18 -0
- package/src/definitions/Foundation/JSBNSSortDescriptor.h +32 -0
- package/src/definitions/Foundation/JSBNSStream.h +26 -0
- package/src/definitions/Foundation/JSBNSString.h +178 -0
- package/src/definitions/Foundation/JSBNSTextCheckingResult.h +52 -0
- package/src/definitions/Foundation/JSBNSThread.h +46 -0
- package/src/definitions/Foundation/JSBNSTimeZone.h +46 -0
- package/src/definitions/Foundation/JSBNSTimer.h +29 -0
- package/src/definitions/Foundation/JSBNSURL.h +110 -0
- package/src/definitions/Foundation/JSBNSURLAuthenticationChallenge.h +24 -0
- package/src/definitions/Foundation/JSBNSURLCache.h +30 -0
- package/src/definitions/Foundation/JSBNSURLComponents.h +38 -0
- package/src/definitions/Foundation/JSBNSURLConnection.h +45 -0
- package/src/definitions/Foundation/JSBNSURLCredential.h +30 -0
- package/src/definitions/Foundation/JSBNSURLCredentialStorage.h +25 -0
- package/src/definitions/Foundation/JSBNSURLProtectionSpace.h +29 -0
- package/src/definitions/Foundation/JSBNSURLProtocol.h +32 -0
- package/src/definitions/Foundation/JSBNSURLRequest.h +40 -0
- package/src/definitions/Foundation/JSBNSURLResponse.h +22 -0
- package/src/definitions/Foundation/JSBNSURLSession.h +103 -0
- package/src/definitions/Foundation/JSBNSURLSessionConfiguration.h +58 -0
- package/src/definitions/Foundation/JSBNSURLSessionDataTask.h +18 -0
- package/src/definitions/Foundation/JSBNSURLSessionDownloadTask.h +20 -0
- package/src/definitions/Foundation/JSBNSURLSessionTask.h +58 -0
- package/src/definitions/Foundation/JSBNSURLSessionUploadTask.h +18 -0
- package/src/definitions/Foundation/JSBNSUUID.h +22 -0
- package/src/definitions/Foundation/JSBNSUbiquitousKeyValueStore.h +37 -0
- package/src/definitions/Foundation/JSBNSUndoManager.h +50 -0
- package/src/definitions/Foundation/JSBNSUserDefaults.h +52 -0
- package/src/definitions/Foundation/JSBNSValue.h +53 -0
- package/src/definitions/Foundation/JSBNSValueTransformer.h +24 -0
- package/src/definitions/Foundation/JSBNSXMLParser.h +34 -0
- package/src/definitions/JSBApplication.h +59 -0
- package/src/definitions/JSBDocumentController.h +32 -0
- package/src/definitions/JSBJSExtension.h +34 -0
- package/src/definitions/JSBMNFileSystem.h +50 -0
- package/src/definitions/JSBMNFileSystem.m +267 -0
- package/src/definitions/JSBMarginNote.h +9 -0
- package/src/definitions/JSBMarginNote.m +183 -0
- package/src/definitions/JSBMbBook.h +22 -0
- package/src/definitions/JSBMbBookNote.h +78 -0
- package/src/definitions/JSBMbModelTool.h +47 -0
- package/src/definitions/JSBMbTopic.h +28 -0
- package/src/definitions/JSBMenuController.h +21 -0
- package/src/definitions/JSBMindMapNode.h +20 -0
- package/src/definitions/JSBMindMapView.h +15 -0
- package/src/definitions/JSBNotebookController.h +22 -0
- package/src/definitions/JSBOutlineView.h +14 -0
- package/src/definitions/JSBPopupMenu.h +37 -0
- package/src/definitions/JSBPopupMenuItem.h +19 -0
- package/src/definitions/JSBReaderController.h +18 -0
- package/src/definitions/JSBSQLite.h +109 -0
- package/src/definitions/JSBSearchManager.h +55 -0
- package/src/definitions/JSBSearchManager.m +4 -0
- package/src/definitions/JSBSpeechManager.h +31 -0
- package/src/definitions/JSBStudyController.h +32 -0
- package/src/definitions/JSBUndoManager.h +23 -0
- package/src/definitions/JSBZipArchive.h +28 -0
- package/src/definitions/QuartzCore/JSBCAAnimation.h +21 -0
- package/src/definitions/QuartzCore/JSBCAAnimationGroup.h +37 -0
- package/src/definitions/QuartzCore/JSBCABasicAnimation.h +16 -0
- package/src/definitions/QuartzCore/JSBCADisplayLink.h +26 -0
- package/src/definitions/QuartzCore/JSBCAEAGLLayer.h +16 -0
- package/src/definitions/QuartzCore/JSBCAEmitterBehavior.h +24 -0
- package/src/definitions/QuartzCore/JSBCAEmitterCell.h +40 -0
- package/src/definitions/QuartzCore/JSBCAEmitterLayer.h +31 -0
- package/src/definitions/QuartzCore/JSBCAGradientLayer.h +20 -0
- package/src/definitions/QuartzCore/JSBCAKeyframeAnimation.h +16 -0
- package/src/definitions/QuartzCore/JSBCALayer.h +98 -0
- package/src/definitions/QuartzCore/JSBCAMediaTimingFunction.h +22 -0
- package/src/definitions/QuartzCore/JSBCAPropertyAnimation.h +39 -0
- package/src/definitions/QuartzCore/JSBCAReplicatorLayer.h +23 -0
- package/src/definitions/QuartzCore/JSBCAScrollLayer.h +18 -0
- package/src/definitions/QuartzCore/JSBCAShapeLayer.h +27 -0
- package/src/definitions/QuartzCore/JSBCATextLayer.h +23 -0
- package/src/definitions/QuartzCore/JSBCATiledLayer.h +21 -0
- package/src/definitions/QuartzCore/JSBCATransaction.h +32 -0
- package/src/definitions/QuartzCore/JSBCATransformLayer.h +15 -0
- package/src/definitions/QuartzCore/JSBCATransition.h +37 -0
- package/src/definitions/QuartzCore/JSBCAValueFunction.h +20 -0
- package/src/definitions/QuartzCore/JSBQuartzCore.h +9 -0
- package/src/definitions/QuartzCore/JSBQuartzCore.m +106 -0
- package/src/definitions/UIKit/JSBNSLayoutConstraint.h +30 -0
- package/src/definitions/UIKit/JSBNSLayoutManager.h +94 -0
- package/src/definitions/UIKit/JSBNSMutableParagraphStyle.h +16 -0
- package/src/definitions/UIKit/JSBNSParagraphStyle.h +37 -0
- package/src/definitions/UIKit/JSBNSShadow.h +20 -0
- package/src/definitions/UIKit/JSBNSStringDrawingContext.h +22 -0
- package/src/definitions/UIKit/JSBNSTextAttachment.h +24 -0
- package/src/definitions/UIKit/JSBNSTextContainer.h +27 -0
- package/src/definitions/UIKit/JSBNSTextStorage.h +31 -0
- package/src/definitions/UIKit/JSBNSTextTab.h +38 -0
- package/src/definitions/UIKit/JSBUIAcceleration.h +24 -0
- package/src/definitions/UIKit/JSBUIAccelerometer.h +28 -0
- package/src/definitions/UIKit/JSBUIAccessibilityElement.h +24 -0
- package/src/definitions/UIKit/JSBUIActionSheet.h +37 -0
- package/src/definitions/UIKit/JSBUIActivity.h +26 -0
- package/src/definitions/UIKit/JSBUIActivityIndicatorView.h +22 -0
- package/src/definitions/UIKit/JSBUIActivityItemProvider.h +22 -0
- package/src/definitions/UIKit/JSBUIActivityViewController.h +20 -0
- package/src/definitions/UIKit/JSBUIAlertView.h +39 -0
- package/src/definitions/UIKit/JSBUIApplication.h +37 -0
- package/src/definitions/UIKit/JSBUIAttachmentBehavior.h +26 -0
- package/src/definitions/UIKit/JSBUIBarButtonItem.h +48 -0
- package/src/definitions/UIKit/JSBUIBarItem.h +26 -0
- package/src/definitions/UIKit/JSBUIBezierPath.h +55 -0
- package/src/definitions/UIKit/JSBUIButton.h +51 -0
- package/src/definitions/UIKit/JSBUICollectionReusableView.h +26 -0
- package/src/definitions/UIKit/JSBUICollectionView.h +53 -0
- package/src/definitions/UIKit/JSBUICollectionViewCell.h +14 -0
- package/src/definitions/UIKit/JSBUICollectionViewController.h +21 -0
- package/src/definitions/UIKit/JSBUICollectionViewFlowLayout.h +29 -0
- package/src/definitions/UIKit/JSBUICollectionViewFlowLayoutInvalidationContext.h +25 -0
- package/src/definitions/UIKit/JSBUICollectionViewLayout.h +58 -0
- package/src/definitions/UIKit/JSBUICollectionViewLayoutAttributes.h +40 -0
- package/src/definitions/UIKit/JSBUICollectionViewLayoutInvalidationContext.h +36 -0
- package/src/definitions/UIKit/JSBUICollectionViewTransitionLayout.h +15 -0
- package/src/definitions/UIKit/JSBUICollectionViewUpdateItem.h +36 -0
- package/src/definitions/UIKit/JSBUICollisionBehavior.h +30 -0
- package/src/definitions/UIKit/JSBUIColor.h +67 -0
- package/src/definitions/UIKit/JSBUIControl.h +39 -0
- package/src/definitions/UIKit/JSBUIDatePicker.h +26 -0
- package/src/definitions/UIKit/JSBUIDevice.h +37 -0
- package/src/definitions/UIKit/JSBUIDictationPhrase.h +38 -0
- package/src/definitions/UIKit/JSBUIDocument.h +46 -0
- package/src/definitions/UIKit/JSBUIDocumentInteractionController.h +32 -0
- package/src/definitions/UIKit/JSBUIDynamicAnimator.h +27 -0
- package/src/definitions/UIKit/JSBUIDynamicBehavior.h +27 -0
- package/src/definitions/UIKit/JSBUIDynamicItemBehavior.h +30 -0
- package/src/definitions/UIKit/JSBUIEvent.h +24 -0
- package/src/definitions/UIKit/JSBUIFont.h +30 -0
- package/src/definitions/UIKit/JSBUIFontDescriptor.h +36 -0
- package/src/definitions/UIKit/JSBUIGestureRecognizer.h +44 -0
- package/src/definitions/UIKit/JSBUIGravityBehavior.h +24 -0
- package/src/definitions/UIKit/JSBUIImage.h +59 -0
- package/src/definitions/UIKit/JSBUIImagePickerController.h +30 -0
- package/src/definitions/UIKit/JSBUIImageView.h +28 -0
- package/src/definitions/UIKit/JSBUIInputView.h +15 -0
- package/src/definitions/UIKit/JSBUIInterpolatingMotionEffect.h +18 -0
- package/src/definitions/UIKit/JSBUIKeyCommand.h +25 -0
- package/src/definitions/UIKit/JSBUIKit.h +9 -0
- package/src/definitions/UIKit/JSBUIKit.m +614 -0
- package/src/definitions/UIKit/JSBUILabel.h +38 -0
- package/src/definitions/UIKit/JSBUILocalNotification.h +20 -0
- package/src/definitions/UIKit/JSBUILocalizedIndexedCollation.h +23 -0
- package/src/definitions/UIKit/JSBUILongPressGestureRecognizer.h +22 -0
- package/src/definitions/UIKit/JSBUIManagedDocument.h +26 -0
- package/src/definitions/UIKit/JSBUIMarkupTextPrintFormatter.h +17 -0
- package/src/definitions/UIKit/JSBUIMenuController.h +28 -0
- package/src/definitions/UIKit/JSBUIMenuItem.h +25 -0
- package/src/definitions/UIKit/JSBUIMotionEffect.h +24 -0
- package/src/definitions/UIKit/JSBUIMotionEffectGroup.h +16 -0
- package/src/definitions/UIKit/JSBUINavigationBar.h +47 -0
- package/src/definitions/UIKit/JSBUINavigationController.h +34 -0
- package/src/definitions/UIKit/JSBUINavigationItem.h +45 -0
- package/src/definitions/UIKit/JSBUINib.h +19 -0
- package/src/definitions/UIKit/JSBUIPageControl.h +24 -0
- package/src/definitions/UIKit/JSBUIPageViewController.h +27 -0
- package/src/definitions/UIKit/JSBUIPanGestureRecognizer.h +23 -0
- package/src/definitions/UIKit/JSBUIPasteboard.h +46 -0
- package/src/definitions/UIKit/JSBUIPercentDrivenInteractiveTransition.h +24 -0
- package/src/definitions/UIKit/JSBUIPickerView.h +28 -0
- package/src/definitions/UIKit/JSBUIPinchGestureRecognizer.h +19 -0
- package/src/definitions/UIKit/JSBUIPopoverBackgroundView.h +22 -0
- package/src/definitions/UIKit/JSBUIPopoverController.h +31 -0
- package/src/definitions/UIKit/JSBUIPrintFormatter.h +33 -0
- package/src/definitions/UIKit/JSBUIPrintInfo.h +26 -0
- package/src/definitions/UIKit/JSBUIPrintInteractionController.h +36 -0
- package/src/definitions/UIKit/JSBUIPrintPageRenderer.h +31 -0
- package/src/definitions/UIKit/JSBUIPrintPaper.h +22 -0
- package/src/definitions/UIKit/JSBUIProgressView.h +24 -0
- package/src/definitions/UIKit/JSBUIPushBehavior.h +28 -0
- package/src/definitions/UIKit/JSBUIReferenceLibraryViewController.h +19 -0
- package/src/definitions/UIKit/JSBUIRefreshControl.h +21 -0
- package/src/definitions/UIKit/JSBUIResponder.h +57 -0
- package/src/definitions/UIKit/JSBUIRotationGestureRecognizer.h +19 -0
- package/src/definitions/UIKit/JSBUIScreen.h +36 -0
- package/src/definitions/UIKit/JSBUIScreenEdgePanGestureRecognizer.h +18 -0
- package/src/definitions/UIKit/JSBUIScreenMode.h +19 -0
- package/src/definitions/UIKit/JSBUIScrollView.h +53 -0
- package/src/definitions/UIKit/JSBUISearchBar.h +55 -0
- package/src/definitions/UIKit/JSBUISearchDisplayController.h +28 -0
- package/src/definitions/UIKit/JSBUISegmentedControl.h +46 -0
- package/src/definitions/UIKit/JSBUISimpleTextPrintFormatter.h +18 -0
- package/src/definitions/UIKit/JSBUISlider.h +41 -0
- package/src/definitions/UIKit/JSBUISnapBehavior.h +18 -0
- package/src/definitions/UIKit/JSBUISplitViewController.h +26 -0
- package/src/definitions/UIKit/JSBUIStepper.h +31 -0
- package/src/definitions/UIKit/JSBUIStoryboard.h +19 -0
- package/src/definitions/UIKit/JSBUIStoryboardPopoverSegue.h +17 -0
- package/src/definitions/UIKit/JSBUIStoryboardSegue.h +23 -0
- package/src/definitions/UIKit/JSBUISwipeGestureRecognizer.h +19 -0
- package/src/definitions/UIKit/JSBUISwitch.h +20 -0
- package/src/definitions/UIKit/JSBUITabBar.h +33 -0
- package/src/definitions/UIKit/JSBUITabBarController.h +26 -0
- package/src/definitions/UIKit/JSBUITabBarItem.h +26 -0
- package/src/definitions/UIKit/JSBUITableView.h +70 -0
- package/src/definitions/UIKit/JSBUITableViewCell.h +48 -0
- package/src/definitions/UIKit/JSBUITableViewController.h +19 -0
- package/src/definitions/UIKit/JSBUITableViewHeaderFooterView.h +22 -0
- package/src/definitions/UIKit/JSBUITapGestureRecognizer.h +20 -0
- package/src/definitions/UIKit/JSBUITextChecker.h +27 -0
- package/src/definitions/UIKit/JSBUITextField.h +44 -0
- package/src/definitions/UIKit/JSBUITextInputMode.h +41 -0
- package/src/definitions/UIKit/JSBUITextInputStringTokenizer.h +40 -0
- package/src/definitions/UIKit/JSBUITextPosition.h +38 -0
- package/src/definitions/UIKit/JSBUITextRange.h +38 -0
- package/src/definitions/UIKit/JSBUITextSelectionRect.h +36 -0
- package/src/definitions/UIKit/JSBUITextView.h +34 -0
- package/src/definitions/UIKit/JSBUIToolbar.h +22 -0
- package/src/definitions/UIKit/JSBUITouch.h +49 -0
- package/src/definitions/UIKit/JSBUIVideoEditorController.h +19 -0
- package/src/definitions/UIKit/JSBUIView.h +140 -0
- package/src/definitions/UIKit/JSBUIViewController.h +127 -0
- package/src/definitions/UIKit/JSBUIViewPrintFormatter.h +15 -0
- package/src/definitions/UIKit/JSBUIWebView.h +38 -0
- package/src/definitions/UIKit/JSBUIWindow.h +32 -0
- package/src/styles/starlight-overrides.css +23 -0
- package/tsconfig.json +5 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 快捷键
|
|
3
|
+
description: 在JSExtension中注册快捷键,并用query/process稳定处理按键。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
MarginNote插件提供了一套“扩展快捷键”机制:你可以在插件主类(继承`JSExtension`)中实现`additionalShortcutKeys()`返回快捷键声明,然后用`queryShortcutKeyWithKeyFlags(command,keyFlags)`与`processShortcutKeyWithKeyFlags(command,keyFlags)`完成“可用性判断”和“按下处理”。
|
|
7
|
+
|
|
8
|
+
本页按标准教程结构介绍该机制:接口作用、注册方式、推荐实现范式、参数语义、组合键选择建议与常见坑。
|
|
9
|
+
|
|
10
|
+
## 概述
|
|
11
|
+
|
|
12
|
+
扩展快捷键适用于:
|
|
13
|
+
|
|
14
|
+
- 快速触发插件动作(例如打开/关闭面板、执行一次批处理)。
|
|
15
|
+
- 在不方便加按钮的场景提供入口。
|
|
16
|
+
|
|
17
|
+
边界与限制:
|
|
18
|
+
|
|
19
|
+
- 当用户正在编辑文本时(firstResponder在输入框/编辑器上),按键可能被输入控件优先消费,插件快捷键不一定触发。这是预期行为。
|
|
20
|
+
- 组合键可能与系统或应用内建快捷键冲突,导致命中率不稳定;应优先选择冲突更少的组合键,并允许用户自定义(如你的插件有设置页)。
|
|
21
|
+
|
|
22
|
+
## 接口一览
|
|
23
|
+
|
|
24
|
+
在插件主类(`JSExtension`子类)中实现以下方法:
|
|
25
|
+
|
|
26
|
+
| 方法 | 作用 |
|
|
27
|
+
|---|---|
|
|
28
|
+
| `additionalShortcutKeys()` | 声明插件提供的快捷键列表。 |
|
|
29
|
+
| `queryShortcutKeyWithKeyFlags(command,keyFlags)` | 查询某条快捷键/命令在当前上下文是否可用(disabled)以及是否为勾选态(checked)。 |
|
|
30
|
+
| `processShortcutKeyWithKeyFlags(command,keyFlags)` | 处理快捷键按下。真正的业务动作应放在这里。 |
|
|
31
|
+
|
|
32
|
+
## 注册快捷键:additionalShortcutKeys
|
|
33
|
+
|
|
34
|
+
`additionalShortcutKeys()`返回一个数组,数组元素为“字典项”(Dictionary)。系统会读取这些字典项并构造对应的键盘命令。
|
|
35
|
+
|
|
36
|
+
目前已确认字典项的核心字段如下:
|
|
37
|
+
|
|
38
|
+
| 字段 | 类型 | 说明 |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| `input` | `string` | 按键输入,例如`"UIKeyInputLeftArrow"`、`"z"`、`"["`等。 |
|
|
41
|
+
| `flags` | `number` | 修饰键位掩码(见下方keyFlags表)。 |
|
|
42
|
+
| `title` | `string` | 用于显示的标题。 |
|
|
43
|
+
|
|
44
|
+
示例(仅演示结构;请按你的插件风格调整):
|
|
45
|
+
|
|
46
|
+
```javascript
|
|
47
|
+
additionalShortcutKeys: function () {
|
|
48
|
+
return [
|
|
49
|
+
{ input: "[", flags: 1179648, title: "MyAddon: Do Something" }, // Command+Shift+[
|
|
50
|
+
];
|
|
51
|
+
},
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
说明:该接口不是直接返回`UIKeyCommand[]`。
|
|
55
|
+
|
|
56
|
+
## 状态查询vs按下处理:query与process
|
|
57
|
+
|
|
58
|
+
这两者的职责必须严格区分:
|
|
59
|
+
|
|
60
|
+
- `queryShortcutKeyWithKeyFlags(...)`用于“查询状态”。系统可能会在可用性判断、快捷键列表重建、焦点变化等场景批量调用它,因此调用次数与传入参数都可能远超你的预期。为了保证性能与行为可控,建议在query中只做轻量判断并返回状态:避免任何IO操作、耗时计算、网络请求、文件读写,以及无差别日志输出;更不要在这里修改笔记/数据库或触发UI。
|
|
61
|
+
- `processShortcutKeyWithKeyFlags(...)`用于“处理按下”。真正的业务动作应放在这里;如果会修改笔记/笔记本数据,建议使用`UndoManager.undoGrouping(...)`包裹,保证撤销/重做稳定。
|
|
62
|
+
|
|
63
|
+
推荐写法:只匹配你关心的组合键,其余保持静默(例如直接`return null`)。
|
|
64
|
+
|
|
65
|
+
## command与keyFlags
|
|
66
|
+
|
|
67
|
+
### command
|
|
68
|
+
|
|
69
|
+
`command`是系统传入的标识。已确认它可能是:
|
|
70
|
+
|
|
71
|
+
- 内建命令名:例如`NewChildNote`、`ToggleExpand`、`EditAddTitle`等。
|
|
72
|
+
- 输入常量/字符:例如`UIKeyInputLeftArrow`、`UIKeyInputUpArrow`,以及`z`这类字符输入。
|
|
73
|
+
|
|
74
|
+
因此在你的实现里,应以“你在additionalShortcutKeys里声明的输入(input)+修饰键(flags)”为依据进行匹配,而不是假设`command`永远是某一种固定形式。
|
|
75
|
+
|
|
76
|
+
### keyFlags
|
|
77
|
+
|
|
78
|
+
以下为常用[修饰键位值](https://learn.microsoft.com/en-us/dotnet/api/uikit.uikeymodifierflags?view=net-ios-26.2-10.0):
|
|
79
|
+
|
|
80
|
+
| 修饰键 | 值 |
|
|
81
|
+
|---|---:|
|
|
82
|
+
| Shift | `131072` |
|
|
83
|
+
| Control | `262144` |
|
|
84
|
+
| Option(Alt) | `524288` |
|
|
85
|
+
| Command | `1048576` |
|
|
86
|
+
| Command+Shift | `1179648` |
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## 组合键选择建议
|
|
90
|
+
|
|
91
|
+
- 优先选择不常被系统/应用占用的组合键。
|
|
92
|
+
- 避免与“通用编辑快捷键”冲突(例如撤销/重做/复制粘贴等),除非你非常确定不会影响用户习惯。
|
|
93
|
+
- 若某个组合键命中率不稳定,通常是冲突或编辑态吞键导致;建议提供替代键位或设置项。
|
|
94
|
+
|
|
95
|
+
## 注意事项
|
|
96
|
+
|
|
97
|
+
- 在query里做副作用:导致“未按下也触发动作”、撤销链异常、或出现难以定位的状态错乱。
|
|
98
|
+
- 无差别打印日志:query可能被批量调用,导致刷屏,反而遮蔽真正有用的命中日志。
|
|
99
|
+
- 忽略编辑态:用户在输入时快捷键不触发属于预期,需要在产品交互上规避或提示。
|
|
100
|
+
|
|
101
|
+
## 相关
|
|
102
|
+
|
|
103
|
+
- API参考:[JSExtension](/reference/marginnote/jsextension/)
|
|
104
|
+
- 内建命令:[Application](/reference/global/application/)与[内建command清单](/reference/global/builtin-commands/)
|
|
105
|
+
- 获取选中与焦点:[脑图与选区](/guides/mindmap-and-selection/)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 存储与文件
|
|
3
|
+
description: 使用 NSUserDefaults 持久化配置,使用 NSFileManager 与 NSData 读写文件。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
插件需要保存设置或读写文件时,可使用 Foundation 提供的 NSUserDefaults、NSFileManager 和 NSData;路径可基于 `Application.sharedInstance().documentPath` 或 `tempPath`。
|
|
7
|
+
|
|
8
|
+
## NSUserDefaults:简单键值存储
|
|
9
|
+
|
|
10
|
+
适合保存开关、数字、字符串等少量配置。
|
|
11
|
+
|
|
12
|
+
```javascript
|
|
13
|
+
var defaults = NSUserDefaults.standardUserDefaults();
|
|
14
|
+
|
|
15
|
+
// 写入
|
|
16
|
+
defaults.setObjectForKey("enabled", "my_addon_setting");
|
|
17
|
+
defaults.setIntegerForKey(10, "my_addon_counter");
|
|
18
|
+
defaults.setBoolForKey(true, "my_addon_switch");
|
|
19
|
+
|
|
20
|
+
// 读取
|
|
21
|
+
var setting = defaults.objectForKey("my_addon_setting");
|
|
22
|
+
var counter = defaults.integerForKey("my_addon_counter");
|
|
23
|
+
var on = defaults.boolForKey("my_addon_switch");
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
键名建议加插件前缀,避免与其他插件冲突。
|
|
27
|
+
|
|
28
|
+
## NSFileManager:目录与文件
|
|
29
|
+
|
|
30
|
+
获取应用文稿目录并在其下创建插件专用目录:
|
|
31
|
+
|
|
32
|
+
```javascript
|
|
33
|
+
var app = Application.sharedInstance();
|
|
34
|
+
var basePath = app.documentPath + "/MyAddonData";
|
|
35
|
+
var fileManager = NSFileManager.defaultManager();
|
|
36
|
+
|
|
37
|
+
if (!fileManager.fileExistsAtPath(basePath)) {
|
|
38
|
+
fileManager.createDirectoryAtPathWithIntermediateDirectoriesAttributes(basePath, true, null);
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
写入文本文件(UTF-8 编码 4):
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
var filePath = basePath + "/config.txt";
|
|
46
|
+
var textData = NSData.dataWithStringEncoding("Hello, World!", 4);
|
|
47
|
+
textData.writeToFileAtomically(filePath, true);
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
读取文件为 NSData 后,若需转为 JS 可用的形式:
|
|
51
|
+
|
|
52
|
+
- **若文件为 JSON**:用 `NSJSONSerialization.JSONObjectWithDataOptions(data, 0)` 解析为对象/数组;解析前可用 `data.length() === 0` 判断是否为空。
|
|
53
|
+
- **若需纯文本字符串**:若运行时导出了 `NSString`,可用 `NSString.alloc().initWithDataEncoding(data, 4)`(4 为 UTF-8)再取字符串;若无 NSString,可先尝试上述 JSON 解析。
|
|
54
|
+
|
|
55
|
+
示例:从文件读取 JSON 并解析
|
|
56
|
+
|
|
57
|
+
```javascript
|
|
58
|
+
var data = NSData.dataWithContentsOfFile(filePath);
|
|
59
|
+
if (data && data.length() > 0) {
|
|
60
|
+
var obj = NSJSONSerialization.JSONObjectWithDataOptions(data, 0);
|
|
61
|
+
if (NSJSONSerialization.isValidJSONObject(obj)) {
|
|
62
|
+
// obj 为 JS 对象,可直接使用
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 路径说明
|
|
68
|
+
|
|
69
|
+
- `Application.sharedInstance().documentPath`:文稿目录,适合存放用户数据。
|
|
70
|
+
- `Application.sharedInstance().tempPath`:临时目录,系统可能清理。
|
|
71
|
+
- 插件包根路径由 `JSB.newAddon(mainPath)` 的 `mainPath` 传入,可用于读取包内资源(如图标)。
|
|
72
|
+
|
|
73
|
+
## 完整示例:保存与读取一个开关
|
|
74
|
+
|
|
75
|
+
在插件中提供「是否显示面板」的开关,并持久化:
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
// 读取
|
|
79
|
+
var showPanel = NSUserDefaults.standardUserDefaults().boolForKey("my_addon_show_panel");
|
|
80
|
+
|
|
81
|
+
// 用户点击开关后写入
|
|
82
|
+
NSUserDefaults.standardUserDefaults().setBoolForKey(newValue, "my_addon_show_panel");
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
结合 [工具栏与命令](/guides/toolbar-and-commands/) 与 [生命周期与窗口](/guides/lifecycle-and-window/),在 `notebookWillOpen` 延迟后根据该键决定是否 `addSubview` 面板。
|
|
86
|
+
|
|
87
|
+
## 相关
|
|
88
|
+
|
|
89
|
+
- [NSUserDefaults](/reference/foundation/ns-user-defaults/)、[NSFileManager](/reference/foundation/ns-file-manager/)、[NSData](/reference/foundation/ns-data/)
|
|
90
|
+
- [Cookbook:插件设置页](/guides/cookbook/addon-settings/)
|
|
91
|
+
- [网络请求](/guides/network-requests/) —— 网络响应 NSData 的 JSON 解析同理
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 工具栏与命令
|
|
3
|
+
description: 在 MarginNote 工具栏显示插件按钮并响应点击。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
通过实现 `queryAddonCommandStatus()` 并在返回值中提供图标、target、selector 和 checked 状态,可以在 MarginNote 工具栏上显示一个插件按钮;用户点击时,会调用你指定的实例方法(如 `toggleSample:`)。
|
|
7
|
+
|
|
8
|
+
## 返回格式
|
|
9
|
+
|
|
10
|
+
MarginNote 会调用插件的 `queryAddonCommandStatus()`。若希望显示工具栏按钮,必须返回一个对象,包含:
|
|
11
|
+
|
|
12
|
+
| 字段 | 类型 | 说明 |
|
|
13
|
+
|------|------|------|
|
|
14
|
+
| `image` | string | 图标文件名(相对于插件包根目录,如 `'sample.png'`)。 |
|
|
15
|
+
| `object` | object | 接收点击的对象,通常为 `self`(插件实例)。 |
|
|
16
|
+
| `selector` | string | 点击时调用的方法名,**必须以冒号结尾**(如 `'toggleSample:'`)。 |
|
|
17
|
+
| `checked` | boolean | 是否显示为「选中」状态(如面板是否已显示)。 |
|
|
18
|
+
|
|
19
|
+
若不希望显示按钮,可返回 `null`。
|
|
20
|
+
|
|
21
|
+
## 在实例方法中实现点击
|
|
22
|
+
|
|
23
|
+
selector 对应的方法必须是 **JSB.defineClass 的实例方法**,且方法名带冒号(例如 `toggleSample:`)。这样在方法内可以使用 `self` 访问插件实例和 `self.window`。
|
|
24
|
+
|
|
25
|
+
示例:切换一个浮窗的显示/隐藏,并记住状态到 NSUserDefaults,最后刷新工具栏状态:
|
|
26
|
+
|
|
27
|
+
```javascript
|
|
28
|
+
queryAddonCommandStatus: function () {
|
|
29
|
+
return {
|
|
30
|
+
image: "sample.png",
|
|
31
|
+
object: self,
|
|
32
|
+
selector: "toggleSample:",
|
|
33
|
+
checked: self.sampleController.view.window ? true : false,
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
toggleSample: function (sender) {
|
|
37
|
+
if (self.sampleController.view.window) {
|
|
38
|
+
self.sampleController.view.removeFromSuperview();
|
|
39
|
+
NSUserDefaults.standardUserDefaults().setObjectForKey(false, "my_addon_panel_on");
|
|
40
|
+
} else {
|
|
41
|
+
Application.sharedInstance().studyController(self.window).view.addSubview(self.sampleController.view);
|
|
42
|
+
self.layoutViewController();
|
|
43
|
+
NSUserDefaults.standardUserDefaults().setObjectForKey(true, "my_addon_panel_on");
|
|
44
|
+
}
|
|
45
|
+
Application.sharedInstance().studyController(self.window).refreshAddonCommands();
|
|
46
|
+
},
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## 刷新工具栏图标状态
|
|
50
|
+
|
|
51
|
+
修改了「是否显示面板」等状态后,应调用当前窗口的 `studyController.refreshAddonCommands()`,这样工具栏图标的 checked 状态会更新。
|
|
52
|
+
|
|
53
|
+
## 完整流程简述
|
|
54
|
+
|
|
55
|
+
1. 在 `sceneWillConnect` 中创建你的 viewController 或视图,并定义 `layoutViewController`(在 `controllerWillLayoutSubviews` 中调用)。
|
|
56
|
+
2. 在 `notebookWillOpen` 里用 NSTimer 延迟 0.2 秒后,若 NSUserDefaults 中为「显示面板」,则 `studyController.view.addSubview(...)` 并 `refreshAddonCommands()`。
|
|
57
|
+
3. 实现 `queryAddonCommandStatus` 返回 `image / object / selector / checked`。
|
|
58
|
+
4. 实现 `toggleSample:`(或你命名的 selector)切换面板显示并刷新。
|
|
59
|
+
|
|
60
|
+
## 相关
|
|
61
|
+
|
|
62
|
+
- [JSExtension](/reference/marginnote/jsextension/) — queryAddonCommandStatus
|
|
63
|
+
- [StudyController](/reference/marginnote/study-controller/) — refreshAddonCommands
|
|
64
|
+
- [原生 UI](/guides/native-ui/) — 创建面板视图
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: MarginNote 插件开发文档
|
|
3
|
+
description: MarginNote 插件开发的完整 API 参考与渐进式教程(含 Cookbook 配方)。
|
|
4
|
+
template: splash
|
|
5
|
+
hero:
|
|
6
|
+
tagline: 为 MarginNote 编写插件的官方/社区参考文档
|
|
7
|
+
image:
|
|
8
|
+
file: ../../assets/houston.webp
|
|
9
|
+
actions:
|
|
10
|
+
- text: 快速开始
|
|
11
|
+
link: /guides/getting-started/
|
|
12
|
+
icon: right-arrow
|
|
13
|
+
- text: API 参考
|
|
14
|
+
link: /reference/global/jsb/
|
|
15
|
+
icon: document
|
|
16
|
+
variant: minimal
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
import { Card, CardGrid } from '@astrojs/starlight/components';
|
|
20
|
+
|
|
21
|
+
## 从这里开始
|
|
22
|
+
|
|
23
|
+
<CardGrid stagger>
|
|
24
|
+
<Card title="快速开始" icon="rocket">
|
|
25
|
+
从零运行你的第一个插件(Hello World),了解 mnaddon.json 与入口函数。
|
|
26
|
+
[进入快速开始](/guides/getting-started/)
|
|
27
|
+
</Card>
|
|
28
|
+
<Card title="教程" icon="pencil">
|
|
29
|
+
按学习路径掌握生命周期、笔记与数据库、脑图与选区、工具栏与原生 UI。
|
|
30
|
+
[浏览教程](/guides/lifecycle-and-window/)
|
|
31
|
+
</Card>
|
|
32
|
+
<Card title="Cookbook 配方" icon="add-document">
|
|
33
|
+
按任务查找完整可运行代码:批量改标题、导出笔记本、高亮笔记、设置页等。
|
|
34
|
+
[查看配方](/guides/cookbook/batch-rename-notes/)
|
|
35
|
+
</Card>
|
|
36
|
+
<Card title="API 参考" icon="open-book">
|
|
37
|
+
全局对象、MarginNote 核心、Foundation、UIKit、Utility 的完整 API 说明。
|
|
38
|
+
[进入 API](/reference/global/jsb/)
|
|
39
|
+
</Card>
|
|
40
|
+
<Card title="贡献指南" icon="heart">
|
|
41
|
+
参与文档改进:贡献流程、API 参考与教程的格式规范、Markdown 约定等。
|
|
42
|
+
[查看贡献指南](/guides/contributing/)
|
|
43
|
+
</Card>
|
|
44
|
+
</CardGrid>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 隐藏的边界(The Black Box)
|
|
3
|
+
description: 只作为属性返回、但没有 JSExport 接口文件的对象与风险边界。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
本节记录一些在 API 中可能“能拿到对象实例”,但由于**没有对应的 `JSB*.h`(JSExport)接口文件**,因此你无法在 JS 中安全地调用其独有方法的“黑盒对象”。
|
|
7
|
+
|
|
8
|
+
典型表现:某个对象作为属性被返回,但你在文档/头文件清单里找不到它的 JSB 接口定义。
|
|
9
|
+
|
|
10
|
+
## 例子
|
|
11
|
+
|
|
12
|
+
- `NSLayoutManager`:常见于 `UITextView` 相关属性,但未见 `JSBNSLayoutManager.h`。
|
|
13
|
+
- `NSTextContainer`:同上。
|
|
14
|
+
- `UIFontDescriptor`:在头文件中被注释掉或未导出。
|
|
15
|
+
|
|
16
|
+
## 建议
|
|
17
|
+
|
|
18
|
+
- **不要**依赖 KVC/KVO 等高危手段“硬调用”黑盒对象。
|
|
19
|
+
- 如果必须实现相关功能:优先寻找已导出对象提供的替代 API(例如通过 `UITextView`/`NSAttributedString` 侧可用方法绕开)。
|