diff --git a/tiddlers/$__plugins_kookma_favorites.json b/tiddlers/$__plugins_kookma_favorites.json index de67e88..989da80 100644 --- a/tiddlers/$__plugins_kookma_favorites.json +++ b/tiddlers/$__plugins_kookma_favorites.json @@ -1 +1 @@ -{"tiddlers":{"$:/config/favorites/FolderOpenOnDrop":{"title":"$:/config/favorites/FolderOpenOnDrop","created":"20220814070906288","modified":"20220814074154827","tags":"","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/favorites/IconColor":{"title":"$:/config/favorites/IconColor","created":"20220814070554592","modified":"20220814115347049","tags":"","type":"text/vnd.tiddlywiki","text":"#ff0000"},"$:/config/favorites/modifierkey/expand-folder":{"title":"$:/config/favorites/modifierkey/expand-folder","tags":"","type":"text/vnd.tiddlywiki","text":"shift"},"$:/config/favorites/modifierkey/open-folder-items":{"title":"$:/config/favorites/modifierkey/open-folder-items","type":"text/vnd.tiddlywiki","text":"alt"},"$:/config/favorites/modifierkey/open-folder":{"title":"$:/config/favorites/modifierkey/open-folder","tags":"","type":"text/vnd.tiddlywiki","text":"ctrl"},"$:/config/favorites/modifierkey/sidebar-tab-from-folder":{"title":"$:/config/favorites/modifierkey/sidebar-tab-from-folder","tags":"","type":"text/vnd.tiddlywiki","text":"ctrl-shift"},"$:/config/kookma/favorites/ViewTemplateTitleFilters/Manager":{"title":"$:/config/kookma/favorites/ViewTemplateTitleFilters/Manager","list-before":"$:/config/ViewTemplateTitleFilters/system","tags":"$:/tags/ViewTemplateTitleFilter","type":"text/vnd.tiddlywiki","text":"[match[$:/plugins/kookma/favorites/ui/manager]then[$:/plugins/kookma/favorites/ui/ViewTemplate/Title]]"},"$:/favorites/folders/recent":{"title":"$:/favorites/folders/recent","caption":"Recently added","created":"20200103090757281","list":"","list-before":"","modified":"20220814160346450","tags":"$:/tags/Favorites/Folder","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/favorites/history":{"title":"$:/plugins/kookma/favorites/history","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Favorites/#ChangeLog\n\n* ''4.8.1'' -- 2022.12.17 -- update to TW 5.2.4, customizable item link title\n* ''4.7.9'' -- 2022.11.04 -- bug fixes in slider button and toolbar button\n* ''4.7.6'' -- 2022.10.20 -- create sidebar tab from folder\n* ''4.7.4'' -- 2022.10.07 -- folder button modifiers and draggable handle (secret keys) added \n* ''4.7.1'' -- 2022.08.25 -- folders are highly improved, export as bundle, special viewtemplate, button modifiers. \n* ''4.6.5'' -- 2022.08.14 -- updated to Tiddlywiki 5.2.3 and restructured for performance. \n* ''4.5.1'' -- 2020.05.16 -- new svg icon for toolbar and correction for svg color\n* ''4.5.0'' -- 2020.04.23 -- updated to Tiddlywiki 5.1.23 and fixed few issues\n* ''4.3.0'' -- 2019.11.19 -- correct caption when caption filed has wikitext\n* ''4.0.0'' -- 2019.12.17 -- a rewrite of old favorite plugin\n* ''3.0.12'' -- 2018.11.01 -- released by Mohammad Rahmani\n* ''3.0.5'' -- 2017.08.03 -- released by Andrew Harrison"},"$:/plugins/kookma/favorites/images/heart":{"title":"$:/plugins/kookma/favorites/images/heart","tags":"","type":"text/vnd.tiddlywiki","text":"\n \n"},"$:/plugins/kookma/favorites/images/stack":{"title":"$:/plugins/kookma/favorites/images/stack","caption":"465-stackoverflow","library":"IcoMoon Free","library_version":"13-Mar-2016","tags":"$:/tags/Image","type":"text/vnd.tiddlywiki","text":""},"$:/language/Buttons/Favorites/Caption/Add":{"title":"$:/language/Buttons/Favorites/Caption/Add","created":"20191216200037937","modified":"20210423153606311","type":"text/vnd.tiddlywiki","text":"favorites"},"$:/language/Buttons/Favorites/Caption/Remove":{"title":"$:/language/Buttons/Favorites/Caption/Remove","created":"20191216200037793","modified":"20210423153606322","type":"text/vnd.tiddlywiki","text":"Caption/Remove"},"$:/language/Buttons/Favorites/Hint/Add":{"title":"$:/language/Buttons/Favorites/Hint/Add","created":"20191216200037919","modified":"20210423153606337","type":"text/vnd.tiddlywiki","text":"Add to favorites"},"$:/language/Buttons/Favorites/Hint/Remove":{"title":"$:/language/Buttons/Favorites/Hint/Remove","created":"20200326193045794","modified":"20210423153606329","tags":"","type":"text/vnd.tiddlywiki","text":"Remove from favorites"},"$:/plugins/kookma/favorites/license":{"title":"$:/plugins/kookma/favorites/license","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\n\"\"\"\nCopyright (c) 2018-2022 [[Mohammad Rahmani|https://github.com/kookma]]\nCopyright (c) 2017 [[Andrew Harrison|https://github.com/t5a]]\n\"\"\"\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/favorites/macros/combo-search":{"title":"$:/plugins/kookma/favorites/macros/combo-search","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\\define standardSearch() [all[tiddlers+shadows]tagget[list]enlist-input[]search]\n\\define filterSearch() [all[tiddlers+shadows]tagget[list]enlist-input[]]+[subfilter]\n\n\\define displayResult(filter)\n\n<$set name=itemsFound filter=<<__filter__>> >\n<$list filter=\"[enlistlimit[1]]\" variable=null emptyMessage='// no result for this folder//
'>\n\n\n<$list filter=\"[subfilter]\" variable=folder>\n\n<$list filter=\"[list] :intersection[enlist] :and[limit[1]]\">\n
<$transclude tiddler=<> field=caption/>
\n\n\n<$list filter=\"[list] :intersection[enlist]\">\n<$link to=<>/>
\n\n\n\n\n\n\\end\n\n\n\\define combo-search(stateTiddler:\"\")\n<$vars pattern=\"^\\[\"\n stateTid={{{ [[$:/temp/favorites/combosearch/]addsuffix[$stateTiddler$]] }}}>\t \n\n\n\n\\end"},"$:/plugins/kookma/favorites/macros/definition":{"title":"$:/plugins/kookma/favorites/macros/definition","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\\define folderpath() $:/favorites/folders\n\\define foldertagTid() $:/tags/Favorites/Folder\n\\define folders() [all[tiddlers+shadows]tag[$(foldertagTid)$]]\n\\define recentlyAdded() $:/favorites/folders/recent\n\n\\define temppath() $:/temp/favorites\n\n\\define selectionTid() $(temppath)$/selection\n\\define tempNewTid() $(temppath)$/new-folder\n\\define temppopupTid() $(temppath)$/delete-confirm\n\\define tempreorderTid() $(temppath)$/reorder\n\\define saveTid() $(temppath)$/savetitle\n\n\n\\define sliderRevealState() $(temppath)$/slider/$(currentFolder)$\n\n\n\\define stateFolderEdit() $(temppath)$/folder-editor/$(currentFolder)$\n\\define tempFolderTextEdit() $(temppath)$/folder-editor/edit-text/$(currentFolder)$\n\n\n\\define itemLinkTitleinTree() $:/config/favorites/ItemLinkTitle\n\\define newFolderPosion() $:/config/favorites/NewFolderPosition\n\\define openFolderOnDrop() $:/config/favorites/FolderOpenOnDrop\n\\define expandFolderModifierKey() $:/config/favorites/modifierkey/expand-folder\n\\define openFolderModifierKey() $:/config/favorites/modifierkey/open-folder\n\\define openFolderItemsModifierKey() $:/config/favorites/modifierkey/open-folder-items\n\\define sidebarTabfromFolderModifierKey() $:/config/favorites/modifierkey/sidebar-tab-from-folder"},"$:/plugins/kookma/favorites/macros/drag-n-drop":{"title":"$:/plugins/kookma/favorites/macros/drag-n-drop","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\n\\define drop-actions()\n\n<$reveal type=\"nomatch\" default=\"\" text={{{ [listed[]tag] }}} >\n<$vars oldFolder={{{ [listed[]tag!match] +[limit[1]]}}} >\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[]\" />\n\n\n\n<$action-listops $tiddler=<> $subfilter=\"+[insertbefore:currentTiddler]\"/>\n<$list filter=\"[get[text]match[yes]]\" variable=null>\n<$action-setfield $tiddler=<> text=\"open\"/>\n\n\\end\n\n\\define placeholder()\n
 
\n\\end\n\n\\define droppable-item-after-last-item()\n\\whitespace trim\n\n<$droppable actions=<> enable=<> >\n<>
 
\n\n\\end\n\n\n\\define display-folder-is-empty()\n<$droppable actions=<> enable=<> >\n<>\n//Folder is empty//\n\n\\end"},"$:/plugins/kookma/favorites/macros/fav-tree":{"title":"$:/plugins/kookma/favorites/macros/fav-tree","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\define fav-tree(status:\"closed\")\n
\n\n<$reveal type=\"nomatch\" state=<> text=\"open\" default=\"$status$\" tag=\"div\" >\n <$button class=\"tc-btn-invisible tc-tiddlylink\" actions=<> dragFilter=\"[list]\" >\n\t\t {{$:/core/images/right-arrow}}\n \n\n<$reveal type=\"match\" state=<> text=\"open\" default=\"$status$\" tag=\"div\" >\n <$button class=\"tc-btn-invisible tc-tiddlylink\" actions=<> dragFilter=\"[list]\" >\n\t\t {{$:/core/images/down-arrow}}\n \n\n\n<$list filter=\"[match[yes]] :filter[!match]\" variable=null emptyMessage=\"\"\"\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-title-view\"/>\n\"\"\">\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-title-edit\"/>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-clear-btn\"/>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-rename-btn\"/>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-delete-btn\"/>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-reorder-btn\"/>\n\n
\n\n<$reveal type=\"match\" state=<> text=\"open\" default=\"$status$\" tag=div class=\"kk-fav-folder-content\">\n<$list filter=\"[list]\" template=\"$:/plugins/kookma/favorites/templates/list-item\" emptyMessage=<> />\n\n<>\n\n\\end\n\n\n\n\n\\define slider-btn-actions(status)\n\n<$list filter=\"[match[normal]]\">\n<$action-setfield $tiddler=<> text=\"$status$\"/>\n\n\n\n<$list filter=\"[match{$(expandFolderModifierKey)$}]\">\n<$action-deletetiddler $filter=\"[prefix[$(temppath)$/slider/]]\"/>\n<$action-setfield $tiddler=\"$:/temp/favorites/slider/$:/favorites/folders/recent\" text=closed/>\n<$action-setfield $tiddler=<> text=open/>\n\n\n\n<$list filter=\"[match{$(openFolderModifierKey)$}]\">\n<$action-navigate $to=<> $scroll=\"yes\"/>\n\n\n\n<$list filter=\"[match{$(openFolderItemsModifierKey)$}]\">\n<$action-setfield $tiddler=<> text=open/>\n<$list filter=\"[listreverse[]]\" >\n<$action-navigate $to=<> />\n\n\n\n\n<$list filter=\"[match{$(sidebarTabfromFolderModifierKey)$}]\">\n<$action-createtiddler \n $basetitle = {{{ [get[title]addsuffix[-as-sidebar-tab]] }}}\n caption = {{{ [get[caption]] }}}\n tags = \"$:/tags/SideBar\"\n text = \"{{$(currentFolder)$||$:/plugins/kookma/favorites/ui/ViewTemplate/Folder}}\"\n/>\n\n\n\\end"},"$:/plugins/kookma/favorites/macros/folder-create":{"title":"$:/plugins/kookma/favorites/macros/folder-create","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\define add-folder-add-actions()\n\\import $:/plugins/kookma/favorites/macros/definition\n\\define add_folder_top_folderlist() <$action-listops $tiddler=<> $field=\"list\" $subfilter=\"[get[text]] +[putfirst[]]\" />\n\\define add_folder_bottom_folderlist() <$action-listops $tiddler=<> $field=\"list\" $subfilter=\"[get[text]]\" />\n<$list filter=\"[get[text]trim[]!is[blank]]\" variable=null>\n<$let \n folderName = {{{ [get[text]] }}} \n saveTitle = {{{[get[text]]}}} \n setFolderPos = {{{ [get[text]match[yes]then[add_folder_top_folderlist]else[add_folder_bottom_folderlist]] }}} >\n <$action-createtiddler \n $basetitle=<>\n\t $savetitle=<>\n\t caption=<>\n\t tags=<>\n />\n\t\n <$macrocall $name=<> />\n\n\n<$action-deletetiddler $tiddler=<>/>\n\n\\end\n\n\\define add-folder-cancel-actions() <$action-deletetiddler $tiddler=<>/>\n\n\\define new-fav-folder-inputbox()\n<$keyboard key=enter actions=<> >\n<$keyboard key=escape actions=<> >\n<$edit-text tag=input tiddler=<> default=\"\" placeholder=\"enter a folder name\" class=\"kk-fav-input\"/>\n\n\n\\end\n\n\\define new-fav-folder-cancelButton()\n<$list filter=\"[get[text]minlength[1]limit[1]]\">\n<$button tooltip=\"clear input box\" class=\"tc-btn-invisible kk-fav-btn-mini\" actions=<>>\n{{$:/core/images/close-button}}\n\n\n\\end\n\n\\define new-fav-folder-addButton()\n<$button tooltip=\"create new folder\" class=\"tc-btn-invisible\" \nactions=<> disabled= {{{ [get[text]!is[blank]then[no]else[yes]] }}}>\n{{$:/core/images/new-button}}\n\n\\end"},"$:/plugins/kookma/favorites/macros/folder-delete":{"title":"$:/plugins/kookma/favorites/macros/folder-delete","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\define folder-delete-actions()\n<$wikify name=warning-message text='Do you wish to delete \"{{$(currentFolder)$!!caption}}\" folder ($(currentFolder)$)?'>\n<$action-confirm $message=<> >\n\t<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[[$(currentFolder)$]]\" />\n\t<$action-deletetiddler $tiddler=<>/>\n\t\"\"\"\n\t\n\\end\t\n"},"$:/plugins/kookma/favorites/macros/folder-rename":{"title":"$:/plugins/kookma/favorites/macros/folder-rename","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\define rename-perform-actions()\n<$list filter=\"[get[text]trim[]minlength[1]]\" variable=newTitle>\n<$action-setfield $tiddler=<> $field=\"caption\" $value=<> />\n<$action-deletetiddler $tiddler=<>/>\n<$action-deletetiddler $tiddler=<>/>\n\n\\end\n\n\\define rename-cancel-actions()\n<$action-deletetiddler $tiddler=<>/>\n<$action-deletetiddler $tiddler=<>/>\n\\end"},"$:/plugins/kookma/favorites/macros/folder-reorder":{"title":"$:/plugins/kookma/favorites/macros/folder-reorder","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\define folder-reorder()\n<$let selectedFolder={{{ [get[text]] }}} \n disabledStatus={{{[taglimit[1]then[no]else[yes]]}}} >\n
\n<$list filter=\"[match[no]]\" variable=null emptyMessage=\"//First select a folder//\">\n<$transclude tiddler=<> field=caption/>\n\n
\n\n<$button tooltip=\"move down\" disabled=<> >{{$:/core/images/down-arrow}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"+[move:1]\"/>\n\n<$button tooltip=\"move up\" disabled=<> >{{$:/core/images/up-arrow}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"+[move:-1]\"/>\n\n<$button tooltip=\"put first\" disabled=<> >{{$:/core/images/fold-button}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[] [] +[putfirst:1[]]\"/>\n\n<$button tooltip=\"put last\" disabled=<> >{{$:/core/images/unfold-button}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[] [putlast:1[]]\"/>\n\n<$button tooltip=\"sort downwards\" disabled=<> >{{$:/core/images/unfold-all-button}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"+[sort[caption]]\"/>\n\n<$button tooltip=\"sort upwards\" disabled=<> >{{$:/core/images/fold-all-button}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"+[!sort[caption]]\"/>\n\n\n\\end"},"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-bundle":{"title":"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-bundle","code-body":"yes","list-after":"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-export","tags":"$:/tags/Favorites/Manager/FilterButton","type":"text/vnd.tiddlywiki","text":"\\define bundle-folder()\n<$button class=\"tc-btn-invisible\" tooltip=\"export folder and tiddlers as bundle\"> {{$:/plugins/kookma/favorites/images/stack}}\n<$action-sendmessage $message=\"tm-download-file\" \n $param=\"$:/plugins/kookma/favorites/templates/export-bundle\"\n exportFilter=<>\n folderpath=<>\n foldertags=<>\n foldercaption= {{{ [get[caption]addprefix[Exported ]] :else[[Exported favorites]]}}}\n filename=\"Favorites_Folder_Exported.json\"\n/>\n\n\\end\n\n\n<$reveal type=nomatch default=\"0\" text=<> >\n<$set name=exportFilter filter=<> >\n<>\n\n\n\n"},"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-delete":{"title":"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-delete","code-body":"yes","tags":"$:/tags/Favorites/Manager/FilterButton","type":"text/vnd.tiddlywiki","text":"<$reveal type=nomatch default=\"0\" text=<> >\n<$button popup=<> class=\"tc-btn-invisible\" tooltip=\"delete all tiddlers in this folder\">\n{{$:/core/images/delete-button}}\n\n\n\n<$reveal state=<> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n
\n
\n
\nAre you sure you wish to delete permanently <> tiddler(s)?\n
\n
\n<$button class=\"tc-button tt-button\"> delete\n <$action-deletetiddler $filter=<> />\n <$list filter=\"[match[singleFolder]then] :else[all[tiddlers+shadows]tag]\" >\n <$action-deletefield $field=\"list\"/>\n \n\n
\n
\n
\n"},"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-export":{"title":"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-export","code-body":"yes","tags":"$:/tags/Favorites/Manager/FilterButton","type":"text/vnd.tiddlywiki","text":"<$reveal type=nomatch default=\"0\" text=<> >\n<$set name=exportFilter filter=<> >\n<$macrocall $name=\"exportButton\" exportFilter=<> lingoBase=\"$:/language/Buttons/ExportTiddlers/\" baseFilename=\"favorites\"/>\n\n"},"$:/plugins/kookma/favorites/manager/tabs/export":{"title":"$:/plugins/kookma/favorites/manager/tabs/export","caption":"Export","list-after":"$:/plugins/kookma/favorites/manager/tabs/search","tags":"$:/tags/Favorites/Manager","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\define lingo-base() $:/language/Search/\n\nExport or delete folders content\n\n<$let \n selection= {{{ [get[text]] }}} \n selectionType={{{ [match[allFavorites]then[allFavorites]else[singleFolder]] }}}\n allFavoritesFilter=\"[all[tiddlers+shadows]tagget[list]enlist-input[]]\"\n singleFolderFilter=\"[list]\"\n selectionFilter={{{ [match[singleFolder]thenelse] }}}\n resultCount= {{{ [subfiltercount[]] }}} \n>\n\n\n\n\n
\n<>\n<$reveal type=nomatch default=\"0\" text={{{[subfiltercount[]]}}} >\n<$list filter=<> template=\"$:/core/ui/ListItemTemplate\"/>\n\n
\n\n"},"$:/plugins/kookma/favorites/manager/tabs/folders":{"title":"$:/plugins/kookma/favorites/manager/tabs/folders","caption":"Folders","tags":"$:/tags/Favorites/Manager","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import [all[tiddlers+shadows]tag[$:/tags/Favorites/Macro/Folder]]\n\n\n\nCreate, delete, rename, and rearrange folders\n\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/ui-folder-create\" />\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/ui-folder-reorder\" />\n\n<$vars fv-config-buttons=yes>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/ui-folder-tree\" field=text/>\n\n"},"$:/plugins/kookma/favorites/manager/tabs/search":{"title":"$:/plugins/kookma/favorites/manager/tabs/search","caption":"Search","list-after":"$:/plugins/kookma/favorites/manager/tabs/folders","tags":"$:/tags/Favorites/Manager","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import $:/plugins/kookma/favorites/macros/combo-search\n\nSearch in favorites list (use filter or standard search)\n\n<>"},"$:/plugins/kookma/favorites/readme":{"title":"$:/plugins/kookma/favorites/readme","tags":"","type":"text/vnd.tiddlywiki","text":"; Favorites\nA favorite item also called a bookmark is a shortcut, you are creating for quick access to it. You can access that bookmark at any time and view that as many times as you want without having to search and find it again.\n\nFavorites plugin is a set of tool for creating favorites (bookmarks) in Tiddlywiki. Each favorite item is a shortcut to a tiddler. Favorites can be organized in folders.\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Favorites/\n* Code: https://github.com/kookma/TW-Favorites"},"$:/plugins/kookma/favorites/styles/dynamic":{"title":"$:/plugins/kookma/favorites/styles/dynamic","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"/* skin */\n.kk-fav-row:hover {\n\tbackground-color: <>;\n}\n.kk-fav-row .tc-btn-invisible svg\n{\n\tfont-size: 0.9em;\n\tfill: <>;\n\tvertical-align: middle;\n\tmargin-right:0.5em;\n}\n.kk-fav-folder-content .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <>;\n\tvertical-align: middle;\n\n}\n\n/* for manager btn */\n.tc-btn-invisible.kk-fav-btn{\n\tcolor: <>;\n}\n.tc-btn-invisible.kk-fav-btn svg{\n\tfill: <>;\n}\n\n/* very important: style the favorite icon on tiddler view toolbar */\n.tc-tiddler-controls .notselected .tc-image-favorites-button {\n\tstroke:#000;\n}\n\n.tc-tiddler-controls .selected .tc-image-favorites-button {\n\tstroke: {{$:/config/favorites/IconColor}};\n\tfill: {{$:/config/favorites/IconColor}};\n}\n\n.tc-tiddler-controls:hover .selected .tc-image-favorites-button {\n\tstroke: {{$:/config/favorites/IconColor}};\n\tfill: {{$:/config/favorites/IconColor}};\n}"},"$:/plugins/kookma/favorites/styles/folder":{"title":"$:/plugins/kookma/favorites/styles/folder","text":".kk-fav-row{\n\tdisplay: flex;\t\n\twidth: 100%;\n\tflex-wrap: nowrap;\n}\n\n.kk-fav-row div.kk-fav-input-textbox{\n\tflex-grow:1;\n\tmargin-right:8px;\n\twidth:100%;\n}\n\n.kk-fav-row .kk-fav-input-textbox .kk-fav-input{\n\twidth:100%;\n\toutline: none;\n\tborder: none;\n\tborder-bottom: 1px dotted grey;\n\tbackground: transparent;\n}\n\n.kk-fav-row .kk-fav-input-textbox .kk-fav-inpu:focus{\n\toutline: none;\n\tborder-bottom: 1px solid #5778d8;\n\tbackground: transparent;\n}\n\n.kk-fav-row button.tc-btn-invisible{\n\toutline: none;\n}\n\n/* for title everywhere */\n.kk-fav-title{\n\tfont-weight: 600;\n}\n.kk-fav-title svg{\n\theight:1em;\n\twidth:1em;\n\tvertical-align:middle;\n}\n/* folder title row */\n.kk-fav-row .kk-fav-title{\n\twidth:100%;\n}\n\n.kk-fav-row input[type=\"radio\"] {\n\twidth: 0.7em;\n\theight: 0.7em; \n\tvertical-align: middle;\n}\n\n/* other items */\nlabel.kk-fav-label{\n\tflex-shrink:0;\n\twidth:120px;\n\n}\n\n/* in slider */\n.kk-fav-folder-content {\n\tpadding-left:20px;\n}\n\n/* only if caption has svg segment.\nsee $:/plugins/kookma/favorites/templates/item-link */\n.kk-fav-item svg{\n\theight:1em;\n\twidth:1em;\n\tvertical-align:middle;\n}\n\n/* clear buttons on inputbox for create folder, rename folder*/\n.tc-btn-invisible.kk-fav-btn-mini svg{\n\twidth:0.8em;\n\theight:0.8em;\n\tvertical-align:middle;\n}\n.tc-btn-invisible.kk-fav-btn-mini{\n\tmargin-right:0.5em;\n}\n\n/* folder reorder and rearrange */\n.kk-fav-folder-reorder{\n\tmargin-top:15px;\n\tmargin-bottom:15px;\n}\n\n.kk-fav-folder-reorder button{\n\talign-self: flex-start;\n\tflex-shrink:0;\n\tmargin-left:4px;\n}\n\n.kk-fav-folder-reorder button svg.tc-image-button{\n\twidth: 0.7em;\n\theight: 0.7em;\n}\n\n/* hide item-delete for frozen-tab ----- this is important and control visibilty of close button*/\n.kk-fav-frozen-tab .kk-fav-close-btn{\n\tdisplay:none;\n}\n","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/favorites/styles/misc":{"title":"$:/plugins/kookma/favorites/styles/misc","text":"/* select widget in export */\n.kk-fav-select{\n\tdisplay:inline-block;\n\twidth:320px;\n}\n\n/* buttons on sidebar: manager, collapse all */\n.tc-btn-invisible.kk-fav-btn{\n\topacity:0.5;\n}\n.tc-btn-invisible.kk-fav-btn:hover{\n\topacity:1.0;\n}\n.tc-btn-invisible.kk-fav-btn .tc-image-fold{\n\theight:0.9em;\n\tvertical-align:bottom;\n}\n\n\n.kk-fav-btn .tc-image-refresh-button{\n\tvertical-align: middle;\n\twidth: 1.1em;\n\theight: 1.1em;\n}\n\ninput.kk-fv-color-input[type=\"color\"] {\n\t-webkit-appearance: none;\n\tborder: none;\n\twidth: 40px;\n\theight: 20px;\n}\n\n/* Utility classes */\n\n.kk-fav-left-gap{\n\tmargin-left:8px;\n}\n\n/* Settings tab */\nlabel.kk-fav-label {\n display:inline-block;\n width: 210px;\n margin-bottom:0.4em;\n}\n.kk-fav-input {\n width:120px;\n}\n\n/* folder-tiddler-ui*/\n\ndetails.kk-fav-details>summary{\npadding-left:0;\n}","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/favorites/templates/export-bundle":{"title":"$:/plugins/kookma/favorites/templates/export-bundle","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"<$let timeStamp=<>\n folderName={{{ [addprefix[/f-]addprefix] }}}\t>\n[<$list filter=<> ><$text text=<>/>,\n{\n \"created\":\"<>\",\n \"exported-from\":\"{{$:/SiteTitle}}\",\n \"tags\":\"<>\",\n \"title\":\"<>\",\n \"caption\":\"<>\",\n \"list\":\"{{{ [subfilterformat:titlelist[]join[ ]] }}}\"\n}\n]"},"$:/plugins/kookma/favorites/templates/folder-clear-btn":{"title":"$:/plugins/kookma/favorites/templates/folder-clear-btn","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[get[text]minlength[1]limit[1]]\" variable=null>\n<$button tooltip=\"cancel rename folder\" class=\"tc-btn-invisible kk-fav-btn-mini\"\nactions=<>\n>{{$:/core/images/close-button}}\n"},"$:/plugins/kookma/favorites/templates/folder-delete-btn":{"title":"$:/plugins/kookma/favorites/templates/folder-delete-btn","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"<$button class=\"tc-btn-invisible\" actions=<> >\n{{$:/core/images/delete-button}}\n\n"},"$:/plugins/kookma/favorites/templates/folder-rename-btn":{"title":"$:/plugins/kookma/favorites/templates/folder-rename-btn","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"<$reveal stateTitle=<> type=\"nomatch\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<> setTo=\"edit\">{{$:/core/images/edit-button}}\n<$action-setfield $tiddler=<> $field=\"text\" $value={{{[get[caption]]}}}/>\n\n\n<$reveal stateTitle=<> type=\"match\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" actions=<> disabled={{{ [get[text]trim[]minlength[1]then[no]else[yes]] }}}>{{$:/core/images/done-button}}\n"},"$:/plugins/kookma/favorites/templates/folder-reorder-btn":{"title":"$:/plugins/kookma/favorites/templates/folder-reorder-btn","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\\define check-actions()\n\n<$set name=\"order\" filter=\"[tagging[]] -[]\">\n<$action-listops $tiddler=<> $field=\"list\" $filter=\"+[enlist]\">\n\n\\end\n<$radio tiddler=<> field=text value=<> actions=<> class=\"kk-fav-btn-radio\"/>"},"$:/plugins/kookma/favorites/templates/folder-title-edit":{"title":"$:/plugins/kookma/favorites/templates/folder-title-edit","code-body":"yes","type":"text/vnd.tiddlywiki","text":"
\n\n\n<$reveal stateTitle=<> type=\"nomatch\" text=\"edit\" tag=\"div\" class=\"kk-fav-title\">\n<$droppable actions=<> enable=<> >\n<$let tv-wikilinks=\"no\">\n<$transclude tiddler=<> field=\"caption\">\n<$transclude tiddler=<> field=\"title\"/>\n\n\n\n\n\n<$reveal stateTitle=<> type=\"match\" text=\"edit\" tag=\"div\">\n<$keyboard key=enter actions=<> >\n<$keyboard key=escape actions=<> >\n<$edit-text tiddler=<> field=\"text\" tag=\"input\" default={{{[get[caption]]}}} placeholder=\"enter a folder title\" focus=yes class=\"kk-fav-input\"/>\n\n\n\n
"},"$:/plugins/kookma/favorites/templates/folder-title-view":{"title":"$:/plugins/kookma/favorites/templates/folder-title-view","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\n
\n<$droppable actions=<> enable=<> tag=\"div\">\n<$let tv-wikilinks=\"no\">\n<$transclude tiddler=<> field=\"caption\">\n<$transclude tiddler=<> field=\"title\"/>\n\n\n\n
\n\n"},"$:/plugins/kookma/favorites/templates/item-delete-btn":{"title":"$:/plugins/kookma/favorites/templates/item-delete-btn","code-body":"yes","type":"text/vnd.tiddlywiki","text":"\n<$button class=\"tc-btn-invisible tc-btn-mini kk-fav-close-btn\" tooltip=\"remove item from favorites\">\n{{$:/core/images/close-button}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[]\"/>\n "},"$:/plugins/kookma/favorites/templates/item-link-btn":{"title":"$:/plugins/kookma/favorites/templates/item-link-btn","code-body":"yes","type":"text/vnd.tiddlywiki","text":"\n<$link to=<> tooltip=<> class=\"kk-fav-item\">\n\n<$let dispField= {{{ [get[format]] [get[text]] :and[first[]trim[]!is[blank]else[caption]] }}} tv-wikilinks=\"no\" >\n<$list filter=\"[gettrim[]!is[blank]] :filter[!match[title]]\" variable=null emptyMessage='<$view field=title/>'>\n<$transclude field=<>/>\n\n\n
"},"$:/plugins/kookma/favorites/templates/list-item":{"title":"$:/plugins/kookma/favorites/templates/list-item","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\n\\whitespace trim\n<$droppable actions=<> enable=<> tag=div>\n<>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/item-delete-btn\" field=text/> \n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/item-link-btn\" field=text/>\n"},"$:/plugins/kookma/favorites/templates/ui-folder-create":{"title":"$:/plugins/kookma/favorites/templates/ui-folder-create","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"
\n\n
\n<>\n
\n<>\n<>\n
"},"$:/plugins/kookma/favorites/templates/ui-folder-reorder":{"title":"$:/plugins/kookma/favorites/templates/ui-folder-reorder","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"
\n\n<$macrocall $name=\"folder-reorder\" />\n
"},"$:/plugins/kookma/favorites/templates/ui-folder-tree":{"title":"$:/plugins/kookma/favorites/templates/ui-folder-tree","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import [all[tiddlers+shadows]tag[$:/tags/Favorites/Macro/Folder]]\n\n<$list filter=<> variable=\"currentFolder\">\n<$macrocall $name=\"fav-tree\" status={{{ [matchthen[open]else[closed]] }}} />\n\n"},"$:/plugins/kookma/favorites/ui/buttons/add-remove":{"title":"$:/plugins/kookma/favorites/ui/buttons/add-remove","caption":"{{$:/plugins/kookma/favorites/images/heart}} {{$:/language/Buttons/Favorites/Caption/Add}}","description":"{{$:/language/Buttons/Favorites/Hint/Add}}","list-after":"$:/core/ui/Buttons/info","tags":"$:/tags/ViewToolbar","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\import [[$:/plugins/kookma/favorites/macros/definition]]\n\n\\define add-this-tiddler() [[$(currentTiddler)$]]+[putfirst[]]\n\\define remove-this-tiddler() -[[$(currentTiddler)$]]\n\n\n\\define show-favorites-button(class)\n\\whitespace trim\n<$list filter='[match[yes]]'>\n{{$:/plugins/kookma/favorites/images/heart}}\n\n<$list filter='[match[yes]]'>\n<$text text={{$:/language/Buttons/Favorites/Caption/Add}}/>\n\n\\end\n\n\n\\define btn-add-to-favorites()\n <$button \n tooltip={{$:/language/Buttons/Favorites/Hint/Add}} aria-label={{$:/language/Buttons/Favorites/Caption/Add}} \n class=<>>\n <$action-listops $tiddler=<> $field='list' $subfilter=<>/>\n\t\t <$macrocall $name=\"show-favorites-button\" class=\"notselected\"/>\n \n\\end \n\n\\define btn-remove-from-favorites()\n <$button \n tooltip={{$:/language/Buttons/Favorites/Hint/Remove}} aria-label={{$:/language/Buttons/Favorites/Caption/Remove}} \n class=<> >\n <$action-listops $tiddler={{{[subfiltercontainslimit[1]]}}} $field='list' $subfilter=<>/>\n\t\t <$macrocall $name=\"show-favorites-button\" class=\"selected\"/>\n \n\\end \n\n\n<$list filter=\"[all[current]listed[]taglimit[1]]\" variable=null \n emptyMessage=<> >\n<>\n"},"$:/plugins/kookma/favorites/ui/ControlPanel/Settings":{"title":"$:/plugins/kookma/favorites/ui/ControlPanel/Settings","caption":"Favorites","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"\\define checked-frozen()\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/ui/sidebar/active-tab\" tags=\"\"/>\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/ui/buttons/add-remove\" tags=\"\"/> \n<$action-setfield $tiddler=\"$:/state/tab/sidebar--595412856\" text=\"$:/plugins/kookma/favorites/ui/sidebar/frozen-tab\"/> \n\\end\n\n\\define unchecked-frozen()\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/ui/sidebar/active-tab\" tags=\"$:/tags/SideBar\"/>\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/ui/buttons/add-remove\" tags=\"$:/tags/ViewToolbar\"/> \n<$action-setfield $tiddler=\"$:/state/tab/sidebar--595412856\" text=\"$:/plugins/kookma/favorites/ui/sidebar/active-tab\"/> \n\\end\n\nThese settings let you customize the behaviour of the Favorites plugin.\n\n---\n\n;Show Favorites setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/favorites/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar\n\n;Options\n:<$checkbox tiddler=\"$:/config/favorites/NewFolderPosition\" field=\"text\"\n checked=\"yes\" unchecked=\"no\" default=\"no\"> Add new folder at the top of folders list\n:<$checkbox tiddler=\"$:/config/favorites/FolderOpenOnDrop\" field=\"text\"\n checked=\"yes\" unchecked=\"no\" default=\"no\"> Open folder on drop item\n: Viewtoolbar icon color <$edit-text tiddler=\"$:/config/favorites/IconColor\" \n\tfield=\"text\" tag=\"input\" type=\"color\" class=\"kk-fv-color-input\"/> <$list filter=\"[[$:/config/favorites/IconColor]get[text]!match[#ff0000]]\" variable=null>\n\t<$button class=\"tc-btn-invisible kk-fav-btn\" tooltip=\"Reset viewtoolbar icon color\">{{$:/core/images/refresh-button}}\n <$action-setfield $tiddler=\"$:/config/favorites/IconColor\" text=\"#ff0000\" />\n \n\t\n\t \n;Freeze favorites\n:<$checkbox checkactions=<> \n tiddler=\"$:/plugins/kookma/favorites/ui/sidebar/frozen-tab\" tag=\"$:/tags/SideBar\"\n\t checkactions=<>\n\t uncheckactions=<> > Enable frozen tab\n\n;Shortcuts\n: <$edit-text tiddler=\"$:/config/favorites/modifierkey/expand-folder\" tag=input default=\"\" placeholder=\"a moifier key like ctrl\" class=\"kk-fav-input\"/> + click\n: <$edit-text tiddler=\"$:/config/favorites/modifierkey/open-folder\" tag=input default=\"\" placeholder=\"a moifier key like shift\" class=\"kk-fav-input\"/> + click\n: <$edit-text tiddler=\"$:/config/favorites/modifierkey/open-folder-items\" tag=input default=\"\" placeholder=\"a moifier key like shift\" class=\"kk-fav-input\"/> + click\n: <$edit-text tiddler=\"$:/config/favorites/modifierkey/sidebar-tab-from-folder\" tag=input default=\"\" placeholder=\"a moifier key like shift\" class=\"kk-fav-input\"/> + click\n\n;Hidden settings\n: [[Global setting for item link title|$:/config/favorites/ItemLinkTitle]]"},"$:/plugins/kookma/favorites/ui/manager":{"title":"$:/plugins/kookma/favorites/ui/manager","caption":"Favorites Folder Manager","tags":"","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/kookma/favorites/ui/sidebar/active-tab":{"title":"$:/plugins/kookma/favorites/ui/sidebar/active-tab","caption":"Favorites","list-after":"$:/core/ui/SideBar/Open","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import [all[tiddlers+shadows]tag[$:/tags/Favorites/Macro/Folder]]\n\n\\define show-options()\n<$button class=\"tc-btn-invisible kk-fav-btn\" to=\"$:/plugins/kookma/favorites/ui/manager\">\n{{$:/core/images/options-button}} Manager\n\n\\end\n\n\\define colapse-all()\n<$list filter=\"[prefix[$(temppath)$/slider/]!suffix] :filter[{!!text}match[open]] :and[limit[1]]\" variable=\"null\">\n<$button class=\"tc-btn-invisible kk-fav-btn\" tooltip=\"collapse all folders, open Recently added\" actions='<$action-deletetiddler $filter=\"[prefix[$(temppath)$/slider/]]\"/>' >\n{{$:/core/images/fold-button}}\n\n\n\\end\n\n\n
\n
\n---  <> <>

\n

\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/ui-folder-tree\" field=text/>\n
"},"$:/plugins/kookma/favorites/ui/sidebar/frozen-tab":{"title":"$:/plugins/kookma/favorites/ui/sidebar/frozen-tab","caption":"Favorites","list-after":"$:/core/ui/SideBar/Open","tags":"","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import [all[tiddlers+shadows]tag[$:/tags/Favorites/Macro/Folder]]\n\n\n
\n<$set name=\"tv-enable-drag-and-drop\" value=\"no\">\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/ui-folder-tree\" />\n\n
\n"},"$:/plugins/kookma/favorites/ui/ViewTemplate/Folder":{"title":"$:/plugins/kookma/favorites/ui/ViewTemplate/Folder","list-after":"$:/core/ui/ViewTemplate/body","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<$list filter=\"[all[current]tag[$:/tags/Favorites/Folder]]\">\n<$transclude tiddler=\"$:/plugins/kookma/favorites/viewtemplates/ui-folder-tiddler\" mode=block/>\n\n"},"$:/plugins/kookma/favorites/ui/ViewTemplate/Title":{"title":"$:/plugins/kookma/favorites/ui/ViewTemplate/Title","tags":"","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n

\n<$text text={{{ [get[caption]else{!!title}] }}}/>\n

"},"$:/plugins/kookma/favorites/viewtemplates/ui-folder-tiddler":{"title":"$:/plugins/kookma/favorites/viewtemplates/ui-folder-tiddler","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\n\n\\import $:/plugins/kookma/favorites/macros/definition\n\\import $:/plugins/kookma/favorites/macros/drag-n-drop\n\n\\define tempInput() $:/temp/favorites/add-bulk/$(currentTiddler)$\n\\define inputFilter() [subfilter{$(tempInput)$}] :filter[is[tiddler]]\n\\define actionFilterAdd() [all[current]get[list]enlist-input[]] [subfilter{$(tempInput)$}]\n\\define actionFilterRemove() [all[current]get[list]enlist-input[]] -[subfilter{$(tempInput)$}]\n\\define actionDeleteTemp() <$action-deletetiddler $tiddler=<> />\n\n\\define actionAppendItems()\n\n<$list filter=\"[subfilter{$(tempInput)$}]\" variable=item>\n<$vars oldFolder={{{ [listed[]tag] +[limit[1]] }}} >\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[]\" />\n\n\n\n<$action-listops $filter=<> />\n\\end\n\n\\define add-remove-bulk-items()\n<$button tooltip=\"Append items to this folder\" disabled={{{ [subfilter{$(tempInput)$}has[title]limit[1]then[no]else[yes]] }}} actions=<> >\nAppend\n \n<$button tooltip=\"Remove items from this folder\" disabled={{{ [subfilter{$(tempInput)$}has[title]limit[1]then[no]else[yes]] }}} actions='<$action-listops $filter=<> />' >\nRemove\n\n\\end\n\nAdd, remove bulk of items\n\n
\n<$keyboard key=\"escape\" actions=<> >\n<$edit-text tiddler=<> field=\"text\" tag=\"input\" type=\"search\" default=\"\" placeholder=\"enter a filter like [tag[doc]]\"/>\n\n<>\n
\n\n\n
FIltered items: //<$count filter=<>/> mathches//\n
\n<$list filter=<> template=\"$:/core/ui/ListItemTemplate\"/>\n
\n
\n\nContents of folder: ''{{!!caption}}''\n\n
\n<$vars currentFolder=<> >\n<$list filter=\"[list]\" emptyMessage=<> >\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/list-item\"/>\n\n\n<>\n\n
\n"}}} \ No newline at end of file +{"tiddlers":{"$:/config/favorites/FolderOpenOnDrop":{"title":"$:/config/favorites/FolderOpenOnDrop","created":"20220814070906288","modified":"20220814074154827","tags":"","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/favorites/IconColor":{"title":"$:/config/favorites/IconColor","created":"20220814070554592","modified":"20220814115347049","tags":"","type":"text/vnd.tiddlywiki","text":"#ff0000"},"$:/config/favorites/modifierkey/expand-folder":{"title":"$:/config/favorites/modifierkey/expand-folder","tags":"","type":"text/vnd.tiddlywiki","text":"shift"},"$:/config/favorites/modifierkey/open-folder-items":{"title":"$:/config/favorites/modifierkey/open-folder-items","type":"text/vnd.tiddlywiki","text":"alt"},"$:/config/favorites/modifierkey/open-folder":{"title":"$:/config/favorites/modifierkey/open-folder","tags":"","type":"text/vnd.tiddlywiki","text":"ctrl"},"$:/config/favorites/modifierkey/sidebar-tab-from-folder":{"title":"$:/config/favorites/modifierkey/sidebar-tab-from-folder","tags":"","type":"text/vnd.tiddlywiki","text":"ctrl-shift"},"$:/config/kookma/favorites/ViewTemplateTitleFilters/Manager":{"title":"$:/config/kookma/favorites/ViewTemplateTitleFilters/Manager","list-before":"$:/config/ViewTemplateTitleFilters/system","tags":"$:/tags/ViewTemplateTitleFilter","type":"text/vnd.tiddlywiki","text":"[match[$:/plugins/kookma/favorites/ui/manager]then[$:/plugins/kookma/favorites/ui/ViewTemplate/Title]]"},"$:/favorites/folders/recent":{"title":"$:/favorites/folders/recent","caption":"Recently added","created":"20200103090757281","list":"","list-before":"","modified":"20220814160346450","tags":"$:/tags/Favorites/Folder","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/favorites/history":{"title":"$:/plugins/kookma/favorites/history","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Favorites/#ChangeLog\n\n* ''4.8.1'' -- 2022.12.17 -- update to TW 5.2.4, customizable item link title\n* ''4.7.9'' -- 2022.11.04 -- bug fixes in slider button and toolbar button\n* ''4.7.6'' -- 2022.10.20 -- create sidebar tab from folder\n* ''4.7.4'' -- 2022.10.07 -- folder button modifiers and draggable handle (secret keys) added \n* ''4.7.1'' -- 2022.08.25 -- folders are highly improved, export as bundle, special viewtemplate, button modifiers. \n* ''4.6.5'' -- 2022.08.14 -- updated to Tiddlywiki 5.2.3 and restructured for performance. \n* ''4.5.1'' -- 2020.05.16 -- new svg icon for toolbar and correction for svg color\n* ''4.5.0'' -- 2020.04.23 -- updated to Tiddlywiki 5.1.23 and fixed few issues\n* ''4.3.0'' -- 2019.11.19 -- correct caption when caption filed has wikitext\n* ''4.0.0'' -- 2019.12.17 -- a rewrite of old favorite plugin\n* ''3.0.12'' -- 2018.11.01 -- released by Mohammad Rahmani\n* ''3.0.5'' -- 2017.08.03 -- released by Andrew Harrison"},"$:/plugins/kookma/favorites/images/heart":{"title":"$:/plugins/kookma/favorites/images/heart","tags":"","type":"text/vnd.tiddlywiki","text":"\n \n"},"$:/plugins/kookma/favorites/images/stack":{"title":"$:/plugins/kookma/favorites/images/stack","caption":"465-stackoverflow","library":"IcoMoon Free","library_version":"13-Mar-2016","tags":"$:/tags/Image","type":"text/vnd.tiddlywiki","text":""},"$:/language/Buttons/Favorites/Caption/Add":{"title":"$:/language/Buttons/Favorites/Caption/Add","created":"20191216200037937","modified":"20210423153606311","type":"text/vnd.tiddlywiki","text":"favorites"},"$:/language/Buttons/Favorites/Caption/Remove":{"title":"$:/language/Buttons/Favorites/Caption/Remove","created":"20191216200037793","modified":"20210423153606322","type":"text/vnd.tiddlywiki","text":"Caption/Remove"},"$:/language/Buttons/Favorites/Hint/Add":{"title":"$:/language/Buttons/Favorites/Hint/Add","created":"20191216200037919","modified":"20210423153606337","type":"text/vnd.tiddlywiki","text":"Add to favorites"},"$:/language/Buttons/Favorites/Hint/Remove":{"title":"$:/language/Buttons/Favorites/Hint/Remove","created":"20200326193045794","modified":"20210423153606329","tags":"","type":"text/vnd.tiddlywiki","text":"Remove from favorites"},"$:/plugins/kookma/favorites/license":{"title":"$:/plugins/kookma/favorites/license","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\n\"\"\"\nCopyright (c) 2018-2022 [[Mohammad Rahmani|https://github.com/kookma]]\nCopyright (c) 2017 [[Andrew Harrison|https://github.com/t5a]]\n\"\"\"\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/favorites/macros/combo-search":{"title":"$:/plugins/kookma/favorites/macros/combo-search","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\\define standardSearch() [all[tiddlers+shadows]tagget[list]enlist-input[]search]\n\\define filterSearch() [all[tiddlers+shadows]tagget[list]enlist-input[]]+[subfilter]\n\n\\define displayResult(filter)\n\n<$set name=itemsFound filter=<<__filter__>> >\n<$list filter=\"[enlistlimit[1]]\" variable=null emptyMessage='// no result for this folder//
'>\n\n\n<$list filter=\"[subfilter]\" variable=folder>\n\n<$list filter=\"[list] :intersection[enlist] :and[limit[1]]\">\n
<$transclude tiddler=<> field=caption/>
\n\n\n<$list filter=\"[list] :intersection[enlist]\">\n<$link to=<>/>
\n\n\n\n\n\n\\end\n\n\n\\define combo-search(stateTiddler:\"\")\n<$vars pattern=\"^\\[\"\n stateTid={{{ [[$:/temp/favorites/combosearch/]addsuffix[$stateTiddler$]] }}}>\t \n\n\n\n\\end"},"$:/plugins/kookma/favorites/macros/definition":{"title":"$:/plugins/kookma/favorites/macros/definition","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\\define folderpath() $:/favorites/folders\n\\define foldertagTid() $:/tags/Favorites/Folder\n\\define folders() [all[tiddlers+shadows]tag[$(foldertagTid)$]]\n\\define recentlyAdded() $:/favorites/folders/recent\n\n\\define temppath() $:/temp/favorites\n\n\\define selectionTid() $(temppath)$/selection\n\\define tempNewTid() $(temppath)$/new-folder\n\\define temppopupTid() $(temppath)$/delete-confirm\n\\define tempreorderTid() $(temppath)$/reorder\n\\define saveTid() $(temppath)$/savetitle\n\n\n\\define sliderRevealState() $(temppath)$/slider/$(currentFolder)$\n\n\n\\define stateFolderEdit() $(temppath)$/folder-editor/$(currentFolder)$\n\\define tempFolderTextEdit() $(temppath)$/folder-editor/edit-text/$(currentFolder)$\n\n\n\\define itemLinkTitleinTree() $:/config/favorites/ItemLinkTitle\n\\define newFolderPosion() $:/config/favorites/NewFolderPosition\n\\define openFolderOnDrop() $:/config/favorites/FolderOpenOnDrop\n\\define expandFolderModifierKey() $:/config/favorites/modifierkey/expand-folder\n\\define openFolderModifierKey() $:/config/favorites/modifierkey/open-folder\n\\define openFolderItemsModifierKey() $:/config/favorites/modifierkey/open-folder-items\n\\define sidebarTabfromFolderModifierKey() $:/config/favorites/modifierkey/sidebar-tab-from-folder"},"$:/plugins/kookma/favorites/macros/drag-n-drop":{"title":"$:/plugins/kookma/favorites/macros/drag-n-drop","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\n\\define drop-actions()\n\n<$reveal type=\"nomatch\" default=\"\" text={{{ [listed[]tag] }}} >\n<$vars oldFolder={{{ [listed[]tag!match] +[limit[1]]}}} >\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[]\" />\n\n\n\n<$action-listops $tiddler=<> $subfilter=\"+[insertbefore:currentTiddler]\"/>\n<$list filter=\"[get[text]match[yes]]\" variable=null>\n<$action-setfield $tiddler=<> text=\"open\"/>\n\n\\end\n\n\\define placeholder()\n
 
\n\\end\n\n\\define droppable-item-after-last-item()\n\\whitespace trim\n\n<$droppable actions=<> enable=<> >\n<>
 
\n\n\\end\n\n\n\\define display-folder-is-empty()\n<$droppable actions=<> enable=<> >\n<>\n//Folder is empty//\n\n\\end"},"$:/plugins/kookma/favorites/macros/fav-tree":{"title":"$:/plugins/kookma/favorites/macros/fav-tree","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\define fav-tree(status:\"closed\")\n
\n\n<$reveal type=\"nomatch\" state=<> text=\"open\" default=\"$status$\" tag=\"div\" >\n <$button class=\"tc-btn-invisible tc-tiddlylink\" actions=<> dragFilter=\"[list]\" >\n\t\t {{$:/core/images/right-arrow}}\n \n\n<$reveal type=\"match\" state=<> text=\"open\" default=\"$status$\" tag=\"div\" >\n <$button class=\"tc-btn-invisible tc-tiddlylink\" actions=<> dragFilter=\"[list]\" >\n\t\t {{$:/core/images/down-arrow}}\n \n\n\n<$list filter=\"[match[yes]] :filter[!match]\" variable=null emptyMessage=\"\"\"\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-title-view\"/>\n\"\"\">\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-title-edit\"/>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-clear-btn\"/>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-rename-btn\"/>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-delete-btn\"/>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/folder-reorder-btn\"/>\n\n
\n\n<$reveal type=\"match\" state=<> text=\"open\" default=\"$status$\" tag=div class=\"kk-fav-folder-content\">\n<$list filter=\"[list]\" template=\"$:/plugins/kookma/favorites/templates/list-item\" emptyMessage=<> />\n\n<>\n\n\\end\n\n\n\n\n\\define slider-btn-actions(status)\n\n<$list filter=\"[match[normal]]\">\n<$action-setfield $tiddler=<> text=\"$status$\"/>\n\n\n\n<$list filter=\"[match{$(expandFolderModifierKey)$}]\">\n<$action-deletetiddler $filter=\"[prefix[$(temppath)$/slider/]]\"/>\n<$action-setfield $tiddler=\"$:/temp/favorites/slider/$:/favorites/folders/recent\" text=closed/>\n<$action-setfield $tiddler=<> text=open/>\n\n\n\n<$list filter=\"[match{$(openFolderModifierKey)$}]\">\n<$action-navigate $to=<> $scroll=\"yes\"/>\n\n\n\n<$list filter=\"[match{$(openFolderItemsModifierKey)$}]\">\n<$action-setfield $tiddler=<> text=open/>\n<$list filter=\"[listreverse[]]\" >\n<$action-navigate $to=<> />\n\n\n\n\n<$list filter=\"[match{$(sidebarTabfromFolderModifierKey)$}]\">\n<$action-createtiddler \n $basetitle = {{{ [get[title]addsuffix[-as-sidebar-tab]] }}}\n caption = {{{ [get[caption]] }}}\n tags = \"$:/tags/SideBar\"\n text = \"{{$(currentFolder)$||$:/plugins/kookma/favorites/ui/ViewTemplate/Folder}}\"\n/>\n\n\n\\end"},"$:/plugins/kookma/favorites/macros/folder-create":{"title":"$:/plugins/kookma/favorites/macros/folder-create","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\define add-folder-add-actions()\n\\import $:/plugins/kookma/favorites/macros/definition\n\\define add_folder_top_folderlist() <$action-listops $tiddler=<> $field=\"list\" $subfilter=\"[get[text]] +[putfirst[]]\" />\n\\define add_folder_bottom_folderlist() <$action-listops $tiddler=<> $field=\"list\" $subfilter=\"[get[text]]\" />\n<$list filter=\"[get[text]trim[]!is[blank]]\" variable=null>\n<$let \n folderName = {{{ [get[text]] }}} \n saveTitle = {{{[get[text]]}}} \n setFolderPos = {{{ [get[text]match[yes]then[add_folder_top_folderlist]else[add_folder_bottom_folderlist]] }}} >\n <$action-createtiddler \n $basetitle=<>\n\t $savetitle=<>\n\t caption=<>\n\t tags=<>\n />\n\t\n <$macrocall $name=<> />\n\n\n<$action-deletetiddler $tiddler=<>/>\n\n\\end\n\n\\define add-folder-cancel-actions() <$action-deletetiddler $tiddler=<>/>\n\n\\define new-fav-folder-inputbox()\n<$keyboard key=enter actions=<> >\n<$keyboard key=escape actions=<> >\n<$edit-text tag=input tiddler=<> default=\"\" placeholder=\"enter a folder name\" class=\"kk-fav-input\"/>\n\n\n\\end\n\n\\define new-fav-folder-cancelButton()\n<$list filter=\"[get[text]minlength[1]limit[1]]\">\n<$button tooltip=\"clear input box\" class=\"tc-btn-invisible kk-fav-btn-mini\" actions=<>>\n{{$:/core/images/close-button}}\n\n\n\\end\n\n\\define new-fav-folder-addButton()\n<$button tooltip=\"create new folder\" class=\"tc-btn-invisible\" \nactions=<> disabled= {{{ [get[text]!is[blank]then[no]else[yes]] }}}>\n{{$:/core/images/new-button}}\n\n\\end"},"$:/plugins/kookma/favorites/macros/folder-delete":{"title":"$:/plugins/kookma/favorites/macros/folder-delete","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\define folder-delete-actions()\n<$wikify name=warning-message text='Do you wish to delete \"{{$(currentFolder)$!!caption}}\" folder ($(currentFolder)$)?'>\n<$action-confirm $message=<> >\n\t<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[[$(currentFolder)$]]\" />\n\t<$action-deletetiddler $tiddler=<>/>\n\t\"\"\"\n\t\n\\end\t\n"},"$:/plugins/kookma/favorites/macros/folder-rename":{"title":"$:/plugins/kookma/favorites/macros/folder-rename","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\define rename-perform-actions()\n<$list filter=\"[get[text]trim[]minlength[1]]\" variable=newTitle>\n<$action-setfield $tiddler=<> $field=\"caption\" $value=<> />\n<$action-deletetiddler $tiddler=<>/>\n<$action-deletetiddler $tiddler=<>/>\n\n\\end\n\n\\define rename-cancel-actions()\n<$action-deletetiddler $tiddler=<>/>\n<$action-deletetiddler $tiddler=<>/>\n\\end"},"$:/plugins/kookma/favorites/macros/folder-reorder":{"title":"$:/plugins/kookma/favorites/macros/folder-reorder","code-body":"yes","tags":"$:/tags/Favorites/Macro/Folder","type":"text/vnd.tiddlywiki","text":"\\define folder-reorder()\n<$let selectedFolder={{{ [get[text]] }}} \n disabledStatus={{{[taglimit[1]then[no]else[yes]]}}} >\n
\n<$list filter=\"[match[no]]\" variable=null emptyMessage=\"//First select a folder//\">\n<$transclude tiddler=<> field=caption/>\n\n
\n\n<$button tooltip=\"move down\" disabled=<> >{{$:/core/images/down-arrow}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"+[move:1]\"/>\n\n<$button tooltip=\"move up\" disabled=<> >{{$:/core/images/up-arrow}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"+[move:-1]\"/>\n\n<$button tooltip=\"put first\" disabled=<> >{{$:/core/images/fold-button}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[] [] +[putfirst:1[]]\"/>\n\n<$button tooltip=\"put last\" disabled=<> >{{$:/core/images/unfold-button}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[] [putlast:1[]]\"/>\n\n<$button tooltip=\"sort downwards\" disabled=<> >{{$:/core/images/unfold-all-button}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"+[sort[caption]]\"/>\n\n<$button tooltip=\"sort upwards\" disabled=<> >{{$:/core/images/fold-all-button}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"+[!sort[caption]]\"/>\n\n\n\\end"},"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-bundle":{"title":"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-bundle","code-body":"yes","list-after":"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-export","tags":"$:/tags/Favorites/Manager/FilterButton","type":"text/vnd.tiddlywiki","text":"\\define bundle-folder()\n<$button class=\"tc-btn-invisible\" tooltip=\"export folder and tiddlers as bundle\"> {{$:/plugins/kookma/favorites/images/stack}}\n<$action-sendmessage $message=\"tm-download-file\" \n $param=\"$:/plugins/kookma/favorites/templates/export-bundle\"\n exportFilter=<>\n folderpath=<>\n foldertags=<>\n foldercaption= {{{ [get[caption]addprefix[Exported ]] :else[[Exported favorites]]}}}\n filename=\"Favorites_Folder_Exported.json\"\n/>\n\n\\end\n\n\n<$reveal type=nomatch default=\"0\" text=<> >\n<$set name=exportFilter filter=<> >\n<>\n\n\n\n"},"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-delete":{"title":"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-delete","code-body":"yes","tags":"$:/tags/Favorites/Manager/FilterButton","type":"text/vnd.tiddlywiki","text":"<$reveal type=nomatch default=\"0\" text=<> >\n<$button popup=<> class=\"tc-btn-invisible\" tooltip=\"delete all tiddlers in this folder\">\n{{$:/core/images/delete-button}}\n\n\n\n<$reveal state=<> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n
\n
\n
\nAre you sure you wish to delete permanently <> tiddler(s)?\n
\n
\n<$button class=\"tc-button tt-button\"> delete\n <$action-deletetiddler $filter=<> />\n <$list filter=\"[match[singleFolder]then] :else[all[tiddlers+shadows]tag]\" >\n <$action-deletefield $field=\"list\"/>\n \n\n
\n
\n
\n"},"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-export":{"title":"$:/plugins/kookma/favorites/manager/filterbuttons/exptab-export","code-body":"yes","tags":"$:/tags/Favorites/Manager/FilterButton","type":"text/vnd.tiddlywiki","text":"<$reveal type=nomatch default=\"0\" text=<> >\n<$set name=exportFilter filter=<> >\n<$macrocall $name=\"exportButton\" exportFilter=<> lingoBase=\"$:/language/Buttons/ExportTiddlers/\" baseFilename=\"favorites\"/>\n\n"},"$:/plugins/kookma/favorites/manager/tabs/export":{"title":"$:/plugins/kookma/favorites/manager/tabs/export","caption":"Export","list-after":"$:/plugins/kookma/favorites/manager/tabs/search","tags":"$:/tags/Favorites/Manager","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\define lingo-base() $:/language/Search/\n\nExport or delete folders content\n\n<$let \n selection= {{{ [get[text]] }}} \n selectionType={{{ [match[allFavorites]then[allFavorites]else[singleFolder]] }}}\n allFavoritesFilter=\"[all[tiddlers+shadows]tagget[list]enlist-input[]]\"\n singleFolderFilter=\"[list]\"\n selectionFilter={{{ [match[singleFolder]thenelse] }}}\n resultCount= {{{ [subfiltercount[]] }}} \n>\n\n\n\n\n
\n<>\n<$reveal type=nomatch default=\"0\" text={{{[subfiltercount[]]}}} >\n<$list filter=<> template=\"$:/core/ui/ListItemTemplate\"/>\n\n
\n\n"},"$:/plugins/kookma/favorites/manager/tabs/folders":{"title":"$:/plugins/kookma/favorites/manager/tabs/folders","caption":"Folders","tags":"$:/tags/Favorites/Manager","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import [all[tiddlers+shadows]tag[$:/tags/Favorites/Macro/Folder]]\n\n\n\nCreate, delete, rename, and rearrange folders\n\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/ui-folder-create\" />\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/ui-folder-reorder\" />\n\n<$vars fv-config-buttons=yes>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/ui-folder-tree\" field=text/>\n\n"},"$:/plugins/kookma/favorites/manager/tabs/search":{"title":"$:/plugins/kookma/favorites/manager/tabs/search","caption":"Search","list-after":"$:/plugins/kookma/favorites/manager/tabs/folders","tags":"$:/tags/Favorites/Manager","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import $:/plugins/kookma/favorites/macros/combo-search\n\nSearch in favorites list (use filter or standard search)\n\n<>"},"$:/plugins/kookma/favorites/readme":{"title":"$:/plugins/kookma/favorites/readme","tags":"","type":"text/vnd.tiddlywiki","text":"; Favorites\nA favorite item also called a bookmark is a shortcut, you are creating for quick access to it. You can access that bookmark at any time and view that as many times as you want without having to search and find it again.\n\nFavorites plugin is a set of tool for creating favorites (bookmarks) in Tiddlywiki. Each favorite item is a shortcut to a tiddler. Favorites can be organized in folders.\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Favorites/\n* Code: https://github.com/kookma/TW-Favorites"},"$:/plugins/kookma/favorites/styles/dynamic":{"title":"$:/plugins/kookma/favorites/styles/dynamic","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"/* skin */\n.kk-fav-row:hover {\n\tbackground-color: <>;\n}\n.kk-fav-row .tc-btn-invisible svg\n{\n\tfont-size: 0.9em;\n\tfill: <>;\n\tvertical-align: middle;\n\tmargin-right:0.5em;\n}\n.kk-fav-folder-content .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <>;\n\tvertical-align: middle;\n\n}\n\n/* for manager btn */\n.tc-btn-invisible.kk-fav-btn{\n\tcolor: <>;\n}\n.tc-btn-invisible.kk-fav-btn svg{\n\tfill: <>;\n}\n\n/* very important: style the favorite icon on tiddler view toolbar */\n.tc-tiddler-controls .notselected .tc-image-favorites-button {\n\tstroke:#000;\n}\n\n.tc-tiddler-controls .selected .tc-image-favorites-button {\n\tstroke: {{$:/config/favorites/IconColor}};\n\tfill: {{$:/config/favorites/IconColor}};\n}\n\n.tc-tiddler-controls:hover .selected .tc-image-favorites-button {\n\tstroke: {{$:/config/favorites/IconColor}};\n\tfill: {{$:/config/favorites/IconColor}};\n}"},"$:/plugins/kookma/favorites/styles/folder":{"title":"$:/plugins/kookma/favorites/styles/folder","text":".kk-fav-row{\n\tdisplay: flex;\t\n\twidth: 100%;\n\tflex-wrap: nowrap;\n}\n\n.kk-fav-row div.kk-fav-input-textbox{\n\tflex-grow:1;\n\tmargin-right:8px;\n\twidth:100%;\n}\n\n.kk-fav-row .kk-fav-input-textbox .kk-fav-input{\n\twidth:100%;\n\toutline: none;\n\tborder: none;\n\tborder-bottom: 1px dotted grey;\n\tbackground: transparent;\n}\n\n.kk-fav-row .kk-fav-input-textbox .kk-fav-inpu:focus{\n\toutline: none;\n\tborder-bottom: 1px solid #5778d8;\n\tbackground: transparent;\n}\n\n.kk-fav-row button.tc-btn-invisible{\n\toutline: none;\n}\n\n/* for title everywhere */\n.kk-fav-title{\n\tfont-weight: 600;\n}\n.kk-fav-title svg{\n\theight:1em;\n\twidth:1em;\n\tvertical-align:middle;\n}\n/* folder title row */\n.kk-fav-row .kk-fav-title{\n\twidth:100%;\n}\n\n.kk-fav-row input[type=\"radio\"] {\n\twidth: 0.7em;\n\theight: 0.7em; \n\tvertical-align: middle;\n}\n\n/* other items */\nlabel.kk-fav-label{\n\tflex-shrink:0;\n\twidth:120px;\n\n}\n\n/* in slider */\n.kk-fav-folder-content {\n\tpadding-left:20px;\n}\n\n/* only if caption has svg segment.\nsee $:/plugins/kookma/favorites/templates/item-link */\n.kk-fav-item svg{\n\theight:1em;\n\twidth:1em;\n\tvertical-align:middle;\n}\n\n/* clear buttons on inputbox for create folder, rename folder*/\n.tc-btn-invisible.kk-fav-btn-mini svg{\n\twidth:0.8em;\n\theight:0.8em;\n\tvertical-align:middle;\n}\n.tc-btn-invisible.kk-fav-btn-mini{\n\tmargin-right:0.5em;\n}\n\n/* folder reorder and rearrange */\n.kk-fav-folder-reorder{\n\tmargin-top:15px;\n\tmargin-bottom:15px;\n}\n\n.kk-fav-folder-reorder button{\n\talign-self: flex-start;\n\tflex-shrink:0;\n\tmargin-left:4px;\n}\n\n.kk-fav-folder-reorder button svg.tc-image-button{\n\twidth: 0.7em;\n\theight: 0.7em;\n}\n\n/* hide item-delete for frozen-tab ----- this is important and control visibilty of close button*/\n.kk-fav-frozen-tab .kk-fav-close-btn{\n\tdisplay:none;\n}\n","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/favorites/styles/misc":{"title":"$:/plugins/kookma/favorites/styles/misc","text":"/* select widget in export */\n.kk-fav-select{\n\tdisplay:inline-block;\n\twidth:320px;\n}\n\n/* buttons on sidebar: manager, collapse all */\n.tc-btn-invisible.kk-fav-btn{\n\topacity:0.5;\n}\n.tc-btn-invisible.kk-fav-btn:hover{\n\topacity:1.0;\n}\n.tc-btn-invisible.kk-fav-btn .tc-image-fold{\n\theight:0.9em;\n\tvertical-align:bottom;\n}\n\n\n.kk-fav-btn .tc-image-refresh-button{\n\tvertical-align: middle;\n\twidth: 1.1em;\n\theight: 1.1em;\n}\n\ninput.kk-fv-color-input[type=\"color\"] {\n\t-webkit-appearance: none;\n\tborder: none;\n\twidth: 40px;\n\theight: 20px;\n}\n\n/* Utility classes */\n\n.kk-fav-left-gap{\n\tmargin-left:8px;\n}\n\n/* Settings tab */\nlabel.kk-fav-label {\n display:inline-block;\n width: 210px;\n margin-bottom:0.4em;\n}\n.kk-fav-input {\n width:120px;\n}\n\n/* folder-tiddler-ui*/\n\ndetails.kk-fav-details>summary{\npadding-left:0;\n}","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/favorites/templates/export-bundle":{"title":"$:/plugins/kookma/favorites/templates/export-bundle","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"<$let timeStamp=<>\n folderName={{{ [addprefix[/f-]addprefix] }}}\t>\n[<$list filter=<> ><$text text=<>/>,\n{\n \"created\":\"<>\",\n \"exported-from\":\"{{$:/SiteTitle}}\",\n \"tags\":\"<>\",\n \"title\":\"<>\",\n \"caption\":\"<>\",\n \"list\":\"{{{ [subfilterformat:titlelist[]join[ ]] }}}\"\n}\n]"},"$:/plugins/kookma/favorites/templates/folder-clear-btn":{"title":"$:/plugins/kookma/favorites/templates/folder-clear-btn","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[get[text]minlength[1]limit[1]]\" variable=null>\n<$button tooltip=\"cancel rename folder\" class=\"tc-btn-invisible kk-fav-btn-mini\"\nactions=<>\n>{{$:/core/images/close-button}}\n"},"$:/plugins/kookma/favorites/templates/folder-delete-btn":{"title":"$:/plugins/kookma/favorites/templates/folder-delete-btn","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"<$button class=\"tc-btn-invisible\" actions=<> >\n{{$:/core/images/delete-button}}\n\n"},"$:/plugins/kookma/favorites/templates/folder-rename-btn":{"title":"$:/plugins/kookma/favorites/templates/folder-rename-btn","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"<$reveal stateTitle=<> type=\"nomatch\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<> setTo=\"edit\">{{$:/core/images/edit-button}}\n<$action-setfield $tiddler=<> $field=\"text\" $value={{{[get[caption]]}}}/>\n\n\n<$reveal stateTitle=<> type=\"match\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" actions=<> disabled={{{ [get[text]trim[]minlength[1]then[no]else[yes]] }}}>{{$:/core/images/done-button}}\n"},"$:/plugins/kookma/favorites/templates/folder-reorder-btn":{"title":"$:/plugins/kookma/favorites/templates/folder-reorder-btn","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\\define check-actions()\n\n<$set name=\"order\" filter=\"[tagging[]] -[]\">\n<$action-listops $tiddler=<> $field=\"list\" $filter=\"+[enlist]\">\n\n\\end\n<$radio tiddler=<> field=text value=<> actions=<> class=\"kk-fav-btn-radio\"/>"},"$:/plugins/kookma/favorites/templates/folder-title-edit":{"title":"$:/plugins/kookma/favorites/templates/folder-title-edit","code-body":"yes","type":"text/vnd.tiddlywiki","text":"
\n\n\n<$reveal stateTitle=<> type=\"nomatch\" text=\"edit\" tag=\"div\" class=\"kk-fav-title\">\n<$droppable actions=<> enable=<> >\n<$let tv-wikilinks=\"no\">\n<$transclude tiddler=<> field=\"caption\">\n<$transclude tiddler=<> field=\"title\"/>\n\n\n\n\n\n<$reveal stateTitle=<> type=\"match\" text=\"edit\" tag=\"div\">\n<$keyboard key=enter actions=<> >\n<$keyboard key=escape actions=<> >\n<$edit-text tiddler=<> field=\"text\" tag=\"input\" default={{{[get[caption]]}}} placeholder=\"enter a folder title\" focus=yes class=\"kk-fav-input\"/>\n\n\n\n
"},"$:/plugins/kookma/favorites/templates/folder-title-view":{"title":"$:/plugins/kookma/favorites/templates/folder-title-view","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\n
\n<$droppable actions=<> enable=<> tag=\"div\">\n<$let tv-wikilinks=\"no\">\n<$transclude tiddler=<> field=\"caption\">\n<$transclude tiddler=<> field=\"title\"/>\n\n\n\n
\n\n"},"$:/plugins/kookma/favorites/templates/item-delete-btn":{"title":"$:/plugins/kookma/favorites/templates/item-delete-btn","code-body":"yes","type":"text/vnd.tiddlywiki","text":"\n<$button class=\"tc-btn-invisible tc-btn-mini kk-fav-close-btn\" tooltip=\"remove item from favorites\">\n{{$:/core/images/close-button}}\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[]\"/>\n "},"$:/plugins/kookma/favorites/templates/item-link-btn":{"title":"$:/plugins/kookma/favorites/templates/item-link-btn","code-body":"yes","type":"text/vnd.tiddlywiki","text":"\n<$link to=<> tooltip=<> class=\"kk-fav-item\">\n\n<$let dispField= {{{ [get[format]] [get[text]] :and[first[]trim[]!is[blank]else[caption]] }}} tv-wikilinks=\"no\" >\n<$list filter=\"[gettrim[]!is[blank]] :filter[!match[title]]\" variable=null emptyMessage='<$view field=title/>'>\n<$transclude field=<>/>\n\n\n
"},"$:/plugins/kookma/favorites/templates/list-item":{"title":"$:/plugins/kookma/favorites/templates/list-item","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\n\\whitespace trim\n<$droppable actions=<> enable=<> tag=div>\n<>\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/item-delete-btn\" field=text/> \n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/item-link-btn\" field=text/>\n"},"$:/plugins/kookma/favorites/templates/ui-folder-create":{"title":"$:/plugins/kookma/favorites/templates/ui-folder-create","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"
\n\n
\n<>\n
\n<>\n<>\n
"},"$:/plugins/kookma/favorites/templates/ui-folder-reorder":{"title":"$:/plugins/kookma/favorites/templates/ui-folder-reorder","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"
\n\n<$macrocall $name=\"folder-reorder\" />\n
"},"$:/plugins/kookma/favorites/templates/ui-folder-tree":{"title":"$:/plugins/kookma/favorites/templates/ui-folder-tree","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import [all[tiddlers+shadows]tag[$:/tags/Favorites/Macro/Folder]]\n\n<$list filter=<> variable=\"currentFolder\">\n<$macrocall $name=\"fav-tree\" status={{{ [matchthen[open]else[closed]] }}} />\n\n"},"$:/plugins/kookma/favorites/ui/buttons/add-remove":{"title":"$:/plugins/kookma/favorites/ui/buttons/add-remove","caption":"{{$:/plugins/kookma/favorites/images/heart}} {{$:/language/Buttons/Favorites/Caption/Add}}","description":"{{$:/language/Buttons/Favorites/Hint/Add}}","list-after":"$:/core/ui/Buttons/info","tags":"$:/tags/ViewToolbar","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\import [[$:/plugins/kookma/favorites/macros/definition]]\n\n\\define add-this-tiddler() [[$(currentTiddler)$]]+[putfirst[]]\n\\define remove-this-tiddler() -[[$(currentTiddler)$]]\n\n\n\\define show-favorites-button(class)\n<$list filter='[match[yes]]'>\n{{$:/plugins/kookma/favorites/images/heart}}\n\n<$list filter='[match[yes]]'>\n<$text text={{$:/language/Buttons/Favorites/Caption/Add}}/>\n\n\\end\n\n\n\\define btn-add-to-favorites()\n\\whitespace trim\n <$button \n tooltip={{$:/language/Buttons/Favorites/Hint/Add}} aria-label={{$:/language/Buttons/Favorites/Caption/Add}} \n class=<>>\n <$action-listops $tiddler=<> $field='list' $subfilter=<>/>\n\t\t <$macrocall $name=\"show-favorites-button\" class=\"notselected\"/>\n \n\\end \n\n\\define btn-remove-from-favorites()\n\\whitespace trim\n <$button \n tooltip={{$:/language/Buttons/Favorites/Hint/Remove}} aria-label={{$:/language/Buttons/Favorites/Caption/Remove}} \n class=<> >\n <$action-listops $tiddler={{{[subfiltercontainslimit[1]]}}} $field='list' $subfilter=<>/>\n\t\t <$macrocall $name=\"show-favorites-button\" class=\"selected\"/>\n \n\\end \n\n\n<$list filter=\"[all[current]listed[]taglimit[1]]\" variable=null \n emptyMessage=<> >\n<>\n"},"$:/plugins/kookma/favorites/ui/ControlPanel/Settings":{"title":"$:/plugins/kookma/favorites/ui/ControlPanel/Settings","caption":"Favorites","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"\\define checked-frozen()\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/ui/sidebar/active-tab\" tags=\"\"/>\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/ui/buttons/add-remove\" tags=\"\"/> \n<$action-setfield $tiddler=\"$:/state/tab/sidebar--595412856\" text=\"$:/plugins/kookma/favorites/ui/sidebar/frozen-tab\"/> \n\\end\n\n\\define unchecked-frozen()\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/ui/sidebar/active-tab\" tags=\"$:/tags/SideBar\"/>\n<$action-setfield $tiddler=\"$:/plugins/kookma/favorites/ui/buttons/add-remove\" tags=\"$:/tags/ViewToolbar\"/> \n<$action-setfield $tiddler=\"$:/state/tab/sidebar--595412856\" text=\"$:/plugins/kookma/favorites/ui/sidebar/active-tab\"/> \n\\end\n\nThese settings let you customize the behaviour of the Favorites plugin.\n\n---\n\n;Show Favorites setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/favorites/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar\n\n;Options\n:<$checkbox tiddler=\"$:/config/favorites/NewFolderPosition\" field=\"text\"\n checked=\"yes\" unchecked=\"no\" default=\"no\"> Add new folder at the top of folders list\n:<$checkbox tiddler=\"$:/config/favorites/FolderOpenOnDrop\" field=\"text\"\n checked=\"yes\" unchecked=\"no\" default=\"no\"> Open folder on drop item\n: Viewtoolbar icon color <$edit-text tiddler=\"$:/config/favorites/IconColor\" \n\tfield=\"text\" tag=\"input\" type=\"color\" class=\"kk-fv-color-input\"/> <$list filter=\"[[$:/config/favorites/IconColor]get[text]!match[#ff0000]]\" variable=null>\n\t<$button class=\"tc-btn-invisible kk-fav-btn\" tooltip=\"Reset viewtoolbar icon color\">{{$:/core/images/refresh-button}}\n <$action-setfield $tiddler=\"$:/config/favorites/IconColor\" text=\"#ff0000\" />\n \n\t\n\t \n;Freeze favorites\n:<$checkbox checkactions=<> \n tiddler=\"$:/plugins/kookma/favorites/ui/sidebar/frozen-tab\" tag=\"$:/tags/SideBar\"\n\t checkactions=<>\n\t uncheckactions=<> > Enable frozen tab\n\n;Shortcuts\n: <$edit-text tiddler=\"$:/config/favorites/modifierkey/expand-folder\" tag=input default=\"\" placeholder=\"a moifier key like ctrl\" class=\"kk-fav-input\"/> + click\n: <$edit-text tiddler=\"$:/config/favorites/modifierkey/open-folder\" tag=input default=\"\" placeholder=\"a moifier key like shift\" class=\"kk-fav-input\"/> + click\n: <$edit-text tiddler=\"$:/config/favorites/modifierkey/open-folder-items\" tag=input default=\"\" placeholder=\"a moifier key like shift\" class=\"kk-fav-input\"/> + click\n: <$edit-text tiddler=\"$:/config/favorites/modifierkey/sidebar-tab-from-folder\" tag=input default=\"\" placeholder=\"a moifier key like shift\" class=\"kk-fav-input\"/> + click\n\n;Hidden settings\n: [[Global setting for item link title|$:/config/favorites/ItemLinkTitle]]"},"$:/plugins/kookma/favorites/ui/manager":{"title":"$:/plugins/kookma/favorites/ui/manager","caption":"Favorites Folder Manager","tags":"","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/kookma/favorites/ui/sidebar/active-tab":{"title":"$:/plugins/kookma/favorites/ui/sidebar/active-tab","caption":"Favorites","list-after":"$:/core/ui/SideBar/Open","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import [all[tiddlers+shadows]tag[$:/tags/Favorites/Macro/Folder]]\n\n\\define show-options()\n<$button class=\"tc-btn-invisible kk-fav-btn\" to=\"$:/plugins/kookma/favorites/ui/manager\">\n{{$:/core/images/options-button}} Manager\n\n\\end\n\n\\define colapse-all()\n<$list filter=\"[prefix[$(temppath)$/slider/]!suffix] :filter[{!!text}match[open]] :and[limit[1]]\" variable=\"null\">\n<$button class=\"tc-btn-invisible kk-fav-btn\" tooltip=\"collapse all folders, open Recently added\" actions='<$action-deletetiddler $filter=\"[prefix[$(temppath)$/slider/]]\"/>' >\n{{$:/core/images/fold-button}}\n\n\n\\end\n\n\n
\n
\n---  <> <>

\n

\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/ui-folder-tree\" field=text/>\n
"},"$:/plugins/kookma/favorites/ui/sidebar/frozen-tab":{"title":"$:/plugins/kookma/favorites/ui/sidebar/frozen-tab","caption":"Favorites","list-after":"$:/core/ui/SideBar/Open","tags":"","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/favorites/macros/definition\n\\import [all[tiddlers+shadows]tag[$:/tags/Favorites/Macro/Folder]]\n\n\n
\n<$set name=\"tv-enable-drag-and-drop\" value=\"no\">\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/ui-folder-tree\" />\n\n
\n"},"$:/plugins/kookma/favorites/ui/ViewTemplate/Folder":{"title":"$:/plugins/kookma/favorites/ui/ViewTemplate/Folder","list-after":"$:/core/ui/ViewTemplate/body","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<$list filter=\"[all[current]tag[$:/tags/Favorites/Folder]]\">\n<$transclude tiddler=\"$:/plugins/kookma/favorites/viewtemplates/ui-folder-tiddler\" mode=block/>\n\n"},"$:/plugins/kookma/favorites/ui/ViewTemplate/Title":{"title":"$:/plugins/kookma/favorites/ui/ViewTemplate/Title","tags":"","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n

\n<$text text={{{ [get[caption]else{!!title}] }}}/>\n

"},"$:/plugins/kookma/favorites/viewtemplates/ui-folder-tiddler":{"title":"$:/plugins/kookma/favorites/viewtemplates/ui-folder-tiddler","code-body":"yes","tags":"","type":"text/vnd.tiddlywiki","text":"\n\n\\import $:/plugins/kookma/favorites/macros/definition\n\\import $:/plugins/kookma/favorites/macros/drag-n-drop\n\n\\define tempInput() $:/temp/favorites/add-bulk/$(currentTiddler)$\n\\define inputFilter() [subfilter{$(tempInput)$}] :filter[is[tiddler]]\n\\define actionFilterAdd() [all[current]get[list]enlist-input[]] [subfilter{$(tempInput)$}]\n\\define actionFilterRemove() [all[current]get[list]enlist-input[]] -[subfilter{$(tempInput)$}]\n\\define actionDeleteTemp() <$action-deletetiddler $tiddler=<> />\n\n\\define actionAppendItems()\n\n<$list filter=\"[subfilter{$(tempInput)$}]\" variable=item>\n<$vars oldFolder={{{ [listed[]tag] +[limit[1]] }}} >\n<$action-listops $tiddler=<> $field=\"list\" $subfilter=\"-[]\" />\n\n\n\n<$action-listops $filter=<> />\n\\end\n\n\\define add-remove-bulk-items()\n<$button tooltip=\"Append items to this folder\" disabled={{{ [subfilter{$(tempInput)$}has[title]limit[1]then[no]else[yes]] }}} actions=<> >\nAppend\n \n<$button tooltip=\"Remove items from this folder\" disabled={{{ [subfilter{$(tempInput)$}has[title]limit[1]then[no]else[yes]] }}} actions='<$action-listops $filter=<> />' >\nRemove\n\n\\end\n\nAdd, remove bulk of items\n\n
\n<$keyboard key=\"escape\" actions=<> >\n<$edit-text tiddler=<> field=\"text\" tag=\"input\" type=\"search\" default=\"\" placeholder=\"enter a filter like [tag[doc]]\"/>\n\n<>\n
\n\n\n
FIltered items: //<$count filter=<>/> mathches//\n
\n<$list filter=<> template=\"$:/core/ui/ListItemTemplate\"/>\n
\n
\n\nContents of folder: ''{{!!caption}}''\n\n
\n<$vars currentFolder=<> >\n<$list filter=\"[list]\" emptyMessage=<> >\n<$transclude tiddler=\"$:/plugins/kookma/favorites/templates/list-item\"/>\n\n\n<>\n\n
\n"}}} \ No newline at end of file diff --git a/tiddlers/$__plugins_kookma_favorites.json.meta b/tiddlers/$__plugins_kookma_favorites.json.meta index cd0c969..b6971e8 100644 --- a/tiddlers/$__plugins_kookma_favorites.json.meta +++ b/tiddlers/$__plugins_kookma_favorites.json.meta @@ -8,4 +8,4 @@ plugin-type: plugin source: https://github.com/kookma/TW-Favorites title: $:/plugins/kookma/favorites type: application/json -version: 4.8.4 \ No newline at end of file +version: 4.8.5 \ No newline at end of file diff --git a/tiddlers/$__plugins_linonetwo_opened-tiddlers-bar.json b/tiddlers/$__plugins_linonetwo_opened-tiddlers-bar.json index 75dab01..cb4db44 100644 --- a/tiddlers/$__plugins_linonetwo_opened-tiddlers-bar.json +++ b/tiddlers/$__plugins_linonetwo_opened-tiddlers-bar.json @@ -7,10 +7,10 @@ "list": "Readme LICENSE", "name": "Opened Tiddlers Bar", "plugin-type": "plugin", - "text": "{\"tiddlers\":{\"$:/plugins/linonetwo/opened-tiddlers-bar/AboveStory\":{\"title\":\"$:/plugins/linonetwo/opened-tiddlers-bar/AboveStory\",\"creator\":\"[[Jeffrey Wikinson]]\",\"modifier\":\"LinOnetwo\",\"tags\":\"$:/tags/AboveStory\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"
\\n <>\\n
\"},\"$:/plugins/linonetwo/opened-tiddlers-bar/Readme\":{\"title\":\"$:/plugins/linonetwo/opened-tiddlers-bar/Readme\",\"creator\":\"LinOnetwo\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!! Features\\n\\nThis plugin provides VSCode style \\\"Opened Tiddlers\\\" top bar\\n\\nUse the middle mouse button or the X button to close the tab.\\n\\nUse Shift + mouse wheel to swipe sideways to view.\\n\\n!! Credits\\n\\nThis plugin is based on [[$:/plugins/bj/storytabs|http://bjtools.tiddlyspot.com/]] , which is in MIT license, thank you, Buggyj!\\n\"},\"$:/plugins/linonetwo/opened-tiddlers-bar/style.css\":{\"title\":\"$:/plugins/linonetwo/opened-tiddlers-bar/style.css\",\"creator\":\"LinOnetwo\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"/** make things in $:/tags/AboveStory position fixed, so it will always on the top */\\nsection.story-backdrop .opened-tiddlers-bar-container {\\n position: fixed;\\n top: 0;\\n z-index: 1000;\\n width: 100vw;\\n left: 0;\\n\\n overflow-x: auto;\\n white-space: nowrap;\\n overflow: -moz-scrollbars-none;\\n scrollbar-width: none;\\n}\\nsection.story-backdrop .opened-tiddlers-bar-container::-webkit-scrollbar {\\n display: none;\\n}\\n\\nsection.story-backdrop div.opened-tiddlers-bar div.opened-tiddlers-bar-tabs {\\n display: flex;\\n flex-direction: row;\\n justify-content: flex-start;\\n}\\n/** make it possible to drag the app using this bar in TidGi, when titleBar is closed */\\n<$reveal type=\\\"match\\\" state=\\\"$:/state/titleBarOpened\\\" text=\\\"no\\\">\\ndiv.opened-tiddlers-bar-tabs {\\n width: 90vw;\\n overflow-x: auto;\\n white-space: nowrap;\\n overflow: -moz-scrollbars-none;\\n scrollbar-width: none;\\n}\\ndiv.opened-tiddlers-bar-tabs::-webkit-scrollbar {\\n display: none;\\n}\\ndiv.opened-tiddlers-bar-drag-area {\\n width: 5vw;\\n -webkit-app-region: drag;\\n}\\n\\n/** when hide titlebar and hide sidebar (and on macOS, windows not tested), move bar right to avoid collision with close button on the left top of app */\\n/** move right a bit to avoid collision with close button on macOS when title bar hide */\\n<$reveal type=\\\"match\\\" state=\\\"$:/state/titleBarOpened\\\" text=\\\"no\\\">\\n<$reveal type=\\\"match\\\" state=\\\"$:/state/sideBarOpened\\\" text=\\\"no\\\">\\nsection.story-backdrop {\\n width: 100vw;\\n padding-left: 68px;\\n}\\n\\n\\n\\n/** tiddlers bar */\\nsection.story-backdrop > p > .opened-tiddlers-bar-container, section.story-backdrop > p > .opened-tiddlers-bar-container > div.tc-tab-buttons {\\n width: 100%;\\n margin: 0;\\n display: flex;\\n background: transparent;\\n}\\nsection.story-backdrop > p > .opened-tiddlers-bar-container {\\n background-color: white;\\n backdrop-filter: blur(3px);\\n background: <>;\\n}\\n\\n\\ndiv.opened-tiddlers-bar-tabs button {\\n border: none;\\n border-radius: 0;\\n margin: 0;\\n padding: 5px 10px;\\n padding-right: 2px;\\n}\\n/** x button */\\ndiv.opened-tiddlers-bar-tabs button.opened-tiddlers-bar-close-button {\\n border: none;\\n border-radius: 0;\\n margin: 0;\\n padding: 0 5px;\\n opacity: 0;\\n background-color: transparent;\\n}\\n/** show x when tab is hovered */\\ndiv.opened-tiddlers-bar-tabs:hover button.opened-tiddlers-bar-close-button {\\n opacity: 1;\\n}\\nsection.story-backdrop div.opened-tiddlers-bar-tabs button.tc-tab:not(.tc-tab-selected):hover {\\n border-bottom: 2px solid gray;\\n}\\nsection.story-backdrop div.opened-tiddlers-bar-tabs button.tc-tab:nth-child(2) {\\n margin-left: -1em;\\n}\\ndiv.opened-tiddlers-bar.tc-tab-buttons {\\n padding: 0;\\n margin: 0;\\n}\\n\\n/** 收起侧边栏的按钮 */\\n.tc-topbar-right {\\n top: 18px;\\n}\\n\"},\"$:/plugins/linonetwo/opened-tiddlers-bar/tree\":{\"title\":\"$:/plugins/linonetwo/opened-tiddlers-bar/tree\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"<>\"},\"$:/plugins/linonetwo/opened-tiddlers-bar/ui\":{\"title\":\"$:/plugins/linonetwo/opened-tiddlers-bar/ui\",\"creator\":\"[[Jeffrey Wikinson]]\",\"modifier\":\"LinOnetwo\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define onMiddleClick()\\n<$list filter=\\\"[match[middle]]\\\">\\n<$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=<>/>\\n\\n\\\\end\\n\\\\define opened-tiddlers-bar()\\n\\\\whitespace trim\\n
\\n
\\n
\\n <$list filter=\\\"[list[$:/StoryList]]\\\" history=\\\"$:/HistoryList\\\" variable=\\\"currentTab\\\">\\n <$reveal type=\\\"match\\\" state=\\\"$:/HistoryList!!current-tiddler\\\" text=<>>\\n <$eventcatcher $auxclick=<>>\\n
\\n <$button to=<> class=\\\"tc-tab-selected tc-tab\\\">\\n <$view tiddler=<> field=\\\"name\\\">\\n <$view tiddler=<> field=\\\"title\\\" />\\n <$button message=\\\"tm-close-tiddler\\\" param=<> class=\\\"tc-image-button opened-tiddlers-bar-close-button\\\">\\n ×\\n \\n \\n
\\n \\n \\n <$reveal type=\\\"nomatch\\\" state=\\\"$:/HistoryList!!current-tiddler\\\" text=<>>\\n <$eventcatcher $auxclick=<>>\\n
\\n <$button to=<> class=\\\"tc-tab\\\" >\\n <$view tiddler=<> field=\\\"name\\\">\\n <$view tiddler=<> field=\\\"title\\\" />\\n \\n <$button message=\\\"tm-close-tiddler\\\" param=<> class=\\\"tc-image-button opened-tiddlers-bar-close-button\\\">\\n ×\\n \\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n\\\\end\\n\"}}}", + "text": "{\"tiddlers\":{\"$:/plugins/linonetwo/opened-tiddlers-bar/AboveStory\":{\"title\":\"$:/plugins/linonetwo/opened-tiddlers-bar/AboveStory\",\"creator\":\"[[Jeffrey Wikinson]]\",\"modifier\":\"LinOnetwo\",\"tags\":\"$:/tags/AboveStory\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"
\\n <>\\n
\"},\"$:/plugins/linonetwo/opened-tiddlers-bar/Readme\":{\"title\":\"$:/plugins/linonetwo/opened-tiddlers-bar/Readme\",\"creator\":\"LinOnetwo\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!! Features\\n\\nThis plugin provides VSCode style \\\"Opened Tiddlers\\\" top bar\\n\\nUse the middle mouse button or the X button to close the tab.\\n\\nUse Shift + mouse wheel to swipe sideways to view.\\n\\n!! Credits\\n\\nThis plugin is based on [[$:/plugins/bj/storytabs|http://bjtools.tiddlyspot.com/]] , which is in MIT license, thank you, Buggyj!\\n\"},\"$:/plugins/linonetwo/opened-tiddlers-bar/style.css\":{\"title\":\"$:/plugins/linonetwo/opened-tiddlers-bar/style.css\",\"creator\":\"LinOnetwo\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"/** make things in $:/tags/AboveStory position fixed, so it will always on the top */\\nsection.story-backdrop .opened-tiddlers-bar-container {\\n position: fixed;\\n top: 0;\\n z-index: 1000;\\n height: var(--menubar-height);\\n width: 100vw;\\n left: 0;\\n\\n overflow-x: auto;\\n white-space: nowrap;\\n overflow: -moz-scrollbars-none;\\n scrollbar-width: none;\\n}\\nsection.story-backdrop .opened-tiddlers-bar-container::-webkit-scrollbar {\\n display: none;\\n}\\n\\nsection.story-backdrop div.opened-tiddlers-bar div.opened-tiddlers-bar-tabs {\\n display: flex;\\n flex-direction: row;\\n justify-content: flex-start;\\n}\\n/** make it possible to drag the app using this bar in TidGi, when titleBar is closed */\\n<$reveal type=\\\"match\\\" state=\\\"$:/state/titleBarOpened\\\" text=\\\"no\\\">\\ndiv.opened-tiddlers-bar-tabs {\\n width: 90vw;\\n overflow-x: auto;\\n white-space: nowrap;\\n overflow: -moz-scrollbars-none;\\n scrollbar-width: none;\\n}\\ndiv.opened-tiddlers-bar-tabs::-webkit-scrollbar {\\n display: none;\\n}\\ndiv.opened-tiddlers-bar-drag-area {\\n width: 5vw;\\n -webkit-app-region: drag;\\n}\\n\\n/** when hide titlebar and hide sidebar (and on macOS, windows not tested), move bar right to avoid collision with close button on the left top of app */\\n/** move right a bit to avoid collision with close button on macOS when title bar hide */\\n<$reveal type=\\\"match\\\" state=\\\"$:/state/titleBarOpened\\\" text=\\\"no\\\">\\n<$reveal type=\\\"match\\\" state=\\\"$:/state/sideBarOpened\\\" text=\\\"no\\\">\\nsection.story-backdrop {\\n width: 100vw;\\n padding-left: 68px;\\n}\\n\\n\\n\\n/** tiddlers bar */\\nsection.story-backdrop > p > .opened-tiddlers-bar-container, section.story-backdrop > p > .opened-tiddlers-bar-container > div.tc-tab-buttons {\\n width: 100%;\\n margin: 0;\\n display: flex;\\n background: transparent;\\n}\\nsection.story-backdrop > p > .opened-tiddlers-bar-container {\\n background-color: white;\\n backdrop-filter: blur(3px);\\n background: <>;\\n}\\n\\n\\ndiv.opened-tiddlers-bar-tabs button {\\n border: none;\\n border-radius: 0;\\n margin: 0;\\n padding: 5px 10px;\\n padding-right: 2px;\\n}\\n/** x button */\\ndiv.opened-tiddlers-bar-tabs button.opened-tiddlers-bar-close-button {\\n border: none;\\n border-radius: 0;\\n margin: 0;\\n padding: 0 5px;\\n opacity: 0;\\n background-color: transparent;\\n}\\n/** show x when tab is hovered */\\ndiv.opened-tiddlers-bar-tabs:hover button.opened-tiddlers-bar-close-button {\\n opacity: 1;\\n}\\nsection.story-backdrop div.opened-tiddlers-bar-tabs button.tc-tab:not(.tc-tab-selected):hover {\\n border-bottom: 2px solid gray;\\n}\\nsection.story-backdrop div.opened-tiddlers-bar-tabs button.tc-tab:nth-child(2) {\\n margin-left: -1em;\\n}\\ndiv.opened-tiddlers-bar.tc-tab-buttons {\\n padding: 0;\\n margin: 0;\\n}\\n\\n/** 收起侧边栏的按钮 */\\n.tc-topbar-right {\\n top: 18px;\\n}\\n\"},\"$:/plugins/linonetwo/opened-tiddlers-bar/tree\":{\"title\":\"$:/plugins/linonetwo/opened-tiddlers-bar/tree\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"<>\"},\"$:/plugins/linonetwo/opened-tiddlers-bar/ui\":{\"title\":\"$:/plugins/linonetwo/opened-tiddlers-bar/ui\",\"creator\":\"[[Jeffrey Wikinson]]\",\"modifier\":\"LinOnetwo\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define onMiddleClick()\\n<$list filter=\\\"[match[middle]]\\\">\\n<$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=<>/>\\n\\n\\\\end\\n\\\\define opened-tiddlers-bar()\\n\\\\whitespace trim\\n
\\n
\\n
\\n <$list filter=\\\"[list[$:/StoryList]]\\\" history=\\\"$:/HistoryList\\\" variable=\\\"currentTab\\\">\\n <$reveal type=\\\"match\\\" state=\\\"$:/HistoryList!!current-tiddler\\\" text=<>>\\n <$eventcatcher $auxclick=<>>\\n
\\n <$button to=<> class=\\\"tc-tab-selected tc-tab\\\">\\n <$view tiddler=<> field=\\\"name\\\">\\n <$view tiddler=<> field=\\\"title\\\" />\\n <$button message=\\\"tm-close-tiddler\\\" param=<> class=\\\"tc-image-button opened-tiddlers-bar-close-button\\\">\\n ×\\n \\n \\n
\\n \\n \\n <$reveal type=\\\"nomatch\\\" state=\\\"$:/HistoryList!!current-tiddler\\\" text=<>>\\n <$eventcatcher $auxclick=<>>\\n
\\n <$button to=<> class=\\\"tc-tab\\\" >\\n <$view tiddler=<> field=\\\"name\\\">\\n <$view tiddler=<> field=\\\"title\\\" />\\n \\n <$button message=\\\"tm-close-tiddler\\\" param=<> class=\\\"tc-image-button opened-tiddlers-bar-close-button\\\">\\n ×\\n \\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n\\\\end\\n\"}}}", "title": "$:/plugins/linonetwo/opened-tiddlers-bar", "type": "application/json", - "version": "0.3.0", - "Modern.TiddlyDev#SHA256-Hashed": "65cbd562412624e198abd3e89cd34815844332e4fa6c9286c80ae794b4fdf28f" + "version": "0.3.1", + "Modern.TiddlyDev#SHA256-Hashed": "719b62d2c1e2c88a1980820aea3c39207333150b8b34444b5df451123041430b" } ] \ No newline at end of file diff --git a/tiddlers/$__plugins_linonetwo_source-control-management.json b/tiddlers/$__plugins_linonetwo_source-control-management.json index f48ce67..13ba68b 100644 --- a/tiddlers/$__plugins_linonetwo_source-control-management.json +++ b/tiddlers/$__plugins_linonetwo_source-control-management.json @@ -7,10 +7,10 @@ "list": "readme tree", "name": "Source Control Management (git) for TidGi Desktop", "plugin-type": "plugin", - "text": "{\"tiddlers\":{\"$:/plugins/linonetwo/source-control-management/PageControlButton\":{\"title\":\"$:/plugins/linonetwo/source-control-management/PageControlButton\",\"tags\":\"$:/tags/PageControls\",\"type\":\"text/vnd.tiddlywiki\",\"caption\":\"{{$:/plugins/linonetwo/source-control-management/icons/git-sync.svg}} 备份本地Git\",\"description\":\"显示本地笔记是否同步备份到Github,点击可同步\",\"text\":\"<$tidgi-desktop-git-sync />\\n\"},\"$:/plugins/linonetwo/source-control-management/SideBarSCMTab\":{\"title\":\"$:/plugins/linonetwo/source-control-management/SideBarSCMTab\",\"tags\":\"$:/tags/SideBar\",\"type\":\"text/vnd.tiddlywiki\",\"caption\":\"SCM\",\"description\":\"Source Control Management\",\"text\":\"<$git-sync-scm-tab />\\n\"},\"$:/plugins/linonetwo/source-control-management/icons/git-pull-request.svg\":{\"title\":\"$:/plugins/linonetwo/source-control-management/icons/git-pull-request.svg\",\"text\":\"\\n \\n \\n \\n \\n \\n \\n \\n\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/linonetwo/source-control-management/icons/git-sync.svg\":{\"title\":\"$:/plugins/linonetwo/source-control-management/icons/git-sync.svg\",\"text\":\"\\n \\n \\n \\n \\n \\n \\n \\n\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/linonetwo/source-control-management/readme\":{\"title\":\"$:/plugins/linonetwo/source-control-management/readme\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!! 功能\\n\\n[[WebCatalog|https://webcatalogapp.com/]] 除了[[能将 TiddlyWiki 包装成桌面应用|https://onetwo.ren/%E7%94%A8tiddlywiki%E6%9B%BF%E4%BB%A3notion%E5%92%8Cevernote%E7%AE%A1%E7%90%86%E7%9F%A5%E8%AF%86/]]以外,还提供了自定义 API 并暴露给网页的功能,让我们可以在 Wiki 网页里使用一些高级功能。\\n\\n本插件利用暴露的自定义 API 实现:\\n\\n# 查看本地 NodeJS 版 TiddlyWiki 是否完全与 Github 备份云同步了\\n# 一键同步本地和云端\\n\\n!! 用法\\n\\n当点开 SCM 标签页的时候,会进行一次 git 环境检查,因为使用的 git 库 dugite 比较卡,所以只进行一次检查,如果需要刷新,需要来回切换一下 tab。\\n\"},\"$:/plugins/linonetwo/source-control-management/tree\":{\"title\":\"$:/plugins/linonetwo/source-control-management/tree\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"<>\"},\"$:/plugins/linonetwo/source-control-management/button.js\":{\"title\":\"$:/plugins/linonetwo/source-control-management/button.js\",\"type\":\"application/javascript\",\"module-type\":\"widget\",\"Modern.TiddlyDev#Origin\":\"button.ts\",\"text\":\"\\\"use strict\\\";var import_widget=require(\\\"$:/core/modules/widgets/widget.js\\\"),NodeJSGitSyncWidget=class extends import_widget.widget{constructor(t,e){super(t,e),this.state={needSetUp:!1,interval:1e3,count:0,unsync:!1,syncing:!1},this.initialise(t,e),this.checkInLoop()}async getWorkspaces(){var t=await window?.service?.workspace?.getWorkspacesAsList?.();const e=await window?.service?.workspace?.getActiveWorkspace?.();return e&&t?t.filter(t=>t.id===e.id||t.isSubWiki&&t.mainWikiID===e.id):[]}render(t,e){this.parentDomNode=t,this.computeAttributes();var i,s,n=this.document.createElement(\\\"button\\\");n.className=\\\"tc-btn-invisible tc-btn-plugins-linonetwo-tidgi-desktop-git-sync \\\",n.addEventListener(\\\"click\\\",this.onSyncButtonClick.bind(this)),this.state.needSetUp?(n.className+=\\\"git-sync\\\",n.title=s=\\\"需要配置TidGi\\\",n.ariaLabel=s,n.innerHTML=$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/source-control-management/icons/git-sync.svg\\\")??\\\"\\\"):this.state.syncing?(n.className+=\\\"git-sync syncing\\\",n.title=s=\\\"正在同步到云端\\\",n.ariaLabel=s,n.innerHTML=$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/source-control-management/icons/git-sync.svg\\\")??\\\"\\\"):0!==this.state.count||this.state.unsync?0===this.state.count&&this.state.unsync?(n.className+=\\\"git-pull-request\\\",n.title=s=\\\"待推送到云端\\\",n.ariaLabel=s,n.innerHTML=$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/source-control-management/icons/git-pull-request.svg\\\")??\\\"\\\"):(n.className+=\\\"git-pull-request\\\",s=this.state.count+\\\" 个文件待提交和推送\\\",n.title=s,n.ariaLabel=s,s=$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/source-control-management/icons/git-pull-request.svg\\\")??\\\"\\\",i=`${this.state.count}`,n.innerHTML=`${s}${i}`):(n.className+=\\\"git-sync\\\",n.title=s=\\\"已完全同步到云端\\\",n.ariaLabel=s,n.innerHTML=$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/source-control-management/icons/git-sync.svg\\\")??\\\"\\\"),t.insertBefore(n,e),this.domNodes.push(n)}async onSyncButtonClick(){if(!this.state.syncing&&this.state.unsync){this.state.syncing=!0,this.refreshSelf();try{var t=(await this.getWorkspaces()).map(async t=>{await window?.service?.sync?.syncWikiIfNeeded?.(t)});await Promise.all(t)}catch(e){console.error(\\\"NodeJSGitSyncWidget: Error syncing\\\",e)}this.state.syncing=!1,this.refreshSelf()}}checkInLoop(){window?.service?.git&&\\\"function\\\"==typeof window?.service?.git?.commitAndSync&&\\\"function\\\"==typeof window?.service?.git?.getModifiedFileList&&\\\"function\\\"==typeof window?.service?.workspace?.getWorkspacesAsList?(this.state.needSetUp=!1,this.checkGitState()):this.state.needSetUp=!0,setTimeout(()=>{this.checkInLoop()},this.state.interval)}async checkGitState(){var t=[];for(const i of await this.getWorkspaces()){var e=$tw.wiki.getTiddlerText(\\\"$:/state/scm-modified-file-list/\\\"+i.wikiFolderLocation);void 0!==e&&(e=JSON.parse(e),t.push(e))}this.state.count=0,this.state.unsync=!1;for(const s of t)0e.id===t.id||e.isSubWiki&&e.mainWikiID===t.id):[]}render(e,t){this.parentDomNode=e,this.computeAttributes();var i=this.document.createElement(\\\"div\\\");i.className=\\\"\\\";for(const m of Object.keys(this.state.repoInfo).sort((e,t)=>e.length-t.length)){var n=this.state.repoInfo[m],s=this.document.createElement(\\\"div\\\"),a=this.document.createElement(\\\"h4\\\"),o=this.document.createElement(\\\"span\\\"),r=(o.className=\\\"tidgi-scm-count\\\",o.innerText=String(n.length),m.split(\\\"/\\\").pop());a.innerText=r??\\\"-\\\",a.append(o),s.append(a);for(const w of n){var c=this.document.createElement(\\\"div\\\"),d=(c.className=\\\"tidgi-scm-file-info\\\",this.document.createElement(\\\"span\\\")),l=(d.className=\\\"tidgi-scm-file-changed-type\\\",d.innerText=this.mapChangeTypeToText(w.type),this.document.createElement(\\\"a\\\"));l.className=\\\"tidgi-scm-file-name tc-tiddlylink tc-tiddlylink-resolves tc-popup-handle tc-popup-absolute\\\";const g=this.getTitleByPath(w.fileRelativePath);l.innerText=g,l.addEventListener(\\\"click\\\",()=>{this.onChangedFileNameClicked(g)});var p=this.document.createElement(\\\"a\\\"),h=(p.className=\\\"tidgi-scm-file-open-in-folder tc-tiddlylink tc-tiddlylink-resolves tc-popup-handle tc-popup-absolute\\\",$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/open-in-external-app/icons/open-in-folder\\\")??\\\"O\\\");p.innerHTML=h,p.addEventListener(\\\"click\\\",()=>{this.onOpenInFolderClicked(w.filePath)}),c.append(d),c.append(l),c.append(p),s.append(c)}i.append(s)}e.insertBefore(i,t),this.domNodes.push(i)}onChangedFileNameClicked(e){var t=window.meta?.()?.workspaceID;t&&window?.service?.wiki?.wikiOperationInBrowser?.(\\\"wiki-open-tiddler\\\",t,[e])}onOpenInFolderClicked(e){window?.service?.[\\\"native\\\"]?.openPath?.(e,!0)}getTitleByPath(e){return e.startsWith(\\\"plugins\\\")?\\\"$:/\\\"+e:e.startsWith(\\\"tiddlers/\\\")?e.replace(\\\"tiddlers/\\\",\\\"\\\").replace(/\\\\.tid$/,\\\"\\\"):e}async getFolderInfo(){return(await this.getWorkspaces()).map(({wikiFolderLocation:e,gitUrl:t})=>({wikiPath:e,gitUrl:t}))}mapChangeTypeToText(e){return\\\"??\\\"!==e?e:\\\"+\\\"}async checkInLoop(){window?.service?.git&&\\\"function\\\"==typeof window?.service?.git?.commitAndSync&&\\\"function\\\"==typeof window?.service?.git?.getModifiedFileList&&\\\"function\\\"==typeof window?.service?.workspace?.getWorkspacesAsList?(this.state.needSetUp=!1,await this.checkGitState()):this.state.needSetUp=!0}async checkGitState(){this.state.count=0,this.state.unsync=!1,this.state.repoInfo={};var e=(await this.getFolderInfo()).map(async({wikiPath:e})=>{var t=await window?.service?.git?.getModifiedFileList?.(e);t&&(t.sort((e,t)=>e.fileRelativePath>t.fileRelativePath?1:-1),$tw.wiki.addTiddler({title:\\\"$:/state/scm-modified-file-list/\\\"+e,text:JSON.stringify(t)}),this.state.repoInfo[e]=t)});return await Promise.all(e),this.refreshSelf()}};exports[\\\"git-sync-scm-tab\\\"]=NodeJSGitSyncSCMTabWidget;\"},\"$:/plugins/linonetwo/source-control-management/tab.css\":{\"title\":\"$:/plugins/linonetwo/source-control-management/tab.css\",\"tags\":[\"$:/tags/Stylesheet\"],\"type\":\"text/css\",\"Modern.TiddlyDev#Origin\":\"../../temp_stylePlugin:src/source-control-management/style.css\",\"text\":\"button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync.git-sync{cursor:not-allowed}span.tidgi-scm-count{position:relative;background:#696969;color:#fff;border-radius:9999px;opacity:.5;min-width:1.2em;margin-left:.5em;padding-left:.5em;padding-top:.1em;padding-right:.5em;width:-moz-fit-content;width:fit-content}span.tidgi-scm-count-small{font-size:.6em;padding-left:.2em;padding-right:.2em;line-height:1.3em;margin-left:-1em}button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync>span>svg,button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync>svg{fill:none;color:#aaa}button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync>span>svg:hover,button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync>svg:hover{fill:none;color:#444}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync.syncing>span>svg,button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync.syncing>svg{animation:2s linear infinite rotation}div.tidgi-scm-file-info{margin-bottom:5px}span.tidgi-scm-file-changed-type{margin-right:5px}a.tidgi-scm-file-name{color:#333;cursor:pointer}a.tidgi-scm-file-open-in-folder{color:#333;cursor:pointer;padding:0}a.tidgi-scm-file-open-in-folder>svg{padding:0;height:1em}\"}}}", + "text": "{\"tiddlers\":{\"$:/plugins/linonetwo/source-control-management/PageControlButton\":{\"title\":\"$:/plugins/linonetwo/source-control-management/PageControlButton\",\"tags\":\"$:/tags/PageControls\",\"type\":\"text/vnd.tiddlywiki\",\"caption\":\"{{$:/plugins/linonetwo/source-control-management/icons/git-sync.svg}} 备份本地Git\",\"description\":\"显示本地笔记是否同步备份到Github,点击可同步\",\"text\":\"<$tidgi-desktop-git-sync />\\n\"},\"$:/plugins/linonetwo/source-control-management/SideBarSCMTab\":{\"title\":\"$:/plugins/linonetwo/source-control-management/SideBarSCMTab\",\"tags\":\"$:/tags/SideBar\",\"type\":\"text/vnd.tiddlywiki\",\"caption\":\"SCM\",\"description\":\"Source Control Management\",\"text\":\"<$git-sync-scm-tab />\\n\"},\"$:/plugins/linonetwo/source-control-management/icons/git-pull-request.svg\":{\"title\":\"$:/plugins/linonetwo/source-control-management/icons/git-pull-request.svg\",\"text\":\"\\n \\n \\n \\n \\n \\n \\n \\n\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/linonetwo/source-control-management/icons/git-sync.svg\":{\"title\":\"$:/plugins/linonetwo/source-control-management/icons/git-sync.svg\",\"text\":\"\\n \\n \\n \\n \\n \\n \\n \\n\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/linonetwo/source-control-management/readme\":{\"title\":\"$:/plugins/linonetwo/source-control-management/readme\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!! 功能\\n\\n[[WebCatalog|https://webcatalogapp.com/]] 除了[[能将 TiddlyWiki 包装成桌面应用|https://onetwo.ren/%E7%94%A8tiddlywiki%E6%9B%BF%E4%BB%A3notion%E5%92%8Cevernote%E7%AE%A1%E7%90%86%E7%9F%A5%E8%AF%86/]]以外,还提供了自定义 API 并暴露给网页的功能,让我们可以在 Wiki 网页里使用一些高级功能。\\n\\n本插件利用暴露的自定义 API 实现:\\n\\n# 查看本地 NodeJS 版 TiddlyWiki 是否完全与 Github 备份云同步了\\n# 一键同步本地和云端\\n\\n!! 用法\\n\\n当点开 SCM 标签页的时候,会进行一次 git 环境检查,因为使用的 git 库 dugite 比较卡,所以只进行一次检查,如果需要刷新,需要来回切换一下 tab。\\n\"},\"$:/plugins/linonetwo/source-control-management/tree\":{\"title\":\"$:/plugins/linonetwo/source-control-management/tree\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"<>\"},\"$:/plugins/linonetwo/source-control-management/button.js\":{\"title\":\"$:/plugins/linonetwo/source-control-management/button.js\",\"type\":\"application/javascript\",\"module-type\":\"widget\",\"Modern.TiddlyDev#Origin\":\"button.ts\",\"text\":\"\\\"use strict\\\";var import_widget=require(\\\"$:/core/modules/widgets/widget.js\\\"),NodeJSGitSyncWidget=class extends import_widget.widget{constructor(t,e){super(t,e),this.state={needSetUp:!1,interval:1e3,count:0,unsync:!1,syncing:!1},this.initialise(t,e),this.checkInLoop()}async getWorkspaces(){var t=await window?.service?.workspace?.getWorkspacesAsList?.();const e=await window?.service?.workspace?.getActiveWorkspace?.();return e&&t?t.filter(t=>t.id===e.id||t.isSubWiki&&t.mainWikiID===e.id):[]}render(t,e){this.parentDomNode=t,this.computeAttributes();var i,s,n=this.document.createElement(\\\"button\\\");n.className=\\\"tc-btn-invisible tc-btn-plugins-linonetwo-tidgi-desktop-git-sync \\\",n.addEventListener(\\\"click\\\",this.onSyncButtonClick.bind(this)),this.state.needSetUp?(n.className+=\\\"git-sync\\\",n.title=s=\\\"需要配置TidGi\\\",n.ariaLabel=s,n.innerHTML=$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/source-control-management/icons/git-sync.svg\\\")??\\\"\\\"):this.state.syncing?(n.className+=\\\"git-sync syncing\\\",n.title=s=\\\"正在同步到云端\\\",n.ariaLabel=s,n.innerHTML=$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/source-control-management/icons/git-sync.svg\\\")??\\\"\\\"):0!==this.state.count||this.state.unsync?0===this.state.count&&this.state.unsync?(n.className+=\\\"git-pull-request\\\",n.title=s=\\\"待推送到云端\\\",n.ariaLabel=s,n.innerHTML=$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/source-control-management/icons/git-pull-request.svg\\\")??\\\"\\\"):(n.className+=\\\"git-pull-request\\\",s=this.state.count+\\\" 个文件待提交和推送\\\",n.title=s,n.ariaLabel=s,s=$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/source-control-management/icons/git-pull-request.svg\\\")??\\\"\\\",i=`${this.state.count}`,n.innerHTML=`${s}${i}`):(n.className+=\\\"git-sync\\\",n.title=s=\\\"已完全同步到云端\\\",n.ariaLabel=s,n.innerHTML=$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/source-control-management/icons/git-sync.svg\\\")??\\\"\\\"),null===e?t.append(n):e.before(n),this.domNodes.push(n)}async onSyncButtonClick(){if(!this.state.syncing&&this.state.unsync){this.state.syncing=!0,this.refreshSelf();try{var t=(await this.getWorkspaces()).map(async t=>{await window?.service?.sync?.syncWikiIfNeeded?.(t)});await Promise.all(t)}catch(e){console.error(\\\"NodeJSGitSyncWidget: Error syncing\\\",e)}this.state.syncing=!1,this.refreshSelf()}}checkInLoop(){window?.service?.git&&\\\"function\\\"==typeof window?.service?.git?.commitAndSync&&\\\"function\\\"==typeof window?.service?.git?.getModifiedFileList&&\\\"function\\\"==typeof window?.service?.workspace?.getWorkspacesAsList?(this.state.needSetUp=!1,this.checkGitState()):this.state.needSetUp=!0,setTimeout(()=>{this.checkInLoop()},this.state.interval)}async checkGitState(){var t=[];for(const i of await this.getWorkspaces()){var e=$tw.wiki.getTiddlerText(\\\"$:/state/scm-modified-file-list/\\\"+i.wikiFolderLocation);void 0!==e&&(e=JSON.parse(e),t.push(e))}this.state.count=0,this.state.unsync=!1;for(const s of t)0e.id===t.id||e.isSubWiki&&e.mainWikiID===t.id):[]}render(e,t){this.parentDomNode=e,this.computeAttributes();var i=this.document.createElement(\\\"div\\\");i.className=\\\"\\\";for(const m of Object.keys(this.state.repoInfo).sort((e,t)=>e.length-t.length)){var n=this.state.repoInfo[m],s=this.document.createElement(\\\"div\\\"),a=this.document.createElement(\\\"h4\\\"),o=this.document.createElement(\\\"span\\\"),c=(o.className=\\\"tidgi-scm-count\\\",o.innerText=String(n.length),m.split(\\\"/\\\").pop());a.innerText=c??\\\"-\\\",a.append(o),s.append(a);for(const w of n){var r=this.document.createElement(\\\"div\\\"),d=(r.className=\\\"tidgi-scm-file-info\\\",this.document.createElement(\\\"span\\\")),l=(d.className=\\\"tidgi-scm-file-changed-type\\\",d.innerText=this.mapChangeTypeToText(w.type),this.document.createElement(\\\"a\\\"));l.className=\\\"tidgi-scm-file-name tc-tiddlylink tc-tiddlylink-resolves tc-popup-handle tc-popup-absolute\\\";const g=this.getTitleByPath(w.fileRelativePath);l.innerText=g,l.addEventListener(\\\"click\\\",()=>{this.onChangedFileNameClicked(g)});var p=this.document.createElement(\\\"a\\\"),h=(p.className=\\\"tidgi-scm-file-open-in-folder tc-tiddlylink tc-tiddlylink-resolves tc-popup-handle tc-popup-absolute\\\",$tw.wiki.getTiddlerText(\\\"$:/plugins/linonetwo/open-in-external-app/icons/open-in-folder\\\")??\\\"O\\\");p.innerHTML=h,p.addEventListener(\\\"click\\\",()=>{this.onOpenInFolderClicked(w.filePath)}),r.append(d),r.append(l),r.append(p),s.append(r)}i.append(s)}null===t?e.append(i):t.before(i),this.domNodes.push(i)}onChangedFileNameClicked(e){var t=window.meta?.()?.workspaceID;t&&window?.service?.wiki?.wikiOperationInBrowser?.(\\\"wiki-open-tiddler\\\",t,[e])}onOpenInFolderClicked(e){window?.service?.[\\\"native\\\"]?.openPath?.(e,!0)}getTitleByPath(e){return e.startsWith(\\\"plugins\\\")?\\\"$:/\\\"+e:e.startsWith(\\\"tiddlers/\\\")?e.replace(\\\"tiddlers/\\\",\\\"\\\").replace(/\\\\.tid$/,\\\"\\\"):e}async getFolderInfo(){return(await this.getWorkspaces()).map(({wikiFolderLocation:e,gitUrl:t})=>({wikiPath:e,gitUrl:t}))}mapChangeTypeToText(e){return\\\"??\\\"!==e?e:\\\"+\\\"}async checkInLoop(){window?.service?.git&&\\\"function\\\"==typeof window?.service?.git?.commitAndSync&&\\\"function\\\"==typeof window?.service?.git?.getModifiedFileList&&\\\"function\\\"==typeof window?.service?.workspace?.getWorkspacesAsList?(this.state.needSetUp=!1,await this.checkGitState()):this.state.needSetUp=!0}async checkGitState(){this.state.count=0,this.state.unsync=!1,this.state.repoInfo={};var e=(await this.getFolderInfo()).map(async({wikiPath:e})=>{var t=await window?.service?.git?.getModifiedFileList?.(e);t&&(t.sort((e,t)=>e.fileRelativePath>t.fileRelativePath?1:-1),$tw.wiki.addTiddler({title:\\\"$:/state/scm-modified-file-list/\\\"+e,text:JSON.stringify(t)}),this.state.repoInfo[e]=t)});return await Promise.all(e),this.refreshSelf()}};exports[\\\"git-sync-scm-tab\\\"]=NodeJSGitSyncSCMTabWidget;\"},\"$:/plugins/linonetwo/source-control-management/tab.css\":{\"title\":\"$:/plugins/linonetwo/source-control-management/tab.css\",\"tags\":[\"$:/tags/Stylesheet\"],\"type\":\"text/css\",\"Modern.TiddlyDev#Origin\":\"../../temp_stylePlugin:src/source-control-management/style.css\",\"text\":\"button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync.git-sync{cursor:not-allowed}span.tidgi-scm-count{position:relative;background:#696969;color:#fff;border-radius:9999px;opacity:.5;min-width:1.2em;margin-left:.5em;padding-left:.5em;padding-top:.1em;padding-right:.5em;width:-moz-fit-content;width:fit-content}span.tidgi-scm-count-small{font-size:.6em;padding-left:.2em;padding-right:.2em;line-height:1.3em;margin-left:-1em}button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync>span>svg,button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync>svg{fill:none;color:#aaa}button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync>span>svg:hover,button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync>svg:hover{fill:none;color:#444}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync.syncing>span>svg,button.tc-btn-invisible.tc-btn-plugins-linonetwo-tidgi-desktop-git-sync.syncing>svg{animation:2s linear infinite rotation}div.tidgi-scm-file-info{margin-bottom:5px}span.tidgi-scm-file-changed-type{margin-right:5px}a.tidgi-scm-file-name{color:#333;cursor:pointer}a.tidgi-scm-file-open-in-folder{color:#333;cursor:pointer;padding:0}a.tidgi-scm-file-open-in-folder>svg{padding:0;height:1em}\"}}}", "title": "$:/plugins/linonetwo/source-control-management", "type": "application/json", - "version": "0.2.1", - "Modern.TiddlyDev#SHA256-Hashed": "745bd045952fe131b191fab473e2efb15259efda9057fa26233332b1f61c4692" + "version": "0.2.2", + "Modern.TiddlyDev#SHA256-Hashed": "33b1eab53285b1ea5e6742a2e3279016a5ab24236615f6855d2cbbb51065cf35" } ] \ No newline at end of file diff --git a/tiddlers/$__plugins_linonetwo_tw-mobile-sync.json b/tiddlers/$__plugins_linonetwo_tw-mobile-sync.json index ad83d7b..0b22e4c 100644 --- a/tiddlers/$__plugins_linonetwo_tw-mobile-sync.json +++ b/tiddlers/$__plugins_linonetwo_tw-mobile-sync.json @@ -6,11 +6,11 @@ "description": "Sync data between Mobile HTML (Tiddloid/Quine2/TidGi-Mobile) <-> Desktop NodeJS App (TidGi) ", "list": "readme ui/ServerList", "plugin-type": "plugin", - "text": "{\"tiddlers\":{\"$:/plugins/linonetwo/tw-mobile-sync/Config/SyncInterval\":{\"title\":\"$:/plugins/linonetwo/tw-mobile-sync/Config/SyncInterval\",\"description\":\"minutes between sync\",\"text\":\"3\"},\"$:/plugins/linonetwo/tw-mobile-sync/Config/TiddlersPrefixToNotSync\":{\"title\":\"$:/plugins/linonetwo/tw-mobile-sync/Config/TiddlersPrefixToNotSync\",\"text\":\"$:/state $:/temp\"},\"$:/plugins/linonetwo/tw-mobile-sync/Config/TiddlersToNotSync\":{\"title\":\"$:/plugins/linonetwo/tw-mobile-sync/Config/TiddlersToNotSync\",\"text\":\"$:/HistoryList $:/StoryList $:/Import $:/language $:/layout\"},\"$:/plugins/linonetwo/tw-mobile-sync/develop\":{\"title\":\"$:/plugins/linonetwo/tw-mobile-sync/develop\",\"creator\":\"LinOnetwo\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"TidGi-Mobile use [[$:/plugins/linonetwo/tw-mobile-sync/templates/skinny-tiddlywiki5.html]] as template. See [[$:/plugins/linonetwo/tw-mobile-sync/templates/about-skinny-tiddlywiki5-html]] for how it differ from original lazy-all template.\\n\\nUse [[SIOC|https://github.com/taurenshaman/semantic-web/blob/cee9e421eed3f31a602f82375fb92fb109d638b7/data/sioc.rdf]] Ontology for server tiddler.\\n\"},\"$:/plugins/linonetwo/tw-mobile-sync/readme\":{\"title\":\"$:/plugins/linonetwo/tw-mobile-sync/readme\",\"creator\":\"LinOnetwo\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define image()\\n >/>\\n\\\\end\\n\\n! Sync Between NodeJS and Mobile HTML 在桌面端(NodeJS)和移动端(HTML文件)之间同步\\n\\n本插件可以让你在基于NodeJS技术的桌面应用(例如太记)和基于HTML文件的手机端(例如Tiddloid安卓应用)之间同步数据。\\n\\n手机应用 ↔ 桌面应用 ↔ 云端\\n\\nThis plugin enables you sync date between NodeJS server App (e.g. TidGi App) and HTML file based mobile App (e.g. Tiddloid Android App).\\n\\nMobile App ↔ Desktop App ↔ Cloud\\n\\n!! How to use\\n\\n首先在手机端扫码,打开当前这个知识库的网页,然后保存出 HTML 文件后(详见中文教程的[[如何保存|https://tw-cn.netlify.app/#TiddlyGit%E5%A4%AA%E8%AE%B0]]章节),在 Tiddloid 里打开保存的 HTML 文件(可能需要先将文件移出下载目录不然Tiddloid无权限访问,详见其[[说明书|https://github.com/donmor/Tiddloid]])。\\n\\n然后打开[[服务器列表|$:/plugins/linonetwo/tw-mobile-sync/ui/ServerList]],录入一下服务器地址:\\n\\n# 将上面扫码得到的 URL 复制一下,填入[[服务器列表|$:/plugins/linonetwo/tw-mobile-sync/ui/ServerList]]里的「智能识别黏贴框」,然后点击「智能识别」按钮,会自动将 URL 解析后填入相应框内。你也可以点击「扫二维码」按钮开始扫码,扫码结果会自动填入「智能识别黏贴框」内\\n# 此时,「服务器IP」和「服务器端口」框里应该要已经填好了 ip 和端口号\\n# 你需要填写一下「服务器名」这个框\\n# 点击「新增服务器」,会新建一个服务器信息条目,请确认创建此条目\\n# 这时新的服务器应该就出现在服务器列表里了,你可以点击「启用同步并立即同步」按钮,这样就可以在桌面端和手机端同步数据了\\n# 之后会每五分钟自动同步一次用户创建的条目(不包含插件),如果需要从桌面端同步插件到手机端,需要使用「[[拉取并覆盖|$:/plugins/linonetwo/tw-mobile-sync/ui/DownloadFullHtml]]」功能\\n\\nFirst scan the code on your cell phone, open the current knowledge base page, then save the HTML file (see the [[How to save|https://tw-cn.netlify.app/#TiddlyGit%E5%A4%AA%E8%AE%B0]] section of the Chinese tutorial for more details) and open the saved HTML file in Tiddloid (You may need to move the file out of the download directory first or Tiddloid will not have access to it, see its [[Instructions|https://github.com/donmor/Tiddloid]] for details).\\n\\nThen open the [[Server List|$:/plugins/linonetwo/tw-mobile-sync/ui/ServerList]] and enter the following server address.\\n\\n# Copy the URL you got from the code above and fill in the \\\"Smart Identify Sticky Box\\\" in [[Server List|$:/plugins/linonetwo/tw-mobile-sync/ui/ServerList]], then click the \\\"Smart Identify\\\" button, the URL will be automatically parsed and filled in the corresponding box. You can also click the \\\"Scan QR Code\\\" button to start scanning the code, and the result will be automatically filled into the \\\"Smart Identify Sticky Box\\\".\\n# At this point, the \\\"Server IP\\\" and \\\"Server Port\\\" boxes should already be filled with the ip and port numbers.\\n# You need to fill in the \\\"server name\\\" box\\n# Click on \\\"Add Server\\\", a new server information entry will be created, please confirm to create this entry\\n# The new server should now appear in the server list, you can click the \\\"Enable sync and sync now\\\" button to sync data between desktop and mobile.\\n# If you need to sync the plugin from desktop to mobile, you need to use the \\\"[[pull and overwrite|$:/plugins/linonetwo/tw-mobile-sync/ui/DownloadFullHtml]]\\\" function.\\n\\nTranslated with www.DeepL.com/Translator (free version)\\n\\n!! Server list and forms 服务器列表和新增表单\\n\\n[[Server List|$:/plugins/linonetwo/tw-mobile-sync/ui/ServerList]] contains syncable servers, and button to add new server.\\n\\n!! QrCode of current server 当前服务器的二维码\\n\\n<$set name=\\\"content\\\" value={{{ [{$:/info/url/host}addprefix[//]addprefix{$:/info/url/protocol}addsuffix[/tw-mobile-sync/get-full-html]] }}}>\\n <>\\n <>\\n\\n\\nScan to add this server 扫码以添加此服务器 ({{$:/info/url/full}}).\\n\\n(二维码:当前服务器的地址)\\n\\nNeeds official QR plugin [[$:/plugins/tiddlywiki/qrcode]] to work. 需要安装官方二维码插件 [[$:/plugins/tiddlywiki/qrcode]] 才会有二维码出现在上面\\n\\n!! FAQ 常见问题\\n\\n!!! 在外面用了一天之后回家添加服务器,却无法同步到电脑端 When you come home to add a server after using it outside for a day, it won't sync to the computer side\\n\\n就是因为你新添加服务器后,它只会同步新建服务器之后新建的条目。这是又因为新建服务器时会根据当前时间添加一个 lastSync 字段,目前在点击同步按钮时,只会同步这个时间点之后的内容。你可以手动把服务器条目里这个字段的时间改早一天,这样就会同步你今天添加的内容了。未来我们将会添加更智能的同步方式,就不再需要这个字段了,就不会遇到这个问题了。\\n\\nThis is because when you add a new server, it only syncs the new entries created after the new server is created. This is again because when you create a new server you add a lastSync field based on the current time, and currently when you click the sync button it will only sync after this point in time. You can manually change the time of this field in the server entry to one day earlier, and it will sync the content you added today. In the future we will add a smarter way of syncing so that this field is no longer needed and you won't encounter this problem.\\n\"},\"$:/plugins/linonetwo/tw-mobile-sync/templates/about-skinny-tiddlywiki5-html\":{\"title\":\"$:/plugins/linonetwo/tw-mobile-sync/templates/about-skinny-tiddlywiki5-html\",\"text\":\"!! Difference\\n\\n!!! $:/plugins/linonetwo/tw-mobile-sync/templates/save/lazy-all\\n\\n* Add some plugin to saveTiddlerFilter ignore list at the end, and remove useless `+[sort[title]]`\\n* Replace `{{$:/core/templates/tiddlywiki5.html}}` with our `{{$:/plugins/linonetwo/tw-mobile-sync/templates/skinny-tiddlywiki5.html}}`\\n\\n!!! $:/plugins/linonetwo/tw-mobile-sync/templates/skinny-tiddlywiki5.html\\n\\n`